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

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

Student.ccp






#include " StdAfx.h"

#include " Student.h"

#include < string>

#include < iostream>

using namespace std;

 

Student:: Student(void)

{cout< < " Input name: "; cin> > name;

cout< < " Input date of born\n";

cout< < " Day.mon: "; cin> > t.daymon;

cout< < " Year: "; cin> > t.year;

cout< < " Input adr: "; cin> > adr;

cout< < " Input fac: "; cin> > fac;

cout< < " Input kurs: "; cin> > kurs;

}

 

Student:: ~Student(void)

{}

void Student:: show()

{

cout< < " Name: " < < name< < endl;

cout< < " Was born: " < < t.daymon< < '.'< < t.year< < endl;

cout< < " Address: " < < adr< < endl;

cout< < " Fac: " < < fac< < endl;

cout< < " Kurs: " < < kurs< < endl;

}

 

char *Student:: getfac() { return fac; }

int Student:: getkurs() { return kurs; }

void spisfac(Student spis[], int n)//список студентов заданного факультетата

{ char fac[20];

cout< < " Input faculty: "; cin> > fac;

for(int i=0; i< n; i++)

if(strcmp(spis[i].getfac(), fac)==0)spis[i].show();

}

void spisfackurs(Student spis[], int n)

//список студентов заданных факультета и курса

{ int i, k;

char fac[20];

cout< < " Input faculty: "; cin> > fac;

cout< < " Input the course: "; cin> > k;

for(i=0; i< n; i++)

if ((strcmp(spis[i].getfac(), fac)==0)& & (spis[i].getkurs()==k))

spis[i].show();

}

Рис. 1. Вигляд вікна в результаті компіляції програми

 

 

Рис. 2. Діаграма класів і варіантів використання

2.5. Індивідуальні завдання

Розробити класи для описаних нижче об’єктів. Передбачити в класах методи set (), get (), show () та визначити інші методи для виконання індивідуального завдання. Дані про об’єкти вводити в форму і результат виводити також в форму.

1. Student: прізвище, ім’я, по-батькові, дата народження, адрес, телефон, факультет, курс. Створити масив об’єктів. Вивести:

а) список студентів заданого факультету;

б) список студентів для кожного факультету і курсу;

в) список студентів, які народились після певного заданого року.

2. Abiturient: прізвище, ім’я, по-батькові, адрес, оцінки. Створити масив об’єктів. Вивести:

а) список абітурієнтів, які мають незадовільні оцінки;

б) список абітурієнтів, сума балів яких є не менше заданої;

в) вибрати n абітурієнтів, які мають саму більшу суму балів.

3. Aeroflot: пункт призначення, номер рейсу, тип літака, час вильоту, дні тижня. Створити масив об’єктів. Вивести:

а) список рейсів для заданого пункту призначення;

б) список рейсів для заданого дня тижня;

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

4. Book: автор, назва, видавництво, рік, кількість сторінок. Створити масив об’єктів. Вивести:

а) список книг заданого автора;

б) список книг, які видало задане видавництво;

в) список книг, випущених після заданого року.

5. Worker: прізвище та ініціали, посада, рік прийняття на роботу, заробітна плата. Створити масив об’єктів. Вивести:

а) список робітників, стаж роботи яких на даному підприємстві перевищує задане кількість років;

б) список робітників, заробітна плата яких більше заданої;

в) список робітників, які займають вказану посаду.

6. Train: пункт призначення, номер поїзда, час відправлення, число загальних місць, плацкартних, купейних. Створити масив об’єктів. Вивести:

а) список поїздів, які курсують до заданого пункту призначення;

б) список поїздів, які курсують до заданого пункту призначення і відправляються після завданої години;

в) список поїздів, які курсують до заданого пункту призначення і мають загальні місця.

7. Product: назва, виробник, ціна, термін зберігання, кількість. Створити масив об’єктів. Вивести:

а) список товарів заданої назви;

б) список товарів заданої назви, ціна яких не вища вказаної;

в) список товарів, термін зберігання яких вище вказаного.

8. Patient: прізвище, ім’я, по-батькові, адрес, номер медичної карти, діагноз. Створити масив об’єктів. Вивести:

а) список пацієнтів, які мають заданий діагноз;

б) список пацієнтів, номер медичної карти яких знаходиться в заданому інтервалі.

9. Bus: прізвище та ініціали водія, номер автобуса, номер маршруту, марка, рік початку експлуатації, пробіг. Створити масив об’єктів. Вивести:

а) список автобусів для заданого номера маршруту;

б) список автобусів, які експлуатуються більше 10 років;

в) список автобусів, пробіг яких більше 10 000 км.

10. Customer: прізвище, ім’я, по-батькові, адрес, телефон, номер кредитки, номер банківського рахунку. Створити масив об’єктів. Вивести:

а) список покупців в алфавітному порядку;

б) список покупців, номер кредитки яких знаходиться в заданому інтервалі.

11. File: ім’я файлу, розмір, дата створення, кількість звернень. Створити масив об’єктів. Вивести:

а) список файлів, впорядкований за алфавітом;

б) список файлів, розмір яких перевищує заданий;

в) список файлів, число звернень до яких перевищує задане.

12. Word: слово, номера сторінок, на яких зустрічається слово (від 1 до 10), число сторінок. Створити масив об’єктів. Вивести:

а) слова, які зустрічаються більше ніж на n сторінках;

б) слова а алфавітному порядку;

в) для заданого слова номер сторінок, на яких воно зустрічається.

13. House: адрес, поверх, кількість кімнат, площа. Створити масив об’єктів. Вивести:

а) список квартир, що відповідає заданому числу кімнат;

б) список квартир, що має задане число кімнат і знаходиться на поверсі, розташованому в вказаному проміжку;

в) список квартир, які мають площу більшу заданої.

14. Phone: прізвище, ім’я, по-батькові, адрес, номер, час міжміських розмов, час міжнародних розмов. Створити масив об’єктів. Вивести:

а) дані про абонента, час міжміських розмов якого перевищує заданий;

б) дані про абонентів, які скористались міжнародними переговорами;

в) дані про абонентів в алфавітному порядку.

15. Person: прізвище, ім’я, по-батькові, адрес, стать, освіта, рік народження. Створити масив об’єктів. Вивести:

а) список осіб, вік яких перевищує заданий;

б) список осіб з вищою освітою;

в) список осіб чоловічої статі.

2.6. Контрольні запитання

1. Для чого потрібні класи?

2. Що визначають методи класу?

3. Якими типами можуть бути атрибути класу?

4. Який за замовчуванням доступ до елементів структури?

5. Яка відмінність між С++-класами і С++-структурами?

6. Чому об'єднання і класи називають спорідненими типами?

7. Наведіть способи створення вбудовуваних функцій.

8. Як створити масиви об'єктів?

9. Як відбувається ініціалізація масивів об'єктів?

10. Які основні принципи ООП Ви знаєте? Що вони означають?

Лабораторна робота №3. Робота з конструкторами та перевантаження методів класу

МЕТА РОБОТИ: освоїти поняття констуктора, його призначення. Навчитись перевантажувати методи класу, здобути навики роботи з ними.

3.1. Програма роботи

3.1.1 Отримати завдання.

3.1.2. Написати програми відповідних класів, основну та відповідні допоміжні функції, згідно з вказівками до виконання роботи.

3.1.3. Підготувати власні коректні вхідні дані (вказати їх формат і значення) і проаналізувати їх.

3.1.4. Оформити електронний звіт про роботу та захистити її.

3.2. Вказівки до виконання роботи

3.2.1. Студент, згідно з індивідуальним номером, вибирає своє завдання з розд. 3.5 і записує його до звіту.

3.2.2. Оголошення класу (структури), основну та відповідні допоміжні функції необхідно запрограмувати так, як це показано у розд. 3.4.

3.2.3. Власних вхідних даних необхідно підготувати не менше двох комплектів. Їхні значення мають бути коректними, знаходитися в розумних межах і відповідати тим умовам, які стосуються індивідуального завдання.

3.2.4. Звіт має містити такі розділи:

● мету роботи та завдання з записаною умовою задачі;

● коди всіх використовуваних.h і.ccp файлів, а також пояснення до них;

● результати реалізації програми;

● діаграму класів та діаграму варіантів використання з поясненням;

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

3.3. Теоретичні відомості

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

· конструктор не повертає значення, навіть типу void. Неможливо отримати вказівник на конструктор;

· клас може мати декілька конструкторів з різними параметрами для різних видів ініціалізації (при цьому використовується механізм перевантаження);

· параметри конструктора можуть мати будь-який тип, окрім цього ж класу. Можна створювати параметри по замовчуванню, причому їх може містити тільки один із конструкторів;

· якщо програміст не вказав жодного із конструкторів, компілятор створює його автоматично. Такий конструктор викликає конструктори по замовчуванню базових класів;

· конструктори не наслідуються;

· конструктори не можна описувати з модифікаторами const, virtual, static;

· конструктори глобальних об’єктів викликаються до функції main. Локальні об’єкти створюються, як тільки стає активною їх область дії;

· Конструктор викликається автоматично при створенні об’єкта.

 

Незважаючи на виконання конструкторами унікальних дій, проте вони не сильно відрізняються від функцій інших типів і також можуть піддаватися перевантаженню. Щоб перевантажувати конструктор класу, достатньо оголосити його в усіх потрібних форматах і визначити кожну дію, пов'язану з відповідним форматом. Наприклад, у наведеному нижче коді програми оголошено клас timerClass, який діє як таймер зворотного відліку. Під час створення об'єкта типу timerClass таймеру присвоюється деяке початкове значення часу. Під час виклику функції run(), таймер виконує рахунок в зворотному порядку до нуля, а потім подає звуковий сигнал. У наведеному прикладі конструктор перевантажується тричі, надаючи тим самим можливість задавати час як у секундах (причому або числом, або рядком), так і в хвилинах і секундах (за допомогою двох цілочисельних значень). У цій програмі використовується стандартна бібліотечна функція clock(), яка повертає кількість сигналів, прийнятих від системного годинника з моменту початку виконання програми. Ось як виглядає прототип цієї функції:

chas_t clock();

Тип chas_t є різновидом довгого цілочисельного типу. Операція ділення значення, що повертається функцією clock(), на значення CLOCKS_PER_SEC дає змогу перетворити отриманий результат в секунди. Як прототип для функції clock(), так і визначення константи CLOCKS_PER_SEC належать заголовку < ctime>.

Демонстрація використання перевантажених конструкторів

#include < iostream> // Для потокового введення/виведення

#include < cstdlib> // Для використання бібліотечних функцій

#include < ctime> // Для використання системного часу і дати

using namespace std; // Використання стандартного простору імен

 

class timerClass {

int seconds;

public:

// Задавання секунд у вигляді рядка

timerClass(char *t) { seconds = atoi(t); }

// Задавання секунд у вигляді цілого числа

timerClass(int t) { seconds = t; }

// Час, що задається в хвилинах і секундах

timerClass(int xv, int sec) { seconds = xv*60 + sec; }

void run();

};

void timerClass:: run()

{

chas_t t1;

t1 = clock();

while((clock()/CLOCKS_PER_SEC – t1/CLOCKS_PER_SEC)< seconds);

cout < < " \a"; // Подання звукового сигналу

}

 

int main()

{

timerClass A_ob(10), B_ob(" 20"), C_ob(1, 10);

 

A_ob.run(); // відлік 10 секунд

B_ob.run(); // відлік 20 секунд

C_ob.run(); // відлік 1 хвилини і 10 секунд

}

Під час створення у функції main () об'єктів A_ob, B_ob і C_ob класу timerClass він надає початкові значення трьома різними способами, що підтримуються перевантаженими функціями конструкторів. У кожному випадку викликається конструктор, який відповідає заданому переліку параметрів і тому належним чином ініціалізує " свій" об'єкт.

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

Приклад викорсистання перезавантаження конструкторів та методів класу можна проілюструвати на прикладі програми, яка імітує «випечення пиріжків». Тут використовується конструктор трьох типів: без параметрів – CakeWithJam ();, з параметром типу string – CakeWithJam (string), та з параметром типу об’єкт класу – CakeWithJam (CakeWithJam&);. Пера завантаженим методом є «відкусування» – Bite (float); та повернення частини пиріжка, що залишився – string Bite (const CakeWithJam&);.

Діаграму класів створеної програми зображено на рис.1.







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



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

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

Что происходит при встрече с близнецовым пламенем   Если встреча с родственной душой может произойти достаточно спокойно – то встреча с близнецовым пламенем всегда подобна вспышке...

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