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

29
Объектно-ориентированное программирование 1. Стили программирования 2. Основные принципы объектно-ориентированного программирования 3. Библиотека визуальных компонентов

Upload: baeddan-williams

Post on 30-Dec-2015

41 views

Category:

Documents


3 download

DESCRIPTION

Объектно-ориентированное программирование. Стили программирования Основные принципы объектно-ориентированного программирования Библиотека визуальных компонентов. Стили программирования. - PowerPoint PPT Presentation

TRANSCRIPT

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

Объектно-ориентированное программирование1. Стили программирования2. Основные принципы

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

3. Библиотека визуальных компонентов

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

Стили программирования

стиль программирования

методологии программирования

методики

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

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

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

Методики состоят из следующих компонентов

• поощрения (или прямые предписания) использования некоторых базовых концепций программирования

• запрещения (или ограничения) применения некоторых других базовых концепций

• требования и рекомендации по оформлению и документированию программ

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

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

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

•процедурный (императивный)•функциональный (аппликативный)•логический (реляционный)•объектно-ориентированный

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

Процедурное программирование• Программа состоит из последовательности

операторов, задающих процедуру решения задачи• Типичными операторами являются операторы

присваивания, передачи управления (ветвления), ввода-вывода и циклы

• Основным является оператор присваивания, служащий для изменения содержимого областей памяти

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

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

Функциональное программирование• программа составляется таким образом,

что в ней единственным действием является вызов функции

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

• никаких ячеек памяти, ни операторов присваивания, ни циклов, ни передачи управления

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

Логическое программирование•программа представляет собой

совокупность определений отношений между объектами

•решение проблемы выполняется с помощью механизмов логического вывода

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

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

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

объект = данные + процедуры•каждый объект интегрирует в себе

некоторую структуру данных и доступные только ему процедуры обработки этих данных

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

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

Основные принципы объектно-ориентированного программирования

Основными элементами:•абстрагирование•инкапсуляция•модульность•иерархия

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

•Абстрагирование – выделение существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов

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

•Модульность – свойство программы, связанное с возможностью её декомпозиции на ряд внутренне связных, но слабо связанных между собой модулей

•Иерархия –упорядоченная система абстракций, расположение их по уровням

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

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

• осязаемая сущность, предмет или явление, имеющие чётко определяемое поведение

• обладает состоянием, поведением и индивидуальностью

• множество объектов, связанных общностью структуры и поведения

• включает в себя: атрибуты, отношения с другими классами и операциями

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

Свойства объекта

•Состояние объекта характеризуется перечнем всех возможных свойств данного объекта и текущими значениями каждого из этих свойств

•Поведение определяет воздействие объекта на другие объекты и его реакцию на запросы от других объектов

•Индивидуальность – свойства объекта, отличающие его от всех других объектов

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

Свойства класса• Атрибут – поименованное свойство класса,

определяющее диапазон допустимых значений, которые могут принимать экземпляры данного свойства▫ public (общий, открытый) – атрибут будет виден всеми

остальными классами;▫ private (закрытый, секретный) – атрибут не виден

никаким другим классом;▫ protected (защищённый) – атрибут доступен только

самому классу и его потомкам в иерархии наследования• Операция – это реализация услуг, которую можно

запросить у любого объекта данного класса▫ методы ▫ интерфейсы

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

•Полиморфизм – это способность скрывать множество различных реализаций под единственным общим интерфейсом

•Наследование означает построение новых классов на основе существующих с возможностью добавления или переопределения свойств

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

Библиотека визуальных компонентов•Библиотека визуальных компонентов

(Visual Component Library – VCL) содержит большое количество классов, предназначенных для быстрой разработки приложений

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

Базовые классы VCL

TObject

TPersistent

TComponent

TControl

TWinControl

TGraphicControl TCustomControl

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

• Класс TObject обеспечивает выполнение важнейших функций "жизнедеятельности" любого объекта

• Класс TPersistent обеспечивает возможность объектов взаимодействовать друг с другом и процессами

• Класс TComponent реализует механизмы, обеспечивающие взаимодействие компонентов со средой разработки (Палитрой компонентов, Инспектором объектов)

• Класс TControl обеспечивает функционирование визуальных компонентов

• Класс TWinControl обеспечивает создание оконных элементов управления

• Класс TCustomControl обеспечивает создание различных нестандартных типов оконных элементов управления Windows: редакторов, списков и т. д.

• Класс TGraphicControl обеспечивает создания неоконных (графических) элементов управления: Label, Image, Shape и т.д.

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

Класс TObject

•Класс TObject является родоначальником всей иерархии классов VCL

•Он реализует функции, которые обязательно будет выполнять любой объект

•Основные методы:▫Create – создание объекта▫Destroy – удаление объекта▫Free – удаление объекта, созданного

методом Create

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

Процесс создания объекта включает •выделение области адресного

пространства•установку указателя на экземпляр

объекта•задание начальных значений свойств•выполнение установочных действий,

связанных с назначением объекта

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

•Для уничтожения экземпляра объекта предназначены методы Destroy и Free

•Метод Destroy является деструктором и обеспечивает освобождение всех занимаемых экземпляром объекта ресурсов

•Метод Free вызывает деструктор, но перед этим проверяет, чтобы указатель на экземпляр объекта был не пустым. Это позволяет избежать серьезных ошибок

•Если объект является владельцем других объектов, то его метод Free автоматически вызовет эти же методы для всех объектов

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

•Каждый объект должен содержать некоторую информацию о себе, которая используется приложением и средой разработки

•Метод Classlnfo – возвращает указатель на таблицу информации времени выполнения (RTTI)

•Функция ClassName – возвращает имя типа объекта, которое может быть использовано для идентификации.

•Метод ClassNamels (Name)– позволяет определить, является ли данный объект того типа, имя которого передано в параметре Name

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

•Программирование для Windows основано на событиях. Каждое приложение и каждый программный объект должны уметь реагировать на сообщение о событиях и рассылать сообщения

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

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

Класс TPersistent• Класс TPersistent содержит базовые методы

копирования атрибутов одного объекта в другой и чтения/записи информации об объекте в файл формы

• Метод Assign (Source) осуществляет копирование свойств и атрибутов из объекта Source в объект, вызвавший метод

• Для обеспечения взаимодействия объектов со средой разработки предназначен метод GetNamePath. Он возвращает имя объекта для передачи его в Инспектор объектов

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

Класс TComponent

•Класс TComponent является общим предком всех компонентов VCL

•Он используется в качестве основы для создания невизуальных компонентов и реализует основные механизмы, которые обеспечивают функционирование любого компонента

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

• Свойство Name указывает имя компонента, с помощью которого программист обращается к нему при написании кода

• Свойство Tag является вспомогательным и не влияет на работу компонента. Оно было сделано для удобства разработчиков, которые могут присваивать ему значения по своему усмотрению

• Свойство ComponentCount указывает количество подчиненных компонентов

• Свойство Owner указывается предка компонент

• Свойство ComponentIndex указывает положение компонента в списке предка

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

• Свойство ComponentState указывает текущее состоянии компонента. Состояние может измениться в результате получения компонентом некоторого сообщения, действий разработчика, выполнения акции и т. д. ▫ csLoading – компонент загружается▫ csReading – компонент загружает значения своих свойств▫ csWriting – компонент сохраняет значения своих свойств▫ csDestroying – уничтожение компонента▫ csDesigning – компонент находиться на форме и доступен

инструментам Редактора форм▫ csAncestor – компонент находиться на форме▫ csUpdating – компонент обновляется▫ CsFixups - компонент связан с компонентом другой формы,

которая еще не загружена в среду разработки▫ csFreeNotification – если это состояние устанавливается,

другие компоненты, связанные с данным, уведомляются о его уничтожении

▫ csInline – определяет компонент верхнего уровня в иерархии▫ csDesignInstance – определяет корневой компонент на этапе

разработки

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

• Вслед за классом TComponent в иерархии базовых классов располагается группа из трех классов, которые обеспечивают создание различных визуальных компонентов

• Визуальные компоненты – это разнообразные стандартные для Windows и специальные элементы управления

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

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

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

•Класс TWinControl обеспечивает использование в Delphi оконных элементов управления. Они должны уметь▫получать и передавать фокус управления

во время выполнения приложения▫воспринимать управляющие воздействия

от мыши и клавиатуры▫уметь размещать на себе другие

элементы управления

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

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

•Для обеспечения создания не оконных элементов управления непосредственно от класса TControl порожден класс TGraphicControl. Его потомки не могут получать фокус, но используют для визуализации канву