Студопедия — Return stream; // Повертає посилання на параметр stream
Студопедия Главная Случайная страница Обратная связь

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

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; просмотров: 611. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

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

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

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

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