Similar presentations:
Объектно-ориентированное программирование
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