Краткий курс лекций, страница 4
Описание файла
Документ из архива "Краткий курс лекций", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "Краткий курс лекций"
Текст 4 страницы из документа "Краткий курс лекций"
var aObject:TMyclass;
begin
aObject.MyProcedure;
end.
Методы класса могут перекрываться в потомках.
Type
TParentclass = class;
Procedure Dowork;
End;
TchildClass = class(tparentclass);
Procedure Dowork;
End;
Потомки обоих классов могут выполнять сходные по названию процессы DoWork, но в каждом случае делать по-разному.
Реализация компилятором.
В О.Паскале чаще используется динамичное замещение методов на этапе прогона (выполнения) программы. Для реализации этого – метод, замещаемый в родительском классе должен объявляться как динамический с директивой Dynamic, иди Virtual. Встретив такое объявление компилятор создает две таблицы DMT(DynamicMetodTable) и VMT(VirtualMT), и поместит в них адреса точек входа, соответственных динамических и виртуальных методов. При каждом обращении к замещенному методу компилятор вставляет ход, позволяющий адрес точки входа в подпрограмму или иную таблицу.
В классе потомки, замещающие метод, объявляется с директивой Override (перекрыть), получив это указание, компилятор создает вход, который на этапе прогона программы поместит в родительскую таблицу точку входа метода класса потомка, что позволяет родителю выполнять нужное действие с помощью нового метода. Пусть например класс с помощью методов SHOW and Hide показывает что-то на экране и стирает что-то с экрана. Для создания изображения он использует метод Draw с логическим параметром
Type TvisualObject = class(Twincontrol);
Procedure Hide;
Procedure Show;
Procedure Draw(IsShow:Boolean);virtual;
End;
TvisualchildObject = class(TVisualObject);
Procedure Draw(IsShow:boolean);override;
End;
{Реализация методов Show и Hide}
Procedure TVisualObject:show;
Begin
Draw(True);
End;
Procedure TvisualObject:Hide;
Begin
Draw(False);
End;
Методы Draw у родителей и потомков имеют разную реализацию и создают разные изображения, в результате родительские методы Show and Hide показывают или стирают те или иные изображения будут в зависимости от конкретной реализации метода Draw у любого из своих потомков.
Динамическое связывание в полной мере реализует полиморфизм класса.
Конструктор и Деструктор.
В состав любого класса входит 2 специальных метода конструктор и деструктор. У класса TObject эти методы называются Create and Destroy, также они называются в подавляющем большинстве его потомков.
Конструктор распределяет объект динамической памяти и помещает адрес этой памяти в переменную Self и автоматически объявляется в памяти.
Деструктор автоматически удаляет объект из кучи. Обращение к конструктору должно предварять любое обращение к полям и методам объекта. По своей форме конструкторы и деструкторы являются процедурами, но объявляются с помощью зарезервированных слов Construction and Destruction
Type TMyclass = class;
IntField:integer;
Construction Create:(value:integer);
Destruction Destroy;
End;
Любые поля объекта, а также методы класса могут вызываться только после создания объекта с помощью вызова конструктора, так как конструктор распределяет объект динамической памяти и делает действительными созданные в объекте указатели.
Язык Object Pascal. Классификация типов данных. Тип данных классы. Одноименные методы.
В версиях Delphi появилась возможность в рамках одного класса иметь несколько одноименных методов, чтобы одноименные методы можно было отличать. Каждый из них должен иметь уникальный набор параметров, в ходе выполнения программы при обращении к одному из одноименных методов программа проверяет тип и количество обращений к одноименному методу и выбирает нужный метод.
Язык Object Pascal.Классификация типов данных. Тип данных классы. Свойства.
Свойства – специальный механизм классов, реализующих доступ к полям. Свойства объявляются с помощью зарезервированных слов Property, Read, Write. Обычно свойство связано с некоторым полем и указывает те методы класса, которые должны исполняться для записи в это поле или при чтении из него.
Type Taclass = class;
IntField: integer;
Procedure SetField(value:integer);
Property IntegerValue:integer readGetField
Write SetField;
В контексте программы свойство ведет себя как обычное поле.
Объявление класса.
Любой вновь создаваемый класс может создать секции, разделы.
Секция Public, не накладывает ограничений на область видимости перечисляемых в ней объектов. Секция Published тоже, что и выше, но на этапе конструирования программируйте в окне инспектора объекта. Эта секция исполняется при разработке нестандартных компонентов.
Private - сужает область видимости до минимума. Элемент, объявляемый в этой секции недостаточен даже для потомков, если размещен в другом модуле: Protected