Объектно-ориентированное программирование
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

В основе лежит представление предметной области в виде множества объектов, взаимодействующих между собой. Под объектом понимается мыслимая или реальная сущность, обладающая характерным поведением и отличительными характеристиками и являющаяся важной для данной предметной области. Характеристики объекта называют атрибутами. Значение атрибутов  в данный момент времени определяет состояние объекта.

Объект может иметь определенный набор действий (операций), которые можно произвести над атрибутами объекта. Другими словами, набор операций определяет возможные варианты поведения объекта.

Множество объектов, которые имеют одинаковый набор атрибутов и операций, образуют класс объектов. Объединение объектов в класс позволяет рассматривать задачу в общем виде.

Модели предметной области разрабатываются в виде графических диаграмм. Наиболее широко используются диаграммы, определенные в языке UML (Unified Modeling Language). В UML определены 9 типов диаграмм, с помощью которых разрабатываются модели предметной области от логической модели до физической модели.

Коротко остановимся на трех диаграммах, которые используются при разработке практически каждой программы.

Диаграмма вариантов использования. Данная диаграмма определяет функциональность программы в терминах актеров и вариантов использования. Актер является инициатором выполнения варианта использования, а вариант использования определяет функциональность.

Рис.5

Пример диаграммы вариантов использования для предметной области “Экзамен по дисциплине “Информатика и программирование” приведен на Рис.5. Актером является Студент, варианты использования изображены в виде овалов. Основной вариант Вычислить итоговую оценку в обязательном порядке включает варианты Вычислить 10-ти бальную оценку и Вычислить 5-ти бальную оценку. Варианты использования, которые расширяют основной вариант и выполняются не всегда, а лишь при определенных условиях, помечаются стрелкой в обратном направлении и пометкой <<extended>>.

Диаграмма классов. Структурно программа представляет собой набор классов, находящихся между собой в определенных отношениях. Обозначение класса включает три секции, показанные на Рис.6.

Если класс не содержит атрибутов или операций – соответствующая секция остается не заполненной. Приведенная на Рис.6 диаграмма классов описывает предметную область “Экзамен по дисциплине “Информатика и программирование”.

При разработке программ вместо термина атрибут используют термин поле, а вместо термина операция – термин метод.

Отношения между классами будут рассмотрены в разделе, посвященном программированию с использованием определяемых в программе классов. Пока же ограничимся рассмотрением без излишней детализации основополагающего отношения – наследования.

 

Рис.6

 

Каждый класс может быть использован в качестве предка для определения класса-наследника. Класс–наследник имеет поля и методы, унаследованные от предка, и может определять свои собственные поля и методы, а при необходимости переопределять унаследованные поля и методы. Наследование позволяет сократить затраты на разработку программного кода за счет использования ранее разработанного и проверенного кода.

 

Диаграмма кооперации. Рассмотренная диаграмма классов определяет статическое представление предметной области и разрабатывается на уровне классов. Динамические свойства предметной области проявляются в выполнении конкретными объектами операций и изменении состояния. Поэтому диаграммы для отражения динамических свойств создаются на уровне объектов.

Следует помнить, что смысл понятия класс несколько отличается при составлении логической модели и физической модели. В первом случае класс играет роль классификатора при объединении существующих объектов в группу. Во втором случае разработчика программы рассматривает класс некий шаблон, определяющий правила, по которым программа создает конкретные экземпляры класса - объекты.

Диаграмма кооперации – одна из диаграмм для отражения динамических свойств. Данная диаграмма определяет взаимодействие между объектами путем передачи сообщений между ними. В ответ на полученное сообщение объект выполняет заданную операцию и, в общем случае, изменяет свое состояние. Изменение состояния объекта может повлечь за собой передачу сообщения другому объекту. Сообщение может передаваться сразу нескольким объектам. Объект, передавший сообщение, может дожидаться ответа или же продолжать работу.

В простейшем случае сообщение представляет собой вызов из объекта одного класса метода объекта другого класса и переход в состояние ожидания ответа, как показано на Рис.7.

В этом случае поля объекта напоминают данные в процедурно-ориентированном программировании, а методы – подпрограммы. Принципиальным отличием является то, что в процедурно-ориентированном программировании данные и подпрограммы могут существовать как самостоятельные сущности независимо друг от друга, а поля и методы объединены (инкапсулированы) в единый объект и раздельно друг от друга не существуют.

Основная цель диаграммы кооперации - показать какие операции объектов используются при реализации того или иного варианта использования. Поэтому диаграмм кооперации должно быть столько же, сколько вариантов использования определено в диаграмме вариантов использования.

 

Рис.8

 

Пример диаграммы кооперации для варианта использования Вычислить итоговую оценку приведен на Рис.8. Сплошной линией показана связь между объектами. Рядом с линией связи нанесена стрелка вызова метода. Стрелка направлена на объект, метод которого вызывается, а рядом со стрелкой указан вызываемый метод. Вызовы методов пронумерованы. Нумерация вызовов соответствует последовательности их выполнения. В данной диаграмме конкретное имя объекта не представляется логически важным, поэтому оно не указано.

Достоинства объектно-ориентированного программирования:

 - отражение структуры предметной области в виде взаимосвязанных сущностей

 - более простая модификация программ за счет наследования полей и методов и возможности изменять код базовых классов-предков без внесения изменений в код классов-наследников.

 - поддержка создания программ с распределенной обработкой

Недостатки:

 - меньшая предсказуемость поведения программы

 - повышенные требования к ресурсам среды исполнения

Для разработки программ на основе объектно-ориентированного программирования используются языки Java, С#.

Отметим, что существуют языки, позволяющие использовать в одной программе сочетание обеих рассмотренных парадигм программированиям. К таким языкам относятся языки С++ и Object Pascal.

 

Жизненный цикл программы

Под жизненным циклом программы понимают совокупность взаимосвязанных и следующих во времени этапов, начиная от разработки требований к программе и заканчивая полным отказом от ее использования.

Существует несколько моделей (схем) жизненного цикла, которые отличаются количеством этапов и задачами, решаемыми на каждом из них, но главное – хронологической последовательностью этапов. В этом отношении полярными являются так называемая каскадная схема жизненного цикла и итерационная схема жизненного цикла.

Каскадная схема предполагает строго последовательное выполнение типовых этапов, показанных на Рис.9.

 

Рис.9

Исключение составляет этап сопровождения, который выполняется параллельно этапу эксплуатации. Кратко отметим основное содержание этапов.

Анализ – разработка логической модели и определение спецификации.

Проектирование – определение структуры программы и распределение функциональности по элементам этой структуры.

Разработка – определение способа реализации требуемой функциональности в каждом из элементов структуры и разработка физической модели предметной области на некотором языке программирования.

Внедрение – конфигурирование программы под конкретную среду исполнения и проведение испытаний на соответствие программы требованиям заказчика.

Эксплуатация – применение программы по назначению.

Сопровождение – модификация программы с целью исправления ошибок, выявленных при эксплуатации.

Каждый этап не начинается до завершения предыдущего и оформления документации по завершенному этапу.

Каскадная схема изначально преследует цель минимизации модификаций физической модели за счет тщательной проработки каждого этапа. Под каскадную схему ориентировано несколько методик разработки программ, в частности действующий в России стандарт ГОСТ 34.601-90.

Основным недостатком каскадной схемы является исключение заказчика из большинства этапов жизненного цикла, что чревато риском проявления ошибок, допущенных на начальных этапах, лишь при внедрении программы. 

Итерационная схема предполагает несколько фаз в жизненном цикле. Каждая фаза может состоять из одной или нескольких итераций. На каждой итерации выполняются виды деятельности, направленные на уточнение результатов анализа, проектирования и разработки, полученных на предыдущей итерации (Рис.10). На каждой итерации должен быть получен вариант физической модели. Результаты каждой фазы документируются.

 

 

Программа, полученная на каждой фазе, отличается более полной реализацией функциональности по сравнению с программой, полученной на предыдущей фазе. Итерационная схема предполагает участие заказчика на всех фазах жизненного цикла и тем самым ориентирована на снижение рисков неправильной трактовки спецификации проектировщиками и разработчиками.

Под итерационную схему ориентирована методика RUP (Rational Unified Process), при этом для документирования результатов каждой фазы используются одни и те же диаграммы языка UML, отличающиеся только степенью их детализации.

Недостатком схемы является необходимость многократной модификации физической модели.



Дата: 2019-02-02, просмотров: 328.