ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1
ОСНОВНЫЕ ПОНЯТИЯ. КЛАСС. ОБЪЕКТ. Класс это описание объектов определенного типа. Класс модель ещё не существующей сущности (объекта) Объект это экземпляр класса. Пример: класс - вектор, объект – единичный вектор с координатами(1,0) 2
КЛАССЫ Детали реализации объекта скрыты, он используется через его интерфейс совокупность правил доступа. Это свойство – инкапсуляция !!! Преимущества ООП проявляются при использовании множества объектов одного класса. 3
ПРИМЕР ЗАДАНИЯ КЛАССА НА С# class Vector { double x, y; //Координаты public Vector(double x, double y) //Конструктор { this.x = x; this.y = y; } public double GetX() //Чтение x-координаты { return x; } //Чтение y-координаты public double GetY() { return y; } public static Vector operator +(Vector w, Vector v) //Перегрузка оператора + { Vector res = new Vector(w.x + v.x, w.y + v.y); return res; } // Напишите метод, возвращающий длину вектора public double Lenght() { } // Напишите метод возвращающий скалярное произведение public double Scalar(Vector w, Vector v) { //ваш код } 4
ПОЛЕ, МЕТОД Поле это переменная, принадлежащая объекту Метод - блок кода, содержащий набор инструкций class Vector { double x, y; //Координаты public Vector(double x, double y) //Конструктор { this.x = x; this.y = y; } // метод, возвращающий длину вектора public double Lenght() { } // Напишите метод возвращающий скалярное произведение public double Scalar(Vector w, Vector v) { //ваш код } 5
КОНСТРУКТОР Конструктор это метод класса, который вызывается для создания объекта этого класса. Если мы имеем public class myClass, то и конструктор, будет выглядеть так же: public myClass(int arg) {...}. Конструктор может не принимать переменных, а может принимать и ни одну. Конструктор вызывается автоматически при создании объекта класса с помощью операции new. Свойства конструкторов: Конструктор не возвращает значение, даже типа void. Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации. Если программист не указал какие-то поля, полям значимых типов присваивается нуль 6
КОНСТРУКТОР public class myClass { public int m; public int n; myClass()//конструктор не принимает значения { } myClass(int m)//конструктор принимает одно значение { this.m = m; } myClass(int m, int n)//конструктор принимает два значения { this.m = m; this.n = n; } 7
ВЫЗОВ КОНСТРУКТОРА … Vector a = new Vector(0.7, 0.7); Vector b = new Vector(1,0); Vector a = new Vector(0.7, 0.7, 0.7); … 8
СТАТИЧЕСКИЕ МЕТОДЫ Статические методы выполняются, даже если экземпляр класса не существует. Пример: метод pow() из класса Math - статический. Выражение Math.pow(x, y) вычисляет x^y. При выполнении своей задачи, этот метод не использует ни одного экземпляра класса Math. Т.е. он не имеет неявного параметра. В статических методах объект this не используется. Статические методы не работают с объектами; 9
ПРИНЦИПЫ ООП 1. Инкапсуляция 2. Наследование Новый класс создается на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом. Класс-наследник реализует спецификацию уже существующего класса (базовый класс) 3. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. 10
ПЕРЕГРУЗКА ОПЕРАТОРОВ Перегружаемые операторы Перегружаться могут только перечисленные ниже унарные и бинарные операторы. Пример унарных операторов: ++, true, false Бинарные операторы: +, -, *, /, %, ==, !=, >, =, <= 11