Студопедия Главная Случайная страница Обратная связь

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

Return stream; // Повертає посилання на параметр stream





}

 

int main ()

{

kooClass A_ob(1, 2, 3);

 

cout < < A_ob; // Перевантажений оператор виведення даних

 

cin > > A_ob; // Перевантажений оператор введення даних

cout < < A_ob; // Перевантажений оператор виведення даних

cout < < Cyr(" Натиснiть будь-яку клавiшу! ");

while(! kbhit());

 

}

Програміст може сам керувати форматом представлення даних, причому двома способами. Перший спосіб передбачає використання функцій-членів класу ios, а другий –функцій спеціального типу, що іменуються маніпуляторами.

10.4. Зразок виконання роботи

Потрібно розробити програму, яка забезпечує первинне введення інформації в базу даних відділу кадрів підприємства з кількістю співробітників до 100 чоловік (без запису у файл) і пошук інформації за заданим критерієм.

Кожен запис бази даних має містити такі відомості про співробітника:

● прізвище і ініціали;

● рік поступлення на роботу;

● оклад.

Критерій пошуку: співробітники з окладом, що перевищує деяку задану величину.

Розв'язання задачі почнемо з виявлення понять/класів і їх фундаментальних взаємозв'язків. В даному випадку першим поняттям є база даних, і, отже, для моделювання цього поняття нам знадобиться клас, який зрозуміло назвати DBase. Об'єкт типу DBase(тобто сама база даних) повинен містити деяку сукупність або колекцію інших об'єктів, відповідних записам бази даних. Для моделювання поняття запис бази даних введемо клас Man. Очевидно, що взаємовідношення між вказаними класами відноситься до типу " DBase has а Man".

На другому етапі необхідно уточнити класи, визначивши основні поля і набір операцій над ними. Почнемо з класу DBase. Питання перше, який потрібно вирішити: яку структуру даних доцільно використовувати для зберігання колекції записів. Оскільки об'єм бази даних невеликий[3], виберемо найпростіше розв'язання – масив об'єктів типу Man. Очевидно, що в конструкторі класу DBase необхідно передбачити динамічне виділення пам'яті для необхідної кількості об'єктів типу Man, а в деструкторі – звільнення цієї пам'яті. Адресу початку масиву об'єктів буде представлено полем Man* pMan|.

З умови задачі з'ясовуємо також, що у класі необхідно мати метод InitInput() для первинного введення інформації в базу даних і метод SearchPayNotLess() для пошуку співробітників з окладом, що перевищує деяку задану величину. Для контролю правильності введення початкових даних нам стане в нагоді ще один метод – Show(), що забезпечує виведення на екран вмісту бази даних.

Тепер розберемося з класом Man. Для зберігання інформації, що відноситься до одного співробітника, буде потрібно наступні поля:

char * pName – адреса рядка, що містить прізвище і ініціали;

int come_year – рік поступлення на роботу;

double pay – величина окладу.

Конструктор класу повинен виділяти пам'ять для зберігання вказаного рядка, а деструктор – звільняти цю пам'ять. Для розв'язання другої підзадачі (пошук інформації) додамо у клас метод доступу GetPay(). І нарешті, для класу Man потрібно передбачити перезавантаження операції витягання, щоб забезпечити первинне введення інформації з клавіатури в методі InitInput() класу DBase, і операцію вставлення, яка буде використана в методі Show() класу DBase. Обидві операції будуть реалізовані як зовнішні дружні функції.

Іноді під час розв'язання задачі зручно використовувати зовнішні функції, що не є членами класів. Зазвичай ці функції виконують якусь рутинну роботу і можуть бути викликані як з методів класів, так і з основної функції. Типовий приклад – введення значень із стандартного потоку cin із захистом від ненавмисних помилок користувача. Тему оброблення помилок потоків ми зачіпали на початку лабораторної роботи; тепер прийшов час показати можливе практичне вирішення проблеми. Почнемо реалізації перезавантаженої операції > > для класу Man:

istream& operator > > (istream& in, Man& obj) {

//.........................

in > > obj.come_year;

in > > obj.pay;

return in;

}

Якщо у момент виконання оператора in > > obj.come_year; користувач введе замість цілого числа якийсь довільний рядок символів, то програма " зламається". Вашому замовнику напевно не сподобається така поведінка програми. Аналогічна проблема є і під час введення дійсного числа в наступному операторі.

Для вирішення цих проблем в програмі будуть використані функції GetInt() і GetDouble(), що забезпечують дуже надійне введення цілих і дійсних чисел відповідно. Реалізацію цих функцій ми розглянемо нижче. Оскільки ці функції універсальні і позакласові, то їх код доцільно розмістити в окремому модулі.

Розв'язання задачі, в якій реалізовані розглянуті концепції, є багатофайловий проект, що містить файли DBase.h, DBase.срр|, Man.h, Man.срр|, GetFunc.h, GetFunc.cpp і lab9.cpp:







Дата добавления: 2014-11-10; просмотров: 636. Нарушение авторских прав; Мы поможем в написании вашей работы!




Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

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

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

Studopedia.info - Студопедия - 2014-2025 год . (0.01 сек.) русская версия | украинская версия