Java_amm_lesson_2 (1)

Содержание

Слайд 2

В предыдущих сериях

Java – язык с Си-подобным синтаксисом, автоматической сборкой мусора, часто

В предыдущих сериях Java – язык с Си-подобным синтаксисом, автоматической сборкой мусора,
используется для создания бизнес приложений
JVM – виртуальная машина Java, на которой исполняется байт-код
IDEA – среда разработки на Java
Control flow на Java очень похоже на Си

Слайд 3

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

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

Слайд 4

ООП

Человеку сложно воспринимать большие объема процедурного кода
ООП призвано упростить написание кода
Идея ООП

ООП Человеку сложно воспринимать большие объема процедурного кода ООП призвано упростить написание
– структурирование программы в «модель реального мира»

Слайд 5

ООП: идея

Практически что угодно в нашем мире можно назвать объектом
Объект можно охарактеризовать

ООП: идея Практически что угодно в нашем мире можно назвать объектом Объект
набором параметров
Значения этих параметров можно считать «состоянием» объекта
Кроме того, некоторые объекты умеют совершать действия

Слайд 6

ООП: состояние и поведение

Объекты умеют совершать какие - то действия
Действия зависят от

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

Слайд 7

ООП: пример

Параметры объекта будем звать свойствами
То, что он умеет делать – методами
Какие

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

Слайд 8

ООП: класс

Некий “чертеж” или “инструкция”, описывающая объект
Описывает какие свойства есть у объекта

ООП: класс Некий “чертеж” или “инструкция”, описывающая объект Описывает какие свойства есть
(но не их конкретные значения)
Описывает, что умеет делать объект, но поведение в «рантайме» часто зависит от свойств

Слайд 9

ООП: основные понятия

Объект – сущность, имеет состояние и поведение
Класс – шаблон, по

ООП: основные понятия Объект – сущность, имеет состояние и поведение Класс –
которому создается объект
Свойство – параметр класса, у объекта имеет конкретное значение
Метод – функция, описывается в классе, принадлежит объекту, может использовать его состояние
Конструктор класса – специальный метод, который «собирает объект по чертежу»

Слайд 10

Class Car

Object Volkswagen polo

Object Kia Shortage

Object BWM X6

ООП: пример класса

Class Car Object Volkswagen polo Object Kia Shortage Object BWM X6 ООП: пример класса

Слайд 11

ООП: пример класса

Свойства

Класс

Конструктор класса

Метод

ООП: пример класса Свойства Класс Конструктор класса Метод

Слайд 12

Добавим новый метод

Добавим новый метод

Слайд 13

Вопросы и ответы

Вопросы и ответы

Слайд 14

Глава 3.2
Принципы ООП

Глава 3.2 Принципы ООП

Слайд 15

ДИСКЛЕЙМЕР

Есть общепризнанные концепции ООП, а есть моя интерпретация тех или иных свойств,

ДИСКЛЕЙМЕР Есть общепризнанные концепции ООП, а есть моя интерпретация тех или иных
и их применимость на практике. Часть из того, что я буду рассказывать, будет касаться личного опыта.

Слайд 16


ООП: Принципы

Полиморфизм
Инкапсуляция
Наследование

ООП: Принципы Полиморфизм Инкапсуляция Наследование

Слайд 17


ООП: Наследование

Class Airplane

Вспомним класс «Машина»
Подумаем о взаимоотношении класса «Машина» и «ТранспортноеСредство»

ООП: Наследование Class Airplane Вспомним класс «Машина» Подумаем о взаимоотношении класса «Машина»

Class Vehicle

Умеет «перемещаться»

Имеет бренд

Ездит на 4х колесах

Есть двигатель

Class Car

В него можно «сесть»

Летает

Есть крылья и 2 двигателя

Слайд 18


Наследование, пример

Наследование, пример

Слайд 19


ООП: Наследование, пример

Переопределили метод

Обращение к конструктору предка

Значение по умолчанию

Унарный условный оператор

Наследование

ООП: Наследование, пример Переопределили метод Обращение к конструктору предка Значение по умолчанию Унарный условный оператор Наследование

Слайд 20


ООП: Наследование, пример

ООП: Наследование, пример

Слайд 21


Совсем чуть-чуть про память в java

Class Vehicle

Class Car

brand passangersCount

move(destination)
sitInt(passangersCount)

brand passangersCount

move(destination)
sitInt(passangersCount)

engineCapacity

move(destination)

Stack

Heap

V

Vehicle v1 =

new Vehicle(“any”)

move(destination)

move(destination)

Vehicle

Совсем чуть-чуть про память в java Class Vehicle Class Car brand passangersCount
v2 =

new Car(“any”, 100)

move(destination)

move(destination)

Car c1 =

new Car(“any”, 120)

move(destination)

move(destination)

Слайд 22


ООП: Инкапсуляция

Упаковка данных и функций в единый компонент
Скрывает детали реализации от

ООП: Инкапсуляция Упаковка данных и функций в единый компонент Скрывает детали реализации
пользователя класса
Делает систему более гибкой

Слайд 23


ООП: Инкапсуляция, модификаторы доступа

Public – виден всем
Protected – виден в потомках
Private

ООП: Инкапсуляция, модификаторы доступа Public – виден всем Protected – виден в
– виден только самому классу
Package Private – виден в рамках пакета

Слайд 24


Инкапсуляция, пример

Поле недоступно из вне

Поле доступно внутри класса

Метод доступен всем

Инкапсуляция, пример Поле недоступно из вне Поле доступно внутри класса Метод доступен всем

Слайд 25


Инкапсуляция, пример

Нарушаем инкапсуляцию

Инкапсуляция, пример Нарушаем инкапсуляцию

Слайд 26


Инкапсуляция, пример

Поле доступно в потомках

Инкапсуляция, пример Поле доступно в потомках

Слайд 27


ООП: полиморфизм

Некоторые объекты могут совершать похожие действия
Транспортные средства могут ездить, но

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

Слайд 28


ООП: полиморфизм

Полиморфизм

Код не зависит от типа транспорта

ООП: полиморфизм Полиморфизм Код не зависит от типа транспорта

Слайд 29


ООП: оверлоад

ООП: оверлоад

Слайд 30

Зачем вообще нужно ООП?

Зачем вообще нужно ООП?

Слайд 33

Зачем вообще нужно ООП?

Код разбивается на большее число модулей
Модули менее зависимы
Связи между

Зачем вообще нужно ООП? Код разбивается на большее число модулей Модули менее
модулями не зависят от реализации

Слайд 34

Глава 3.3
Абстрактный класс и интерфейс

Глава 3.3 Абстрактный класс и интерфейс

Слайд 35


Абстрактный класс

Метод move всегда переопределяется
Мы никогда не используем Vehicle, только наследников

Абстрактный класс Метод move всегда переопределяется Мы никогда не используем Vehicle, только наследников

Слайд 36


Абстрактный класс

Абстрактный класс – класс, у которого есть хотя бы 1

Абстрактный класс Абстрактный класс – класс, у которого есть хотя бы 1
метод (вообще может и не быть, но смысла в этом мало), который непонятно как должен работать, и по-этому определяться он будет в наследниках
Сущность абстрактного класса создать нельзя (но можно присвоить наследника переменной ТИПА абстрактного класса: Abstact a = new Naslednic())

Слайд 37


Абстрактный класс

Абстрактный класс

Абстрактный метод

Абстрактный класс Абстрактный класс Абстрактный метод

Слайд 38


Интерфейс

Интерфейс – так сказать “контракт” на то, что класс реализует набор

Интерфейс Интерфейс – так сказать “контракт” на то, что класс реализует набор
методов.
До 2014 года(до java 8) интерфейс не мог иметь реализации методов
Класс может реализовывать несколько интерфейсов ( а наследовать абстрактный класс только 1)

Слайд 39


Интерфейс

Множественное наследование интерфейсов

Приведение к типу интерфейса

Интерфейс Множественное наследование интерфейсов Приведение к типу интерфейса

Слайд 40

Вопросы и ответы

Вопросы и ответы

Слайд 41

Глава 3.4
Практика, Основы ООП

Глава 3.4 Практика, Основы ООП