
- •Математический факультет
- •Содержание
- •Virtual float Get_Price();//виртуальный метод получения цены 12
- •1. Постановка задачи
- •Scanf("%d",&flag);
- •///Mug and spoon
- •Delete l;
- •Delete f; delete m;
- •///Common volume for mug and cup
- •Delete p; delete k;
- •///Cup and spoon
- •Delete l;
- •Delete p; delete m;
- •///Mug and spoon and d_spoon
- •Delete q; delete l; delete m;
- •Delete Tab;
- •Delete X;
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Кемеровский государственный университет» (КемГУ)
Математический факультет
Кафедра вычислительной математики
ОТЧЕТ О ВЫПОЛНЕНИИ СЕМЕСТРОВОЙ РАБОТЫ
«Основы Объектно-ориентированного программирования»
студента 2 курса, группы M-113
Костромин Дмитрий Александрович
Направление 010400 – «Прикладная математика и информатика»
Руководитель:
Бондарева Л.В.
Работа защищена
«____________________»
“____” _____________20__г.
Кемерово 2013
Содержание
1. Постановка задачи 11
2. Описание предметной области 11
3. Описание работы 11
3.1 Спецификации 11
3.1.1 Описание классов 11
3.1.2 Описание методов классов 12
class Crockery 12
Crockery();-конструктор 12
virtual float Get_Price()=0;-виртуальный метод получения цены 12
virtual Crockery *Copy()=0;-виртуальный метод копирования 12
virtual ~Crockery();-виртуальный деструктор 12
class Cup 12
Cup(int,double,char,int&);//конструктор 12
Cup(double,char,int&);//конструктор 12
Cup(Cup*,int&);//конструктор копирования 12
~Cup(){printf("DESTRUCTOR CUP WORKED WELL\n"); delete colvo; delete rad; delete colCH;}//деструктор 12
virtual float Get_Price();//виртуальный метод получения цены 12
Crockery *Copy();//виртуальный метод копирования объекта 12
void Cup_Set(int,double,char);//изменение значений полей 12
void Cup_Get(int&,double&,char&);// получение значений полей 12
double Cup_Vol();//получение объема 12
char Cup_Color(){return (*colCH);}//получение цвета чашки 12
class Mug 12
Mug(int,float,char,int&);//конструктор 12
Mug(float,int&);//конструктор 12
Mug(Mug*,int&);//конструктор копирования 12
~Mug(){printf("DESTRUCTOR MUG WORKED WELL\n"); delete colvo; delete vol; delete colKR;}//деструктор 12
Virtual float Get_Price();//виртуальный метод получения цены 12
Crockery *Copy();//виртуальный метод копирования объекта 12
void Mug_Get(int&,float&,char&);//получение значений полей 13
void Mug_Set(int,float,char);//изменение значений полей 13
float Mug_FPrice();//получение первой цены 13
double M_and_C_VOL(Cup*);//получение обема чашки и кружки когда они вместе 13
class Spoon 13
Spoon(Crockery* ,float,char,double,int&);//конструктор 13
~Spoon(){printf("DESTRUCTOR Spoon WORKED WELL\n");delete f; delete Len; delete colLJ; delete OC;}//деструктор 13
float Spoon_GetPrice(){return f->Get_Price()*((*Len)+(*OC));}//получение полной цены одной ложки 13
float Spoon_Plosh(){return (*Len)*(*OC);}//площадь ложки, для находения объема ложки с узором 13
13
class D_Spoon 13
D_Spoon(float,Crockery *,float,char,double,int &);//конструктор 13
~D_Spoon(){printf("DESTRUCTOR D_SPOON WORKED WELL\n");delete V;}//деструктор 13
float Finish_Price(Spoon* T){return T->Spoon_GetPrice()+Vol_Design(T);}//цена ложки с узором 13
float Vol_Design(Spoon* T){return T->Spoon_Plosh()+(*V);}//объем ложки с узором 13
3.2 Схема иерархии классов 13
14
3.3 Листинг программы 14
main.cpp 14
1.CPP 17
#include <stdlib.h> 17
#include <stdio.h> 18
#include "1.h" 18
int main() 18
{ 18
int err,colvo,colvo2,flag; 18
char colKR,colCH; 18
double rad; 18
float k,vol; 18
int key=1; 18
Crockery * M; 18
while(key!=0) 18
{ 18
printf("\n Please select the number \n"); 18
printf("_________________________________________________ \n"); 18
printf("| 1) MUG and SPOON |\n"); 18
printf("| |\n"); 18
printf("| 2) CUP and SPOON |\n"); 18
printf("| |\n"); 18
printf("| 3) CUP and SPOON and D_SPOON |\n"); 18
printf("| |\n"); 18
printf("| 4) MUG and SPOON and D_SPOON |\n"); 18
printf("| |\n"); 18
printf("| 5) COMMON VOLUME FOR MUG AND CUP |\n"); 18
printf("| |\n"); 18
printf("| 6) KONSTRUCTOR NUMBER 3 FOR CUP AND MUG |\n"); 18
printf("| |\n"); 18
printf("| 0 - EXIT |\n"); 18
printf("|________________________________________________|\n"); 18
printf("\n"); 18
scanf("%d",&flag); 18
printf("\n"); 18
///MUG and SPOON 18
if(flag==1) 18
{ 18
M=new Mug(10,0.5,'Q',err); 18
k=M->Get_Price(); 18
Spoon *L=new Spoon(M,10.0,'Y',7.5,err); 19
if(!err) 19
{ 19
printf(" ________________________________________ \n"); 19
printf(" | |\n"); 19
printf(" | SPOON PRICE=%12f |\n",L->Spoon_GetPrice()); 19
printf(" |________________________________________|\n\n"); 19
delete L; 19
L=NULL; 19
} 19
Mug *F = new Mug(9,10.01,'R',err); 19
F->Mug_Set(5,4.6,'B'); 19
F->Mug_Get(colvo,vol,colKR); 19
float a=F->Mug_FPrice(); 19
printf(" ________________________________\n"); 19
printf("| |\n"); 19
printf("| FIRST_PRICE=%12f |\n",a); 19
printf("| COLVO=%12d |\n",colvo); 19
printf("| VOL= %12f |\n",vol); 19
printf("| COLOR=%12c |\n",colKR); 19
printf("|________________________________|\n\n"); 19
printf(" _________________\n"); 19
printf("| |\n"); 19
printf("| %f |\n",k); 19
printf("|_________________|\n\n"); 19
delete F; 19
delete M; 19
F=NULL; 19
M=NULL; 19
} 19
///COMMON VOLUME FOR MUG AND CUP 19
else if(flag == 5 ) 19
{ 19
Mug *K=new Mug(5.5,err); 19
Cup *P=new Cup(10.01,'Y',err); 19
printf(" _______________________________\n"); 19
printf("| |\n"); 20
printf("| COMMON VOLUME=%12f |\n",K->M_and_C_VOL(P)); 20
printf("| |\n"); 20
printf("| COLOR OF THE CUP: %12c|\n",P->Cup_Color()); 20
printf("|_______________________________|\n\n"); 20
delete P; 20
delete K; 20
} 20
///CUP and SPOON 20
else if(flag == 2 ) 20
{ 20
M=new Cup(10,5.5,'K',err); 20
k=M->Get_Price(); 20
Spoon *L=new Spoon(M,10.0,'Y',7.5,err); 20
if(!err) 20
{ 20
printf(" _______________________________________ \n"); 20
printf(" | |\n"); 20
printf(" | SPOON PRICE=%12f |\n",L->Spoon_GetPrice()); 20
printf(" |_______________________________________|\n\n"); 20
delete L; 20
L=NULL; 20
} 20
Cup *P=new Cup(10,1.5,'T',err); 20
P->Cup_Set(2,17.2,'N'); 20
P->Cup_Get(colvo2,rad,colCH); 20
float a=P->Cup_Vol(); 20
printf(" _______________________________\n"); 20
printf("| |\n"); 20
printf("| VOLUME OF CUP=%12f |\n",a); 20
printf("| COLVO=%12d |\n",colvo2); 20
printf("| VOL= %12f |\n",rad); 20
printf("| COLOR=%12c |\n",colCH); 20
printf("|_______________________________|\n\n"); 20
printf(" ___________________\n"); 20
printf("| |\n"); 20
printf("| %12f |\n",k); 21
printf("|___________________|\n\n"); 21
delete P; 21
delete M; 21
P=NULL; 21
M=NULL; 21
} 21
///MUG and SPOON and D_SPOON 21
if(flag==3) 21
{ 21
M=new Cup(10,5.5,'K',err); 21
Spoon *L=new Spoon(M,10.0,'Y',7.5,err); 21
D_Spoon *Q=new D_Spoon(12.4,M,3.2,'B',8.3,err); 21
printf(" __________________________________________\n"); 21
printf("| |\n"); 21
printf("| RECEIVING AREA SPOONS: %12f |\n",Q->Spoon_Plosh()); 21
printf("| |\n"); 21
printf("| VOLUME DESIGN: %12f |\n",Q->Vol_Design(Q)); 21
printf("| |\n"); 21
printf("| SPOON GET PRICE: %12f |\n",Q->Spoon_GetPrice()); 21
printf("| |\n"); 21
printf("| FINISH PRICE SPOONS: %12f |\n",Q->Finish_Price(Q)); 21
printf("|__________________________________________|\n\n"); 21
delete Q; 21
delete L; 21
delete M; 21
Q=NULL; 21
L=NULL; 21
M=NULL; 21
} 21
if(flag==4) 21
{ 21
M=new Mug(10,5.5,'B',err); 21
Spoon *L=new Spoon(M,10.0,'Y',7.5,err); 21
D_Spoon *Q=new D_Spoon(7.4,M,2.8,'B',5.6,err); 21
printf(" _________________________________________\n"); 21
printf("| |\n"); 22
printf("| RECEIVING AREA SPOONS: %12f |\n",Q->Spoon_Plosh()); 22
printf("| |\n"); 22
printf("| VOLUME DESIGN: %12f |\n",Q->Vol_Design(Q)); 22
printf("| |\n"); 22
printf("| SPOON GET PRICE: %12f |\n",Q->Spoon_GetPrice()); 22
printf("| |\n"); 22
printf("| FINISH PRICE SPOONS: %12f |\n",Q->Finish_Price(Q)); 22
printf("|_________________________________________|\n\n"); 22
delete Q; 22
delete L; 22
delete M; 22
Q=NULL; 22
L=NULL; 22
M=NULL; 22
} 22
///KONSTRUCTOR NUMBER 3 FOR CUP AND MUG 22
if(flag==6) 22
{ 22
Cup *X; 22
X=new Cup(27,1.1,'R',err); 22
Cup *Tab=new Cup(X,err); 22
X->Cup_Get(colvo2,rad,colCH); 22
printf(" _______________________________\n"); 22
printf("| |\n"); 22
printf("| COLVO=%12d |\n",colvo2); 22
printf("| VOL= %12f |\n",rad); 22
printf("| COLOR=%12c |\n",colCH); 22
printf("|_______________________________|\n\n"); 22
delete Tab; 22
Tab=NULL; 22
delete X; 22
X=NULL; 22
Mug *E=new Mug(15,40.56,'B',err); 22
Mug *Z=new Mug(E,err); 22
E->Mug_Get(colvo,vol,colKR); 23
printf(" ________________________________\n"); 23
printf("| |\n"); 23
printf("| COLVO=%12d |\n",colvo); 23
printf("| VOL= %12f |\n",vol); 23
printf("| COLOR=%12c |\n",colKR); 23
printf("|________________________________|\n\n"); 23
//delete Z; 23
//Z=NULL; 23
delete E; 23
E=NULL; 23
} 23
///EXIT 23
if(flag==0) 23
{ 23
key=0; 23
} 23
} 23
printf("KOSTROMIN D.A GROUP NUMBER M-113\n"); 23
return 0; 23
} 23
1.h 23
#include <stdio.h> 23
class Crockery//посуда 23
{ 23
public: 23
Crockery(); 23
virtual float Get_Price()=0; 23
virtual Crockery *Copy()=0; 23
virtual ~Crockery(); 23
}; 23
class Cup:public Crockery//чашка 23
{ 23
private: 23
int* colvo;//количество 23
double *rad;//радиус 23
char *colCH;//цвет 24
public: 24
Cup(int,double,char,int&);///+ 24
Cup(double,char,int&); 24
//Cup(){printf("EMPY CONSTRUCTOR CUP WORKED WELL\n");} 24
Cup(Cup*,int&); 24
~Cup(){printf("DESTRUCTOR CUP WORKED WELL\n"); delete colvo; delete rad; delete colCH;} 24
virtual float Get_Price();//цена за товар///+ 24
Crockery *Copy();///+ 24
void Cup_Set(int,double,char);///+ 24
void Cup_Get(int&,double&,char&);///+ 24
double Cup_Vol();//получение объема 24
char Cup_Color(){return (*colCH);}//получение цвета чашки 24
}; 24
class Mug:public Crockery//кружка 24
{ 24
public: 24
Mug(int,float,char,int&);///+ 24
Mug(float,int&); 24
//Mug(){printf("EMPY KONSTRUCTOR MUG WORKED WELL\n");} 24
Mug(Mug*,int&); 24
~Mug(){printf("DESTRUCTOR MUG WORKED WELL\n"); delete colvo; delete vol; delete colKR;} 24
virtual float Get_Price();///+ 24
Crockery *Copy();///+ 24
void Mug_Get(int&,float&,char&);///+ 24
void Mug_Set(int,float,char);///+ 24
float Mug_FPrice();//получение первой цены 24
double M_and_C_VOL(Cup*);//получение обема чашки и кружки когда они вместе 24
private: 24
Cup *J; 24
int *colvo; 24
float *vol; 24
char *colKR; 24
}; 24
class Spoon//ложка 24
{ 24
public: 25
Spoon(Crockery* ,float,char,double,int&); 25
~Spoon(){printf("DESTRUCTOR Spoon WORKED WELL\n");delete f; delete Len; delete colLJ; delete OC;} 25
float Spoon_GetPrice(){return f->Get_Price()*((*Len)+(*OC));}//получение полной цены одной ложки 25
float Spoon_Plosh(){return (*Len)*(*OC);}//площадь ложки, для находения объема ложки с узором 25
private: 25
Crockery *f; 25
float *Len;//длина рукояди 25
char *colLJ;//цвет ложки 25
double *OC;// основная часть 25
}; 25
class D_Spoon:public Spoon//узор ложки 25
{ 25
public: 25
D_Spoon(float Vl,Crockery *fl,float Lenl,char colLJl,double OCl,int &err):Spoon(fl,Lenl,colLJl,OCl,err) 25
{ 25
printf("D_SPOON::D_SPOON\n"); 25
if(Vl>0 and Lenl>0 and OCl>0) 25
{ 25
V=new float; 25
*V=Vl; 25
err=0; 25
} 25
else 25
{ 25
delete this; 25
err=1; 25
} 25
} 25
~D_Spoon(){printf("DESTRUCTOR D_SPOON WORKED WELL\n");delete V;} 25
float Finish_Price(Spoon* T){return T->Spoon_GetPrice()+Vol_Design(T);}//цена ложки с узором 25
float Vol_Design(Spoon* T){return T->Spoon_Plosh()+(*V);}//объем ложки с узором 25
private: 25
Spoon* T; 25
float *V;//объем узора 25
}; 25
3.4 Результаты 26