- •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
- •Методы проектирования ориентированные на данные
6.2. Инкапсуляция. Св-ва
Инкапсуляция – ограничение прямого доступа к внутренним данным.
Пример использования св-в:
TAnObject = class(TObject)
FValue : TSomeType;
function GetAProperty : TSomeType;
procedure SetAProperty(ANew Value : TsomeType);
property AValue : TSomeType read GetAProperty write SetAPropety;
end;
Чисто внешнее «св-во» – поле данных. Для того чтобы обратиться к св-ву используют оператор присваивания.
var
MyObject.TAnObject;
…
MyObject.AValue := Value;
Св-во отличается от переменной тем, что использует два метода: чтения (read) и записи (write). Где read – функция – метод обращающийся к реальному полю данных.
Пример:
function TAnObject.GetAProperty : TSomeType
begin
…
GetProperty := FValue;
…
end;
Сл-но скрытно метод чтения вызывается методом следующим за read, а записи за write.
На основании механизма св-в осуществляется обработка сообщений, в результате удаётся избавить программиста от этих сообщений вводя механизм событий.
Особенности объявления и использования св-в:
1) если нет потребности специальных процедур чтения/записи, то их можно заменить именем поля данных
2) ограничить доступ на чтение или запись, то можно не указывать соответствующий метод (например write убрать, а оставить read):
property AValue : TSomeType write FValue;
3) св-во может быть векторным:
property APoints [Index : integer] : TPoint read GetAProperty
write SetAProperty;
В этом примере GetAProperty имеет дополнительный параметр:
function GetAProperty (Index : integer) : TPoint;
procedure SetAPOint (Index : integer; NewPoint : TPoint);
Для векторных св-в возможно объявление векторного св-ва по умолчанию (default):
property APoints [Index : integer] : TPoint read GetProperty
write SetAProperty default;
AMyObject.APoint[2] := Value;
AMyObject[2] := Value;
На основании векторных св-в в Delphi реализован ряд важных классов, такие как «строки».
4) Возможно объявление значения св-ва по умолчанию:
property APoints [Index : integer] : TPoint read GetAProperty
write SetAProperty default Value;
6.3 Наследование
Механизм наследования в целом подобно механизму наследования более ранних версий.
Delphi Поддерживает 2 объектные модели: старую и новую.
М ножественное наследование рекомендуется заменять контейнерными классами.
По прежнему методы объектов делятся на 4 разновидности: static, virtual, dynamic, abstract.
Виртуальные и динамические методы при переопределении обозначаются спецификатором override.
Так же есть еще один спецификатор overload позволяет реализовать статический полиморфизм.
Пример объявления абстрактного метода:
procedure Calculate; virtual; abstract;
В объектной модели Delphi можно переопределять поля данных, при этом переопределённое поле не доступно в потоке.
При переопределении статических методов могут изменяться списки их параметров.
Конструктор всегда статический и его параметры могут изменяться.
6.4. Области видимости
Правила работы с областями видимости во многом аналогичны С++.
В классе можно выделить 4 секции:
public – открытые эл-ты
prived – закрытые члены
published – св-ва которые должны быть видны в инспекторе объектов
protected – эл-ты могут изменяться в наследниках, но не доступны пользователю