
- •Динамическая память и указатели. Типы указателей. Описание указателей.
- •Операции над указателями. Выделение динамической памяти для типизированных и нетипизированных указателей. Проблема утечки памяти.
- •Стеки и очереди.
- •Модули.
- •Классы, объекты. Объявление класса, принципы ооп.
- •Инкапсуляция и разграничение доступа к членам класса.
- •Методы (виды методов), конструктор и деструктор.
- •Перекрытие методов, перекрытие конструктора, inherited
- •Поля, Свойства. События
- •Полиморфизм is, as.
- •Дерево классов delphi. Класс tObject. Класс tPersistent. Класс tСomponent.
- •Класс tСontrol.
- •Свойства и методы для обеспечения отношения родительский-дочерний
- •Свойства позиционирования и выравнивания
- •Свойства, определяющие внешний вид элементов управления. Property Color Cursor:Tcursor; Enabled:Boolean; Font, Hint, ShowHint
- •События при нажатии мышью на левую кнопку. Общие события, возникающие при манипулировании мышью.
- •События, предназначенные для поддержки перетаскивания.
- •Свойства и методы, поддерживающие связь родительский-дочерний.
- •События клавиатуры TwinControl. События активизации оконного элемента и потери фокуса.
- •Класс tGraphicControl. Метка Tlabel. Компонент Timer.
- •Interval: cardinal; - интервал в милисекундах после которого начинается событие OnTimer.
- •Класс tCustomEdit. Строка ввода Edit.
- •Класс tStrings. Текстовый редактор Memo.
- •Кнопки.Button, BitBtn, SpeedButton
- •Список ListBox.
- •Комбинированная строка ввода ComboBox.
- •Items:tString;-содержит список названий переключателей.
- •Классы и компоненты, предназначенные для создания изображений. Класс tCanvas. Класс tFont. Класс tPen. Класс Tbrush.
- •Компонент Image. Компонент Shape. Компонент PaintBox.
- •Диалоговые окна. OpenDialog SaveDialog
- •Этапы развития технологии программирования.
- •Первый этап - «стихийное» программирование (50-60-е годы).
- •Второй этап - структурный подход к программированию
- •Третий этап -объектный подход к программированию(с середины 80-х до конца 90-х годов XX )
- •Четвертый этап – компонентный подход и case-технологии (с середины 90-х годов до нашего времени).
- •Проблемы разработки сложных программных систем.
- •Блочно-иерархический подход к созданию сложных систем.
- •Жизненный цикл по и этапы его разработки. Гост 19.102-77 «Стадии разработки»
- •Постановка задачи. Анализ требований и определение спецификаций. Проектирование. Реализация. Сопровождение.
- •Эволюция моделей жизненного цикла по.
- •Жизненный цикл по при использовании case-технологий. Технология rad
- •Оценка качества процессов создания по.
- •5. Оптимизирующий уровень (optimizing level)
- •Понятие технологичности программного обеспечения. Нисходящая и восходящая разработка по
- •Последовательность проектирования и реализации (Иерархический , Операционный , Комбинированный)
- •Модульное программирование. Модули и их свойства. Сцепление модулей. Связность модулей.
- •Предпроектные исследования предметной области
- •Разработка технического задания. Последовательность разработки тз.
- •Принципиальные решения начальных этапов проектирования: Выбор архитектуры программного обеспечения. Выбор типа пользовательского интерфейса. Выбор подхода к разработке.
- •Стадии тестирования. Принципы тестирования. Формирование тестовых наборов ст иФн.
- •Ручной контроль по: инспекция исходного текста, сквозные просмотры, проверка за столом.
- •Структурное тестирование.
- •Функциональное тестирование.
- •Тестирования модулей и комплексное тестирование.
- •Критерии завершения тестирования и отладки. Оценочное тестирование
Методы (виды методов), конструктор и деструктор.
Методы (виды методов)
Инкапсулированные в классе процедуры и функции называются методами.
Методы объявляются в классе как обычные подпрограммы.
В заголовке описания реализации метода используют составное имя метода (имя класса точка имя метода).
В теле описания реализации метода собственные поля используются без указания имени класса. (этим методы отличаются от прочих процедур)
Type
TmyCl=class(Tobject)
Fint:integer;
procedure proc1(var m:integer);
End;
Var O1: TmyCl;
procedure TmyCl.proc1(var m:integer); Begin m:= Fint +3;// заметим Fint, а не TmyCl.Fint
End; Begin …… O1.proc1(k);//в основной проге составное имя End.
В ООП различаются следующие виды методов
Методы класса
Конструктор и деструктор
Виртуальные
Динамические
Абстрактные
Перегружаемые
Конструктор и деструктор.
В состав любого класса входят два специальных метода – конструктор и деструктор.
В классе TОbject конструктор называется create деструктор destroy.
Конструктор и деструктор – это функция и процедура, но в виду их важности и единственности они объявляются с помощью зарезервированных слов Constructor Destructor
Type TmyCl=class(TObject) … end;
Var
Ob1: TmyCl;//выделяет указатель 4 б, cначалa хранит nil
Для разворачивания же объекта в динамической памяти используется метод класса конструктор (для Tobject это Create) в таком виде
Ob1:= TmyCl.Create;
В результате применения метода create:
выделяется дин память и разворачивается объект;
инициализируется объект
возвращается ссылка в объектную переменную, (чтобы можно было пользоваться его членами, а в последствии и разрушить.)
Любые действия с объектом возможны после работы конструктора. Деструктор разрушает объект в динамической памяти.
Перекрытие методов, перекрытие конструктора, inherited
Перекрытие методов
Type Tpar=class Procedure DoWork; End; Tchild=class(Tpar) Procedure DoWork; End; Var O1: Tpar; O2: Tchild; Procedure Tpar . DoWork; Begin writeln(‘стучит молотком’); end;
|
Procedure Tchild . DoWork; Begin writeln(‘играется в песочнице’); end; Begin O1:= Tpar.create; O2:= Tchild.create; O1.DoWork; // стучит молотком O2.DoWork; // играется в песочнице end.
|
Методы в классе могут перекрываться (еще говорят переопределяться) в потомках, т.е. процедуры с одним и тем же именем в предке и потомке выполняют разные алгоритмы.
Объекты обоих классов (предка и потомка) будут выполнять сходную процедуру по-разному. Такое замещение называется статическим, т.к. реализуется компилятором на этапе компиляции.
Перекрытие конструктора, inherited
Поля
Конструктор не редко переопределяется для выполнения инициализации полей. Полное переопределение не рекомендуется, рационально вызвать конструктор предка, затем произвести собственные дополнительные действия. Вызвать любой перекрытый метод родительского класса можно при помощи зарезервированного слова inherited
Type Tfigure = class … end; Tcircle = class (Tfigure) r:real; constructor create(ar:real); end; var figure:Tfigure; circle:Tcircle;
|
constructor Tcircle.create(ar:real); begin inherited create; r:=ar;// инициализируем end; Begin figure:=Tfigure.Create; circle:=Tcircle.create(1.25); end.
|