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

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

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

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

Добавлен: 19.06.2023

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

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

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

ВВЕДЕНИЕ

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

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

1) рассмотреть понятие и сущность объектно-ориентированного подхода,

2) проанализировать принципы объектно-ориентированного подхода,

3) исследовать достоинства объектно-ориентированного подхода,

4) изучить недостатки объектно-ориентированного подхода,

5) исследовать объектно-ориентированные языки высокого уровня,

6) проанализировать основные характеристики программных средств, используемых для реализации объектно-ориентированного подхода.

Объектом исследования является объектно-ориентированное программирование. Предметом исследования выступают особенности применения объектно-ориентированного подхода при проектировании информационных систем.

1. Сущность объектно-ориентированного подхода к проектированию информационных систем

1.1 Понятие и сущность объектно-ориентированного подхода

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


Объектно-ориентированное программирование предполагает использование для разработки специализированных языков. Их принято характеризовать тройкой основных свойств:

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

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

- полиморфизмом, то есть возможностью присвоить действиям одно имя, которое будет потом совместно использоваться вниз и вверх по объектной иерархии, при этом на каждый объект иерархии будет возложено выполнение действия таким способом, который подходит именно ему [9, c.104].

Объектно-ориентированное программирование Delphi предоставляет полный набор средств по программированию, в числе которых можно выделить: большую модульность и структурированность, абстрактность, встроенную возможность повторного применения. Эти все характеристики можно отнести к коду, являющемуся более структурированным, более легким в плане обслуживания и заметно более гибким. Очень часто объектно-ориентированное программирование вынуждает нас оставить в стороне характерные суждения о программировании, многие годы считавшиеся стандартными. Однако, когда это уже сделано, данный способ разработки не кажется таким сложным, а представляется наглядным и прекрасным средством для решения множества задач, доставляющих огромные неприятности тривиальному программному обеспечению [10, c.112].

Если основной задачей является, к примеру, изучение объектно-ориентированное программирование на PHP, то стоит отбросить и забыть то, что было знакомо о нем ранее, приступив к его изучению с чистого листа. Только так вы сумеете рассмотреть все тонкости этого подхода, оценить его удобство и возможности. Объектно-ориентированное программирование не представляет собой единственный путь, оно больше похоже на континуум идей, ориентированным на компилирование чистого кода. Компилятор работает по несколько иным принципам, если сравнивать его с интерпретатором, при этом скорость его работы намного выше. Компиляторы нацелены на разработку каких-либо готовых программных продуктов, а не на решение ограниченного круга задач [12, c.83].


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

1.2 Принципы объектно-ориентированного подхода

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

Рассмотрим эти концепции.

Инкапсуляция. Механизм, связывающий код и данные, которыми он манипулирует, защищая оба эти компонента от внешнего вмешательства и злоупотреблений, является инкапсуляцией. Инкапсуляцию можно считать защитной оболочкой, которая предохраняет код и данные от произвольного доступа со стороны другого кода, находящегося снаружи оболочки. Доступ к коду и данным, находящимся внутри оболочки, строго контролируется тщательно определенным интерфейсом. Чтобы провести аналогию с реальным миром, рассмотрим автоматическую коробку передач автомобиля. Она инкапсулирует сотни бит информации об автомобиле, такой как степень ускорения, крутизна поверхности, по которой совершается движение, и положение рычага переключения скоростей. Пользователь (водитель) может влиять на эту сложную инкапсуляцию только одним методом: перемещая рычаг переключения скоростей. На коробку передач нельзя влиять, например, при помощи индикатора поворота или дворников. Таким образом, рычаг переключения скоростей — строго определенный (а в действительности единственный) интерфейс к коробке передач. Более того, происходящее внутри коробки передач не влияет на объекты, находящиеся вне ее. Например, переключение передач не включает фары! Поскольку функция автоматического переключения передач инкапсулирована, десятки изготовителей автомобилей могут реализовать ее, как угодно. Однако с точки зрения водителя все эти коробки передач работают одинаково. Аналогичную идею можно применять к программированию. Сила инкапсулированного кода в том, что все знают, как к нему можно получить доступ, а, следовательно, могут его использовать независимо от нюансов реализации и не опасаясь неожиданных побочных эффектов [11, c.136].


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

Полиморфизм (от греч. “много форм”) — свойство, которое позволяет использовать один и тот же интерфейс для общего класса действий. Конкретное действие определяется конкретным характером ситуации. Рассмотрим стек (представляющий собой список типа “последним вошел, первым вышел”). Предположим, программе требуются стеки трех типов: для целочисленных значений, для значений с плавающей точкой и для символов. Алгоритм реализации каждого из этих стеков остается неизменным, несмотря на различие хранящихся в них данных. В не объектно-ориентированном языке пришлось бы создавать три различных набора подпрограмм стека, каждый из которых должен был бы иметь отдельное имя. Однако в Java, благодаря полиморфизму, можно определить общий набор подпрограмм стека, использующих одни и те же имена [13, c.84].

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


2. Основные достоинства и недостатки подхода объектно-ориентированного подхода

2.1 Достоинства объектно-ориентированного подхода

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

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

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

Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения [8, c.93].

Инкапсуляция информации защищает наиболее критичные данные от несанкционированного доступа.

ООП дает возможность создавать расширяемые системы (extensible systems). Это одно из самых значительных достоинств ООП и именно оно отличает данный подход от традиционных методов программирования. Расширяемость (extensibility) означает, что существующую систему можно заставить работать с новыми компонентами, причем без внесения в нее каких-либо изменений. Компоненты могут быть добавлены на этапе выполнения.

Расширение типа (type extension) и вытекающий из него полиморфизм переменных оказываются полезными преимущественно в следующих ситуациях.

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

Изменение поведения во время выполнения. На этапе выполнения один объект может быть заменен другим. Это может привести к изменению алгоритма, в котором используется данный объект.

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

Доведение полуфабрикатов. Компоненты нет надобности подстраивать под определенное приложение. Их можно сохранять в библиотеке в виде полуфабрикатов (semifinished products) и расширять по мере необходимости до различных законченных продуктов.