Скачать презентацию ООП Функциональный подход List pointer content function Скачать презентацию ООП Функциональный подход List pointer content function

SE1 OOP.pptx

  • Количество слайдов: 28

ООП ООП

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

Object private field method public method Object private field method public method

Объектный подход List: private: Sth public: Øadd(object) Øremove(index) Øget(index) Øcontains(object) Øsize() Объектный подход 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(); 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. Описание классов 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 Создание объектов My. Class obj 1 = new My. Class(); My. Class obj 2 = new My. Class(param 1, param 2);

RAM RAM

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

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

Д/з public class Calc { public double[] solve. Sqrl(int a, int b, int c) Д/з 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, Полиморфизм • Перегрузка функций 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 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 Наследование 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 Множественное наследование 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 private protected default

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

Виртуальные функции public class Cat extends Animal { } @Override public String say() { Виртуальные функции public class Cat extends Animal { } @Override public String say() { return "meow"; }

Виртуальные функции 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());

Композиция public class Circle { private Point center; private int radius; } public void Композиция public class Circle { private Point center; private int radius; } public void draw(){}

Интерфейсы public interface Drawable { void draw(); } public class Line impliments Drawable, Clonable Интерфейсы 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 <= Принятые правила создания классов • 1 class = 1 file • 1 file <= 700 строк • 1 class = одна задача, не перегружайте логикой

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

Д/з Переделать Calculator с Big. Decimal и Big. Integer и сравнить скорость выполнения рекурсивной Д/з Переделать Calculator с Big. Decimal и Big. Integer и сравнить скорость выполнения рекурсивной функции с циклической