Similar presentations:
ООП. Основные принципы ООП
1. ООП
2. Функциональный подход
List:pointer
content
function
remove(pointer, index)
function
add(pointer, index, newVar)
content
content
3. Object
privatefield
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
ClassObject
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 Amethod 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и сравнить скорость выполнения рекурсивной
функции с циклической