SlideShare a Scribd company logo
Экспресс по Java
Web Test Framework с нуля [PRO]
NoBugs
Не помните основные
важные конструкции в Java?
2
Давайте пробежимся
экпрессом по Java!
3
4
ШАГ 1: ВСЕ ЕСТЬ КЛАСС
сlass MyPhone {
private String color;
public void charge() {
System.out.println(“charge”);
}
} класс - это шаблон обьекта
как чертеж, по которому можно
построить много зданий
поле
метод
5
ШАГ 2: CОЗДАНИЕ ОБЪЕКТА
Phone myPhone = new Phone();
myPhone.charge();
с помощью new создается
здание по чертежу,
вызывая конструктор
6
ШАГ 3: КОНСТРУКТОР
сlass MyPhone {
private String color;
public MyPhone() {
color = “black”;
}
} конструктор - это метод с
таким же именем как класс
внутри вы определяете
алгоритм создания обьекта
7
ШАГ 4: СТАТИЧЕСКИЕ ПОЛЯ
сlass MyPhone {
private static String color;
public static void charge() {
System.out.println(“charge”);
}
} cтатические поля и
методы принадлежат
классу, а не объекту
8
ШАГ 4: СТАТИЧЕСКИЕ ПОЛЯ
сlass MyPhone {
public String color;
public void charge() {
System.out.println(“charge”);
}
}
phone1 = new MyPhone(); phone2 = new MyPhone();
phone1.charge();
Phone1.color = black
phone2.charge();
Phone2.color = white
нестатичные поля и
методы вызываются у
конкретных обьектов
9
ШАГ 4: СТАТИЧЕСКИЕ ПОЛЯ
сlass MyPhone {
public static String color;
public static void charge() {
System.out.println(“charge”);
}
}
MyPhone.charge();
MyPhone.color()
статичные поля и методы
вызываются у класса
=> не нужно ждать создание объекта,
чтобы вызвать статичный метод или поле
10
ШАГ 5: НАСЛЕДОВАНИЕ
class Vehicle {
public String color;
public void move() {
System.out.println("Передвигаюсь");
}
}
class Car extends Vehicle {
public void move() {
System.out.println("Передвигаюсь на четырех
колесах");
}
}
class Bicycle extends Vehicle {
public void move() {
System.out.println("Передвигаюсь на двух колесах");
}
}
когда необходимо
одному классу
наследовать свойства
другого
11
ШАГ 5: НАСЛЕДОВАНИЕ
Вы видите:
class Car {
}
На самом деле:
class Car extends Object {
}
Все классы в Java
наследуются от Object,
но вы этого не видите
Object {
toString()
hashCode()
equals()
clone()
finalize()
getClass()
notify()
notifyAll()
}
Object имеет несколько
методов, которые
доступны всем классам
(так как они наследники)
12
ШАГ 6: АБСТРАКТНЫЙ КЛАСС
abstract class Animal {
abstract void makeSound();
}
class Dog extends Animal {
void makeSound() {
System.out.println("Гав-гав");
}
}
class Cat extends Animal {
void makeSound() {
System.out.println("Мяу");
}
}
Мы не можем
создать объект по
абстрактному классу,
но мы можем
использовать его как
инструкцию для
наследников
Каждый наследник
создает свою
реализацию
makeSound
13
ШАГ 7: ИНТЕРФЕЙСЫ
interface Chargeable {
void charge();
}
class Phone implements Chargeable {
@Override
public void charge() {
System.out.println("Заряжаюсь через USB-C");
}
}
class Laptop implements Chargeable {
@Override
public void charge() {
System.out.println("Заряжаюсь через Thunderbolt 3");
}
}
Все, кто заряжаются -
имплементируйте
интерфейс, тогда вы
обязаны реализовать
метод charge
14
ШАГ 7: ИНТЕРФЕЙСЫ
Сar extends Venicle
Car implements Chargeble, Drivable
Один класс может имплементировать
многие интерфейсы, но наследоваться
только от одного родителя
15
ШАГ 8: ПОЛИМОРФИЗМ
interface Strategy {
void execute();
}
class ConcreteStrategyA implements Strategy {
public void execute() {
System.out.println("Выполнение стратегии A");
}
}
class ConcreteStrategyB implements Strategy {
public void execute() {
System.out.println("Выполнение стратегии B");
}
}
пример гибкого выбора стратегии, в которой
мы не привязываемся к конктретному типу
данных (стратегии A или B)
16
ШАГ 8: ПОЛИМОРФИЗМ
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy() {
strategy.execute();
}
}
Назначаем стратегию и исполняем
независимо от типа данных
17
ШАГ 9: ИНКАПСУЛЯЦИЯ
class Person {
private Gender gender;
protected MarrigeStatus marrigeStatus;
Profession profession;
public String socialName;
}
никому не доступно, кроме самого объекта
доступно объекту и наследникам
доступно всем в пакете
доступно всем
Модификаторы доступа
18
ШАГ 10: АГРЕГАЦИЯ И КОМПОЗИЦИЯ
class SubsystemA {
public void operationA()
{ System.out.println("Операция A"); }
}
class SubsystemB {
public void operationB()
{ System.out.println("Операция B"); }
}
class Facade {
private SubsystemA a = new SubsystemA();
private SubsystemB b = new SubsystemB();
public void operationAB() {
a.operationA();
b.operationB();
}
}
собрали две системы в один класс
19
ШАГ 11: ДЖЕНЕРИКИ
class Box<T> {
private T content;
public void put(T content) {
this.content = content;
}
public T get() {
return content;
}
}
Box<String> stringBox = new Box<>();
stringBox.put("Привет, Java!");
System.out.println(stringBox.get()); // Вывод: Привет, Java!
Обобщение класса
для многих типов данных
подставляем T=String
20
ШАГ 12: ЧТО ЕЩЕ?
Изучите:
● Исключения
● Коллекции
● Вложенные классы
● Java Streams
И тд!
Это не все в Java, но все в нашем
экспресс погружении!
Материалы к прочтению
21
МАТЕРИАЛЫ
К
ЧТЕНИЮ
ЭКСПРЕСС ПО JAVA:
22
СЕГОДНЯ
МЫ
УЗНАЛИ
Шаг 1: Все есть класс
Шаг 2: Создание объекта
Шаг 3: Конструктор
Шаг 4: Статические поля
Шаг 5: Наследование
Шаг 6: Абстрактный класс
Шаг 7: Интерфейсы
Шаг 8: Полиморфизм
Шаг 9: Инкапсуляция
Шаг 10: Агрегация и композиция
Шаг 11: Дженерики
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН
НАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ П
ОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН
ПОГНАЛИ!

More Related Content

PPT
Lec 2 Java
PDF
PDF
Java осень 2014 занятие 3
PPT
10. java lecture generics&collections
PDF
C# Desktop. Занятие 02.
PPTX
Kotlin
PDF
Сергей Константинов — Что интересного готовит нам W3C
PPT
паттерны программирования
Lec 2 Java
Java осень 2014 занятие 3
10. java lecture generics&collections
C# Desktop. Занятие 02.
Kotlin
Сергей Константинов — Что интересного готовит нам W3C
паттерны программирования

Similar to Экспресс по Java [NoBugs WTF PRO уровень] (20)

PPTX
Программирование на языке C Sharp (СИ решетка)
PDF
C# Desktop. Занятие 07.
PDF
"Погружение в Robolectric" Дмитрий Костырев (Avito)
PDF
C# Desktop. Занятие 03.
PPTX
Java весна 2013 лекция 9
PPTX
Интерфейсы
PPTX
Bytecode
PDF
API design in java project
PDF
C++ STL & Qt. Занятие 02.
PDF
Курс Java-2016. Занятие 10. Reflection, mock
PPTX
Groovy и Grails. Быстро и обо всём
PDF
C++ Базовый. Занятие 15.
PDF
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
PPTX
Паттерны проектирования
PDF
C++ Базовый. Занятие 11.
ODP
Java 9 - Back to the Future
PDF
Java осень 2013 лекция 5-1
PDF
PPTX
Елена Жукова "Жизнь вне JavaScript"
PDF
Lambdas in java 8
Программирование на языке C Sharp (СИ решетка)
C# Desktop. Занятие 07.
"Погружение в Robolectric" Дмитрий Костырев (Avito)
C# Desktop. Занятие 03.
Java весна 2013 лекция 9
Интерфейсы
Bytecode
API design in java project
C++ STL & Qt. Занятие 02.
Курс Java-2016. Занятие 10. Reflection, mock
Groovy и Grails. Быстро и обо всём
C++ Базовый. Занятие 15.
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
Паттерны проектирования
C++ Базовый. Занятие 11.
Java 9 - Back to the Future
Java осень 2013 лекция 5-1
Елена Жукова "Жизнь вне JavaScript"
Lambdas in java 8
Ad

More from NoBugs (13)

PDF
Принципы программирования [NoBugs WTF PRO уровень].pdf
PPTX
Построение CI пайплайна [NoBugs WTF PRO уровень].pptx
PPTX
Философия "СI глазами QA" [NoBugs WTF PRO уровень].pptx
PPTX
GitHub Actions [NoBugs WTF PRO уровень].pptx
PDF
Погружение в Selenide [NoBugs WTF PRO уровень]
PDF
Паттерны UI автотестов [NoBugs WTF PRO уровень]
PDF
Проблемы UI автотестов [NoBugs WTF PRO уровень]
PDF
Cтратегия UI автотестирования [NoBugs WTF PRO уровень]
PDF
Стратегия покрытия эндпоинтов [NoBugs WTF PRO уровень]
PDF
Стратегии масштабирования [NoBugs WTF PRO уровень]
PDF
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
PDF
Тестирование API дизайна [NoBugs WTF PRO уровень]
PDF
Алгоритм построения API автоматизации [NoBugs WTF PRO уровень]
Принципы программирования [NoBugs WTF PRO уровень].pdf
Построение CI пайплайна [NoBugs WTF PRO уровень].pptx
Философия "СI глазами QA" [NoBugs WTF PRO уровень].pptx
GitHub Actions [NoBugs WTF PRO уровень].pptx
Погружение в Selenide [NoBugs WTF PRO уровень]
Паттерны UI автотестов [NoBugs WTF PRO уровень]
Проблемы UI автотестов [NoBugs WTF PRO уровень]
Cтратегия UI автотестирования [NoBugs WTF PRO уровень]
Стратегия покрытия эндпоинтов [NoBugs WTF PRO уровень]
Стратегии масштабирования [NoBugs WTF PRO уровень]
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
Тестирование API дизайна [NoBugs WTF PRO уровень]
Алгоритм построения API автоматизации [NoBugs WTF PRO уровень]
Ad

Экспресс по Java [NoBugs WTF PRO уровень]

  • 1. Экспресс по Java Web Test Framework с нуля [PRO] NoBugs
  • 2. Не помните основные важные конструкции в Java? 2
  • 4. 4 ШАГ 1: ВСЕ ЕСТЬ КЛАСС сlass MyPhone { private String color; public void charge() { System.out.println(“charge”); } } класс - это шаблон обьекта как чертеж, по которому можно построить много зданий поле метод
  • 5. 5 ШАГ 2: CОЗДАНИЕ ОБЪЕКТА Phone myPhone = new Phone(); myPhone.charge(); с помощью new создается здание по чертежу, вызывая конструктор
  • 6. 6 ШАГ 3: КОНСТРУКТОР сlass MyPhone { private String color; public MyPhone() { color = “black”; } } конструктор - это метод с таким же именем как класс внутри вы определяете алгоритм создания обьекта
  • 7. 7 ШАГ 4: СТАТИЧЕСКИЕ ПОЛЯ сlass MyPhone { private static String color; public static void charge() { System.out.println(“charge”); } } cтатические поля и методы принадлежат классу, а не объекту
  • 8. 8 ШАГ 4: СТАТИЧЕСКИЕ ПОЛЯ сlass MyPhone { public String color; public void charge() { System.out.println(“charge”); } } phone1 = new MyPhone(); phone2 = new MyPhone(); phone1.charge(); Phone1.color = black phone2.charge(); Phone2.color = white нестатичные поля и методы вызываются у конкретных обьектов
  • 9. 9 ШАГ 4: СТАТИЧЕСКИЕ ПОЛЯ сlass MyPhone { public static String color; public static void charge() { System.out.println(“charge”); } } MyPhone.charge(); MyPhone.color() статичные поля и методы вызываются у класса => не нужно ждать создание объекта, чтобы вызвать статичный метод или поле
  • 10. 10 ШАГ 5: НАСЛЕДОВАНИЕ class Vehicle { public String color; public void move() { System.out.println("Передвигаюсь"); } } class Car extends Vehicle { public void move() { System.out.println("Передвигаюсь на четырех колесах"); } } class Bicycle extends Vehicle { public void move() { System.out.println("Передвигаюсь на двух колесах"); } } когда необходимо одному классу наследовать свойства другого
  • 11. 11 ШАГ 5: НАСЛЕДОВАНИЕ Вы видите: class Car { } На самом деле: class Car extends Object { } Все классы в Java наследуются от Object, но вы этого не видите Object { toString() hashCode() equals() clone() finalize() getClass() notify() notifyAll() } Object имеет несколько методов, которые доступны всем классам (так как они наследники)
  • 12. 12 ШАГ 6: АБСТРАКТНЫЙ КЛАСС abstract class Animal { abstract void makeSound(); } class Dog extends Animal { void makeSound() { System.out.println("Гав-гав"); } } class Cat extends Animal { void makeSound() { System.out.println("Мяу"); } } Мы не можем создать объект по абстрактному классу, но мы можем использовать его как инструкцию для наследников Каждый наследник создает свою реализацию makeSound
  • 13. 13 ШАГ 7: ИНТЕРФЕЙСЫ interface Chargeable { void charge(); } class Phone implements Chargeable { @Override public void charge() { System.out.println("Заряжаюсь через USB-C"); } } class Laptop implements Chargeable { @Override public void charge() { System.out.println("Заряжаюсь через Thunderbolt 3"); } } Все, кто заряжаются - имплементируйте интерфейс, тогда вы обязаны реализовать метод charge
  • 14. 14 ШАГ 7: ИНТЕРФЕЙСЫ Сar extends Venicle Car implements Chargeble, Drivable Один класс может имплементировать многие интерфейсы, но наследоваться только от одного родителя
  • 15. 15 ШАГ 8: ПОЛИМОРФИЗМ interface Strategy { void execute(); } class ConcreteStrategyA implements Strategy { public void execute() { System.out.println("Выполнение стратегии A"); } } class ConcreteStrategyB implements Strategy { public void execute() { System.out.println("Выполнение стратегии B"); } } пример гибкого выбора стратегии, в которой мы не привязываемся к конктретному типу данных (стратегии A или B)
  • 16. 16 ШАГ 8: ПОЛИМОРФИЗМ class Context { private Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public void setStrategy(Strategy strategy) { this.strategy = strategy; } public void executeStrategy() { strategy.execute(); } } Назначаем стратегию и исполняем независимо от типа данных
  • 17. 17 ШАГ 9: ИНКАПСУЛЯЦИЯ class Person { private Gender gender; protected MarrigeStatus marrigeStatus; Profession profession; public String socialName; } никому не доступно, кроме самого объекта доступно объекту и наследникам доступно всем в пакете доступно всем Модификаторы доступа
  • 18. 18 ШАГ 10: АГРЕГАЦИЯ И КОМПОЗИЦИЯ class SubsystemA { public void operationA() { System.out.println("Операция A"); } } class SubsystemB { public void operationB() { System.out.println("Операция B"); } } class Facade { private SubsystemA a = new SubsystemA(); private SubsystemB b = new SubsystemB(); public void operationAB() { a.operationA(); b.operationB(); } } собрали две системы в один класс
  • 19. 19 ШАГ 11: ДЖЕНЕРИКИ class Box<T> { private T content; public void put(T content) { this.content = content; } public T get() { return content; } } Box<String> stringBox = new Box<>(); stringBox.put("Привет, Java!"); System.out.println(stringBox.get()); // Вывод: Привет, Java! Обобщение класса для многих типов данных подставляем T=String
  • 20. 20 ШАГ 12: ЧТО ЕЩЕ? Изучите: ● Исключения ● Коллекции ● Вложенные классы ● Java Streams И тд! Это не все в Java, но все в нашем экспресс погружении!
  • 22. ЭКСПРЕСС ПО JAVA: 22 СЕГОДНЯ МЫ УЗНАЛИ Шаг 1: Все есть класс Шаг 2: Создание объекта Шаг 3: Конструктор Шаг 4: Статические поля Шаг 5: Наследование Шаг 6: Абстрактный класс Шаг 7: Интерфейсы Шаг 8: Полиморфизм Шаг 9: Инкапсуляция Шаг 10: Агрегация и композиция Шаг 11: Дженерики
  • 23. ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН НАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ П ОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН ПОГНАЛИ!