Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (История возникновения объектно-ориентированного подхода).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.06.2023

Просмотров: 39

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

После построения двух предыдущих поведенческих диаграмм строится структурная диаграмма классов, которая отображает совокупность классов разрабатываемого приложения с указанием их атрибутов и методов [3, с.37]. Основными элементами диаграммы являются классы и отношения между ними [1, с.224]. Данная диаграмма наиболее полно отображает архитектуру проектируемой системы [1, с.223]. Пример диаграммы показан на рисунке 7. При построении этой диаграммы задействуются все, описанные выше, объектно-ориентированные механизмы. Так, все атрибуты и операции классов указываются с указанием области видимости. За счет использования отношений, которые обозначаются стрелками, описывается механизм наследования, а также механизм реализации (когда один класс реализует указанный интерфейс), механизм ассоциации (когда один класс взаимодействует с другим, или включает в себя один или несколько экземпляров другого класса), механизм композиции (когда объект одного класса может быть включен в объект другого с условием, что вложенный объект может находится в одном объекте контейнере) и механизм агрегации, аналогичный механизму композиции за исключением того, что вложенный объект может находится в нескольких объектах-контейнерах [1, с.226].

Рисунок 7. Диаграмма классов интернет - магазина

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

Рисунок 8. Диаграмма коммуникаций

Последние наиболее важные диаграммы - это диаграмма состояний и диаграмма деятельности. Диаграмма состояний показывает каким образом какой-либо элемент (обычно класс) переходит из одного своего состояний в другое. Основными элементами диаграммы являются: состояния, переходы. Кроме того, особыми знаками обозначаются начальные и конечные состояния. На рисунке 9 показан пример диаграммы состояний для интернет-магазина.


Рисунок 9. Диаграмма состояний

Диаграмма деятельности описывает потоки и последовательности выполнения работ конкретного варианта использования. Основными элементами диаграммы являются: узлы действий, узлы управления и узлы объектов [1, с.218].

Рисунок 10. Диаграмма деятельности интернет-магазина

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

3. Применение объектно-ориентированного подхода в современных

RAD IDE средах

Разработка системы, с применением объектно-ориентированного подхода, в современных языках программирования, предполагает владение двум основными средствами этих языков: объектно-ориентированными механизмами и библиотеками, написанными с применением данного подхода, в том числе библиотекой визуальных (и не визуальных) компонентов - VCL.

3.1. Язык программирования Delphi

Язык программирования Delphi, ранее известный как Object Pascal, получил свое название с выхода в свет интегрированной среды разработки (IDE) Borland Delphi 2007. На сегодняшний день поддержка этого языка реализована в IDE Embarcadero RAD Studio. Последняя версия среды - Embarcadero RAD Studio 10.1 Berlin.

Класс, описывающий объект, является в Delphi особым типом данных [5, с.103]. Определение класса начинается с ключевого слова type, за которым следуют поля и методы, с указанием их области видимости. На рисунке 11 показано общее определение класса. Здесь, для примера, создается класс user, на базе которого будет создан соответствующий

Рисунок 11. Объявление класса в Delphi

объект. В этом объявлении задействуются все механизмы объектно-ориентированного программирования: наследование, инкапсуляция и полиморфизм. Механизм наследования задействуется во второй строчке кода - "Tuser = class(TObject)", и означает что создается новый класс, родителем которого будут являться класс TObject [5, с.110]. Далее с помощью ключевых слов "private", "public","protected" и "published" задаются области видимости, с помощью которых настраивается наследование. Все поля, свойства и методы, размещенные в секции private, в секции частных объявлений, доступны только из того же программного модуля в котором описан класс. В секции защищенных объявлений protected находится информация доступная для классов потомков. В секции общих объявлений public находится информация доступная для всех. Секция опубликованных объявлений published аналогична секции public, за одним исключением - свойства, опубликованные в этой секции доступны на этапе конструирования программы, а не только на этапе исполнения.


Механизм полиморфизма задействован в виде переопределения поведения конструктора и деструктора класса - родителя (специальные методы создания и уничтожения объекта) [5, с.111].

Механизм инкапсуляции задействован при объявлении свойств класса в разделе published [5, с.108]. Здесь объявлено три свойства: Fio, Address и Age и указано что чтение данных из этих свойств осуществляется из соответствующих полей, а запись через специальные методы, которые в данном примере проверяют корректность введенных значений (см. рис. 12)

Рисунок 12. Методы посредники доступа к полям объекта

Специфика разработки объектно-ориентированных приложений в данной среде предполагает широкое использование библиотеки визуальных компонентов. Эта библиотека написана с использованием объектного подхода, поэтому при разработке какой-либо системы решается вопрос выбора подходящего класса - родителя, в котором реализован подходящий функционал. На рисунке 13 показана часть иерархии классов этой библиотеки VCL [9, с.172]. Знание особенностей

Рисунок 13. Часть иерархии классов библиотеки VCL

реализации классов из этой библиотеки, а также владение основными средствами объектно-ориентированного подхода, позволяет разрабатывать полнофункциональные приложения с применением самых передовых технологий инкапсулированных в этих классах [5, с.114]

3.2. Язык программирования С++

В языке программирования C++ реализовано множество различных объектно-ориентированных механизмов. Некоторые эксперты считают, что столь обширные средства языка его необоснованно усложняют [8, с.119]. Тем не менее, "С++", признанный стандарт программирования сложных объектно-ориентированных систем. На этом языке реализовано множество сложнейших систем, в том числе большая часть кода операционных систем Windows и Linux написана на С++.

Объявление класса аналогично объявлению в Delphi (см. рис. 14).

Рисунок 14. Основные механизмы ООП в С++

В этом примере мы видим перегруженный конструктор User и вызов этого конструктора по умолчанию [6, с.496]. Кроме того, на этом рисунке видны скрытые поля, методы класса осуществляющие доступ к этим полям.

Кроме описанных выше механизмов в языке С++ реализован механизм множественного наследования, механизм шаблонов, особый модульный механизм - пространство имен [8, с.115].


3.3 Язык программирования PHP

PHP (PHP: Hypertext Preprocessor) - популярный скриптовый язык программирования web-серверов, поддерживающий объектно-ориентированные средства. Наиболее популярным IDE для этого языка является среда программирования NetBeans (последняя версия - NetBeans IDE 8.2.). Синтаксис языка схож с синтаксисом С++. Применение объектно-ориентированных механизмов в скриптовых языках значительно упрощает процесс программирования web-серверов [4, с.133]. На рисунке 15 приведено объявление аналогичного класса User.

Рисунок 15. Основные механизмы ООП в PHP

На этом рисунке видно описание базового класса, в котором задан лишь один конструктор, и описание производного класса. В производном классе User конструктор базового класса перегружен. Кроме того, в производном классе объявлены скрытые поля name и password доступ к которым возможен только посредством методов getName и getPass, чем достигается инкапсулирование данных в классе.

ЗАКЛЮЧЕНИЕ

В ходе написания этой работы мы рассмотрели историю возникновения объектно-ориентированной технологии в языках программирования и проектирования. Выявили, что основным мотивом к созданию этой технологии являлось введение обобщающих понятий и средств программирования с целью упрощения сложных структур программ. Вехой этого процесса стало появления унифицированного процесса языка моделирования UML. Мы рассмотрели основные диаграммы этого языка, показали каким образом осуществляется анализ предметной области и как такой анализ приводит в конце к построению диаграммы классов и других детализированных диаграмм классов, после построения которых осуществляется непосредственная генерация кода будущей программы. Кроме того, на примере технологий объектно-ориентированного программирования Delphi, С++ и PHP, мы рассмотрели особенности механизмов ООП в этих языках. Установили схожесть ООП технологий в этих языках и универсальность объектно-ориентированного подхода к программированию и проектированию. Тем не менее, объектный подход вовсе не является панацеей от всех болезней. Его удобно использовать в системах, которые предполагают существование в памяти огромного числа родственных элементов, группирующихся в динамические структуры [8, с.113]. Недаром этот подход был впервые реализован в языке имитационного моделирования SIMULA-67. Несмотря на это, этот подход выработал то, что сегодня называется унифицированным процессом проектирования, привел к появления UML. Поэтому, несмотря на пристрастие разработчиков к той или иной парадигме программирования, использование UML при проектировании значительно упрощает сложность процесса проектирования, позволяет выявить структуру системы и её поведение, и реакцию на внешние воздействия. Эти качества безусловно являются плюсами объектного подхода. Однако, он не лишен недостатков. Во-первых, в виду механизма позднего связывания, иногда в программе, написанной с применением этого подхода, невозможно определить какая из функций (методов) будет вызвана. Кроме того, по утверждению некоторых экспертов, привнесенная объектно-ориентированным подходом графическая нотация, значительно усложнила процесс программирования, в виду того, что необходимость в какой-либо графической нотации отпала с появлением парадигмы структурного программирования [8, с.114].