АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ПЕРЕЗАГРУЗКА ФУНКЦІЙ._____________________________________________________

Читайте также:
  1. Включение (загрузка, перезагрузка) системы
  2. Перезагрузка компьютера
Дано програму, яка використовує об'єкт класу Counterяк лічильник. Він може ініціалізуватися нулем або деяким числом при використанні конструктора, збільшений методом operator++ () і прочитаний за допомогою методу get_count().
 
Припустимо, що ми витратили багато часу і сил на створення класу Counter і він працює саме так, як ми хочемо. Ми цілком задоволені результатом, за винятком однієї речі: нам дуже потрібний метод для зменшення лічильника. Можливо, ми робимо підрахунок відвідувачів банку в конкретний момент часу. При вході відвідувача лічильник збільшує своє значення, при виході - зменшує. Ми могли б вставити метод зменшення прямо в початковий код класу Counter. Проте існує декілька причин, по яких ми не можемо собі цього дозволити. По-перше, клас Counter чудово працює, на його відладку витрачена маса часу (звичайно, в даному випадку це перебільшення, але подібна ситуація може мати місце для складніших і більших класів). Якщо ми втрутимося в початковий код класу Counter, то його тестування і відладку доведеться проводити знов, витрачаючи на це й час. По-друге, в деяких ситуаціях ми просто не маємо доступу до початкового коду класу, наприклад, якщо він розповсюджується як частина бібліотеки класів.
 
Щоб уникнути цих проблем ми можемо використовувати спадкоємство для створення класів на базі Counter. Нижче представлений лістинг програми Counter, в якій з'явиться новий клас COUNTDN, що додає операцію зменшення до класу Counter:
 

Class Counter //базовий клас { Protected: Unsigned int count; //лічильник Public: Counter (): count (0) { } // конструктор без параметрів Counter (int c): count (c) { } Unsigned int get_count () const { return count; } // повертає значення лічильника Counter operator ++ () // збільшує значення // лічильник (префікс) { return Counter (++ count); } }; Class CountDN: public Counter // клас успадковування { Public: Counter operator -- () // зменшення значення лічильника { return Counter (-- count); } }; //----------------- головна програма Int main () { CountDN c1; // об’єкт с1 cout<< “\n c1=” << c1.get_count (); // вивід на друк ++c1; ++c1; ++c1; // збільшуємо с1 тричі cout<< “\n c1=” << c1.get_count (); // вивід на друк --c1; --c1; // зменшуємо с1 два раза cout << endl; Return 0; }
 
 
Програма починається з опису класу Count. Відмітимо, що для простоти ми не включаємо в цю програму операцію постфіксного збільшення, що вимагає використання вторинного перевантаження операції ++.
 

 


 

 

Рис. 2. Діаграма класів UML для прикладу COUNTEN
 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)