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

Содержание

Слайд 2

Функциональный подход List: content content content remove(pointer, index) add(pointer, index, newVar) pointer function function

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

List:

content

content

content

remove(pointer, index)

add(pointer, index, newVar)

pointer

function

function

Слайд 3

Object private field field field method method method method public

Object

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

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

List:

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

private:
Sth

Слайд 5

Class Class private: field1; field2; public: getField1(); getField2(); doSth(); Object private:

Class

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;

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

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)

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

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

Слайд 10

Создание объектов MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(param1, param2);

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

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

Слайд 11

RAM

RAM

Слайд 12

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

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

Слайд 13

Static public static void main(String… args) { }

Static

public static void main(String… args) {
}

Слайд 14

Д/з public class Calc { public double[] solveSqrl(int a, int b,

Д/з

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

Полиморфизм

Перегрузка функций
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;

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 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

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

Class A
method doSth

Class B
method doSth

Class C
method doSth

Class BC
??? method doSth

Слайд 20

Модификаторы доступа public private protected default

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

public
private
protected
default

Слайд 21

Виртуальные функции public class Animal { public String say() { return "I'm animal"; } }

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

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

animal"; }
}
Слайд 22

Виртуальные функции public class Cat extends Animal { @Override public String

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

public class Cat extends Animal { @Override public String say()

{ return "meow"; } }
Слайд 23

Виртуальные функции public class Main { public static void main(String[] args)

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

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(){} }

Композиция

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

Слайд 25

Интерфейсы public interface Drawable { void draw(); } public class Line

Интерфейсы

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 = 1 file
1 file <= 700

строк
1 class = одна задача, не перегружайте логикой
Слайд 27

Правила именования Переменные и методы с маленькой буквы Классы с заглавной

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

Переменные и методы с маленькой буквы
Классы с заглавной
Только английские слова

(не транслит!!!)
Названия формируются «верблюжьим правилом»
URL -> url; public URL -> publicUrl
Названия должны быть понятными
Ctrl + alt + L