ООП
Функциональный подход
Object
Объектный подход
Class
Основные принципы ООП
Описание классов
Области видимости
Конструкторы
Создание объектов
RAM
Нет деструкторов!
Static
Д/з
Полиморфизм
Наследование
Class: Point
Наследование
Множественное наследование
Модификаторы доступа
Виртуальные функции
Виртуальные функции
Виртуальные функции
Композиция
Интерфейсы
Принятые правила создания классов
Правила именования
Д/з
101.72K
Категория: ПрограммированиеПрограммирование

ООП. Основные принципы ООП

1. ООП

2. Функциональный подход

List:
pointer
content
function
remove(pointer, index)
function
add(pointer, index, newVar)
content
content

3. Object

private
field
field
field
method
public
method
method
method

4. Объектный подход

List:
private:
private:
Sth
Sth
public:
add(object)
remove(object)
remove(index)
get(index)
contains(object)
size()

5. Class

Class
Object
private:
field1;
field2;
private:
“value”;
null;
public:
getField1();
getField2();
doSth();
public:
getField1();
getField2();
doSth();

6. Основные принципы ООП

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

7. Описание классов

package com.company;
public class A {
private String str;
public String getStr() { return str; }
public void setStr(String str) { this.str = str }
public void doSth() {
}
public A() { }
public A(String str) {
this.str = str;
}
}

8. Области видимости

9. Конструкторы

• По умолчанию / без параметров
• Конструкторы с параметрами
• Закрытые конструкторы (singleton)

10. Создание объектов

MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass(param1, param2);

11. RAM

12. Нет деструкторов!

13. Static

public static void main(String… args) {
}

14. Д/з

public class Calc {
public double[] solveSqrl(int a, int b, int c) { }
public long fibonacciNumberLoop(int n) { }
public long fibonacciNumberRecursive(int n) { }
}
public static void main(String... args) {
Calc c = new Calc();
//переписать с условным оператором, выводить в зависимости от полученного результата
System.out.println(c.solveSqrl(1, 2, 1));
//
System.out.println(c.fibonacciNumberLoop(100));
System.out.println(c.fibonacciNumberRecursive(100));
}
*Реализовать класс матриц с методами сложения, умножения и транспонирования

15. Полиморфизм

• Перегрузка функций
void func(int param);
void func(double param);
void func(int param1, int param 2);
int func(String str);
• Переопределение функций
будет после наследования

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

• Наследование
• Композиция
• Интерфейсы

17. Class: Point

public class Point {
private int x = 0;
private int y = 0;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void draw() {}
}

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

public class ColorPoint extends Point {
private Color color;
@Override
public void draw(){}
public ColorPoint(int x, int y, Color color) {
super(x,y);
this.color = color;
}
}

19. Множественное наследование

Class A
method doSth
Class B
method doSth
Class C
method doSth
Class BC
??? method
doSth

20. Модификаторы доступа


public
private
protected
default

21. Виртуальные функции

public class Animal {
public String say() {
return "I'm animal";
}
}

22. Виртуальные функции

public class Cat extends Animal {
@Override
public String say() {
return "meow";
}
}

23. Виртуальные функции

public class Main {
public static void main(String[] args) {
Animal animal = new Cat();
System.out.println(animal.say());
}
}

24. Композиция

public class Circle {
private Point center;
private int radius;
public void draw(){}
}

25. Интерфейсы

public interface Drawable {
void draw();
}
public class Line impliments Drawable, Clonable {
public void draw() {
}
}
Drawable d = new Line();
d.draw();

26. Принятые правила создания классов

• 1 class = 1 file
• 1 file <= 700 строк
• 1 class = одна задача, не перегружайте
логикой

27. Правила именования

1)
2)
3)
4)
Переменные и методы с маленькой буквы
Классы с заглавной
Только английские слова (не транслит!!!)
Названия формируются «верблюжьим
правилом»
5) URL -> url;
public URL -> publicUrl
6) Названия должны быть понятными
7) Ctrl + alt + L

28. Д/з

Переделать Calculator с BigDecimal и BigInteger
и сравнить скорость выполнения рекурсивной
функции с циклической
English     Русский Правила