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

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

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Р,где...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

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