
- •Основы uml
- •Введение
- •Введение в uml
- •1.1. История uml
- •1.2. Case-средства
- •1.3. Основные понятия объектно-ориентированного анализа и проектирования информационных систем
- •1.4. Общая характеристика моделей объектно-ориентированного анализа и проектирования
- •Основные элементы языка uml
- •2.1. Пакеты
- •2.2. Канонические диаграммы языка uml
- •2.3. Диаграмма вариантов использования (Use Case Diagram)
- •2.4. Диаграмма классов (Class Diagram)
- •2.5. Диаграмма кооперации (сотрудничества) (Collaboration Diagram)
- •2.6. Диаграмма последовательности (Sequence Diagram)
- •2.7. Диаграмма состояний (Statechart Diagram)
- •2.8. Диаграмма деятельности (Activity Diagram)
- •2.9. Диаграмма компонентов (Component Diagram)
- •2.10. Диаграмма размещения (Deployment Diagram)
- •Паттерны (Patterns)
- •3.1. Паттерны, их классификация
- •3.2. Паттерны проектирования
- •3.3. Архитектурные паттерны
- •Заключение
- •Литература
- •Пример разработки
1.3. Основные понятия объектно-ориентированного анализа и проектирования информационных систем
Модель (model) – абстракция физической системы, рассматриваемая с определенной точки зрения и представленная на некотором языке или в графической форме.
С точки зрения общих принципов системного анализа одна и та же физическая система может быть представлена несколькими моделями.
Назначение отдельной модели системы определяется характером решаемой проблемы.
Основное требование к модели программной системы – она должна быть понятна заказчику и всем специалистам проектной группы, включая бизнес-аналитиков и программистов.
Объектно-ориентированное программирование (ООП) (Object-Oriented Programming) – совокупность принципов, технологий, инструментальных средств для создания программных систем на основе архитектуры взаимодействия объектов.
Основные принципы ООП: абстракция, наследование, инкапсуляция и полиморфизм.
Абстракция (abstraction) – характеристика сущности, которая отличает ее от других сущностей.
Абстракция определяет границу представления соответствующего элемента модели и применяется для определения фундаментальных понятий ООП, таких как класс и объект.
Класс – абстракция совокупности реальных объектов, которые имеют общий набор свойств и обладают одинаковым поведением. Классы можно организовать в виде иерархической структуры.
Объект – экземпляр класса. Объекты, которые не имеют идентичных свойств или не обладают одинаковым поведением, по определению, не могут быть отнесены к одному классу.
Наследование (inheritance) – принцип, в соответствии с которым знание о наиболее общей категории разрешается применять для более частной категории.
Наследование тесно связано с иерархией классов, определяющей, какие классы следует считать наиболее абстрактными и общими по отношению к другим классам. При этом если общий или родительский класс (предок) обладает фиксированным набором свойств и поведением, то производный от него класс (потомок) должен содержать этот же набор свойств и подобное поведение, а также дополнительные, которые будут характеризовать уникальность полученного класса. В этом случае говорят, что производный класс наследует свойства и поведение родительского класса.
Инкапсуляция (encapsulation) характеризует сокрытие отдельных деталей внутреннего устройства классов от внешних по отношению к нему объектов или пользователей.
Клиенту, взаимодействующему с объектом класса, необязательно знать, каким образом осуществлен тот или иной элемент класса. Конкретная реализация присущих классу свойств и методов, которые определяют его поведение, является собственным делом данного класса. Более того, отдельные свойства и методы класса могут быть невидимы за его пределами, это относится к базовой идее введения различных категорий видимости для элементов класса.
Полиморфизм (polymorphism) (греч. Poly – много, morfos – форма) – свойство объектов принимать различные внешние формы в зависимости от обстоятельств, т.е. действия, выполняемые одноименными методами, могут различаться в зависимости от того, к какому из классов относится тот или иной метод.
Например, пусть имеются три объекта соответствующих классов: двигатель автомобиля, электрический свет в комнате и персональный компьютер. Для каждого из них можно определить операцию выключить(). Однако результат выполнения этой операции будет отличаться для каждого из рассмотренных объектов.
Полиморфизм объектно-ориентированных языков связан с перегрузкой функций, но не тождествен ей. Имена методов и свойств тесно связаны с классами, в которых они описаны. Это обстоятельство обеспечивает определенную надежность работы программы, поскольку исключает случайное применение метода для решения несвойственной ему задачи.
Методология объектно-ориентированного анализа и проектирования позволяет отделить процесс написания программного кода от процесса проектирования структуры программы, в результате формируются ответы на вопросы, связанные в большей степени с общим анализом требований к будущей программе, а также с анализом конкретной предметной области, для которой разрабатывается программа (например, сколько и какие классы нужно определить для решения поставленной задачи, какие свойства и методы необходимы для придания классам требуемого поведения, а также какие взаимосвязи имеют место между классами).
Предметная область (domain) – часть реального мира, которая имеет существенное значение или непосредственное отношение к процессу функционирования программы (включает в себя только те объекты и взаимосвязи между ними, которые необходимы для описания требований и условий решения конкретной задачи).
Объектно-ориентированный анализ и проектирование (ООАП) (Object-Oriented Analysis/Design) – технология разработки программных систем, в основу которых положена объектно-ориентированная методология представления предметной области в виде объектов, являющихся экземплярами соответствующих классов.
Методология ООАП тесно связана с концепцией автоматизированной разработки программного обеспечения (Computer Aided Software Engineering – CASE).
Для более углубленного изучения вопросов изложенных в данном разделе рекомендуется обратиться к [3].
Контрольные вопросы
Дайте определение понятию модель.
Какое требование к модели программной системы является основным?
Назовите основные принципы объектно-ориентированного программирования. Дайте определение каждому из них.
В чем отличие объекта от класса?
Приведите пример наследования.
Приведите пример полиморфных операций.
Какие задачи позволяет решить методология объектно-ориентированного анализа и проектирования?