Слайд 2Функциональный подход
List:
content
content
content
remove(pointer, index)
add(pointer, index, newVar)
pointer
function
function
Слайд 3Object
private
field
field
field
method
method
method
method
public
Слайд 4Объектный подход
List:
private:
Sth
public:
add(object)
remove(object)
remove(index)
get(index)
contains(object)
size()
private:
Sth
Слайд 5Class
Class
private:
field1;
field2;
public:
getField1();
getField2();
doSth();
Object
private:
“value”;
null;
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;
}
}
Слайд 9Конструкторы
По умолчанию / без параметров
Конструкторы с параметрами
Закрытые конструкторы (singleton)
Слайд 10Создание объектов
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass(param1, param2);
Слайд 13Static
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Наследование
Наследование
Композиция
Интерфейсы
Слайд 17Class: 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
строк
1 class = одна задача, не перегружайте логикой
Слайд 27Правила именования
Переменные и методы с маленькой буквы
Классы с заглавной
Только английские слова
(не транслит!!!)
Названия формируются «верблюжьим правилом»
URL -> url; public URL -> publicUrl
Названия должны быть понятными
Ctrl + alt + L
Слайд 28Д/з
Переделать Calculator с BigDecimal и BigInteger и сравнить скорость выполнения рекурсивной
функции с циклической