Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
Звіт
з лабораторної роботи №3
за курсом “Об’єктно-орієнтоване програмування”
Львів
2008
Лабораторна робота №3
Тема: Використання класових типів та управління доступом до членів класу (методи та
параметри).
Мета: освоїти методи та способи роботи з класами, функціями у класі, об’єктами та доступом до них, застосування різних прав доступу до методів та параметрів класу.
Варіант №4
Виконання роботи
1.Постановка задачі.
Написати програму алгоритмічною мовою С++ згідно з завданням, отриманим від викладача. Програма повинна реалізувати функційність об'єкта заданого класу у відповідності із завданням. В програмі потрібно задіяти застосування різних прав доступу до методів та параметрів класу.
Завдання:
Реалізувати клас для забезпечення роботи із об’єктом кімната:
Ініціалізація об’єктам кімната (введення ширини довжини, висоти, кількості дверей, вікон та їх площ).
Визначення площі кімнати.
Визначення об'єму кімнати.
Визначення площі стін з урахуванням вікон та дверей/без урахування вікон та дверей
2.Текст програми.
Файл Unit1.cpp:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Room MyRoom1;
int D,W;
float S,L,H,S_D,S_W,S_MyRoom,V_MyRoom,S_WallsWith_MR,S_WallsOut_MR;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ShowMessage("© Куць Богдан Мар'янович\nНаціональний університет ''Львівська політехніка''\nІКНІ, група ПІ-11\n26.02.2008-11.03.2008");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{S=StrToFloat(Edit1->Text);
L=StrToFloat(Edit2->Text);
H=StrToFloat(Edit3->Text);
D=StrToInt(Edit4->Text);
W=StrToInt(Edit5->Text);
S_D=StrToFloat(Edit6->Text);
S_W=StrToFloat(Edit7->Text);
Button1->Caption="Прийнято!";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{MyRoom1.SetAllSize(S,L,H,D,W);
MyRoom1.SetS(S_W,S_D);
S_MyRoom=MyRoom1.GetS_Room();
V_MyRoom=MyRoom1.GetV_Room();
S_WallsWith_MR=MyRoom1.GetS_WallsWithWD();
S_WallsOut_MR=MyRoom1.GetS_WallsOutWD();
Edit8->Text=FloatToStr(S_MyRoom);
Edit9->Text=FloatToStr(V_MyRoom);
Edit10->Text=FloatToStr(S_WallsWith_MR);
Edit11->Text=FloatToStr(S_WallsOut_MR);
Button2->Caption="Готово";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{Edit1->Text="ширина";
Edit2->Text="довжина";
Edit3->Text="висота";
Edit4->Text="кількість";
Edit5->Text="кількість";
Edit6->Text="площа одного";
Edit7->Text="площа одного";
Button1->Caption="Прийняти";
S=0;
L=0;
H=0;
D=0;
W=0;
S_D=0;
S_W=0;
Edit8->Text="площа";
Edit9->Text="об'єм";
Edit10->Text="м.кв.";
Edit11->Text="м.кв.";
Button2->Caption="Обрахувати";
}
//---------------------------------------------------------------------------
Файл Unit1.h:
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
TEdit *Edit5;
TEdit *Edit6;
TEdit *Edit7;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TButton *Button1;
TButton *Button2;
TLabel *Label4;
TEdit *Edit8;
TLabel *Label5;
TLabel *Label6;
TEdit *Edit9;
TEdit *Edit10;
TLabel *Label7;
TEdit *Edit11;
TButton *Button3;
TButton *Button4;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Файл Unit3.cpp:
#pragma hdrstop
#include "Unit3.h"
//---------------------------------------------------------------------------
void Room::SetAllSize(float ShyrynaV,float DovzynaV,float VysotaV,int DveriV,int ViknaV)
{this->Shyryna=ShyrynaV;
this->Dovzyna=DovzynaV;
this->Vysota=VysotaV;
this->Dveri=DveriV;
this->Vikna=ViknaV;
} ;
//---------------------------------------------------------------------------
void Room::SetS(float S_Vikno,float S_Dver)
{this->S_Vikno=S_Vikno;
this->S_Dver=S_Dver;};
//---------------------------------------------------------------------------
float Room::GetS_WallsOutWD()
{float S_Walls=(this->Vysota)*(2*(this->Dovzyna)+2*(this->Shyryna));
S_Walls=S_Walls-((this->Dveri)*(this->S_Dver)+(this->Vikna)*(this->S_Vikno));
return(S_Walls);
};
#pragma package(smart_init)
Файл Unit3.h:
#ifndef Unit3H
#define Unit3H
//---------------------------------------------------------------------------
class Room
{protected:
int Dveri, Vikna;
float Shyryna, Dovzyna, Vysota,S_Vikno, S_Dver;
public:
void SetAllSize(float ShyrynaV,float DovzynaV,float VysotaV,int DveriV,int ViknaV);
void SetS(float S_Vikno,float S_Dver); //встановлення площ вікон і дверей
float GetS_Room() //площа кімнати
{float S_Room=(this->Shyryna)*(this->Dovzyna);
return(S_Room);};
float GetV_Room() //об'єм кімнати
{float V_Room=(this->Shyryna)*(this->Dovzyna)*(this->Vysota);
return(V_Room);};
float GetS_WallsWithWD()
//площа стін з вікнами й дверима
{float S_Walls=(this->Vysota)*(2*(this->Dovzyna)+2*(this->Shyryna));
return(S_Walls);
};
float GetS_WallsOutWD();
};
#endif
3.Протокол роботи програми.
Висновок: на цій лабораторній роботі я освоїв методи та способи роботи з класами, функціями у
класі, об’єктами та доступом до них, а також застосування різних прав доступу до методів та параметрів класу, таких як: protected, public та private.