Объектно – ориентированное программировани – технология разработки сложного программного обеспечения, в которой программа строится в виде совокупности объектов и их взаимосвязей. ООП – сложный класс.

Базовые понятия ООП:
-> Класс – это основной элемент, содержащий данные, которые описывают строение объекта и его возможности, методы работы с ним;

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