Объектно – ориентированное программировани – технология разработки сложного программного обеспечения, в которой программа строится в виде совокупности объектов и их взаимосвязей. ООП – сложный класс.
Базовые понятия ООП:
-> Класс – это основной элемент, содержащий данные, которые описывают строение объекта и его возможности, методы работы с ним;
public class Inimene //класс
{
string name; //поле
public Inimene(){} //конструктор
public var Age { get; set; } //свойство
public var Staatus() //свойство
}
-> Объект – экземпляр класса. То, что «рождено» по «чертежу», то есть по описанию из класса. В качестве примера объекта и класса можно привести технический чертёж для изготовления детали — это класс. Выточенная же на станке по размерам и указаниям из чертежа деталь – объект.
4 основных принципа
В объектно-ориентированном программировании выделяют 4 основных принципа: абстракция, инкапсуляция, наследование и полиморфизм.
Абстракция – способ выделения самых значимых характеристик объекта, при этом менее значимые отбрасываются. В ООП абстракция – работа только со значимыми характеристиками. Суть этого принципа в том, чтобы отделить составные объекты, состоящие из «меньших» объектов, от этих самых объектов, то есть от их составляющих.
Инкапсуляция – объединение в одном объекте данных и методов их обработки.

Наследование – способность в объектно-ориентированном программировании построить новый класс на основе уже заданного. При этом функционал может как полностью совпадать, так и отличаться. Класс-донор называется в таком случае родительским или базовым, а его «потомок» — наследником, дочерним классом.
Прототип – объект-образец, на основе которого «рождаются» другие объекты, полностью копируя его или изменяясь в процессе. При изменении в прототипе в копиях также происходят соответствующие изменения.
Полиморфизм – способность объектов самим определять, какие методы они должны применить в зависимости от того, где именно в коде они находятся. То есть, объект может изменяться в зависимости от своего местоположения и действовать по-разному, что позволяет не заводить лишних структур. Полиморфизм позволяет повысить процент повторного использования кода и сократить тем самым размер программы и временные затраты на её написание.
Спецификаторы
| Спецификаторы | Описание |
| new | Задает новое описание класса |
| public | Доступ к классу не ограничен |
| protected | Доступ только из данного или производного класса |
| internal | Доступ только из данной программы (сборки) |
| protected internal | Доступ только из данного или производного класса и из данной программы (сборки) |
| private | Доступ только из элементов класса |
| static | Статический класс. Позволяет обращаться к методам класса без создания экземпляра класса |
| sealed | Бесплодный класс. Запрещает наследование данного класса |
| abstract | Абстрактный класс. Применяется в иерархии объектов |
- По умолчанию элементы класса считаются закрытыми private.
- Поля, описанные со спецификатором static, а также константы, существуют в единственном экземпляре для всех объектов класса, поэтому к ним обращаются не через имя экземпляра, а через имя класса.
- Методы находятся в памяти в единственном экземпляре и используются всеми объектами одного класса совместно.
- Конструктор экземпляра для статического класса задавать запрещается.
После определения класса мы можем объявлять переменные типа этого класса, называемые объектами.
Имя_класса имя_объекта = new конструктор;
Наследование
//Пример использования
public class Opilane : Inimene
{
string ruhm;
double hinne;
int kurs;
bool toetus;
public Opilane(string Eesnimi, string Perenimi, int Kurs):base(Eesnimi,Perenimi)
{
kurs = Kurs;
}
}
Полиформизм
//Пример использования
public abstract class Inimene
{
public abstract void Kes_Ma_Olen();
}
