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

Категория: Не указан

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

Добавлен: 10.05.2024

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

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

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

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

Парадигма – означает модель постановки проблем и их решения, господствующие в течении определенного исторического периода в научном сообществе.

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

  • Процедурное программирование. Основная идея этого стиля – алгоритмизация процесса решения задачи и выбор наилучшего алгоритма (по расходу памяти или по быстродействию). Реализация этой идеи началась с 1957 года с появлением алгоритмических языков Fortran и затем Algol-60, затем – Basic, Pascal, C.

  • Объектно-ориентированное программирование. С середины 80-х годов объем исходного программного кода перешел рубеж в 100 000 строк. Нужно было сделать не случайное объединение данных и алгоритмов их обработки в единое целое, а - смысловое. То есть необходимо было создать модульное программирование нового уровня, когда основной акцент делается на смысловую связь структур данных и алгоритмов их обработки. Сейчас практически все основные языки программирования (их более 100, в том числе такие распространенные, как Object Pascal, C++, Smalltalk) базируются на этой идее.

  • Логическое программирование (язык Пролог).

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

Основными этапами объектно-ориентированного программирования являются:

  1. Объектно-ориентированный анализ (ООА)

  2. Объектно-ориентированное проектирование (ООПр)

  3. Объектно-ориентированное программирование (ООП)

Это совершенно новый подход построения программ и систем. В ООА, ООПр и ООП главной отправной точкой является не процедура, а объект.

Объектно-ориентированный анализ

ООА – это методология, при которой требование к системе воспринимается с точки зрения классов и объектов, выявленных в предметной области.


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

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

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

В данном определении выделим 3 части:

  1. ООП использует в качестве базовых элементов объекты, а не алгоритмы.

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

  3. Классы организованы иерархически.

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


Объектно-ориентированное проектирование.

ОО программирование (ООП) подразумевает правильное и эффективное использование механизмов конкретных языков программирования.

ОО проектирование (ООПр) в отличие от него основное внимание уделяет правильному и эффективному структурированию сложных систем.

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

В этом определении содержатся 2 главных части:

  1. ООПр основано на ОО декомпозиции

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

Именно ОО декомпозиция отличает ООПр от структурного процедурного проектирования.

В 1-м случае логическая структура системы отражается классами и объектами

В 2-м случае логическая структура системы отражается алгоритмами.

Классы и объекты в Object Pascal.

Определение: Классы в Object Pascal это специальные типы, которые представляют собой единство трех сущностей: полей, методов, и свойств.

Как и любой другой тип, класс служит лишь образцом для создания конкретных экземпляров реализации, которые называются объектами. Заметим, что в предшественнике языка Object Pascal – языке Turbo Pascal – объектами называли типы, имеющие много общего с классами Object Pascal. Однако, существенные усовершенствования, внесенные в объектную модель Object Pascal, заставили разработчиков языка ввести для обозначения типов объектов специальный термин – «класс». Он заимствован из языка С++. Освободившийся термин «объект» стал употребляться для обозначения конкретного экземпляра реализации класса.

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


Пример описания класса объекта:

type

TMyClass=class(TObject)

Field: Integer;

. . . . . .

end;

var

MyClass: TMyClass;

begin

. . . . . .

MyClass^.Field:=0; // Ошибка! Следует писать так:

MyClass.Field:=0;

end;

Важнейшие принципы объектно-ориентированного программирования.

Классы - это особое «изобретение» программистов для упрощения разработки сложных программ и улучшения их качества. В основе классов лежат 3 фундаментальных принципа, которые называются:

  1. инкапсуляция

  2. наследование

  3. полиморфизм

Инкапсуляция.

Как выше было сказано класс это единство 3х сущностей: полей, методов и свойств.

Определение: Объединение 3х сущностей (полей, методов, свойств) в абстрактных типах данных, называемых классы объектов, в единое целое называется инкапсуляцией.

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

Инкапсуляция позволяет изолировать класс от остальных частей программы, сделать его самодостаточным для решения конкретной задачи. В результате класс всегда несет в себе некоторую функциональность. Например, класс TForm содержит (или инкапсулирует) в себе все необходимое для создания Windows – окна, класс TMemo представляет собой полнофункциональный текстовый редактор.

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

Т.о. библиотека классов Delphi это фактически набор кирпичиков созданных программистами – разработчиками для построения программ пользователей.

Наследование.

Любой класс может быть порожден от другого класса, для этого при его объявлении указывается имя класса – родителя:

TChildClass= class(TParentclass)

Порожденный класс автоматически наследует и поля, и методы, и свойства своего родителя и может добавлять их новыми. Механизм наследования позволяет создавать иерархию классов. Все классы Object Pascal порождены от единого родительского класса TObject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов – от создания до уничтожения. Программист, не может создать класс, который не был бы дочерним классом TObject. Поэтому следующие два объявления классов идентичны:


TClass=class (TObjeсt)

TClass=сlass

Принцип наследования приводит к созданию ветвящегося дерева классов от TObject к его потомкам, каждый потомок дополняет возможности родителя новыми возможностями и передает их своим потомкам.

Рассмотрим небольшой фрагмент дерева классов Delphi. Класс TPersistent обогащает возможности своего родителя TObject: он «умеет» сохранять данные в файле и получать их из него, в результате это умеют делать и все его потомки. Класс TComponent, в свою очередь, умеет взаимодействовать со средой разработчика и передавать это умение своим потомкам. ТControl не только способен работать с файлами и средой разработчика, но он еще умеет создавать и обслуживать видимые на экране изображения, а его потомок TWinControl – создавать Windows-окна и т.д.

TObject

TInterfaceObject Exception

TPersistent

TComponent

TControl

TWinControl

Полиморфизм.

Полиморфизм – это свойство классов решать схожие по смыслу проблемы разными способами.

В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов.

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