- •5,6 Семестр Общие принципы проектирования программных систем. Этапы жизненного цикла программной системы.
- •1. Постановка задачи:
- •Требования, предъявляемые к программным системам:
- •2. Разработка:
- •3. Реализация:
- •Нисходящее и восходящее проектирование.
- •Структурное программирование (без go to).
- •2) Ветвление (if): 3) цикл с предусловием (do while):
- •1.2.4. Язык проектирования (метаязык)
- •Глава 2. Структуры данных.
- •2.1. Агрегативные переменные
- •2.2. Динамические структуры данных.
- •2.2.1. Списки. (Списочные структуры).
- •2.2.2. Очереди
- •2.2.3. Стеки
- •2.2.4. Множества
- •2.2.5. Деревья и графы
- •1 . Направленный граф:
- •2 . Ненаправленный граф:
- •2.3. Абстрактные структуры данных
- •2.3.2. Объекты
- •2.4. Файловые типы данных
- •2.4.4. Операции над файлами
- •4. Специальные операции:
- •Специальные типы файлов языка Pascal.
- •Файлы в других языках
- •3. Алгоритмы
- •3.1. Типы алгоритмов. Сложность алгоритмов.
- •3.2. Способы реализации алгоритмов.
- •5.2 Реализация наследования в Паскале
- •5.3 Проблема наследования статических методов
- •6.1 Объекты и их жизненный цикл
- •6.2. Инкапсуляция. Св-ва
- •6.3 Наследование
- •6.4. Области видимости
- •6.5 Информация о классе
- •Особенности архитектуры программ
- •7 .1 Обработчики сообщений Windows в Delphi
- •Средства разработки Windows приложений
- •4.4.2 Основные понятия ооп
- •4.4.3 Типы оос
- •4.4.4 Общие принципы работы оос-м
- •Особенности объектно-ориентированных систем
- •4.1 Декомпозиция и абстракция
- •Методы проектирования ориентированные на обработку
- •4.2.1 Модульное программирование
- •4.2.2 Функциональная декомпозиция
- •1. Пошаговое уточнение:
- •2. Метод анализа потоков данных:
- •Связанность модулей
- •Сцепление модулей
- •4.2.3. Технология структурного анализа проекта
- •4.2.4 Язык определения задач psl/psa
- •Методология Джексона
- •Методология Уорнера
- •4.2.6. Метод иерархических диаграмм hipo
- •Методы проектирования ориентированные на данные
3.2. Способы реализации алгоритмов.
Все виды обработки данных могут быть разделены на следующие классы:
1. Последовательная обработка
2. Обработка с повторениями
3. Произвольная обработка с применением параллельных вычислений
4. Структурное распараллеливание с использованием сопрограмм.
-----------------========== Пиши лекции =================--------
5.2 Реализация наследования в Паскале
Р ассматривается старая объектная модель Pascal с версии 5.5 до Delphi1.
Описание класса – object: -------------------->
Формы совместимости типов объектов:
1) совместимость между экземплярами
2) между указателями экземпляров
3) между фактическими и формальными параметрами процедур
Можно присвоить объект наследник объекту родителю, но не наоборот, т.е.:
var
OA : A; OB : B;
OA := OB; {происходит явное привидение типов}
OB := OA; {нельзя}
Если используются не сами экземпляры, а указатели на экземпляры, то удаётся реализовать полиморфизм. Полиморфический объект – объект тип которого не известен на фазе исполнения.
5.3 Проблема наследования статических методов
Статический – его адрес определяется на этапе компиляции программы.
Пример:
type
TRectangle = object(TFigure)
procedure Init(AX, AY : integer);
procedure Show;
procedure Hide;
procedure Move(NewX, NewY : integer);
end;
type
TFrame = object(TRectangle)
procedure Init(AX, AY : integer);
procedure Show;
procedure Hide;
end;
Попытаемся переместить рамку TFrame с помощью унаследованного метода Move. Все методы по умолчанию являются статическими.
procedure TRectangle.Move(NewX, NewY : integer);
begin
Hide;
X := NewX; Y:=Y; {координаты}
Show;
end;
Решением проблемы является реализация виртуальных методов Show и Hide – позволит на этапе компиляции не определять их адреса.
Рекомендации: Использование виртуальных методов всегда, но это снижает эффективность. Для каждого вызова виртуального метода, вызов происходит через таблицу виртуальных методов VMT.
Динамические методы используют меньше памяти и не дублируются адреса виртуальных методов в классах наследниках.
Д ля динамических методов используется таблица (DMT) динамических методов.
В Паскале использование виртуальных методов требует вызова специального метода конструктора, например:
constructor Init(…);
Конструктор в любой ООС устанавливает связь экземпляра класса с VMT класса.
6.1 Объекты и их жизненный цикл
Основным языком Delphi является язык Object Pascal.
type
TMyClass = class
…
end;
Все экземпляры класса объектов Delphi являются динамическими.
var
AMyObject : TMyClass;
begin
…
AMyObject := TMyClass.Create;
TMyClass – метод класса, особый вид метода без экземпляра класса.
Любое объявление класса подразумевается, что происходит от суперкласса TObject.
AMyObject.MyMethod;
AMyObject.Destroy;
Вызов деструктора, рекомендуется применять метод Free. Деструктор всегда виртуальный, деструктор выполняет некоторые скрытые действия применяется для удаления динамически размещённых полиморфных объектов. Деструктор обращается к структуре и определяет размер экземпляра (структура класса RTTI).
Всего TObject содержит 17 методов, которыми можно пользоваться без определения класса.
Если конструктор переопределяется, то рекомендуется вызов конструктора родителя в нём: inherited Create;