Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (ПОНЯТИЕ И СУЩНОСТЬ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА).pdf

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

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

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

Добавлен: 17.06.2023

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

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

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

ВВЕДЕНИЕ

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

В настоящее время методы программирования принято разделить на две основные группы: метод структурного программирования сверху вниз; объектно-ориентированное программирование (далее – ООП).

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

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

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

Такие языки программирования как Smalltalk, Object Pascal, C++, Clos и Ada относятся к объектно-ориентированным языкам.

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

Объект исследования – объектно-ориентированный подход.

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

Задачами исследования является:

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

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

ГЛАВА 1. ПОНЯТИЕ И СУЩНОСТЬ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА

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


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

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

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

– в OOП базовые элементы есть объекты, а не алгоритмы;

– каждый объект представляет собой экземпляр какого-либо определенного класса;

– классы образуют иерархическую структуру.

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

Следует обратить внимание на то, что не все языки программирования являются объектно-ориентированными в строгом смысле этого слова. Так, например, на языке Pascal можно, используя тип Record, создавать объекты и классы, но от этого данный язык не становится объектно-ориентированным, здесь наблюдаются только «отголоски» принципа объектности.

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

При этом: объекты принадлежат соответствующим типам (классам); классы наследуют свойства супер типов (суперклассов)[2].

Переход на объектно-ориентированное программирование начался с языка Simula и получил развитие в последующих языках программирования высокого уровня Smalltalk, Object Pascal, C++, Clos, Ada и Eiffel. Эти языки принято называть объектными или объектно-ориентированными. В этих языках структура программ имеет форму графа, а не дерева, присущего алгоритмическим языкам.

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


Введение понятия объекта и соответствующего ему стиля программирования создает благоприятные возможности для более качественных средств, обеспечивающих лучшее выявление ошибок, большую эффективность написания программ, сокращение программного кода, улучшение компиляции, экономию памяти. Объектный подход присущ как объектным, так и объектно-ориентированным языкам программирования. Этот стиль программирования начался с языков Simula и Smalltalk, а затем их идеи были внедрены в другие языки высокого уровня, которые получили название объектно-ориентированных языков. Примером этого явления стали модификации языка С в виде C++ и Objective С. Языки Object Pascal, Eiffel и Ada возникли из языка Pascal. Категория объекта использовалась человеком с давних времен[3].

Еще античные греки высказали идею о том, что мир можно трактовать в понятиях как объектов, так и событий. А в XVII веке Р. Декарт отмечал, что человечество рассматривает мир с объектно-ориентированной точки зрения. Для человека объектом является: осязаемый и (или) видимый предмет; нечто, воспринимаемое мышлением; нечто, на что направлена мысль или действие.

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

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

Можно определить объект как некую субстанцию, имеющую четко очерченные границы. В ООП понятия класса и объекта неразрывно связаны друг с другом, так что невозможно говорить об объекте без его привязки к классу. Однако они существенно отличаются по своей сути. Если объект обозначает конкретную сущность, определенную во времени и пространстве, класс определяет лишь абстракцию существенного в объекте. Другими словами, классом является набор объектов, обладающих общей структурой и одинаковым поведением[4].

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


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

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

Управляемость для иерархических систем предполагает минимизацию избыточности данных (аналогичную нормализации) и их целостность, поэтому созданное удобно управляемым — будет и удобно пониматься. Таким образом, через тактическую задачу управляемости решается стратегическая задача — транслировать понимание задачи программистом в наиболее удобную для дальнейшего использования форму.

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

С развитием процессоров возникла необходимость в более универсальных и широко применимых инструментах для взаимодействия с компьютером. Со временем машинные коды стали очень длинны и неудобны для понимания, поэтому было решено оперировать командами, интуитивно понятными человеку, читающему и пишущему код. Первым высокоуровневым языком для ЭВМ, использовавшим такой подход, стал Фортран. Машинные команды превратились в читабельные: OPEN, CLOSE, PRINT, здесь впервые появляется блочный оператор IF и такие конструкции, как IF THEN — ELSE.

В 1960 — начале 1970 годов начинается развитие следующей парадигмы программирования — структурное программирование, еще один шаг к объектно-ориентированному подходу в проектировании ПО. После работы Эдгара Дейкстры «О вреде оператора goto» у разработчиков того времени приходит понимание, что работу любой программы можно описать, используя только три управляющие структуры: последовательность; ветвление; цикл. Оператор goto с тех пор признан избыточным. Это оператор, позволяющий перейти к любому блоку программы. И начинающим программистам порой кажется, что нет ничего проще, чем использовать оператор goto в определенных участках кода, чтобы не выдумывать очередные ветвления и циклы. Но на деле, использование данного оператора рано или поздно приводит к тому, что программа превращается в «спагетти-код». Такой код невозможно поддерживать, безболезненно модифицировать, и что самое плохое, он труден для восприятия других разработчиков, которые придут на смену автору кода. Это особенно опасно в бизнес-девелопменте, где проектируются большие базы данных на тысячи строк кода.


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

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

Класс — это абстрактный тип данных, создаваемый программистом. Это схема, или контракт, описывающий поля и методы объектов, которые будут созданы по лекалам этого класса. Например, человек, машина, департамент — это абстракция, значит, ее можно описать в виде класса. Иван Иванович, белая "Шкода" с номерами нн123, операционный департамент — это конкретные представители данных абстракций, то есть, говоря языком объектно-ориентированного подхода к программированию, это объекты данных классов. Задача разработчика — описать абстрактные и конкретные объекты реального мира языком ООП. Описание класса реализуется в описании его полей и методов.

Поля — это переменные, то есть величины, характеризующие работу данного класса. Например, если мы пишем класс «Машина» для компьютерной игры, мы можем определить для него следующие поля:

class Car { string brand = "Hunday Solaris"; string colour = "Yellow"; double speed = 0;

/*...остальной код программы...*/ }

Инкапсуляция Поля могут изменять свои значения в ходе выполнения программы, если это предусмотрено программистом. Если автор не хочет, чтобы поля были доступны вне класса, и какая-то другая программа (пользователь) могла изменить их значение, то он «инкапсулирует» данные, то есть делает их недоступными, используя ключевые слова private, protected.

Если же поля должны быть доступны во всей программе, то перед ними ставится доступ public.

Например, можно сделать все поля класса публичными:

class Car { public string brand; public string colour; public double speed;

\* ...остальной код программы... *\ }

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

class MainClass { public static void Main() { Car car = new Car(); car.colour = "Red"; /* ...остальной код программы...*/ } } Чтобы избежать случайного изменения данных, разработчик инкапсулирует их. В случае с цветом машины вместо public необходимо написать private. Тогда изменение цвета напрямую будет сделать невозможно.