Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Звіт
Лабораторна робота № 1
з об′єктно орієнтовного програмування
Мета: Оволодіти навичками роботи в середовищі С++, ознайомитися з принципами роботи з класами і об’єктами.
Теоретичні відомості:
Конструктор по замовчуванню - виконує створення об’єкта класу коли явні значення для ініціалізації членів класу відсутні. Клас може мати тільки один конструктор по замовчуванню.
Деструктор – призначений для коректного знищення об’єкта.
Автоматично визначаються функції:
заданий за замовчуванням конструктор
конструктор копіювання
оператор присвоювання
деструктор за замовчуванням
оператор адресації
Модифікатори:
- public – доступні всім;
- protected – доступні із класу нащадків;
- private – закриті (доступні в межах класу).
Завдання:
Варіант 6.
Клас Інструкція по вибору і наданню послуг. Створити класи послуг, з відповідними описами і інструкціями, а також часом їх надання, терміном дії і станом (виконана \ не виконана). Забезпечити операції визначення часу надання послуг, отримання інформації по послузі, по пакету вцілому, та можливості вибору послуг за заданим часом їх надання і навпаки.
Програма:
// Instr.cpp: implementation of the CInstr class.
//
//////////////////////////////////////////////////////////////////////
#include "Instr.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
#include "P1.h"
#include "P2.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CInstr::CInstr():po1()
{
// printf("Nadae poslugy:");
}
CInstr::~CInstr()
{
}
int CInstr::Vybir()
{
printf(" ---alarm---\n");
printf("Vyberit poslugu:");
printf("\n1 -- %s -- ",po1.GetN());
po1.Stan();
printf("\n2 -- %s -- ",po2.GetN());
po2.Stan();
printf("\n3 -- %s -- ",po3.GetN());
po3.Stan();
printf("\n4 -- Info po poslugah");
printf("\n0 -- EXIT");
printf("\nVedit nomer:>");
scanf("%d",&i);
system("cls");
switch (i){
case 1:
po1.Vykon();
return 1;
case 2:
po2.Vykon(po1.Stan());
return 1;
case 3:
po3.Vykon(po1.Stan());
return 1;
case 4:
while(Info());
return 1;
default:
return 0;
}
}
int CInstr::Info()
{
printf(" ---alarm---\n");
printf("Vyberit poslugu dlya info:");
printf("\n1 -- %s -- ",po1.GetN());
po1.Stan();
printf("\n2 -- %s -- ",po2.GetN());
po2.Stan();
printf("\n3 -- %s -- ",po3.GetN());
po3.Stan();
printf("\n0 -- Back");
printf("\nVedit nomer:>");
scanf("%d",&i);
system("cls");
switch (i){
case 1:
po1.Info();
return 1;
case 2:
po2.Info();
return 1;
case 3:
po3.Info();
return 1;
default:
return 0;
}
}
void CInstr::Delay(float sec)
{
clock_t delay = sec * CLOCKS_PER_SEC;
clock_t start = clock();
while (clock() - start <delay);
}
// Instr.h: interface for the CInstr class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_INSTR_H__B3F81BC0_590F_45E8_8416_A908031F25AD__INCLUDED_)
#define AFX_INSTR_H__B3F81BC0_590F_45E8_8416_A908031F25AD__INCLUDED_
#include "P1.h" // Added by ClassView
#include "P2.h" // Added by ClassView
#include "P3.h" // Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CInstr
{
public:
void Delay(float sec);
int Info();
int Vybir();
CInstr();
virtual ~CInstr();
private:
CP3 po3;
int i;
CP2 po2;
CP1 po1;
};
#endif // !defined(AFX_INSTR_H__B3F81BC0_590F_45E8_8416_A908031F25AD__INCLUDED_)
(((((((((((((((((((((((((((((((((((((((( ))))))))))))))))))))))))))))))))))))
(((((((((((((((((((((((((((((((((((((((( ))))))))))))))))))))))))))))))))))))
// P1.cpp: implementation of the CP1 class.
//
//////////////////////////////////////////////////////////////////////
#include "P1.h"
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CP1::CP1()
{
time = 1;
name = new char[30];
strcpy(name,"time of signal");
stan = false;
}
CP1::CP1(const CP1 &st)
{
int len= strlen(st.name);
// delete [] name;
name = new char[len+1];
strcpy(name,st.name);
}
CP1 & CP1::operator=(const CP1 & pos)
{
if ( this==&pos)
{
return *this;
}
i = pos.i;
delete [] name;
name = new char[strlen(pos.name)+1];
strcpy(name,pos.name);
stan = pos.stan;
time = pos.time;
printf("CP1::operator=(const CP1 & pos) working ");
return *this;
}
CP1::~CP1()
{
delete[] name;
}
char* CP1::GetN()
{
return name;
}
int CP1::GetT()
{
return time;
}
bool CP1::Stan()
{
if(stan){
printf("vykonana");
}else{
printf("nevykonana");
}
return stan;
}
void CP1::Vykon()
{
printf(" --time of signal--\n");
printf(">Ustanovka time of signal 7:00\n>");
for(i = 0;i < 20;i++){
printf("-");
Delay(0.2);
}
printf("\n>Zavershennya ustanovky");
Delay(2);
system("cls");
printf("time 7:00 ustanovleno. Chas ustanovky - %d hv",time);
stan = true;
getch();
system("cls");
}
void CP1::Info()
{
printf("time of signal 7:00\n"
"Chas ustanovky - %d hv\n"
"Stan - ",time);
Stan();
printf("\n6/11/2008 ");
getch();
system("cls");
}
void CP1::Delay(float sec)
{
clock_t delay = sec * CLOCKS_PER_SEC;
clock_t start = clock();
while (clock() - start <delay);
}
void CP1::N(char *n)
{
strcpy(name,n);
}
// P1.h: interface for the CP1 class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_P1_H__67E14993_68BE_4054_833E_9A4E87B00254__INCLUDED_)
#define AFX_P1_H__67E14993_68BE_4054_833E_9A4E87B00254__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CP1
{
public:
CP1 & CP1::operator=(const CP1 & pos);
void N(char *n);
CP1(const CP1 & st);
void Delay(float sec);
void Info();
void Vykon();
bool Stan();
int GetT();
char* GetN();
CP1();
virtual ~CP1();
private:
bool stan;
char *name;
int time;
int i;
};
#endif // !defined(AFX_P1_H__67E14993_68BE_4054_833E_9A4E87B00254__INCLUDED_)
((((((((((((((((((((((((((((((((((((((((((( ))))))))))))))))))))))))))))))))))))
((((((((((((((((((((((((((((((((((((((((((( ))))))))))))))))))))))))))))))))))))
// P2.cpp: implementation of the CP2 class.
//
//////////////////////////////////////////////////////////////////////
#include "P2.h"
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CP2::CP2()
{
time = 4;
name = new char[30];
strcpy(name,"Ton of signal");
stan = false;
}
CP2::CP2(const CP2 &st)
{
int len= strlen(st.name);
// delete [] name;
name = new char[len+1];
strcpy(name,st.name);
}
CP2 & CP2::operator=(const CP2 & pos)
{
if ( this==&pos)
{
return *this;
}
delete [] name;
name = new char[strlen(pos.name)+1];
strcpy(name,pos.name);
stan = pos.stan;
time = pos.time;
printf("CP2::operator=(const CP2 & pos) working ");
return *this;
}
CP2::~CP2()
{
delete [] name;
}
char* CP2::GetN()
{
return name;
}
int CP2::GetT()
{
return time;
}
bool CP2::Stan()
{
if(stan){
printf("vykonana");
}else{
printf("nevykonana");
}
return stan;
}
void CP2::Vykon(bool f)
{
system("cls");
if(f){
printf("ton of signal ustanovleno. Chas ustanovky - %d hv",time);
stan = true;
}else
printf("ERROR small! -- First of all install time of signal!");
getch();
system("cls");
}
void CP2::Info()
{
printf("ton of signal:\n"
">belly dance\n"
">cycle\n"
">electronic\n"
">rock\n\n"
"Chas ustanovky - %d hv\n"
"Stan - ",time);
Stan();
printf("\n6/11/2008 -- Lviv");
getch();
system("cls");
}
void CP2::Delay(float sec)
{
clock_t delay = sec * CLOCKS_PER_SEC;
clock_t start = clock();
while (clock() - start <delay);
}
// P2.h: interface for the CP2 class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_P2_H__20139DB5_69CB_46E8_ACD2_C12B20F2D7BD__INCLUDED_)
#define AFX_P2_H__20139DB5_69CB_46E8_ACD2_C12B20F2D7BD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CP2
{
public:
CP2 & CP2::operator=(const CP2 & pos);
CP2(const CP2 & st);
void Delay(float sec);
void Info();
void Vykon(bool f);
bool Stan();
int GetT();
char* GetN();
CP2();
virtual ~CP2();
private:
bool stan;
char *name;
int time;
};
#endif // !defined(AFX_P2_H__20139DB5_69CB_46E8_ACD2_C12B20F2D7BD__INCLUDED_)
(((((((((((((((((((((((((((((((((((((((((((((((( )))))))))))))))))))))))))))))))))))
(((((((((((((((((((((((((((((((((((((((((((((((( )))))))))))))))))))))))))))))))))))
// P31.cpp: implementation of the CP3 class.
//
//////////////////////////////////////////////////////////////////////
#include "P3.h"
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CP3::CP3()
{
time = 1;
name = new char [30];
strcpy(name,"day for alarm");
stan = false;
}
CP3::CP3(const CP3 &st)
{
int len= strlen(st.name);
// delete [] name;
name = new char[len+1];
strcpy(name,st.name);
}
CP3 & CP3::operator=(const CP3 & pos)
{
if ( this==&pos)
{
return *this;
}
delete [] name;
name = new char[strlen(pos.name)+1];
strcpy(name,pos.name);
stan = pos.stan;
time = pos.time;
printf("CP3::operator=(const CP3 & pos) working ");
return *this;
}
CP3::~CP3()
{
delete [] name;
}
char* CP3::GetN()
{
return name;
}
int CP3::GetT()
{
return time;
}
bool CP3::Stan()
{
if(stan){
printf("vykonana");
}else{
printf("nevykonana");
}
return stan;
}
void CP3::Vykon(bool f)
{
system("cls");
if(f){
printf(" --day for alarm--");
printf("all day\n");
Delay(1);
printf("monday\n");
Delay(1);
printf("tuesday\n");
Delay(1);
printf("wednesday\n");
Delay(1);
printf("friday\n");
Delay(1);
printf("saturday\n");
Delay(1);
printf("den\n\n");
Delay(1);
printf("Ustanovka zaverwena. \nChas ustanovky - %d hv",GetT());
stan = true;
}else
printf("ERROR small! -- First of all install time of signal!");
getch();
system("cls");
}
void CP3::Info()
{
printf("day for alarm:\n"
">all day\n"
">tuesday\n"
">wednesday\n"
">friday\n"
">sudney\n"
"Chas ustanovky - %d hv\n"
"Stan - ",time);
Stan();
printf("\n6/11/2008 ");
getch();
system("cls");
}
void CP3::Delay(float sec)
{
clock_t delay = sec * CLOCKS_PER_SEC;
clock_t start = clock();
while (clock() - start <delay);
}
// P31.h: interface for the CP3 class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_P31_H__93405A5C_E269_4172_8BEE_0340BC5B5A99__INCLUDED_)
#define AFX_P31_H__93405A5C_E269_4172_8BEE_0340BC5B5A99__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CP3
{
public:
CP3 & CP3::operator=(const CP3 & pos);
CP3(const CP3 & st);
void Delay(float sec);
void Info();
void Vykon(bool f);
bool Stan();
int GetT();
char* GetN();
CP3();
virtual ~CP3();
private:
bool stan;
char *name;
int time;
};
#endif // !defined(AFX_P31_H__93405A5C_E269_4172_8BEE_0340BC5B5A99__INCLUDED_)
Результат:
Висновок: на дані лабораторні роботі я ознайомилася з основами роботи в середовищі С++. Набула навик використання класів і в створені їх об’єктів.