Компьютерные методы моделирования оптических приборов кафедра прикладной и компьютерной оптики Основы объектно-ориентированной технологии программирования
2 Декомпозиция Декомпозиция – разделение сложной программной системы на меньшие подсистемы, каждую из которых можно создать и совершенствовать независимо Алгоритмическая декомпозиция – сложные или повторяющиеся действия выделяются в подпрограммы Объектно-ориентированная декомпозиция – явление или процесс представляется в виде совокупности объектов, каждый из которых является абстракцией реальных предметов, явлений, процессов.
3 Технология программирования Технология программирования – это набор правил, приемов и методов, которые помогут программисту описать и промоделировать процессы и явления реального мира Парадигма – набор правил и принципов для анализа явления или задачи, проектирования программы и непосредственно ее реализации на языке Объектно-ориентированная парадигма - взгляд на мир, когда явления, процессы выражаются в виде взаимодействий объектов
4 Принципы ООП Абстракция – формирование представления о свойствах и поведении предмета путем выделения существенных характеристик, отличающих его от других видов объектов Инкапсуляция – сокрытие внутреннего устройства, реализации объекта Сохраняемость – возможность объекта сохранить информацию о своём состоянии, а затем при необходимости восстановить его
5 Принципы ООП Наследование (иерархия) – такое отношение между классами, когда один объект заимствует структурную и функциональную часть другого Полиморфизм (типизация) – возможность принимать множество форм, изменять поведение в зависимости от ситуации Параллелизм – возможность параллельного сосуществования и взаимодействия объектов Модульность – возможность объединения и отделения набора объектов (организация предметных доменов)
6 Абстракция: объект Объект – абстракция множества предметов реального мира: все предметы имеют один и тот же набор характеристик все предметы подчинены и согласовываются с одним и тем же набором правил, нормами поведения, законами природы ОБЪЕКТ = набор характеристик + набор правил поведения Примеры объектов: линза собирающая линза рассеивающая линза аберрация зрачок пучок лучей волновой фронт призма диафрагма источник приемник преломление отражение дифракция интерференция Виды объектов: реальные объекты роли инцидент взаимодействия абстрактные объекты
7 Описание объекта Объект должен иметь: уникальное имя уникальное описание (короткое информативное утверждение, которое позволяет установить является ли реальный предмет экземпляром объекта данного типа или нет) Например, линза: Lens предмет изготовленный из оптического (т.е. прозрачного, однородного) материала, ограниченный двумя сферическими и одной цилиндрической поверхностью
8 UML (Unified Modeling Language) UML – это язык (графическая система обозначений) для моделирования, то есть описания предметов и явлений с использованием системы обозначений графические обозначения помогают увидеть многое в малом, помогают мыслить и находить решения позволяет общаться и обсуждать проектные решения с другими разработчиками (не обязательно программистами) упрощает документирование проекта позволяет в ёмкой и точной форме выразить сложные вещи, при этом не способствует бюрократии и оставляет свободу выбора уровня конкретизации документации
9 Атрибуты объекта Атрибут – абстракция одной характеристики, которой обладают все абстрагированные как объект предметы уникальное имя тип данных h d n r1 r2 Типы атрибутов: описательные – представляют факты внутренне присущие каждому экземпляру объекта указывающие – используются для присвоения имени или обозначения экземпляров вспомогательные – используются для обеспечения связи экземпляра одного объекта с экземпляром другого
10 Жизненный цикл объекта Состояние – набор всех свойств (атрибутов) данного объекта, которые имеют конкретные значения. Переход из состояния в состояние представляет собой инцидент событие Состояние – стадия в жизненном цикле объекта Состояние 1 Состояние 2 Разрушение объекта Создание объекта Событие 1 Событие 2
11 Поведение объекта ОБЪЕКТ = АТРИБУТЫ + ПОВЕДЕНИЕ Конструктор – операция создания объекта и инициализации его атрибутов Деструктор – операция, освобождающая используемые объектом ресурсы и разрушающая его Утилита – операция высокого уровня выполняющая те или иные действия в зависимости от сущности объекта (RayTrace)
12 Поведение объекта Модификатор – операция, которая изменяет состояние объекта (clear, pop, push, remove, set) Селектор – операция, считывающая состояние объекта, но не меняющая (length, height, width, isEmpty, getX, getY) Итератор – операция, позволяющая организовать доступ ко всем частям объекта в строго определенной последовательности (first, last, next, previous)
13 Инкапсуляция Никакая часть сложной системы не должна зависеть от внутреннего устройства какой-либо другой части: объект –черный ящик public пользователи protected private функции-члены и друзья производных классов функции-члены и друзья самого класса class ИМЯ { private:... protected:... public:... }
14 Сохраняемость Сохраняемость – способность объекта существовать во времени, переживая породивший его процесс, и в пространстве, перемещаясь из своего первоначального адресного пространства Сериализация – сохранение информации о состоянии объекта, с последующей возможность его восстановления void Lens::write(ostream& out) const { coutm_n; }
15 Параллелизм Параллелизм – возможность сосуществования и параллельного взаимодействия в системе любого количества объектов Виды взаимоотношений между объектами: ассоциация агрегация наследование
16 Ассоциация Ассоциация – наиболее общее отношение между объектами: объекты каким-то образом взаимодействуют
17 Кратность ассоциации Кратность показывает сколько классов участвует или может участвовать во взаимоотношении
18 Использование Использование - это равноправная связь между экземплярами классов ("клиент/сервер")
19 Агрегация Агрегация – это такое отношение между классами, когда один из них является частью другого ("целое/часть") Композиция – наиболее сильная степень агрегации, при которой один экземпляр объекта незаменим и неотделим от другого
20 Наследование Наследование – такое отношение между классами, когда один из них заимствует описание атрибутов и характеристики другого ("родитель/наследник", "общее/частное)
21 Полиморфизм Полиморфизм – возможность принимать множество форм, иметь разный смысл в зависимости от ситуации Абстрактый объект – объект, у которого не может существовать экземпляра, только наследники Абстрактный метод – метод, который реализовывается только в наследниках
22 Параметрический полиморфизм Параметрический полиморфизм – позволяет многократно использовать один и тот же код применительно к разным типам Классы библиотеки STL: vector, list …
23 Модульность Модульность – позволяет объединить взаимодействующие объекты в пакеты и рассматривать одни наборы объектов независимо от других
24 Список литературы Родионов С. А. Автоматизация проектирования оптических систем -Л. Машиностроение, Ленингр. отд-ние, Буч Г. Объектно-ориентированное проектирование с примерами приложений на С++ -М.: "Издательство Бином", СПб: "Невский диалект", Фаулер М., Скотт К. UML. Основы (2-е издание) -СПб.: Символ-Плюс книги на диске example электронные учебники на сайте кафедры