Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

СТРОЕНИЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА

Содержание:

ВВЕДЕНИЕ

На заре семидесятых годов двадцатого века был отмечен кризис программирования. Было замечено, что масштабные проекты стали выполнятся с существенными задержками или с перерасходом средств на разработку (development). Вместе с этим достаточно большое количество программ не обладали заявленными функциональными возможностями, из-за чего их качество не устраивало конечного пользователя.

Не так давно, никто даже подумать не мог, что настанет момент, когда компьютеры будут решать столько задач, что станут важной частью жизни человека, а также принесут огромную пользу. Но сам по себе компьютер ничто. Чтобы он был полезен, нужно поставить перед ним задачу/условие, и что немаловажно - сделать это нужно правильно. Тут нам окажут помощь различные способы по проектированию программного обеспечения (ПО).

Это дало начало проведению ведущими зарубежными аналитиками большого количества аналитических исследований, но результаты их были неудовлетворительными. К запланированному сроку на тот момент были завершены только 1/10 проектов. Из остальных проектов примерно половина - сданы заказчику с существенным опозданием либо с превышением запланированных расходов. Часто, причинами провалов являлась нечеткая или неполная формулировка требований к программному обеспечению, слабое планирование, недостаточное вовлечение людей в работу над задачами проекта и т.п. В связи с этим, была необходимость в новом подходе к проектированию ПО.

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

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

1 СТРОЕНИЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА

1.1. Подходы к анализу и проектированию информационных систем

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

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

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

В-третьих, отличие двух подходов заключается в структурной организации внутри модулей системы. В структурном подходе модуль состоит из функций, иерархически связанных между собой отношением композиции (англ. part-of – часть-целое), т.е. функция состоит из подфункций, подфункция из под-подфункций и т.д. В объектно-ориентированном подходе иерархия выстраивается с использованием двух отношений: композиции и наследования (англ. is-a – это есть). При этом в объектно-ориентированном подходе «объект-часть» может включаться сразу в несколько «объектов-целое». Таким образом, модуль в структурном подходе представляется в виде дерева, а в объектно-ориентированном подходе – в виде ориентированного графа, т.е. с помощью более общей структуры.

Наиболее популярными методологиями, объектно-ориентированного подхода поддерживающими данный подход, в настоящий момент являются:

  • унифицированный процесс (Unified Process, UP);
  • экстремальное программирование (eXtreme Programming, XP);
  • гибкое моделирование (Agile Modeling, AM).

Базовым средством фиксации (документирования) результатов проектирования систем посредством этих методологий является унифицированный язык моделирования (Unified Modeling Language, UML)."[1]

1.2. Сущность объектно-ориентированного подхода

Термин «объект» или эквивалентные ему понятия появились практически независимо в различных областях, связанных с компьютерами, в процессе разработки:

  • архитектуры компьютеров (Burroughs 5000, Plessey 250, IBM System/38, Intel 432);
  • объектно-ориентированных операционных систем (Plessey/System 250, Secure UNIX, StarOS, iMax);
  • объектно-ориентированных языков программирования (Simula, Smalltalk, Modula);
  • теории баз данных (модели «сущность-связь»);
  • систем искусственного интеллекта (фреймы).

В процесс создания программ термин «объект» впервые был введен в языке Simula 67 при определении сущностей предметной области.

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

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

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

Индивидуальность – это свойство сущности, с помощью которого ее можно отличить от других. Например, объект «преподаватель» в реальности – это мужчина или женщина, определенного роста, веса и возраста. Этот человек в назначенные рабочие дни приходит в один из вузов. С точки зрения проектирования системы абстракция этого типа объектов будет сведена к базовому набору атрибутов: фамилия, имя, отчество, дата рождения, пол. После этого, набор атрибутов зависит от сферы использования проектируемой системы. Например, для бухгалтерии становиться важной наличие информации о должности, на которой работает преподаватель, время приема на работу, так как это определяет стаж, а соответственно размер надбавки за стаж работы, наличие ученой степени и ученого звание, что тоже предполагает начисление соответствующих надбавок. Для учебного отдела интерес представляет список дисциплин и количество часов, которые читает преподаватель.

Для логического группирования однотипных объектов предметной области в объектно-ориентированном подходе используется понятие «класс».

Класс – это  совокупность объектов, имеющих общую структуру и поведение. Фактически, класс – это шаблон, на основе которого генерируются однотипные объекты. В качестве синонима понятия «объект» часто употребляют понятие «экземпляр класса».

Каждый класс характеризуются обозначенным набором атрибутов и методов. Текущие значения атрибутов четко определяют текущее состояние объекта. Набор методов и их алгоритмическая реализация определяют поведение класса объектов.

Когда говорят об объектно-ориентированном подходе, то обязательно дают понятие терминам "наследование", "инкапсуляция", "полиморфизм".

Наследование – принцип, в соответствии с которым знание об общей категории разрешается применять для более узкой. Применительно к классам это означает, что порождаемый класс (узкая категория) полностью наследует (включает в себя) все атрибуты и методы, определенные в родительском классе (общей категории). При этом в дочернем классе можно доопределять атрибуты и вводить новые методы. Например, дочерний класс «преподаватель» будет наследовать от родительского класса «сотрудник» все атрибуты, к которым будут отнесены фамилия, имя, отчество, дата рождения, дата приема на работу и все методы (определения возраста по дате рождения, стажа работы по дате приема на работу). При этом данный класс будет иметь обязательно атрибуты "Ученая степень" и "Ученое звание".

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

Полиморфизм – принцип построения определяет возможность принимать различные внешние формы или функциональность (поведение) в зависимости от контекста. Например, методы Paint() (отрисовать) или DefineS() (определить площадь), определенные в родительском классе «фигура», для классов «эллипс» и «прямоугольник» должны быть реализованы по-разному."

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

1.3 Базовые составляющие объектно-ориентированного подхода

Базовыми составляющими объектно-ориентированного подхода являются:

унифицированный процесс;

унифицированный язык моделирования;

шаблоны проектирования.

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

Унифицированный язык моделирования UML  используется для определения, визуализации и конструирования моделей системы в виде диаграмм и документов на основе объектно-ориентированного подхода. Следует отметить, что унифицированный процесс и UML разрабатывались совместно.

На стадиях анализа и проектирования часто используются так называемые шаблоны (паттерны) проектирования.

Шаблон – это пара «проблема/решение», содержащая готовое обобщенное решение типичной проблемы, которой присвоено имя. Обычно, шаблон кроме текстового описания содержит также одну или несколько диаграмм UML (например, диаграммы классов, кооперации и/или последовательности), графически иллюстрирующих состав и структуру классов, а также особенности их взаимодействия при решении поставленной проблемы.  Шаблоны разрабатываются опытными профессионалами и являются проверенными, эффективными (порой оптимальными) решениями. Применение шаблонов обеспечивает сокращение затрат и повышение качества разработки ПО.

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

  1. Описание системы в виде объектов больше соответствует содержательному смыслу предметной области.
  2. Сущности предметной области, как правило, обладают поведением, что в объектно-ориентированном проектировании отражается с помощью определения методов класса. В структурном подходе данные (атрибуты) и алгоритмы (методы) существуют отдельно друг от друга.
  3. Объединение атрибутов и методов в объекте (классе), а также инкапсуляция позволяют добиться большей внутренней связности и меньшей связности между компонентами системы.
  4. Объектно-ориентированный подход позволяет легче организовать параллельные вычисления, так как каждый объект обладает собственными значениями характеристик (атрибутов) и поведением, за счет чего можно добиться автономности обработки атрибутов различных экземпляров класса.
  5. Case-средства, поддерживающие объектно-ориентированный подход, на основе информации об объектах позволяют достичь большей степени автоматизации генерации кода. Case-средства, поддерживающие структурный подход, хорошо справляются с генерацией структур БД. Однако следует отметить, что эта структура должна удовлетворять требованиям нормализации. В связи с чем автоматическая генерация кода (например, экранов или функций обработки данных) возможна лишь в определенных случаях.

2 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ АНАЛИЗ И ПРОЕКТИРОВАНИЕ ИНФОРМАЦИННЫХ СИСТЕМ.

2.1 Суть анализа и проектирования в ООП

Основная идея объектно-ориентированного анализа и проектирования (object-oriented analysis and design) состоит в "… рассмотрении предметной области и логического решения задачи с точки зрения объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется определению и описанию объектов (или понятий) в терминах предметной области. В процессе объектно-ориентированного проектирования определяются логические программные объекты, которые будут реализованы средствами объектно-ориентированного языка программирования. Эти программные объекты включают в себя атрибуты и методы. И, наконец, в процессе конструирования (construction) или объектно-ориентированного программирования (object-oriented programming) обеспечивается реализация разработанных компонентов и классов.

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

Далее следует объектно-ориентированный анализ предметной области (object-oriented domain analysis). Задачей этого этапа является определение видов деятельности участников процесса и составлении концептуальной модели (conceptual model), которая отражает различные категории элементов предметной области. Причем не только виды деятельности участников, но и все относящиеся к делу понятия."[2]

Следующий этап - это объектно-ориентированное проектирование (object-oriented design), при котором основное внимание сосредоточено на распределении обязанностей. Распределение обязанностей (responsibility assignment) означает выделение задач и обязанностей различных программных объектов в приложении.

Наиболее важным моментом объектно-ориентированного анализа и проектирования является квалифицированное распределение обязанностей между компонентами программной системы. Дело в том, что единственный вид деятельности, без которого невозможно обойтись. К тому же он оказывает определяющее влияние на робастность, масштабируемость, расширяемость и возможность повторного использования компонентов. Обязанности объектов и их взаимодействия изображаются с использованием диаграмм классов (design class diagram) и диаграмм взаимодействий (collaboration diagram).

2.2 Диаграммы классов

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

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

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

На диаграммах классов обычно показываются ассоциации и обобщения. Каждая ассоциация несет информацию о связях между объектами внутри программы. Чаще всего применяются бинарные ассоциации, связывающие два класса. Ассоциации присваивается название, выражающее суть отображаемой связи. Кроме названия, ассоциация может иметь такую характеристику, как множественность. Она показывает, сколько объектов каждого класса может участвовать в ассоциации. Множественность указывается у каждого конца ассоциации (полюса) и задается конкретным числом или диапазоном чисел. Множественность, указанная в виде звездочки, предполагает любое количество (в том числе, и ноль). Например, если ассоциация называется «Товарная групп», то ее можно связать с одним или несколькими объектами класса «Товар». Связаны между собой могут быть и объекты одного класса, поэтому ассоциация может рекурсивной. Например, для класса «Воинская часть» можно ввести ассоциацию «Подчинение», которая позволит создать иерархическую структуру военных подразделений.

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

2.3 Язык проектирования UML

В наше время для проектирования ИС принято пользоваться средствами предоставляемыми унифицированным языком моделирования UML.

UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования, в основном, программных систем. UML не является языком программирования, но на основании UML-моделей возможна генерация кода.

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

UML позволяет также разработчикам программного обеспечения достигнуть соглашения в графических обозначениях для представления общих понятий (таких как класс, компонент, обобщение (англ. generalization), агрегация (англ. aggregation) и поведение) и больше сконцентрироваться на проектировании и архитектуре.

3 СРЕДСТВА ДЛЯ РЕАЛИЗАЦИИ ИНФОРМАЦИОННЫХ СИСТЕМ
С ИСПОЛЬЗОВАНИЕМ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА

Основными средствами реализации являются объектно-ориентированные языки программирования. Стоит отметить что их популярность в настоящее время довольно велика. Для примера выделим некоторые из них.

3.1 C++

Си++ (англ. C++) — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования.

Началом разработки данного языка является 1979 год. При появлении язык назывался “C с классами”, однако позже он получил имя C++. Дав такое название, разработчики подчеркнули, с одной стороны, что язык основныется на языке C, и, с другой стороны, что он превосходит существенно по возможностям своего родителя. Основное дополнение C++ заключалось в языковом обеспечении работы с классами. Вместе с тем создатели C++ стремились сохранить совместимость с C: синтаксис первого основан на синтаксисе последнего, и большинство программ на C будут работать и как C++.

Первый выпуск C++ для коммерческого использования состоялся в 1985 году, вместе с публикацией книги “The C++ Programming Language”, которая на долгое время стала его неофициальным стандартом. В 1989 году вышла вторая версия языка в сопровождении книги “The Annotated C++ Reference Manual”.

В 1990-х годах язык стал одним из наиболее широко используемых языков программирования общего назначения. Первым официальным стандартом языка стал ISO/IEC 14882:1998, более известный как C++98. В 2003 году была принята его дополненная версия, C++03, а в 2005 году был опубликован “Library Technical Report 1” (сокращенно TR1) — документ, описывающий расширения стандартной библиотеки. TR1 не является стандартом, но большинство актуальных компиляторов C++ поддерживает его. Наконец, в 2011 году был принят текущий стандарт, C++11. Пример реализации класса в С++ на рис.3.1.

Рисунок 3.1 – Пример реализации класса в С++

Чаще всего разработку программ с использованием данного языка выполняют в среде MS Visul Studio, последняя версия данной оболочки вышла в 2013 году (см сайт – Microsoft.com). Использование данной среды позволяет эффективно разрабатывать программы и программные комплексы любой сложности, функционирующих под управлением операционной с системы Windows.

3.2 Java

Java — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания апплетов, приложений и серверного программного обеспечения.

Программы на Java могут быть транслированы в байт-код, выполняемый на виртуальной java-машине (JVM) — программе, обрабатывающей байт-код и передающей инструкции оборудованию, как интерпретатор, но с тем отличием, что байт-код, в отличие от текста, обрабатывается значительно быстрее.

Язык Java зародился как часть проекта создания передового программного обеспечения для различных бытовых приборов. Реализация проекта была начата на языке C++, но вскоре возник ряд проблем, наилучшим средством борьбы с которыми было изменение самого инструмента — языка программирования. Стало очевидным, что необходим платформо-независимый язык программирования, позволяющий создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами.

Язык Java потребовался для создания программного обеспечения, которое предполагает выполнения в бразерах. На практике языковые конструкции языка, определенные для языка Java, похожи на синтаксис языка C++. В Java используются практически точно такие же соглашения для объявления переменных, передачи параметров, операторов, а также и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++. Пример реализации класса на Java на рис. 3.2.

Рисунок 3.2 – Пример реализации класса в JAVA

Отличием IDE-оболочек для разработки JAVA-программ является их кросс-платформенность, т.е. возможность формирования кода, который может работать под управлением любой операционной системы – Windows, Linux, MacOS. Широкое применение находят инструментальные оболочки для создания приложений для мобильных телефонов. Наиболее используемой оболочкой является Eclipse, которая в настоящее время сопровождается фирмой ORACLE.

3.3 Ruby

Ruby — интерпретируемый объектно-ориентированный язык программирования, созданный в 1995 году Юкихиро Мацумото по прозвищу Мац. Автор ставил себе целью создать истинно объектно-ориентированный язык, что у него и получилось. Ruby имеет строгую динамическую типизацию. Особенностью языка является то, что в нем можно изменить любой класс в любое время. Как и во многих современных языках, в Ruby все данные является объектом (даже классы являются объектом класса Class), а все функции — методами. Пример реализации класса на Ruby на рис.3.3.

Рисунок 3.3 – Пример реализации класса в Ruby

С практической точки зрения данный язык оказывает конкуренцию JAVA при создании интернет-приложений, но обычно разрабатывается в блокноте, что определяет достаточно высокую трудоемкость написания кода.

ЗАКЛЮЧЕНИЕ

Таким образом, целесообразность использования объектно–ориентированного подхода довольно велика. И поэтому он пользуется огромной популярностью с начала его эксплуатации в 80-х годах до нашего времени. Актуальность использования также определяется тем, что объектно-ориентированные системы более открыты и легче поддаются внесению изменений, так как их конструкция базируется на устойчивых формах. Именно это дает возможность программам развиваться пошагово и не приводит к полной ее переработке даже в случае существенных изменений исходных требований. К недостаткам относятся, то возрастают требование и вычислительным средствам, на которых будет работать разработанная программа, и к вычислительным средствам, используемым при разработке. Кроме этого, возрастает стоимость разработки, однако возрастает ее оперативность.

СПИСОК ЛИТЕРАТУРЫ

  1. Козырев А.А. Информационные технологии в экономике и управлении – СПб.: Изд-во Михайлова В.А., 2003
  2. Stroustrup D. The C++ Programming Language. Addison-Wesley, 1986.
  3. Иванов А.Г., Карпова А.В., Семик В.П., Филинов Ю.Е. Объектно-ориентированная среда программирования. Системы и средства информатики. Вып.2. - М.: Наука, 2011.
  4. Уткин В.Б., Балдин К.В. Информационные системы и технологии в экономике. – М.: ЮНИТИ, 2007.
  5. Хотинская Г.И. Информационные технологии управления. – М.: Дело и Сервис (ДИС), 2003.
  1. Иванов А.Г., Карпова А.В., Семик В.П., Филинов Ю.Е. Объектно-ориентированная среда программирования. Системы и средства информатики. Вып.2. - М.: Наука, 2011.

  2. Иванов А.Г., Карпова А.В., Семик В.П., Филинов Ю.Е. Объектно-ориентированная среда программирования. Системы и средства информатики. Вып.2. - М.: Наука, 2011.