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

Содержание

Слайд 2

ВСПОМИНАЯ ПЕРВУЮ ЛЕКЦИЮ Люди разделяют на классы уже существующие объекты, находят

ВСПОМИНАЯ ПЕРВУЮ ЛЕКЦИЮ

Люди разделяют на классы уже существующие объекты, находят общие

свойства у объектов, и дают этой группе похожих объектов имя.

В ООП процесс обратный. Сначала определяется некий класс, описывающий некоторый объект, определяющий свойства и поведение объекта, а уже потом создаются новые объекты, работающие по уже заданным правилам

красные

синие

кружочки

Кружок имеет:
Цвет
Размер

Слайд 3

ПРОСТЫЕ ПОНЯТИЯ Объект - Любое существующее нечто, с чем мы можем

ПРОСТЫЕ ПОНЯТИЯ

Объект - Любое существующее нечто, с чем мы можем как-то

взаимодействовать. Что угодно. Вообще что угодно. Ну совсем.

Класс – описание некоторого семейства объектов, правила работы этого объекта, его внутреннее устройство, чертеж,

Слайд 4

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

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

Слайд 5

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

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

Слайд 6

ХРАНИЛИЩЕ КНИГ – ТОЖЕ ОБЪЕКТ Само хранилище же существует, и имеет

ХРАНИЛИЩЕ КНИГ – ТОЖЕ ОБЪЕКТ

Само хранилище же существует, и имеет внутри

себя много книг, других объектов, на минуточку
Слайд 7

НО ПРОГРАММА ПОНЯТИЯ НЕ ИМЕЕТ НИ ПРО КНИГУ, НИ ПРО ХРАНИЛИЩЕ

НО ПРОГРАММА ПОНЯТИЯ НЕ ИМЕЕТ НИ ПРО КНИГУ, НИ ПРО ХРАНИЛИЩЕ

ТЕМ БОЛЕЕ

Надо объяснить, что такое книга и что такое хранилище.

Слайд 8

КЛАСС КАК РАЗ И ОПРЕДЕЛЯЕТ МОДЕЛЬ КНИГИ У нашей книги есть

КЛАСС КАК РАЗ И ОПРЕДЕЛЯЕТ МОДЕЛЬ КНИГИ

У нашей книги есть несколько

параметров
Название
Имя автора
Сам текст, который содержится

Собственно, это исчерпывающая информация для определения книги в нашей задаче. Мы опустим тип переплета, обложку, форматирование текста на страницах и прочее
Теперь мы можем создать новую книгу с тремя параметрами

Слайд 9

КЛАСС ХРАНИЛИЩА Хранилище должно содержать в себе Список книг Оно должно

КЛАСС ХРАНИЛИЩА

Хранилище должно содержать в себе
Список книг

Оно должно уметь
Добавлять новые книги

в хранилище
Удалять определенную книгу
Произвести выборку по какому-то критерию
Слайд 10

А КАК МЫ МОЖЕМ УЗНАТЬ, ЧТО НАХОДИТСЯ В КНИГЕ? Вывести на

А КАК МЫ МОЖЕМ УЗНАТЬ, ЧТО НАХОДИТСЯ В КНИГЕ?

Вывести на консоль
Отправить

информацию по почте
Сохранить информацию о книге в файл
Отобразить информацию на WEB странице

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

Слайд 11

РЕШЕНИЕ – ИНТЕРФЕЙС(INTERFACE) Наш интерфейс должен только говорить, что такой-то объект

РЕШЕНИЕ – ИНТЕРФЕЙС(INTERFACE)

Наш интерфейс должен только говорить, что такой-то объект умеет

представлять книгу. Не более.

Интерфейс лишь описывает способ и правила взаимодействия с некоторым объектом, но никак не конкретные действия, которые нужно совершить.

Слайд 12

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

Interface
IBookPresenter
Контракт

Class
ConsolePresenter
Описание исполнителя

Class
FilePresenter
Описание исполнителя

Удовлетворяют контракту

Слайд 13

А ОТКУДА У НАС ВОЗЬМУТСЯ НОВЫЕ КНИГИ? Создаем интерфейс IBooksFabrik Он

А ОТКУДА У НАС ВОЗЬМУТСЯ НОВЫЕ КНИГИ?

Создаем интерфейс IBooksFabrik
Он будет иметь

так же всего одно действие, а именно GetNewBook, которое будет возвращать новый экземпляр книги

Имея интерфейс, мы сможем без труда реализовать множество разных источников книг. Будут их писать нам коллеги по интернету, присылая на почту, вводим ли мы руками в консоль всю информацию – не важно. Реализация действия может быть любая, а действие – получить новую книгу – уже описано, и все знают, что его можно вызвать и не думать про реализацию

Слайд 14

МЫ ПОПРОБУЕМ ДВА СПОСОБА ПОЛУЧЕНИЯ НОВОЙ КНИГИ Ввод своими руками в

МЫ ПОПРОБУЕМ ДВА СПОСОБА ПОЛУЧЕНИЯ НОВОЙ КНИГИ

Ввод своими руками в консоль.
Рандомная

генерация книги из изначально заданного набора возможных слов.
Слайд 15

КОДИМ

КОДИМ

Слайд 16

А ТЕПЕРЬ МЫ ХОТИМ ЧТОБЫ НАШИ КНИГИ НЕ ПРОПАДАЛИ ПРИ ЗАКРЫТИИ

А ТЕПЕРЬ МЫ ХОТИМ ЧТОБЫ НАШИ КНИГИ НЕ ПРОПАДАЛИ ПРИ ЗАКРЫТИИ

ПРОГРАММЫ!

Но как-бы поведение, когда книги хранятся у нас в оперативе тоже нужно…

Слайд 17

АБСТРАКТНЫЙ КЛАСС!!! Абстрактный класс это такой класс, такое описание объекта(сущности) который

АБСТРАКТНЫЙ КЛАСС!!!

Абстрактный класс это такой класс, такое описание объекта(сущности) который не

знает, как конкретно должен делать некоторые свои действия

То есть он имеет в себе логику, реализацию некоторых действий, но некоторые специфические действия он оставляет на доработку своим последователям

Слайд 18

ПОЛУЧИТСЯ ТАКАЯ ИСТОРИЯ Абстрактный класс BookStorage имеет в себе логику выборки

ПОЛУЧИТСЯ ТАКАЯ ИСТОРИЯ

Абстрактный класс BookStorage имеет в себе логику выборки по

некоторому критерию, И логику отображения книг с использованием IPResenter
И он имеет абстрактные методы для добавления удаления и получения книг.

А уже конкретные классы RuntimeStorage и InFileStorage будут реализовывать методы хранения книг.