4.40M
Category: programmingprogramming

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

1.

Яндекс.Практикум Ка
ждый может

2.

Что нас сегодня ждет
Поговорим о том, что такое ООП
Есть ли место ООП в Go
Поговорим еще раз про интерфейсы
∙ Разберем вопросы

3.

А зачем?
У нас много связанной логики
У нас много похожей логики
У наших штук есть состояние (и оно может
меняться)
Не хотим запоминать какие поля у наших штук
Сокрытие реализации
Хотим переиспользовать код
Надо тестировать
Хотим добавлять штуки легко

4.

НЕ ООП

5.

Функционал
ьная
парадигма

6.

ООП

7.

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

8.

ООП
Классы и
объекты
Классы: Классы являются основными шаблонами для
создания объектов (экземпляров). Класс определяет
состояние и поведение, которыми будут обладать его
объекты, через поля (или атрибуты) и методы.
Объекты: Объект - это экземпляр класса. Каждый
объект имеет свое состояние, которое определяется
значениями его полей, и поведение, определяемое
его методами. Объекты являются основными
строительными блоками в ООП.

9.

ООП
Свойства и методы (properties and methods)

10.

ООП
Наследование
Наследование позволяет новому классу
принимать (наследовать) свойства и методы
другого класса. Это способствует повторному
использованию кода.
В классическом ООП, класс-потомок может
переопределять или расширять функционал
класса-родителя, что упрощает управление
сложностью и развитие программ.

11.

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

12.

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

13.

Go
Классов нет - есть структуры

14.

Go
Наследования нет - есть “встраивание” (embeddin

15.

Go
Инкапсуляция… ну она есть
Импортируемость на уровне пакета
“Приватность” задается
большой/маленькой первой буквой
имени

16.

Интерфейсы
Описывают поведение (методами)

17.

Интерфейсы
Описывают поведение (методами)

18.

Бонус

19.

Указатели
это переменные, которые хранят адреса в памяти других
переменных.
Концепция:
Переменная (данные) хранится в ячейке памяти
У ячейки есть физический адрес, по которому к ней можно обращаться
Данных может быть много
Когда передаем переменную в функцию - мы копируем данные. То есть вся
инфа из ячейки(ек) записывается еще раз.
Когда передаем указатель на данные - мы копируем только адрес ячейки.
Когда надо обратиться к ее значению - это всегда можно сделать, так как у
нас есть этот самый адрес.

20.

Указатели
это переменные, которые хранят адреса памяти других
переменных.

21.

Указатели
это переменные, которые хранят адреса памяти других
переменных.

22.

Вопросы

23.

Спасибо за внимание

24.

Defer и Return
Отдаем переменную
result
Отдаем какой-нибудь Int
English     Русский Rules