- •Рейтингова система оцінювання знань та умінь з ооп 2012-2013 н.Р.
- •Вимоги до звіту з лабораторних робіт
- •Класи потоків Лабораторна робота 1
- •1.1 Теоретичні відомості
- •1.1.1. Методи класів потоків
- •1.1.2. Маніпулятори
- •1.1.3. Деякі методи класів файлових потоків
- •1.2 Приклад програми Умова задачі
- •Алгоритм задачі
- •Текст програми
- •Результати виконання програми
- •1.3 Варіанти завдань
- •1.4 Контрольні запитання
- •Інкапсуляція. Інтерфейси класів . Діаграми прецедентів і класів Лабораторна робота 2
- •2.1 Теоретичні відомості Етапи об’єктно-орієнтованого проектування та моделювання
- •Діаграма варіантів використання(use-case diagram)
- •Ідентифікація класів
- •Ідентифікація атрибутів
- •Ідентифікація операцій (методів)
- •Типові схеми uml діаграм
- •2.2 Програма роботи
- •2.3 Варіанти завдань
- •2.4 Приклад виконання роботи Задача
- •Об’єктно-орієнтоване проектування Зображення класів в uml
- •Ідентифікація атрибутів
- •Структура проекту
- •Інтерфейси та реалізації класів програми
- •2.5 Контрольні запитання
- •Конструктори та деструктори класів Діаграми прецедентів і класів Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.2 Програма роботи
- •3.3 Варіанти завдань
- •3.4 Приклад виконання роботи Задача
- •Реалізація конструкторів і деструкторів деяких класів
- •3.5 Контрольні запитання
- •Методи класів: аксесори, ітератори, утілити, предикатні функції . Діаграми класів, діяльності, послідовності Лабораторна робота № 4
- •4.1 Теоретичні відомості
- •4.2 Програма роботи
- •4.3 Варіанти завдань
- •4.4 Приклад виконання роботи Задача
- •Реалізація деяких методів-аксесорів, предикатних функцій, функцій-утілит, методів, які забезпечують функціональність об’єктів
- •Результати виконання роботи
- •4.5 Контрольні запитання
- •Константні та статичні члени класів. Вбудовані функції. Діаграми класів, послідовності Лабораторна робота № 5
- •5.1 Теоретичні відомості
- •5.2 Програма роботи
- •5.3 Варіанти завдань
- •5.4 Приклад виконання роботи Задача 5_1
- •Приклади деяких константних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •Задача 5_2
- •Приклади деяких статичних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •5.5 Контрольні запитання
- •Перевантаження операцій та функцій. Дружні функції Діаграми класів, станів і переходів Лабораторна робота 6
- •6.1 Теоретичні відомості
- •6.2 Програма роботи
- •6.3 Варіанти завдань
- •6.4 Приклад виконання роботи
- •6.5 Контрольні запитання
- •Просте успадкування класів. Поліморфізм. Віртуальні функції Діаграма класів, кооперацій. Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2 Програма роботи
- •9.2. Приклад програми Умова задачі 9
- •Алгоритм задачі 9
- •Текст програми 9
- •Результати роботи програми 9
- •9.3. Варіанти завдань
- •9.4. Контрольні запитання
- •Методи внутрішнього сортування (сортування масивів) Лабораторна робота 10
- •Методи зовнішнього сортування (сортування файлів) Лабораторна робота 11
Фрагмент результатів виконання роботи
Задача 5_2
В програму внесені зміни щодо оголошення статичних методів і статичних даних в інтерфейсі класу та їх реалізацій:
Статичні елементи даних використовують для створення одної копії змінної для усіх об’єктів класу. Наприклад, кількість об’єктів класу Person зберігають у статичній змінній Person::personCount.
Статичні функції застосовують для доступу до статичних членів класу.
Статичні функції можна використовувати для запобігання доступу до нестатичних членів класу.
Приклади деяких статичних елементів даних і методів класів
// person.h // definition of class Person #ifndef PERSON_H #define PERSON_H #include<string> using namespace std; class Floor; // forward declaration class Elevator; //forward declaration class Person { public: Person(); Person( const int ); ~Person(); Person( Person& ); //copy constructor Person( string tabnumber); int GetID() const; void StepOntoFloor( Floor & ); void EnterElevator(Elevator&, Floor&); void exitElevator(const Floor&, Elevator& ) const; //lab6_2 return total number of persons static int GetPersonCount() {return personCount;}; private: //lab6_2 total number of persons static int personCount; const int ID; const int destinationFloor; };
#endif // PERSON_H |
// person.cpp #include <iostream> #include<string> using namespace std; #include "person.h" #include "floor.h" #include "elevator.h"
//lab6_2 ініціалізація стат змінної int Person::personCount = 0;
Person::Person():ID(0),destinationFloor(0) { cout<<"default initialization of man take place - void object created"<<endl;} // constructor-initialization Person::Person(const int destFloor ) : ID( ++personCount ) , destinationFloor( destFloor ) {cout<<"person "<<ID<<" created on floor "<<destinationFloor<<endl;}
//lab6_2:copy constructor Person::Person(Person& man):ID(man.ID), destinationFloor(man.destinationFloor) { ++personCount; cout<<"person (man) "<<ID<<" created on floor "<<destinationFloor<<" again";}
//lab6_2:constructor transformation Person::Person( string tabnumber ) :ID(tabnumber[0]) ,destinationFloor(tabnumber[1]) { ++personCount; string str2 = tabnumber.substr(2,1); const char* s2=str2.c_str(); cout<<"constructor transformation"<<endl; cout<<"person "<<ID<<" created on floor "<<destinationFloor<<" count="<< personCount<<endl; } //. . . . . . . . . . . |
// elevatorSimulation.cpp // Driver for the simulation. #include <iostream> using namespace std; #include <string> #include "building.h" #include "person.h" void main(){ int duration; cout << "Enter run time: "; cin >> duration; Building office1; Person man; //default constructor string code; cout<<"enter string "<<endl; cin>>code; Person one(code); |
cout << endl << "*** ELEVATOR SIMULATION BEGINS ***" << endl << endl; Person manager(1); Building office2=office1; Elevator elevator2=office2.GetElevator(); Person clerk=manager; cout<<" in new office"<<endl; office1.RunSimulation( duration );
//виклик статичної функції cout<<"number of person are " << Person::GetPersonCount()<<endl;
cout<<"*** ELEVATOR SIMULATION ENDS ***"<<endl; system("pause"); } |