Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП Лекция!2.doc
Скачиваний:
7
Добавлен:
26.09.2019
Размер:
256 Кб
Скачать

Классы и объекты

  • Объект обладает состоянием и поведением

  • Структура и поведение схожих объектов определяет общий для них класс

  • Термины объект и экземпляр класса идентичны

  • Объектно-ориентированная программа состоит из программ объектов, которые взаимодействуют через передачу сообщений

  • Объект, получая сообщение, должен на него реагировать

  • Реакция на сообщение зависит от состояния объекта.

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

  • Поведение объекта – это то, как объект действует и реагирует

  • Поведение описывается в терминах состояния объекта и передачи сообщений.

  • Операции над объектами:

  • Создание объекта

  • Уничтожение объекта

  • Модификация

  • Селекция

  • Итерация

Модификация – обращение к объекту с целью изменить его состояние.

Селекция – получение информации о состоянии объекта

Итерация – получение доступа к нескольким однотипных атрибутам объекта.

Класс

  • Класс – тип данных, который включает описание полей данных и процедур – метод, работающий с этими данными.

  • Класс – способ программной реализации абстракций

  • Объект – переменная типа класс.

Пример: Класс квадрат .

Square

X,Y,R, COLOR

Initialize (x0, y0,color)

Paint ()

  • Объект включает все поля, объявленные в классе

  • Конкретные значения полей характеризуют текущее состояние объекта

  • Обращение к полям и методам: имя объекта.имя_поля

Имя_объекта.имя_метода()

Ограничение доступа:

  • Все методы объекта имеют доступ к полям объекта

  • Это реализуется за счет неявной передачи в метод параметра-указателя на объектах: Паскаль: self; C++, C#:this.

  • Для обеспечения инкапсуляции в описании класса выделяют интерфейс(interface) и реализацию.

Класс <имя_класса>

Интерфейс

Поля и методы, доступные извне

Реализация

Поля и методы, недоступные извне

Ограничение доступа позволяет:

  • Предотвратить несанкционированное изменение полей объекта

  • Упростить изменение реализации класса, если оно не затрагивает интерфейс.

Конструкторы и деструкторы.

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

  • Метод для создания объектов и инициализации их полей называются конструктором (constructor).

  • Метод для удаления объекта из памяти называется деструктором (destructor).

Класс фигура.

Интерфейс

Конструктор Фигура (вид)

Метод ПолучитьФорму ()

Метод ПолучитьКоординаты(Х,У)

Метод Повернуть(угол)

Метод Переместить(направление)

Мктод Уронить()

Деструктор -Фигура()

Класс Фигура

Реализация

Поле Форма

Поле Х

Поле У

Метод Проверить Поверхность

Класс Стакан

Интерфейс

Конструктор Стакан()

Метод ПолучитьПоверхность(поверхность)

Деструктор –Стакан()

Реализация:

Поле Скорость

Поле Очки

Метод Игра()

Метод НаваяФигура(вид)

Метод ОпуститьФигуру()

Метод ПроверкаСтрок()

Основные средства разработки классов

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

  • Наследование (inheritance) – отношение между классами, обеспечивающее создание новых классов на основе существующих за счет добавления новых полей и методов.

  • Наследование реализует иерархию общее-частное(IS-A).

  • Исходный класс называется родителем, производный – потомком.

  • Если родитель один, то наследование называется простым.

  • Если родителей несколько, то наследование называется множественным. Реализовано в С++.

Пример. Класс кнопка и класс Цветная кнопка.

Button

Top, Left, Height, Winch, Text

OnClick

Button_Color

Top, Left, Height, Winch,

Text

Color

OnClick()

ChangeColor()

  • При множественном наследовании в классе-потомок переходят поля и методы всех родителей

  • Если два родителей из одной иерархии, то возникает дублирование полей и методов

  • Чтобы этого избежать используются виртуальные поля и методы.

  • Наследование позволяет:

  • Повторно использовать код (библиотеки классов)

  • Уменьшить размер программы

  • Облегчить откладку и тестирование.

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

  • Полиморфизм (многообразие) – возможность реализации разных методов под общим именем.

  • Виды полиморфизма:

  • Перегрузка

  • Статистический полиморфизм

  • Динамический полиморфизм

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

  • Пример.

Класс СистемыСчисления

Метод DecToBin(int dec)

Метод DecToBin(double dec)

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

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

Пример. Разработать иерархию классов для абстракции Фигура, Круг, Прямоугольник:

Класс Figure

Double x,y

Area()

Rectangle=new Rectangle();

Circle C=new Circle();

R.Area();

C.Area();

  • Динамический полиморфизм – возможность определения разных реализаций методов с одним названием в иерархии классов, но конкретный метод для каждого объекта становится известен только на этапе выполнения.

  • Применяется позднее связывание.

  • Пример:

Figure F;

F=new Rectangle();

F.Area();

F=new Circle();

F.Area;

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

Композиция.

  • Композиция – способ реализации иерархии вида «Целое-часть» (Part-OF)

  • При композиции в состав класса входят другие классы, массивы или структуры классов.

Пример.

Класс предложение

Массив полей Слово

Поле Длина

Метод Разбор()

Метод Получить слова()

  • Количество вложенных объектов не ограничивается

  • Доступ к полям вложенных объектов:

Предложение Предл=new Предложение();

Предл.Слово[i].ПолучитьОснову();