Класс и объект
Класс -- это абстракция. Сам по себе он не существует в том смысле, что не занимает место в оперативной памяти компьютера. Класс включает в себя методы, которые определяют поведение, и поля, т.е. некоторые данные. Это называется инкапсуляция, т.е. объединение в рамках одной сущности -- класса -- данных и программного кода (методов).
Классы наследуются один от другого. Наследованный класс (также называемый потомком) получает от родительского все его методы и свойства. Потомок может добавлять свои методы и свои свойства, т.е. расширять родительский класс. И, наконец, потомок может переопределить, перекрыть некоторые методы родительского класса. Методы, которые допускают перекрытие, называются виртуальными. а сама методика называется полиморфизм.
Еще раз повторим, класс -- это абстракция. Для работы мы создаем экземпляр класса или по иному -- объект. Под объект выделяется память в оперативной памяти компьютера и там размещаются значения его свойств. Если мы перекроем метод у некоторого класса, то это перекрытие скажется для всех экземпляров, всех унаследованных классов, когда бы мы их не создали. Например, перекройте метод BeforePost у класса TgdcDocument, поставьте там вывод на экран MessageBox, и где-бы в программе и какой-бы документ вы не вызвали, вы неизменно, при его сохранении, получите на экран сообщение.
Свойства (поля) объекта могут содержать простые данные, как-то: число, строку, дату и т.п, а также могут содержать ссылки на другие объекты или ссылки на процедуры (скрипт-функции), которые будут вызываться в ответ на то или иное событие. Такие свойства, собственно, и называются событиями. Например, на просмотровой форме со списком накладных, находится бизнес-объект Накладная. Если мы определим для него обработчик события OnBeforePost, куда поместим вызов MessageBox, то сообщение на экран будет выдаваться только при сохранении записи именно в этом объекте и больше нигде. Ни на какой другой документ и даже на аналогичную накладную, но в другом окне, эти изменения действовать не будут.