Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OKR.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
48.11 Кб
Скачать

1. Наследование. Понятие, пример.

Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым или родительским. Новый класс – потомком, наследником или производным классом.

2. Инкапсуляция. Понятие, пример.

Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

Основной единицей инкапсуляции в C# является класс, который определяет форму объекта. Он описывает данные, а также код, который будет ими оперировать. В C# описание класса служит для построения объектов, которые являются экземплярами класса. Следовательно, класс, по существу, представляет собой ряд схематических описаний способа построения объекта.

Код и данные, составляющие вместе класс, называют членами. Данные, определяемые классом, называют полями, или переменными экземпляра. А код, оперирующий данными, содержится в функциях-членах, самым типичным представителем которых является метод. В C# метод служит в качестве аналога подпрограммы. (К числу других функций-членов относятся свойства, события и конструкторы.) Таким образом, методы класса содержат код, воздействующий на поля, определяемые этим классом.

public class A

{

public int a; // открытый интерфейс

public int b; // открытый интерфейс

public int ReturnSomething(); // открытый интерфейс

private int Aa = a; //безопасное использование открытого интерфейса

private int Ab = b; //безопасное использование открытого интерфейса

private void DoSomething(); // скрытый метод.

};

3. Полиморфизм

Полиморфизм, что по-гречески означает “множество форм”, — это свойство, позволяющее одному интерфейсу получать доступ к общему классу действий. Простым примером полиморфизма может служить руль автомашины, который выполняет одни и те же функции своеобразного интерфейса независимо от вида применяемого механизма управления автомашиной. Это означает, что руль действует одинаково независимо от вида рулевого управления: прямого действия, с усилением или реечной передачей. Следовательно, при вращении руля влево автомашина всегда поворачивает влево, какой бы вид управления в ней ни применялся. Главное преимущество единообразного интерфейса заключается в том, что, зная, как обращаться с рулем, вы сумеете водить автомашину любого типа

Он обозначает способность языка трактовать связанные объекты в сходной манере. В частности, этот принцип ООП позволяет базовому классу определять набор членов (формально называемый полиморфным интерфейсом), которые доступны всем наследникам. Полиморфный интерфейс класса конструируется с использованием любого количества виртуальных или абстрактных членов

4. Абстрактные классы. Пример.

Кроме обычных классов в C# есть абстрактные классы. Абстрактный класс похож на обычный класс. Он также может иметь переменные, методы, конструкторы, свойства. Но мы не можем создать объект или экземпляр абстрактного класса. Абстрактные классы лишь предоставляют базовый функционал для классов-наследников. А производные классы уже реализуют этот функционал.

Кроме обычных методов абстрактный класс может иметь абстрактные методы. Подобные методы определяются с помощью ключевого слова abstract и не имеют никакого функционала:

1

public abstract void Display();

При этом производный класс обязан переопределить и реализовать все абстрактные методы и свойства, которые имеются в базовом абстрактном классе. При переопределении в производном классе такой метод также объявляется с модификатором override. Также следует учесть, что если класс имеет хотя бы одно абстрактное свойство или метод, то он должен быть определен как абстрактный. namespace ConsoleApplication1

{

// Создаем абстрактный класс

abstract class UserInfo

{

protected string Name;

protected byte Age;

public UserInfo(string Name, byte Age)

{

this.Name = Name;

this.Age = Age;

}

// Абстрактный метод

public abstract string ui();

}

class UserFamily : UserInfo

{

string Family;

public UserFamily(string Family, string Name, byte Age) : base (Name, Age)

{

this.Family = Family;

}

// Переопределяем метод ui

public override string ui()

{

return Family + " " + Name + " " + Age;

}

}

class Program

{

static void Main(string[] args)

{

UserFamily user1 = new UserFamily("Erohin", "Alexandr", 26);

Console.WriteLine(user1.ui());

Console.ReadLine();

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]