1.39M
Категория: ПрограммированиеПрограммирование

Лекция 14 ООП(1)

1.

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

2.

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

3.

Базовые понятия
Класс – это:
1. абстрактный тип данных.
2. формальное описание группы объектов,
указывающее – какие характеристики и действия
имеют эти объекты.

4.

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

5.

Базовые понятия
Класс – абстрактный тип данных; некоторый шаблон, на
основе которого будут создаваться его экземпляры –
объекты.
В Си шарп классы объявляются с помощью ключевого
слова class.
[модификатор доступа] class [имя_класса]
{
//тело класса
}

6.

Модификаторы доступа для классов
public – доступ к классу возможен из любого места
одной сборки либо из другой сборки, на которую есть
ссылка;
internal – доступ к классу возможен только из сборки,
в которой он объявлен.

7.

Базовые понятия
Сборка – готовый функциональный модуль в виде exe
либо dll файла (файлов), который содержит
скомпилированный код для .NET. Сборка предоставляет
возможность повторного использования кода.
Пример объявления классов Student и Pupil

8.

Члены класса
Классы в Си-шарп могут содержать:









поля;
константы;
свойства;
конструкторы;
методы;
события;
операторы;
индексаторы;
вложенные типы.

9.

Модификатор доступа для членов класса

public – доступ к члену возможен из любого места одной сборки,
либо из другой сборки, на которую есть ссылка;

protected – доступ к члену возможен только внутри класса, либо в
классе-наследнике (при наследовании);

internal – доступ к члену возможен только из сборки, в которой
он объявлен;

private – доступ к члену возможен только внутри класса;

protected internal – доступ к члену возможен из одной сборки,
либо из класса-наследника другой сборки.

10.

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

11.

Создание объектов
Объявив класс, мы теперь можем создавать объекты.
Делается это при помощи ключевого слова new и имени
класса

12.

Доступ к объекту
Доступ к членам объекта осуществляется при помощи
оператора точка «.»

13.

Константы (неизменные/постоянные
значения)
Константа – это переменная, значений которой нельзя
изменить. Константа объявляется с помощью ключевого
слова const.
Пример объявления константы:
private const double Pi = 3.14;

14.

15.

Инкапсуляция
Инкапсуляция — это контроль доступа к полям и методам
объекта. (не только можно/неможно, но и различные
валидации, подгрузки, вычисления и прочее
динамическое поведение)

16.

Абстракция
Абстрактный класс— базовый класс, который можно
наследовать, но нельзя реализовывать.

17.

Наследование
Наследование — механизм системы, который позволяет,
наследовать одними классами свойства и поведение
других классов для дальнейшего расширения или
модификации.

18.

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

19.

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

20.

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

21.

Виды ассоциации
1. Композиция — жизненный цикл дочернего объекта
совпадает с жизненным циклом родительского.
2. Агрегация — жизненный цикл дочернего объекта не
зависит от жизненного цикла родительского, и может
использоваться другими объектами.

22.

23.

Перегрузка операторов

24.

Перегрузка операторов
Перегрузка операторов - реализация своего
собственного функционала этого оператора для
конкретного класса.

25.

Перегрузка унарного оператора

26.

Перегрузка бинарного оператора

27.

Перегрузка операторов
Можно перегружать:
Унарные: +, -, !, ++, —, true, false
Бинарные: +, -, *, /, %, &, |, ^, <<, >>, ==, !=, <, >, <=, >=
Нельзя перегружать:
[], (), +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

28.

Перегрузка операторов

29.

Перегрузка операторов

30.

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

31.

Перегрузка операторного метода +

32.

Перегрузка методов

33.

Перегрузка методов
Иногда возникает необходимость создать один и тот же
метод, но с разным набором параметров. И в
зависимости от имеющихся параметров применять
определенную версию метода.
Такая возможность еще называется перегрузкой
методов (method overloading).

34.

Сигнатура методов
Имя метода
Количество параметров
Типы параметров
Порядок параметров
Модификаторы параметров

35.

При перегрузке методы должны отличаться
по
Количеству параметров
Типу параметров
Порядку параметров
Модификаторам параметров
English     Русский Правила