Основы объектно-ориентированной технологии программирования Компьютерные методы моделирования оптических приборов

advertisement
Основы объектно-ориентированной
технологии программирования
Компьютерные методы
моделирования оптических приборов
кафедра
прикладной и компьютерной оптики
2
Декомпозиция
Декомпозиция – разделение сложной программной
системы на меньшие подсистемы, каждую из которых
можно создать и совершенствовать независимо
Алгоритмическая декомпозиция – сложные или
повторяющиеся действия выделяются в подпрограммы
Объектно-ориентированная декомпозиция – явление
или процесс представляется в виде совокупности
объектов, каждый из которых является абстракцией
реальных предметов, явлений, процессов.
3
Технология программирования
Технология программирования – это набор правил,
приемов и методов, которые помогут программисту
описать и промоделировать процессы и явления
реального мира
Парадигма – набор правил и принципов для анализа
явления или задачи, проектирования программы и
непосредственно ее реализации на языке
Объектно-ориентированная парадигма - взгляд на мир,
когда явления, процессы выражаются в виде
взаимодействий объектов
4
Принципы ООП
Абстракция – формирование представления о свойствах
и поведении предмета путем выделения существенных
характеристик, отличающих его от других видов объектов
Инкапсуляция – сокрытие внутреннего устройства,
реализации объекта
Сохраняемость – возможность объекта сохранить
информацию о своём состоянии , а затем при
необходимости восстановить его
5
Принципы ООП
Наследование (иерархия) – такое отношение между
классами, когда один объект заимствует структурную и
функциональную часть другого
Полиморфизм (типизация) – возможность принимать
множество форм, изменять поведение в зависимости от
ситуации
Параллелизм – возможность параллельного
сосуществования и взаимодействия объектов
Модульность – возможность объединения и отделения
набора объектов (организация предметных доменов)
6
Абстракция: объект
Объект – абстракция множества предметов реального
мира:


все предметы имеют один и тот же набор характеристик
все предметы подчинены и согласовываются с одним и тем же набором
правил, нормами поведения, законами природы
ОБЪЕКТ = набор характеристик + набор правил поведения
Виды объектов:





реальные объекты
роли
инцидент
взаимодействия
абстрактные объекты
Примеры объектов:







линза
собирающая линза
рассеивающая линза
аберрация
зрачок
пучок лучей
волновой фронт








призма
диафрагма
источник
приемник
преломление
отражение
дифракция
интерференция
7
Описание объекта
Объект должен иметь:


уникальное имя
уникальное описание (короткое информативное утверждение, которое
позволяет установить является ли реальный предмет экземпляром
объекта данного типа или нет)
Например, линза:


Lens
предмет изготовленный из оптического (т.е. прозрачного, однородного)
материала, ограниченный двумя сферическими и одной цилиндрической
поверхностью
Lens
8
UML (Unified Modeling Language)
UML – это язык (графическая система обозначений) для
моделирования, то есть описания предметов и явлений с
использованием системы обозначений




графические обозначения помогают увидеть многое в малом, помогают
мыслить и находить решения
позволяет общаться и обсуждать проектные решения с другими
разработчиками (не обязательно программистами)
упрощает документирование проекта
позволяет в ёмкой и точной форме выразить сложные вещи, при этом не
способствует бюрократии и оставляет свободу выбора уровня
конкретизации документации
9
Атрибуты объекта
Атрибут – абстракция одной характеристики, которой
обладают все абстрагированные как объект предметы


уникальное имя
тип данных
Lens
r2
r1
h
n
-m_r1 : double
-m_r2 : double
-m_d : double
-m_n : double
-m_h : double
-m_ID : int
-m_ID_OS : int
d
Типы атрибутов:



описательные – представляют факты внутренне присущие каждому
экземпляру объекта
указывающие – используются для присвоения имени или обозначения
экземпляров
вспомогательные – используются для обеспечения связи экземпляра
одного объекта с экземпляром другого
10
Жизненный цикл объекта
Состояние – набор всех свойств (атрибутов) данного
объекта, которые имеют конкретные значения.
Переход из состояния в состояние представляет собой
инцидент событие
Состояние – стадия в жизненном цикле объекта
Создание объекта
Событие 1
Состояние 1
Разрушение объекта
Состояние 2
Событие 2
11
Поведение объекта
ОБЪЕКТ = АТРИБУТЫ + ПОВЕДЕНИЕ
Конструктор – операция
создания объекта и
инициализации его атрибутов
Деструктор – операция,
освобождающая используемые
объектом ресурсы и
разрушающая его
Утилита – операция высокого
уровня выполняющая те или
иные действия в зависимости
от сущности объекта
(RayTrace)
Lens
-m_r1 : double
-m_r2 : double
-m_d : double
-m_n : double
-m_h : double
-m_ID : int
-m_ID_OS : int
+Lens()
+~Lens()
+...()
+SetR1(in r1 : double) : void
+GetR1() : double
+...()
+Power() : double
+...()
+RayTrace(inout ray : Ray, in n0 : double, in n2 : double) : bool
+...()
-Refraction(inout ray : Ray, in n : double, in n_ : double) : bool
-Transfer(inout ray : Ray) : bool
12
Поведение объекта
Модификатор – операция, которая изменяет состояние объекта
(clear, pop, push, remove, set)
Селектор – операция,
считывающая состояние
объекта, но не меняющая
(length, height, width, isEmpty,
getX, getY)
Итератор – операция,
позволяющая организовать
доступ ко всем частям объекта
в строго определенной
последовательности
(first, last, next, previous)
Lens
-m_r1 : double
-m_r2 : double
-m_d : double
-m_n : double
-m_h : double
-m_ID : int
-m_ID_OS : int
+Lens()
+~Lens()
+...()
+SetR1(in r1 : double) : void
+GetR1() : double
+...()
+Power() : double
+...()
+RayTrace(inout ray : Ray, in n0 : double, in n2 : double) : bool
+...()
-Refraction(inout ray : Ray, in n : double, in n_ : double) : bool
-Transfer(inout ray : Ray) : bool
13
Инкапсуляция
Никакая часть сложной системы не должна зависеть от
внутреннего устройства какой-либо другой части:
объект –“черный ящик”
class ИМЯ
{
private:
...
protected:
...
public:
...
}
пользователи
функции-члены и друзья
производных классов
public
protected
private
функции-члены и друзья
самого класса
14
Сохраняемость
Сохраняемость – способность объекта существовать во
времени, переживая породивший его процесс, и в
пространстве, перемещаясь из своего первоначального
адресного пространства
Сериализация – сохранение информации о состоянии
объекта, с последующей возможность его восстановления
void Lens::write(ostream& out) const
{
cout<<m_R1<<m_R2<<m_d<<m_D<<m_n;
}
void Lens::read(istream& in)
{
cin>>m_R1>>m_R2>>m_d>>m_D>>m_n;
}
15
Параллелизм
Параллелизм – возможность сосуществования и
параллельного взаимодействия в системе любого
количества объектов
Виды взаимоотношений между объектами:



ассоциация
агрегация
наследование
16
Ассоциация
Ассоциация – наиболее общее отношение между
объектами: объекты каким-то образом взаимодействуют
OS
Ray
17
Кратность ассоциации
Кратность показывает сколько классов участвует или
может участвовать во взаимоотношении
Lens
Medium
1
Ray
1
*
OS
Ray
1
1
*
OS
OS
Lens
Lens
1
*
1
1
*
OS
1
Medium
1
1
*
Medium
*
18
Использование
Использование - это равноправная связь между
экземплярами классов ("клиент/сервер")
Lens
Window
RayTracing
OS
Ray
19
Агрегация
Агрегация – это такое отношение между классами, когда
один из них является частью другого ("целое/часть")
Композиция – наиболее сильная степень агрегации, при
которой один экземпляр объекта незаменим и неотделим
от другого
Surface
OS
Lens
Align
Medium
20
Наследование
Наследование – такое отношение между классами, когда
один из них заимствует описание атрибутов и
характеристики другого ("родитель/наследник",
"общее/частное“)
Detail
Lens
Mirror
Prizm
Grid
Spherical surface
Detail
#D : double
...
Fresnel Lens
Mirror
Lens
-R1 : double
-R2 : double
-d : double
-n : double
Spherical mirror
21
Полиморфизм
Полиморфизм – возможность принимать множество
форм, иметь разный смысл в зависимости от ситуации
Абстрактый объект – объект, у которого не может
существовать экземпляра, только наследники
Абстрактный метод – метод, который реализовывается
только в наследниках
Detail
#D : double
+RayTrace()
+Draw()
22
Параметрический полиморфизм
Параметрический полиморфизм – позволяет
многократно использовать один и тот же код
применительно к разным типам
PAR
Matrix
-m_data : PAR*
+SetValue(in value : PAR, in i : int, in j : int) : void
+GetValue(in i : int, in j : int) : PAR
Классы библиотеки STL:

vector<double>, list<int> …
23
Модульность
Модульность – позволяет объединить
взаимодействующие объекты в пакеты и рассматривать
одни наборы объектов независимо от других
RayTracing
Aberration
Optimization
24
Список литературы
Родионов С. А. Автоматизация проектирования
оптических систем -Л. Машиностроение, Ленингр. отд-ние,
1982.
Буч Г. Объектно-ориентированное проектирование с
примерами приложений на С++ -М.: "Издательство
Бином", СПб: "Невский диалект", 1998.
Фаулер М., Скотт К. UML. Основы (2-е издание) -СПб.:
Символ-Плюс. 2001.
книги на диске example
электронные учебники на сайте кафедры
Download