- •Эволюция языков программирования
- •Объектная декомпозиция.
- •Классы и объекты
- •Конструкторы и деструкторы.
- •Основные средства разработки классов
- •Описание класса в с#
- •Деструкторы
- •3.Методы-свойства
- •Наследование в c#
- •Интерфейсы, структуры, делегаты, события. Интерфейс.
- •Операции is и as
- •Стандартные интерфейсы .Net
- •Делегаты
Классы и объекты
Объект обладает состоянием и поведением
Структура и поведение схожих объектов определяет общий для них класс
Термины объект и экземпляр класса идентичны
Объектно-ориентированная программа состоит из программ объектов, которые взаимодействуют через передачу сообщений
Объект, получая сообщение, должен на него реагировать
Реакция на сообщение зависит от состояния объекта.
Состояние объекта характеризуется перечнем всех его свойств и текущими значениями каждого из этих свойств.
Поведение объекта – это то, как объект действует и реагирует
Поведение описывается в терминах состояния объекта и передачи сообщений.
Операции над объектами:
Создание объекта
Уничтожение объекта
Модификация
Селекция
Итерация
Модификация – обращение к объекту с целью изменить его состояние.
Селекция – получение информации о состоянии объекта
Итерация – получение доступа к нескольким однотипных атрибутам объекта.
Класс
Класс – тип данных, который включает описание полей данных и процедур – метод, работающий с этими данными.
Класс – способ программной реализации абстракций
Объект – переменная типа класс.
Пример: Класс квадрат .
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].ПолучитьОснову();