SE1 OOP.pptx
- Количество слайдов: 28
ООП
Функциональный подход List: pointer content function remove(pointer, index) function add(pointer, index, new. Var) content
Object private field method public method
Объектный подход List: private: Sth public: Øadd(object) Øremove(index) Øget(index) Øcontains(object) Øsize()
Class Object private: field 1; field 2; private: “value”; null; public: get. Field 1(); get. Field 2(); do. Sth();
Основные принципы ООП • инкапсуляция • полиморфизм • наследование
Описание классов package company; public class A { private String str; public String get. Str() { return str; } public void set. Str(String str) { this. str = str } public void do. Sth() { } public A(String str) { this. str = str; } }
Области видимости
Конструкторы • По умолчанию / без параметров • Конструкторы с параметрами • Закрытые конструкторы (singleton)
Создание объектов My. Class obj 1 = new My. Class(); My. Class obj 2 = new My. Class(param 1, param 2);
RAM
Нет деструкторов!
Static public static void main(String… args) { }
Д/з public class Calc { public double[] solve. Sqrl(int a, int b, int c) { } public long fibonacci. Number. Loop(int n) { } public long fibonacci. Number. Recursive(int n) { } } public static void main(String. . . args) { Calc c = new Calc(); //переписать с условным оператором, выводить в зависимости от полученного результата System. out. println(c. solve. Sqrl(1, 2, 1)); // System. out. println(c. fibonacci. Number. Loop(100)); System. out. println(c. fibonacci. Number. Recursive(100)); } *Реализовать класс матриц с методами сложения, умножения и транспонирования
Полиморфизм • Перегрузка функций void func(int param); void func(double param); void func(int param 1, int param 2); int func(String str); • Переопределение функций будет после наследования
Наследование • Композиция • Интерфейсы
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() {}
Наследование public class Color. Point extends Point { private Color color; @Override public void draw(){} } public Color. Point(int x, int y, Color color) { super(x, y); this. color = color; }
Множественное наследование Class A method do. Sth Class B method do. Sth Class C method do. Sth Class BC ? ? ? method do. Sth
Модификаторы доступа • • public private protected default
Виртуальные функции public class Animal { public String say() { return "I'm animal"; } }
Виртуальные функции public class Cat extends Animal { } @Override public String say() { return "meow"; }
Виртуальные функции public class Main { public static void main(String[] args) { } } Animal animal = new Cat(); System. out. println(animal. say());
Композиция public class Circle { private Point center; private int radius; } public void draw(){}
Интерфейсы public interface Drawable { void draw(); } public class Line impliments Drawable, Clonable { public void draw() { } } Drawable d = new Line(); d. draw();
Принятые правила создания классов • 1 class = 1 file • 1 file <= 700 строк • 1 class = одна задача, не перегружайте логикой
Правила именования 1) 2) 3) 4) Переменные и методы с маленькой буквы Классы с заглавной Только английские слова (не транслит!!!) Названия формируются «верблюжьим правилом» 5) URL -> url; public URL -> public. Url 6) Названия должны быть понятными 7) Ctrl + alt + L
Д/з Переделать Calculator с Big. Decimal и Big. Integer и сравнить скорость выполнения рекурсивной функции с циклической


