🗊Презентация Abstractions. Конкретные типы. Абстрактные типы

Нажмите для полного просмотра!
Abstractions. Конкретные типы. Абстрактные типы, слайд №1Abstractions. Конкретные типы. Абстрактные типы, слайд №2Abstractions. Конкретные типы. Абстрактные типы, слайд №3Abstractions. Конкретные типы. Абстрактные типы, слайд №4Abstractions. Конкретные типы. Абстрактные типы, слайд №5Abstractions. Конкретные типы. Абстрактные типы, слайд №6Abstractions. Конкретные типы. Абстрактные типы, слайд №7Abstractions. Конкретные типы. Абстрактные типы, слайд №8Abstractions. Конкретные типы. Абстрактные типы, слайд №9Abstractions. Конкретные типы. Абстрактные типы, слайд №10Abstractions. Конкретные типы. Абстрактные типы, слайд №11Abstractions. Конкретные типы. Абстрактные типы, слайд №12Abstractions. Конкретные типы. Абстрактные типы, слайд №13Abstractions. Конкретные типы. Абстрактные типы, слайд №14Abstractions. Конкретные типы. Абстрактные типы, слайд №15Abstractions. Конкретные типы. Абстрактные типы, слайд №16Abstractions. Конкретные типы. Абстрактные типы, слайд №17Abstractions. Конкретные типы. Абстрактные типы, слайд №18Abstractions. Конкретные типы. Абстрактные типы, слайд №19Abstractions. Конкретные типы. Абстрактные типы, слайд №20Abstractions. Конкретные типы. Абстрактные типы, слайд №21Abstractions. Конкретные типы. Абстрактные типы, слайд №22Abstractions. Конкретные типы. Абстрактные типы, слайд №23Abstractions. Конкретные типы. Абстрактные типы, слайд №24Abstractions. Конкретные типы. Абстрактные типы, слайд №25Abstractions. Конкретные типы. Абстрактные типы, слайд №26Abstractions. Конкретные типы. Абстрактные типы, слайд №27Abstractions. Конкретные типы. Абстрактные типы, слайд №28Abstractions. Конкретные типы. Абстрактные типы, слайд №29Abstractions. Конкретные типы. Абстрактные типы, слайд №30Abstractions. Конкретные типы. Абстрактные типы, слайд №31Abstractions. Конкретные типы. Абстрактные типы, слайд №32Abstractions. Конкретные типы. Абстрактные типы, слайд №33Abstractions. Конкретные типы. Абстрактные типы, слайд №34Abstractions. Конкретные типы. Абстрактные типы, слайд №35Abstractions. Конкретные типы. Абстрактные типы, слайд №36Abstractions. Конкретные типы. Абстрактные типы, слайд №37Abstractions. Конкретные типы. Абстрактные типы, слайд №38Abstractions. Конкретные типы. Абстрактные типы, слайд №39

Содержание

Вы можете ознакомиться и скачать презентацию на тему Abstractions. Конкретные типы. Абстрактные типы. Доклад-сообщение содержит 39 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Abstractions
Описание слайда:
Abstractions

Слайд 2





Конкретные типы
Помните первый пример с телегой из прошлой презентации на тему «полиморфизм»? В базовом классе Transport был метод drive(), а остальные классы-наследники переопределяли поведение этого метода. Car, Bike и Telega из того примера – это конкретные, завершённые типы данных для объектов, которые реально будут использоваться в приложении, и получат своё физическое воплощение, например, в виде 2D или 3D-моделей, с определёнными текстурами, и может, ими даже кто-то будет управлять, как в GTA 5.
Описание слайда:
Конкретные типы Помните первый пример с телегой из прошлой презентации на тему «полиморфизм»? В базовом классе Transport был метод drive(), а остальные классы-наследники переопределяли поведение этого метода. Car, Bike и Telega из того примера – это конкретные, завершённые типы данных для объектов, которые реально будут использоваться в приложении, и получат своё физическое воплощение, например, в виде 2D или 3D-моделей, с определёнными текстурами, и может, ими даже кто-то будет управлять, как в GTA 5.

Слайд 3





Абстрактные типы
Но вот что касается типа Transport, то в приложении создавать объекты такого типа скорее всего не придётся никогда. Этот класс был создан исключительно для того, чтобы задать общие принципы дальнейшей работы всех транспортных средств-потомков. Объекты именно с типом Transport создавать бессмысленно, так как они не получат конкретного физического воплощения в виде модели с текстурами или даже просто двумерной картинки. Более того, для того, чтобы избежать логических ошибок в клиентском коде, 	делать это крайне нежелательно.
Описание слайда:
Абстрактные типы Но вот что касается типа Transport, то в приложении создавать объекты такого типа скорее всего не придётся никогда. Этот класс был создан исключительно для того, чтобы задать общие принципы дальнейшей работы всех транспортных средств-потомков. Объекты именно с типом Transport создавать бессмысленно, так как они не получат конкретного физического воплощения в виде модели с текстурами или даже просто двумерной картинки. Более того, для того, чтобы избежать логических ошибок в клиентском коде, делать это крайне нежелательно.

Слайд 4





Абстрактное животное
Что будет, если попросить дизайнера нарисовать животное?
Описание слайда:
Абстрактное животное Что будет, если попросить дизайнера нарисовать животное?

Слайд 5





Примеры абстрактных типов
Похожая картина наблюдается в отношениях классов Figure – Circle, Unit – Dragon – RedDragon, SuperHero – Batman, Fruit – Apple, Animal – Cat – BritishCat, Collection – ArrayList, Weapon – Shotgun, Device – MobilePhone, и тд. Как небольшое исключение из этой закономерности можно привести классы Student – Aspirant, Passport – ForeignPassport, Object.
Получается, что конкретными можно назвать лишь те типы данных, которые обычно находятся на самом нижнем уровне в иерархии наследования.
Описание слайда:
Примеры абстрактных типов Похожая картина наблюдается в отношениях классов Figure – Circle, Unit – Dragon – RedDragon, SuperHero – Batman, Fruit – Apple, Animal – Cat – BritishCat, Collection – ArrayList, Weapon – Shotgun, Device – MobilePhone, и тд. Как небольшое исключение из этой закономерности можно привести классы Student – Aspirant, Passport – ForeignPassport, Object. Получается, что конкретными можно назвать лишь те типы данных, которые обычно находятся на самом нижнем уровне в иерархии наследования.

Слайд 6





Ключевое слово abstract
Для того, чтобы у программиста-пользователя в его клиентском коде не было возможности создать объект абстрактного типа, базовые классы помечают как abstract:
abstract class Animal { … }
Animal a = new Animal(); // ERROR!
Описание слайда:
Ключевое слово abstract Для того, чтобы у программиста-пользователя в его клиентском коде не было возможности создать объект абстрактного типа, базовые классы помечают как abstract: abstract class Animal { … } Animal a = new Animal(); // ERROR!

Слайд 7





Абстрактный vs. конкретный
Каких-либо отличий между конкретным и абстрактным классом нет. Абстр. классы поддерживают работу с полями, конструкторами, обычно содержат реализацию методов – просто нельзя создать объект абстрактного типа. Однако, очень важно учесть, что ссылки абстрактного типа создавать можно и даже нужно 
Animal a = new BritishCat(); // ОК!
Описание слайда:
Абстрактный vs. конкретный Каких-либо отличий между конкретным и абстрактным классом нет. Абстр. классы поддерживают работу с полями, конструкторами, обычно содержат реализацию методов – просто нельзя создать объект абстрактного типа. Однако, очень важно учесть, что ссылки абстрактного типа создавать можно и даже нужно  Animal a = new BritishCat(); // ОК!

Слайд 8





Конкретные реализации методов
Вернёмся к примеру с классом Transport. Нужна ли в этом классе конкретная реализация метода drive()? Нет, не нужна, поскольку не понятно, каким именно образом должно будет ехать некое абстрактное транспортное средство. Класс Transport важен для проектирования исключительно как абстрактный базовый класс, определяющий общие принципы работы его потомков.
Описание слайда:
Конкретные реализации методов Вернёмся к примеру с классом Transport. Нужна ли в этом классе конкретная реализация метода drive()? Нет, не нужна, поскольку не понятно, каким именно образом должно будет ехать некое абстрактное транспортное средство. Класс Transport важен для проектирования исключительно как абстрактный базовый класс, определяющий общие принципы работы его потомков.

Слайд 9





Абстрактные методы
В языке Java существует возможность зафиксировать такого рода незавершённость, абстрактность метода на уровне языка. Для этого метод помечается словом abstract. Абстрактный метод – это метод, который в базовом классе только объявляется, но не определяется (не реализуется). Например, метод drive() как раз таки можно сделать абстрактным в классе Transport, потому что ничего конкретного о том, как перемещается некое неопределённое транспортное средство, мы не знаем.
Описание слайда:
Абстрактные методы В языке Java существует возможность зафиксировать такого рода незавершённость, абстрактность метода на уровне языка. Для этого метод помечается словом abstract. Абстрактный метод – это метод, который в базовом классе только объявляется, но не определяется (не реализуется). Например, метод drive() как раз таки можно сделать абстрактным в классе Transport, потому что ничего конкретного о том, как перемещается некое неопределённое транспортное средство, мы не знаем.

Слайд 10





Синтаксис объявления 
abstract class Transport {
	double speed;
	abstract void drive();
}
Обратите внимание, что фигурных скобок и тела у абстрактного метода нет! Класс, в котором есть хотя бы один абстрактный метод, также должен быть помечен как абстрактный. Впрочем, наличие абстрактных методов в АК не является обязательным - в составе АК могут быть и обычные неабстрактные методы с реализациями, и это лишь ускорит процесс разработки новых типов!
Описание слайда:
Синтаксис объявления abstract class Transport { double speed; abstract void drive(); } Обратите внимание, что фигурных скобок и тела у абстрактного метода нет! Класс, в котором есть хотя бы один абстрактный метод, также должен быть помечен как абстрактный. Впрочем, наличие абстрактных методов в АК не является обязательным - в составе АК могут быть и обычные неабстрактные методы с реализациями, и это лишь ускорит процесс разработки новых типов!

Слайд 11





Запрет создания объектов
Если вдруг появится непреодолимое желание создать объект абстрактного типа, то придётся сначала объявить класс-потомок этого абстрактного класса, переопределить (реализовать) в классе-потомке все абстрактные методы, и лишь затем создать объект, но – всё-таки производного типа.
И кстати, не бывает абстрактных конструкторов и абстрактных статических методов (угадайте, почему? )
Описание слайда:
Запрет создания объектов Если вдруг появится непреодолимое желание создать объект абстрактного типа, то придётся сначала объявить класс-потомок этого абстрактного класса, переопределить (реализовать) в классе-потомке все абстрактные методы, и лишь затем создать объект, но – всё-таки производного типа. И кстати, не бывает абстрактных конструкторов и абстрактных статических методов (угадайте, почему? )

Слайд 12





АК – это заготовка
Абстрактный класс – это ЗАГОТОВКА для будущих классов. Нет смысла делать класс абстрактным, если не планируется наследование от него (попробуйте сделать АК final ) Наличие абстрактных методов имеет большое значение, так как наряду с обычными методами, они также задают общее поведение для всех будущих подклассов.
Описание слайда:
АК – это заготовка Абстрактный класс – это ЗАГОТОВКА для будущих классов. Нет смысла делать класс абстрактным, если не планируется наследование от него (попробуйте сделать АК final ) Наличие абстрактных методов имеет большое значение, так как наряду с обычными методами, они также задают общее поведение для всех будущих подклассов.

Слайд 13





Пример кода
https://git.io/vrNeS
Описание слайда:
Пример кода https://git.io/vrNeS

Слайд 14





Практика
Применить ключевое слово abstract в заданиях MyCollection, Figure, Weapon, Device.
Убедиться в невозможности создания объектов базовых типов.
Сделать абстрактные методы в суперклассах, и переопределить их в классах-наследниках.
Описание слайда:
Практика Применить ключевое слово abstract в заданиях MyCollection, Figure, Weapon, Device. Убедиться в невозможности создания объектов базовых типов. Сделать абстрактные методы в суперклассах, и переопределить их в классах-наследниках.

Слайд 15





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

Слайд 16





Интерфейс - набор действий
И если класс (в том числе абстрактный) больше определяет саму сущность, включает описание характеристик этой сущности, т.е. отвечает на вопрос «кто я / что я», то интерфейс определяет только одно действие или же набор действий, выражаемых глаголами, т.е. отвечает на вопрос "что я могу делать".
Описание слайда:
Интерфейс - набор действий И если класс (в том числе абстрактный) больше определяет саму сущность, включает описание характеристик этой сущности, т.е. отвечает на вопрос «кто я / что я», то интерфейс определяет только одно действие или же набор действий, выражаемых глаголами, т.е. отвечает на вопрос "что я могу делать".

Слайд 17





Понятие реализации
Когда мы переносим в программный код сущность из реального мира, мы определяем наиболее значимые её характеристики (формируем список полей). Это – наша РЕАЛИЗАЦИЯ сущности, то, ЧЕМ конкретно она будет представлена в программе.
Описание слайда:
Понятие реализации Когда мы переносим в программный код сущность из реального мира, мы определяем наиболее значимые её характеристики (формируем список полей). Это – наша РЕАЛИЗАЦИЯ сущности, то, ЧЕМ конкретно она будет представлена в программе.

Слайд 18





Интерфейс – это поведение
В реальности, свойства любой сущности (например, студента) включают также действия, которые она может совершать сама, или же которые можно совершать над ней. Например, студенту можно назначить старосту, поднять его рейтинг, студент может учиться, отдыхать, работать и тд. Чтобы задать ПОВЕДЕНИЕ (интерфейс) студента, мы используем методы.
Описание слайда:
Интерфейс – это поведение В реальности, свойства любой сущности (например, студента) включают также действия, которые она может совершать сама, или же которые можно совершать над ней. Например, студенту можно назначить старосту, поднять его рейтинг, студент может учиться, отдыхать, работать и тд. Чтобы задать ПОВЕДЕНИЕ (интерфейс) студента, мы используем методы.

Слайд 19





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

Слайд 20





Несколько примеров
Например, интерфейс Comparable говорит лишь о том, что объекты, его реализующие, можно как-то сравнивать. Он ничего не говорит о сущности самих объектов, об их типах, или о том, как будет проходить сравнение. Наличие интерфейса Cloneable гарантирует, что некий объект можно скопировать. Iterable – намекает на то, что элементы коллекции можно перебрать циклом foreach, и т.д.
Описание слайда:
Несколько примеров Например, интерфейс Comparable говорит лишь о том, что объекты, его реализующие, можно как-то сравнивать. Он ничего не говорит о сущности самих объектов, об их типах, или о том, как будет проходить сравнение. Наличие интерфейса Cloneable гарантирует, что некий объект можно скопировать. Iterable – намекает на то, что элементы коллекции можно перебрать циклом foreach, и т.д.

Слайд 21





Интерфейс vs. реализация
Главное отличие класса от интерфейса — в том, что класс состоит из интерфейса и реализации. Любой класс всегда неявно объявляет свой интерфейс — то, что доступно при использовании класса извне (набор публичных методов). В то же время, в состав класса могут входить приватные поля – а это уже часть реализации.
Описание слайда:
Интерфейс vs. реализация Главное отличие класса от интерфейса — в том, что класс состоит из интерфейса и реализации. Любой класс всегда неявно объявляет свой интерфейс — то, что доступно при использовании класса извне (набор публичных методов). В то же время, в состав класса могут входить приватные поля – а это уже часть реализации.

Слайд 22





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

Слайд 23





Ручки в дверях метро 
Описание слайда:
Ручки в дверях метро 

Слайд 24





Графический интерфейс
Почему графическую часть программы часто называют интерфейсом? Потому что она определяет, каким образом мы сможем использовать основную функциональность, заложенную в программу. То есть, интерфейс определяет, каким образом мы можем использовать тот или иной объект.
Описание слайда:
Графический интерфейс Почему графическую часть программы часто называют интерфейсом? Потому что она определяет, каким образом мы сможем использовать основную функциональность, заложенную в программу. То есть, интерфейс определяет, каким образом мы можем использовать тот или иной объект.

Слайд 25





Ещё пример
Предположим, существует класс Table (стол), у которого есть методы работы с ним: поесть сидя за ним, поставить, собрать, продать, отпилить ножки и прочее. Из класса можно попытаться выделить интерфейс Мебель. Понятно, что не на всякой мебели можно поесть или отпилить ножку, но зато любую мебель можно поставить и собрать. И если вдруг появится класс Chair (стул), который также реализует интерфейс Мебель, то со стулом и со столом можно будет обращаться одинаково - в этом и состоит смысл интерфейсов - в унификации работы с разнотипными объектами.
Описание слайда:
Ещё пример Предположим, существует класс Table (стол), у которого есть методы работы с ним: поесть сидя за ним, поставить, собрать, продать, отпилить ножки и прочее. Из класса можно попытаться выделить интерфейс Мебель. Понятно, что не на всякой мебели можно поесть или отпилить ножку, но зато любую мебель можно поставить и собрать. И если вдруг появится класс Chair (стул), который также реализует интерфейс Мебель, то со стулом и со столом можно будет обращаться одинаково - в этом и состоит смысл интерфейсов - в унификации работы с разнотипными объектами.

Слайд 26





Взаимодействие элементов
Интерфейсы являются основой взаимодействия всех современных информационных систем. Если интерфейс какого-либо объекта (персонального компьютера, программы, функции) не изменяется (стабилен, стандартизирован), это даёт возможность модифицировать сам объект, не перестраивая принципы его взаимодействия с другими объектами (так, например, научившись работать с одной программой под Windows, пользователь с лёгкостью освоит и другие — потому, что они имеют однотипные элементы интерфейса).
Описание слайда:
Взаимодействие элементов Интерфейсы являются основой взаимодействия всех современных информационных систем. Если интерфейс какого-либо объекта (персонального компьютера, программы, функции) не изменяется (стабилен, стандартизирован), это даёт возможность модифицировать сам объект, не перестраивая принципы его взаимодействия с другими объектами (так, например, научившись работать с одной программой под Windows, пользователь с лёгкостью освоит и другие — потому, что они имеют однотипные элементы интерфейса).

Слайд 27





Простыми словами 
По сути, интерфейс – это тот же абстрактный класс (нельзя создать объект интерфейсного типа), но в интерфейсах не может быть полей, конструкторов, и все методы – публичные, нестатические и абстрактные. Создаётся в коде с помощью специального ключевого слова interface.
Описание слайда:
Простыми словами По сути, интерфейс – это тот же абстрактный класс (нельзя создать объект интерфейсного типа), но в интерфейсах не может быть полей, конструкторов, и все методы – публичные, нестатические и абстрактные. Создаётся в коде с помощью специального ключевого слова interface.

Слайд 28





Интерфейс – это контракт
Интерфейс содержит описание (декларацию) методов, реализацию которых обязуется осуществить класс-наследник. То есть, как и абстрактные классы, интерфейсы создаются не просто так, а для того, чтобы их в последствии кто-то реализовал. Это своего рода "контракт" (протокол взаимодействия) для всех классов, желающих "имплементировать" требования интерфейса. Любой класс может реализовать любое количество интерфейсов. Но при этом класс должен реализовать все их методы!
Описание слайда:
Интерфейс – это контракт Интерфейс содержит описание (декларацию) методов, реализацию которых обязуется осуществить класс-наследник. То есть, как и абстрактные классы, интерфейсы создаются не просто так, а для того, чтобы их в последствии кто-то реализовал. Это своего рода "контракт" (протокол взаимодействия) для всех классов, желающих "имплементировать" требования интерфейса. Любой класс может реализовать любое количество интерфейсов. Но при этом класс должен реализовать все их методы!

Слайд 29





Абстрактные классы vs.интерфейсы
- Абстрактные классы используются только тогда, когда есть тип отношений «is a», в то время как  интерфейсы могут быть реализованы классами, которые вообще никак не связаны друг с другом (задействуется другой тип отношений – implements).
- В Java класс может реализовать несколько интерфейсов, а отнаследоваться можно только от одного абстрактного класса.
Описание слайда:
Абстрактные классы vs.интерфейсы - Абстрактные классы используются только тогда, когда есть тип отношений «is a», в то время как интерфейсы могут быть реализованы классами, которые вообще никак не связаны друг с другом (задействуется другой тип отношений – implements). - В Java класс может реализовать несколько интерфейсов, а отнаследоваться можно только от одного абстрактного класса.

Слайд 30





Пример кода
https://git.io/vrNfB
Описание слайда:
Пример кода https://git.io/vrNfB

Слайд 31





Ещё пример (openable)
https://git.io/vrNUm
Описание слайда:
Ещё пример (openable) https://git.io/vrNUm

Слайд 32





И ещё пример (superheroes)
https://git.io/vrNTa
Описание слайда:
И ещё пример (superheroes) https://git.io/vrNTa

Слайд 33





Shared constants
https://git.io/vrNkL
Описание слайда:
Shared constants https://git.io/vrNkL

Слайд 34





Static member class
https://git.io/vrNIg
Описание слайда:
Static member class https://git.io/vrNIg

Слайд 35





Реализация методов интерф.
https://git.io/vokD4
http://stackoverflow.com/questions/23721759/functionalinterface-comparator-has-2-abstract-methods
Описание слайда:
Реализация методов интерф. https://git.io/vokD4 http://stackoverflow.com/questions/23721759/functionalinterface-comparator-has-2-abstract-methods

Слайд 36





Реализация Cloneable
https://git.io/vrNYf
Описание слайда:
Реализация Cloneable https://git.io/vrNYf

Слайд 37





Реализация Comparable
https://git.io/vrNOi
Описание слайда:
Реализация Comparable https://git.io/vrNOi

Слайд 38





Реализация Comparator
https://git.io/vrN3A
Описание слайда:
Реализация Comparator https://git.io/vrN3A

Слайд 39





Iterator and Iterable
https://git.io/vrNZ0
Описание слайда:
Iterator and Iterable https://git.io/vrNZ0



Похожие презентации
Mypresentation.ru
Загрузить презентацию