public void plant()

advertisement
ООП
ANDROID CLUB 2015
Сегодня

Класс

Объект

Абстракция

Наследование

Инкапсуляция

Полиморфизм
Предупреждение

Не старайтесь запомнить

Старайтесь понять
Что такое ООП?

Объектное ориентированное
программирование

Модель программирование вокруг объектов,
а не действий
Процедурное
программирование
ООП
Зачем использовать ООП?

Легче проектировать – легче понимать

Легче исправляются ошибки

Легче усовершенствовать

Много кратно использование одного кода
Два основных кита ООП

Класс

Объект
Класс: пример
Объект: пример
Класс

Шаблон расширяемой
программного кода

Содержит в себе:
Переменные
Методы
Класс: пример
public class Robot {
public String name;
public String color;
public void sayHello(){
System.out.println("Привет!Меня зовут
"+name+".Я "+color+" робот");
}
}
Класс: практика

Создавайте класс: Car

Создавайте следующие атрибуты для этого
класса
String: name
String: color
int: speed
И метод drive: Название – XXXXX. Цвет – YYYYY.
От Ташкента до Самарканда доеду за Z часов
Объект

Копия класса

Экземпляр основанный на чертеж
Объект: пример
Robot robot1 = new Robot();
robot1.name = "Андрюха";
robot1.color = "красный";
robot1.sayHello();
Объект: практика

Создавайте 3 объекта класса Car

1 – Orlando, белая, 195

2 – Bugatti Veyron, черная, 408

3 – Zaz, красная, 90

И вызывайте метод drive: Название Zaz. Cвет –
красная. От Ташкента до Самарканда доеду
за 3,43 часов
Основные концепты ООП

Абстракция

Наследование

Полиморфизм

Инкапсуляция
Абстракция: Растение

Peashooter

Snow Pea

Sunflower

Абстрактный класс
- Plant
Абстракция: пример
public class Plant {
public String name;
public int sun_cost;
public int rechange_sec;
public int thoughness;
public void plant()
{
System.out.println(name+":-"+sun_cost);
}
}
Абстракция: практика
Создавайте класс – Zombie
 Переменные класса Zombie
Строка – name
Integer – toughness
Integer – damage_power
Integer – speed
Создавайте метод – damage
Метод показывает сила урона зомби

Наследование: зачем?

Предотвращает написать код повторно
Наследование: пример
public class PeaShooter extends Plant{
public class Sunflower extends Plant{
public PeaShooter()
public Sunflower()
{
{
name = "Pea Shooter";
name = "Sunflower";
}
}
public int sun_generator_power = 25;
public void shoot()
public void generateSun()
{
{
System.out.println(name+":выстрел");
}
}
System.out.println("Генерировал
"+sun_generator_power+" cолнце");
}
}
Наследование: практика

Создавайте 2 класса наследника – Zombie

Regular; name: Regular; speed: 25; метод walk

DuckTube; name: Duck Tube; speed: 20, метод
swim
Полиморфизм: пример
@Override
public void plant() {
try {
Thread.sleep(5000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
super.plant();
}
Полиморфизм: практика

Перепишите метод damage для DuckTube
зомби

Пусть этот зомби подождёт 3 секунду перед
тем принести урон
Инкапсуляция: не показывать
процесс
Инкапсуляция: скрывать процесс
Инкапсуляция: пример
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Инкапсуляция: практика

Поменяйте тип доступа переменных с public
на private внутри класса Zombie, Regular,
DuckTube

Создавайте методы геттеры и сеттеры
Домашнее задание

https://www3.ntu.edu.sg/home/ehchua/programming/java/J3f_O
OPExercises.html
Download