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

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

1.

ООП
Объектно-Ориентированное Программирование
OOP
Object-Oriented Programming

2.

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

3.

Что такое класс?
Класс представляет собой шаблон, по которому
определяется форма объекта. В нем указываются
данные и код, который будет оперировать этими
данными.
Важно подчеркнуть, что класс является
логической
абстракцией.
Физическое
представление класса появится в оперативной
памяти лишь после того, как будет создан объект
этого класса.

4.

Из чего состоит класс?

5.

Что такое объект?
Объект - конкретный экземпляр класса.
Объект - именованная модель реальной
сущности, обладающая конкретными значениями
характеристик и проявляющая свое поведение.
Объект - обладающий именем набор данных
(полей объекта), физически находящихся в
памяти компьютера, и методов, имеющих доступ
к ним.

6.

Основные принципы ООП
(Абстракция)
Инкапсуляция
Наследование
Полиморфизм

7.

В чем преимущества ООП?
• повторное использование кода (наследование)
• реальное отображение предметной области.
Объекты соответствуют реальному миру,
например, Машина, Джип, Счет в банке и тд…
• более простая и предсказуемая
расширяемость больших проектов

8.

Что такое абстракция?
Абстракция - это выделение общих характеристик
объекта, исключая набор незначительных.
С помощью принципа абстракции данных,
данные преобразуются в объекты.
Огромный плюс абстракции в том, что она
отделяет реализацию объектов от их деталей, что
в свою очередь позволяет управлять функциями
высокого уровня через функции низкого уровня.

9.

Что такое инкапсуляция?
Инкапсуляция (encapsulation) - это сокрытие
реализации класса и отделение его внутреннего
представления от внешнего (интерфейса). Это
свойство которое позволяет закрыть доступ к
полям и методам класса другим классам и
предоставлять им доступ только через открытый
интерфейс. При использовании ООП не принято
применять прямой доступ к полям какого-либо
класса из методов других классов. Для доступа к
полям
класса
принято
задействовать
специальные методы или свойства этого класса
для получения и изменения его полей.

10.

Как реализуется
инкапсуляция?
Инкапсуляция
доступа:
реализуется
через
модификаторы
• public — доступ может получить любой желающий
• private — доступ могут получить только методы
данного класса
• protected — то же, что и private, только доступ
получают и наследники класса в том числе

11.

Что такое наследование?
Наследование это процесс благодаря которому один
объект может приобрести свойства другого объекта
(наследование всех свойств одного объекта другим) и
добавлять черты характерные только для него самого.
class Dog: Animal
Суперкласс -> Подкласс
Родительский -> Дочерний
{...}
Базовый -> Производный
В С# есть два вида наследования:
наследование классов. Каждый наследник может
иметь только одного родителя.
наследование интерфейсов. Класс может
реализовать (наследовать) сколько угодно
Интерфейсов.

12.

Что такое полиморфизм?
Полиморфизм (от греческого polymorphos) - это
технология, которая позволяет одно и то же имя
использовать для решения двух или более схожих,
но технически разных задач.
В более общем смысле, концепцией
полиморфизма является идея «один интерфейс —
много реализаций». Это означает, что можно
создать общий интерфейс для группы близких по
смыслу действий

13.

Как реализуется
полиморфизм?
Существуют 3 способа реализации полиморфизма:
1. Через наследование от абстрактного класса и
реализации абстрактных методов внутри
производных классов (override)
2. Через механизм наследования и виртуальные
методы (virtual)
3. Через интерфейсы

14.

Пример полиморфизма
Имеются классы: Фигура, круг и треугольник.
Круг и треугольник наследуется от фигуры. Каждый класс имеет метод "рисовать". В
круге и треугольнике этот метод переопределен.
Создаем объект с типом "Фигура" и присваиваем ему ссылку на объект типа "Круг" и
вызываем на этом объекте метод "рисовать". В итоге вызывается метод класса "Круг",
а не класса "Фигура" как ожидалось.
Figura f = new Circle();
f.paint();
Также вместо класса родителя "Figura" к примеру можно использовать интерфейс
"Figura ", определив там метод рисовать. Этот интерфейс мы имплементируем
в классах "Круг", "Треугольник". Далее на интерфейсе создаем объект и присваиваем
ему ссылку на объект какого-то из реализующих этот интерфейс классов.
Это удобно например если у нас есть некий метод:
public void drawShape(Figura f){
f.paint();
}
Обратите внимание что в метод мы передаем параметр с типом интерфейса, т.е. мы
не знаем какой именно тип объекта будет, но реализация будет та же. Далее мы
можем просто создать еще класс, к примеру "Трапеция" и имплементировать
интерфейс "Фигура" и просто передать экземпляр класса в метод, ничего не меняя в
реализации и вызове.

15.

Что такое интерфейс?
Интерфейс - это именованный набор прототипов
методов. Интерфейсы позволяют наделить не
связанные друг с другом классы одинаковым
поведением.
Класс реализующий
интерфейс воплощает те
методы, которые перечислены
в интерфейсе

16.

Пример интерфейса

17.

Интерфейсы
Класс может реализовать
более одного интерфейса, в
отличии от множественного
наследования, которое в С#
запрещено.

18.

Пример использования интерфейса
Необходимо
отсортировать объекты
типа Student
Для реализации сортировки в С# существует
интерфейс – IComparable

19.

Пример использования интерфейса
Для сортировки экземпляра типа, тип должен
реализовать интерфейс – IComparable и воплатить
его метод CompareTo
English     Русский Правила