ООП
Вспоминая первую лекцию
Простые понятия
Умное хранилище книг
Книга – это объект, она существует
Хранилище книг – тоже объект
Но программа понятия не имеет ни про книгу, ни про хранилище тем более
Класс как раз и определяет модель книги
Класс хранилища
А как мы можем узнать, что находится в книге?
Решение – интерфейс(interface)
А откуда у нас возьмутся новые книги?
Мы попробуем два способа получения новой книги
Кодим
А теперь мы хотим чтобы наши книги не пропадали при закрытии программы!
Абстрактный класс!!!
Получится такая история
кодим
7.53M
Category: programmingprogramming

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

1. ООП

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

2. Вспоминая первую лекцию

ВСПОМИНАЯ ПЕРВУЮ ЛЕКЦИЮ
ЛЮДИ РАЗДЕЛЯЮТ НА КЛАССЫ УЖЕ
СУЩЕСТВУЮЩИЕ ОБЪЕКТЫ, НАХОДЯТ
ОБЩИЕ СВОЙСТВА У ОБЪЕКТОВ, И
ДАЮТ ЭТОЙ ГРУППЕ ПОХОЖИХ
ОБЪЕКТОВ ИМЯ.
кружочки
синие
красные
В ООП ПРОЦЕСС ОБРАТНЫЙ.
СНАЧАЛА ОПРЕДЕЛЯЕТСЯ НЕКИЙ
КЛАСС, ОПИСЫВАЮЩИЙ
НЕКОТОРЫЙ ОБЪЕКТ,
ОПРЕДЕЛЯЮЩИЙ СВОЙСТВА И
ПОВЕДЕНИЕ ОБЪЕКТА, А УЖЕ
ПОТОМ СОЗДАЮТСЯ НОВЫЕ
ОБЪЕКТЫ, РАБОТАЮЩИЕ ПО УЖЕ
ЗАДАННЫМ ПРАВИЛАМ
Кружок
имеет:
Цвет
Размер

3. Простые понятия

ПРОСТЫЕ ПОНЯТИЯ
ОБЪЕКТ - ЛЮБОЕ СУЩЕСТВУЮЩЕЕ
НЕЧТО, С ЧЕМ МЫ МОЖЕМ КАК-ТО
ВЗАИМОДЕЙСТВОВАТЬ. ЧТО УГОДНО.
ВООБЩЕ ЧТО УГОДНО. НУ СОВСЕМ.
КЛАСС – ОПИСАНИЕ НЕКОТОРОГО
СЕМЕЙСТВА ОБЪЕКТОВ, ПРАВИЛА
РАБОТЫ ЭТОГО ОБЪЕКТА, ЕГО
ВНУТРЕННЕЕ УСТРОЙСТВО,
ЧЕРТЕЖ,

4. Умное хранилище книг

УМНОЕ ХРАНИЛИЩЕ КНИГ

5. Книга – это объект, она существует

КНИГА – ЭТО ОБЪЕКТ, ОНА СУЩЕСТВУЕТ

6. Хранилище книг – тоже объект

ХРАНИЛИЩЕ КНИГ – ТОЖЕ ОБЪЕКТ
САМО ХРАНИЛИЩЕ ЖЕ СУЩЕСТВУЕТ, И
ИМЕЕТ ВНУТРИ СЕБЯ МНОГО КНИГ,
ДРУГИХ ОБЪЕКТОВ, НА МИНУТОЧКУ

7. Но программа понятия не имеет ни про книгу, ни про хранилище тем более

НО ПРОГРАММА ПОНЯТИЯ НЕ ИМЕЕТ НИ ПРО
КНИГУ, НИ ПРО ХРАНИЛИЩЕ ТЕМ БОЛЕЕ
• НАДО ОБЪЯСНИТЬ, ЧТО ТАКОЕ КНИГА И ЧТО ТАКОЕ ХРАНИЛИЩЕ.

8. Класс как раз и определяет модель книги

КЛАСС КАК РАЗ И ОПРЕДЕЛЯЕТ МОДЕЛЬ
КНИГИ
У НАШЕЙ КНИГИ ЕСТЬ НЕСКОЛЬКО
ПАРАМЕТРОВ
1.
НАЗВАНИЕ
2.
ИМЯ АВТОРА
3.
САМ ТЕКСТ, КОТОРЫЙ
СОДЕРЖИТСЯ
СОБСТВЕННО, ЭТО
ИСЧЕРПЫВАЮЩАЯ ИНФОРМАЦИЯ
ДЛЯ ОПРЕДЕЛЕНИЯ КНИГИ В
НАШЕЙ ЗАДАЧЕ. МЫ ОПУСТИМ
ТИП ПЕРЕПЛЕТА, ОБЛОЖКУ,
ФОРМАТИРОВАНИЕ ТЕКСТА НА
СТРАНИЦАХ И ПРОЧЕЕ
ТЕПЕРЬ МЫ МОЖЕМ СОЗДАТЬ
НОВУЮ КНИГУ С ТРЕМЯ
ПАРАМЕТРАМИ

9. Класс хранилища

КЛАСС ХРАНИЛИЩА
ХРАНИЛИЩЕ ДОЛЖНО СОДЕРЖАТЬ В
СЕБЕ
1. СПИСОК КНИГ
ОНО ДОЛЖНО УМЕТЬ
1. ДОБАВЛЯТЬ НОВЫЕ КНИГИ В
ХРАНИЛИЩЕ
2. УДАЛЯТЬ ОПРЕДЕЛЕННУЮ КНИГУ
3. ПРОИЗВЕСТИ ВЫБОРКУ ПО
КАКОМУ-ТО КРИТЕРИЮ

10. А как мы можем узнать, что находится в книге?

А КАК МЫ МОЖЕМ УЗНАТЬ, ЧТО НАХОДИТСЯ
В КНИГЕ?
• ВЫВЕСТИ НА КОНСОЛЬ
• ОТПРАВИТЬ ИНФОРМАЦИЮ ПО
ПОЧТЕ
• СОХРАНИТЬ ИНФОРМАЦИЮ О
КНИГЕ В ФАЙЛ
• ОТОБРАЗИТЬ ИНФОРМАЦИЮ НА
WEB СТРАНИЦЕ
• И НАМ НЕОБХОДИМ ТАКОЙ
МЕХАНИЗМ, ПРИ ПОМОЩИ
КОТОРОГО СПОСОБ
ПРЕДСТАВЛЕНИЯ ИЗМЕНИТЬ
МОЖНО ОЧЕНЬ ЛЕГКО И
ПРОСТО.

11. Решение – интерфейс(interface)

РЕШЕНИЕ – ИНТЕРФЕЙС(INTERFACE)
НАШ ИНТЕРФЕЙС ДОЛЖЕН ТОЛЬКО
ГОВОРИТЬ, ЧТО ТАКОЙ-ТО ОБЪЕКТ
УМЕЕТ ПРЕДСТАВЛЯТЬ КНИГУ. НЕ
БОЛЕЕ.
• ИНТЕРФЕЙС ЛИШЬ ОПИСЫВАЕТ
СПОСОБ И ПРАВИЛА
ВЗАИМОДЕЙСТВИЯ С
НЕКОТОРЫМ ОБЪЕКТОМ, НО
НИКАК НЕ КОНКРЕТНЫЕ
ДЕЙСТВИЯ, КОТОРЫЕ НУЖНО
СОВЕРШИТЬ.

12.

Interface
IBookPresenter
Class
ConsolePresenter
Контракт
Описание
исполнителя
Удовлетворяют контракту
Class
FilePresenter
Описание
исполнителя

13. А откуда у нас возьмутся новые книги?

А ОТКУДА У НАС ВОЗЬМУТСЯ НОВЫЕ КНИГИ?
СОЗДАЕМ ИНТЕРФЕЙС IBOOKSFABRIK
ОН БУДЕТ ИМЕТЬ ТАК ЖЕ ВСЕГО
ОДНО ДЕЙСТВИЕ, А ИМЕННО
GETNEWBOOK, КОТОРОЕ БУДЕТ
ВОЗВРАЩАТЬ НОВЫЙ ЭКЗЕМПЛЯР
КНИГИ
ИМЕЯ ИНТЕРФЕЙС, МЫ СМОЖЕМ БЕЗ
ТРУДА РЕАЛИЗОВАТЬ МНОЖЕСТВО
РАЗНЫХ ИСТОЧНИКОВ КНИГ. БУДУТ ИХ
ПИСАТЬ НАМ КОЛЛЕГИ ПО ИНТЕРНЕТУ,
ПРИСЫЛАЯ НА ПОЧТУ, ВВОДИМ ЛИ МЫ
РУКАМИ В КОНСОЛЬ ВСЮ
ИНФОРМАЦИЮ – НЕ ВАЖНО.
РЕАЛИЗАЦИЯ ДЕЙСТВИЯ МОЖЕТ БЫТЬ
ЛЮБАЯ, А ДЕЙСТВИЕ – ПОЛУЧИТЬ
НОВУЮ КНИГУ – УЖЕ ОПИСАНО, И ВСЕ
ЗНАЮТ, ЧТО ЕГО МОЖНО ВЫЗВАТЬ И
НЕ ДУМАТЬ ПРО РЕАЛИЗАЦИЮ

14. Мы попробуем два способа получения новой книги

МЫ ПОПРОБУЕМ ДВА СПОСОБА ПОЛУЧЕНИЯ
НОВОЙ КНИГИ
1. ВВОД СВОИМИ РУКАМИ В КОНСОЛЬ.
2. РАНДОМНАЯ ГЕНЕРАЦИЯ КНИГИ ИЗ ИЗНАЧАЛЬНО ЗАДАННОГО
НАБОРА ВОЗМОЖНЫХ СЛОВ.

15. Кодим

КОДИМ

16. А теперь мы хотим чтобы наши книги не пропадали при закрытии программы!

А ТЕПЕРЬ МЫ ХОТИМ ЧТОБЫ НАШИ КНИГИ
НЕ ПРОПАДАЛИ ПРИ ЗАКРЫТИИ
ПРОГРАММЫ!
НО КАК-БЫ ПОВЕДЕНИЕ, КОГДА КНИГИ ХРАНЯТСЯ У НАС В ОПЕРАТИВЕ
ТОЖЕ НУЖНО…

17. Абстрактный класс!!!

АБСТРАКТНЫЙ КЛАСС!!!
АБСТРАКТНЫЙ КЛАСС ЭТО ТАКОЙ
КЛАСС, ТАКОЕ ОПИСАНИЕ
ОБЪЕКТА(СУЩНОСТИ) КОТОРЫЙ НЕ
ЗНАЕТ, КАК КОНКРЕТНО ДОЛЖЕН
ДЕЛАТЬ НЕКОТОРЫЕ СВОИ ДЕЙСТВИЯ
ТО ЕСТЬ ОН ИМЕЕТ В СЕБЕ
ЛОГИКУ, РЕАЛИЗАЦИЮ
НЕКОТОРЫХ ДЕЙСТВИЙ, НО
НЕКОТОРЫЕ СПЕЦИФИЧЕСКИЕ
ДЕЙСТВИЯ ОН ОСТАВЛЯЕТ НА
ДОРАБОТКУ СВОИМ
ПОСЛЕДОВАТЕЛЯМ

18. Получится такая история

ПОЛУЧИТСЯ ТАКАЯ ИСТОРИЯ
АБСТРАКТНЫЙ КЛАСС BOOKSTORAGE
ИМЕЕТ В СЕБЕ ЛОГИКУ ВЫБОРКИ ПО
НЕКОТОРОМУ КРИТЕРИЮ, И ЛОГИКУ
ОТОБРАЖЕНИЯ КНИГ С
ИСПОЛЬЗОВАНИЕМ IPRESENTER
И ОН ИМЕЕТ АБСТРАКТНЫЕ МЕТОДЫ
ДЛЯ ДОБАВЛЕНИЯ УДАЛЕНИЯ И
ПОЛУЧЕНИЯ КНИГ.
А УЖЕ КОНКРЕТНЫЕ КЛАССЫ
RUNTIMESTORAGE И
INFILESTORAGE БУДУТ
РЕАЛИЗОВЫВАТЬ МЕТОДЫ
ХРАНЕНИЯ КНИГ.

19. кодим

КОДИМ
English     Русский Rules