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

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

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

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

Добавлен: 04.04.2023

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

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

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

Введение

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

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

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

Многие авторы в своих работах затрагивали концепцию объектно-ориентированного программирования, существует огромное количество книг и учебников, как для новичков, так и для профессионалов. Многообразие может слегка пугать, так что необходимо выделить несколько основных фамилий, в чьих научных трудах наиболее полно и понятно была раскрыта рассматриваемая тема - сама концепция объектно-ориентированного программирования и её применение в различных языках. Разумеется, далеко не каждый язык программирования подходит для применения объектно-ориентированного подхода, можно выделить такие языки как C#, C++, Java, Delphi, Object Pascal, Python, JavaScript, Ruby, PHP и другие в качестве тех, которые основаны на принципах объектно-ориентированного программирования.


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

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

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

Постановка основных задач:

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

1. Теоретические сведения об объекте исследования (ООП)

1.1 Основные понятия

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

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


Основные модели программирования:

  • Императивное программирование;
  • Декларативное программирование;
  • Структурное программирование;
  • Функциональное программирование;
  • Логическое программирование;
  • Объектно-ориентированное программирование.

Абстрактный тип данных - это тип данных, который предоставляет для работы с элементами этого типа определённый набор функций, а также возможность создавать элементы этого типа при помощи специальных функций. Вся внутренняя структура такого типа спрятана от разработчика программного обеспечения — в этом и заключается суть абстракции. Абстрактный тип данных определяет набор функций, независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются структурами данных. [7]

1.2 Объектно-ориентированное программирование

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

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

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

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

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


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

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

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

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

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

рис.1.1.

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

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

Инкапсуляция является свойством языка программирование, главным назначением которого является сокрытие внутренней информации от пользователя, позволяет пользоваться программным компонентом без знания его реализации. Для взаимодействия пользователя и объекта используется спецификация - интерфейс объекта, который включает в себе все публичные методы и данные. Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public. Все данные и методы, которые отмечены как публичные, могут быть вызваны и изменены вне класса. Закрытые же методы остаются закрытыми, реализуются с помощью ключевых слов: private, protected, internal и недоступны для вызова или изменения извне. Очень важно правильно определять, какие данные и методы следует оставлять открытыми для пользователя, а какие закрытыми. Расценивая целесообразность применения сокрытия реализации от пользователя, следует обратить внимание на следующие вопросы: нужна ли локализация изменений при их необходимости, насколько изменения и их последствия являются прогнозируемыми, то есть, как нужно изменить код, чтобы добиться требуемого изменения функциональности.


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

Полиморфизм - возможность объектов с одинаковой спецификацией иметь различную реализацию. [8]

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

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

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

• внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов и типами аргументов, и их количеством);

• внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций). [8]

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

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