Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Определение операций классов
Результаты описания поведения системы должны быть использованы для определения операций классов. Корректное выполнение операций требует специального протокола, который описывает следующие компоненты операций:
1. Предусловия, т.е. условия, которые должны быть выполнены перед тем, как операция будет активизирована; 2. Список передаваемых параметров, их типов, а также тип возвращаемого результата; 3. Постусловия, которые должны быть выполнены, когда операция завершится; 4. Правила взаимодействия потоков - синхронизация.
Существует ряд рекомендаций, которым можно следовать при формировании набора операций класса.
1. Создать ряд ортогональных примитивных интерфейсных операций; 2. Скрыть внутреннюю структуру класса за интерфейсными операциями; 3. Обеспечить ряд непримитивных операций для часто используемых комбинаций операций; 4. Операции внутри класса и иерархии класса должны использовать согласованный ряд типов параметров, где возможно; 5. Родительский класс должен обеспечивать операции, разделяемые классами-наследниками; 6. Операцией должна быть представлена каждая функциональность, выполняемая классом; 7. Все сообщения, направленные объекту, должны быть приняты и обработаны определенным действием; 8. Если необходимо, следует использовать операции Get() и Set() для доступа к атрибутам объекта; 8. Действия, определенные на диаграммах состояний и активности, должны приводить к операциям, определенным на классе, обеспечивающим эти действия; 9. Операции должны проверять свои предусловия.
Определим примерный набор операций классов Лифт, Дверь и Контроллер проектируемой системы. Количество операций, также как и атрибутов, определяется степенью проработанности класса. Например. Если различать подсостояния (Пассажиры отсутствуют; Пассажиры присутствуют), то необходимо ввести атрибут, имеющий смысл «Загружен» (“Loaded”). Если количество людей, находящихся в лифте, не различать, то атрибут Loaded может иметь тип Boolean, а если различать (например, чтобы формировать сигнал тревоги при перегрузке), то атрибут Loaded должен иметь тип Integer. То же самое относится к включению в класс Лифт объектов Дверь, Кнопки.
TDirection = (up, down); TLiftState = (moving, stop); TPosition = (1..10);
TLift = object State : TLiftState; Direction : TDirection; Position : TPosition; Constructor Create; Destructor Done; Procedure Start(D : TDirection); Procedure Stop; Procedure Move; Function GetPosition : TPosition; Function GetState : TLiftState; Function GetDirection : TDirection; End;
Операции Start и Stop носят характер команд, которые контроллер посылает лифту. Оперции GetPosition, GetState, GetDirection носят характер команд, которые контроллер посылает лифту для чтения его положения, состояния, направления движения. Операция Move – базовая операция лифта в данной модели.
TDoorState = (opened, closed, opening, closing);
TDoor = object State : TDoorState; Constructor Create; Destructor Done; Procedure Open; Procedure Close; Procedure Move; Function GetState : TDoorState; End;
Операции Open и Close носят характер команд, которые контроллер посылает двери. Операция GetState носит характер команды, которую контроллер посылает двери для чтения ее состояния. Операция Move реализует «процесс» открытия или закрытия двери.
TEventType = (Alarm, ButtonPressed); TButtonType = (LiftButton, FloorButton);
TEvent = record EventType : TEventType; ButtonType : TButtonType; Message : Integer; End;
TController = object Constructor Create; Destructor Done; Function GetEvent : TEvent; Procedure Dispatcher; End;
Операция Dispatcher носит характер «бесконечного цикла», состоящего из операции GetEvent в начале итерации цикла и, в зависимости от события, посылки соответствующих команд соответствующим объектам.
Выводы
В данном подразделе мы выполнили этап проектирования, заключающийся в исследовании поведения системы. Этот этап мы выполняли путем анализа состояний объектов и анализа действий объектов. Результатом этого анализа является набор операций, выполняемых объектами. Выполнив анализ требований к системе, описав структуру объектов и их поведение, можно приступать к проектированию архитектуры системы.
Проектирование системы
|
Последнее изменение этой страницы: 2019-04-21; Просмотров: 315; Нарушение авторского права страницы