Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_(2модуль)_v_0_3.doc
Скачиваний:
0
Добавлен:
13.09.2019
Размер:
167.94 Кб
Скачать
  1. Перегрузка бинарных операций в с#.

В С# (на відміну від С++) в параметрах передається два операнда. Так як операторна функція в C# є статичною (тобто однією для ВСІХ екземплярів класа) вона не має операнда «господаря».

Приклад:

class name_class

{

int i;

//Перегрузка операції +

public static name_class operator + (name_class obj1, name_class obj2)

{

name_class obj_temp=new name_class();

obj_temp.i= obj1.i+obj2.i;

return obj_temp;

}

}

  1. Использование дружественных функций для перегрузки операций в С++

Якщо з ліва у нас стоїть операнд НЕ об’єкт класу (наприклад, ціле число типу int) ми використовуємо дружню функцію.

Приклад:

class name_class

{

int i;

public:

friend name_class operator+ (int number, name_class obj1)//Перегрузка операції+

{

name_class obj_temp;

obj_temp.i= number +obj1.i;

return obj_temp;

}

}

  1. Перегрузка операторов приведения типа в С++.

В С++ ми можемо перегружати оператори приведення типів.

Пиклад:

class name_class

{

int x;

public: operator int()

{

return x;

}

}

name_class operator= (int i)

{

class_obj obj_temp;

obj_temp.x=i;

return obj_temp;

}

  1. Перегрузка операторов приведения типа в с#

В С# ми можемо перегружати оператори приведення типів.

Для цього ми використуваємо два ключових слова:

explicit-явно x=(int)obj;

implicit-не явно x=obj;

Приклад:

class name_class

{

int i;

public static implicit operator int(name_class obj) //x=obj;

{

return obj.i;

}

public static explicit operator name_class (int a) //obj=(name_class)x;

{

name_class obj_temp=new name_class();

obj_temp.i=a;

return obj_temp;

}

}

  1. Индексаторы в с#. Перегрузка индексаторов.

Індексатор в C# - це можливість перевантажити «квадратні дужки». []

Прицьому використовується спеціальний інструмент аксесор.

Приклад:

class name_class

{

int[] a=new int[5];

public int this[int i]

{

get { return a[i];}

set { a[i]=value;} }

}

В блоці get ми повертаємо і-тий елемент масива в програму. В блоці set ми присвоюємо і-тому елементу масива значення, що знаходиться в правій частині основної програми (наприклад, obj[3]=5, //obj.a[3]=5) Воно передається через ключове слово value. (в прикладі, obj[3]=5, ключове слово value=5).

  1. Свойства в с#.

Властивість в С# допомагає нам отримати або записати значення члена-данних який є закритим.

Прицьому використовується спеціальний інструмент аксесор.

Приклад:

class name_class

{

int i;

public int I

{

get { return i;}

set { i=value;} }

}

В блоці get ми повертаємо значення закритого члена данних i в програму. В блоці set ми присвоюємо закритого члена данних i значення, що знаходиться в правій частині основної програми (наприклад, obj.I=2, //obj.i=2) Воно передається через ключове слово value. (в прикладі, obj.I=2, ключове слово value=2).

  1. Наследование. Общие положения.

Наслідування - це один із трьох основних принципів об’єктно-орієнтованого програмування. Використовуючи наслідування, можна створити загальний клас, котрий визначає характеристики які властиві багатьом зв’язаним елементам. Цей клас потім може бути унаслідуваний другим вузькоспеціалізованим класом з додаванням в кожний із них свої, унікальні особливості.

В стандартній термінології мов програмування клас, котрий унаслідується, називається базовим, а клас який наслідує базовий, називається похідним. Похідний клас може використовуватися в якості базового для інших похідних класів. Таким чином і будується багаторівнева ієрархія класів.

Похідний клас наслідує всі члени данних, крім конструкторів,диструкторів та членів, що мають закритий рівень доступу (private-члени).

  1. Реализация одиночного наследования в С++. ?Конструктор

Наслідування в С++ відбувається коли в похідному класі ми після назви самого класа ставимо дві крапки «:» і пишемо зі специфікатором назву клас який у нас є базовим.

За замовчуванням специфікатор у нас private.

Всі члени-данних базового класа які наслідуються з використанням ключового слова private є закритими членами-данних похідного класа.

Приклад:

class base_class

{

public: int i;

}

class other_class: private base_class

{

void test()

{

i=2; }

}

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