3.1. Phân tích thiết kế
Xây dựng lớp các lô đất với các hình dạng khác nhau để vận dụng vào chơng trình quản lý bất động sản của một công ty giới thiệu bán nhà đất.
- LODAT - HTHANG - HCHUNHAT - HVUONG - HINHTRON
Bớc 2: Lợc đồ mối quan hệ giữa các đối tợng
Bớc 3: Xây dựng bảng các thành phần lớp và quan
hệ kế thừa
Lớp Dữ liệu thành
phần Hàm thành phần
LODAT int x,y; // vị trí
float cost ; // đơn giá
float dongia() float tonggiatri() virtual int style() = 0; virtual float CHUVI() = 0; virtual float DIENTICH() = 0; LODAT HTRON HTHANG HCHUNHAT HVUONG
virtual void display() = 0;
HTHANG:LODAT float a,b,c,d,h ; virtual int style() ; virtual float CHUVI() ; virtual float
DIENTICH() ;
virtual void display() ; HCHUNHAT:HTHANG (a==b=h,
c==d,) virtual int style() ;virtual float CHUVI() ; virtual float
DIENTICH() ;
virtual void display() ; HVUONG:HCHUNHAT (a==b) virtual int style() ;
virtual float CHUVI() ; virtual float
DIENTICH() ;
virtual void display() ; HTRON:LODAT float r; virtual int style() ;
virtual float CHUVI() ; virtual float
DIENTICH() ; void display() ;
3.2. Cài đặt trên C++
* Xây dựng các lớp đối tợng với mối quan hệ (kế thừa) nh đa phân tích, thiết kế.
#include <iostream.h> #include <fstream.h> #include <conio.h> const float PI = 3.14;
//==================== class LODAT {
protected:
int x,y; //toa do lo dat
float cost; // gia 1 met vuong dat public:
LODAT(){x=y=cost=0;}
LODAT(int x1,int y1,int c1) {x=x1;y=y1;cost=c1;} float dongia() { return cost; }
float tonggiatri() { return cost*DIENTICH() ;} virtual int style()=0;
virtual float CHUVI()=0; virtual float DIENTICH()=0; virtual void display();
};
void LODAT::display()
{ cout<<"\n vi tri: ("<<x<<","<<y<<")"; cout<<"\n don gia: "<< cost ;
}
// LOP HINH THANG <-- LODAT // ========================= class HTHANG:public LODAT { protected:
float a,b,c,d,h; // bon kich thuoc va duong cao public:
HTHANG(): LODAT() { a=b=c=d=h=0; }
HTHANG(int x1,int y1,float cost1,float a1,float b1,float c1,float d1,float h1)
: LODAT(x1,y1,cost1) { a=a1;b=b1;c=c1;d=d1;h=h1;}
virtual int style() {return 1;}
virtual float CHUVI() { return a+b+c+d;} virtual float DIENTICH() { return ((a+b)*h)/2; } virtual void display();
};
void HTHANG::display()
cout<<"\n don gia: "<< cost;
cout<<"\n lo dat hinh thang voi kich thuoc la: "; cout<<"\n canh tren: "<<a
<<"\n canh duoi: "<<b <<"\n canh trai: "<<c <<"\n canh phai: "<<d;
cout<<"\n CHU VI: "<<CHUVI();
cout<<"\n DIEN TICH: "<<DIENTICH(); cout<<"\n=================="; }
// LOP HINH CHU NHAT <-- HTHANG // ========================= class HCHUNHAT:public HTHANG { public:
HCHUNHAT(): HTHANG() {;}
HCHUNHAT(int x1,int y1,float cost1,float a1,float b1)
: HTHANG(x1,y1,cost1,a1,a1,b1,b1,a1){;} int style() {return 2;}
float CHUVI() {return (a+c)*2;} float DIENTICH() {return a*c;} virtual void display();
};
void HCHUNHAT::display()
{ cout<<"\n vi tri: ("<<x<<","<<y<<")"; cout<<"\n don gia: "<< cost;
cout<<"\n lo dat hinh chu nhat voi kich thuoc la: "; cout<<"\n canh a: "<<a
<<"\n canh b: "<<c;
cout<<"\n CHU VI: "<<CHUVI();
cout<<"\n DIEN TICH: "<<DIENTICH(); cout<<"\n=================="; }
// LOP HINH VUONG <-- HCHUNHAT // ========================= class HVUONG:public HCHUNHAT {
public:
HVUONG(): HCHUNHAT() {;}
HVUONG(int x1,int y1,float cost1,float a1) : HCHUNHAT(x1,y1,cost1,a1,a1){;} int style() {return 3;}
float CHUVI() {return a*4;} float DIENTICH() {return a*a;} virtual void display();
};
void HVUONG::display()
{ cout<<"\n vi tri: ("<<x<<","<<y<<")"; cout<<"\n don gia: "<< cost;
cout<<"\n lo dat hinh vuong voi kich thuoc la: "<<a; cout<<"\n CHU VI: "<<CHUVI();
cout<<"\n DIEN TICH: "<<DIENTICH(); cout<<"\n=================="; }
// LOP HINHTRON <-- LODAT // ========================= class HTRON:public LODAT { protected:
float r; public:
HTRON(): LODAT() {;}
HTRON(int x1,int y1,float cost1,float r1) : LODAT(x1,y1,cost1) {r=r1;} int style() {return 4;}
float CHUVI() {return 2*PI*r;} float DIENTICH() {return PI*r*r;} virtual void display();
};
void HTRON::display()
{ cout<<"\n lo dat hinh tron voi ban kinh la: "<<r; cout<<"\n vi tri tam: ("<<x<<","<<y<<")";
cout<<"\n don gia: "<< cost; cout<<"\n CHU VI: "<<CHUVI();
cout<<"\n DIEN TICH: "<<DIENTICH(); cout<<"\n=================="; }
const max=10;
const char *f_name ="LODAT.DAT";
// gom 1 so lo dat, moi lo dat chiem 1 so dong theo thu tu nhu sau
// - dong 1 gom 4 so tuong ung la hinh dang lo dat,toa do va don gia
// - dong 2 la cac thuoc tinh tuong ung LODAT *LD[max]; int hinhdang; int xx,yy; float dg; float aa,bb,cc,dd,hh,rr; float sld; void nhap_dl() { ifstream f_input(f_name); f_input>>sld; for(int i=0;i<sld;i++) { f_input>>hinhdang>>xx>>yy>>dg; switch(hinhdang) { case 1: f_input>>aa>>bb>>cc>>dd>>hh; LD[i] = new HTHANG(xx,yy,dg,aa,bb,cc,dd,hh); break; case 2: f_input>>aa>>bb;
LD[i] = new HCHUNHAT(xx,yy,dg,aa,bb); break;
case 3: f_input>>aa;
LD[i] = new HVUONG(xx,yy,dg,aa); break;
case 4: f_input>>rr;
LD[i] = new HTRON(xx,yy,dg,rr); break; default: break; } // switch } // for } // nhap_dl void in_dl()
{ for(int i=0;i<sld;i++) LD[i]->display();} void chon_hinhdang()
{
cout<<"\n 1: hinh thang, 2: hinh chu nhat, 3: hinh vuong, 4: hinh tron ";
cout<<"\n Ban mua lo dat hinh dang: "; cin>>hinhdang;
cout<<"\n co cac lo dat sau day "; for(int i=0;i<sld;i++) if(LD[i]->style()==hinhdang) LD[i]->display(); } int main() { nhap_dl(); int chon=1; do { clrscr();
cout<<"\n 1. xem cac lo dat ";
cout<<"\n 2. chon mua 1 lo dat theo hinh dang "; cout<<"\n 0. thoat khoi chuong trinh ";
cout<<"\n Ban chon: "; cin>>chon; if(!chon==0)
{
switch(chon) {
case 1:in_dl(); break;
case 2:chon_hinhdang(); break; default: break;
} //switch getch(); } //if } while (!chon == 0); return 0; }// main File LODAT.DAT 7 1 4 5 890 20 30 4 10 4 2 10 10 1900 30 40 3 15 21 2000 100 4 17 22 500 100 1 40 51 800 10 30 5 10 6 2 30 45 2100 20 45 4 71 32 550 120
Tài liệu tham khảo
[1] Mark Allen Weiss - Florida International
University, 1998.
Algorithms, Data Structures, and Problem Solving with C++
Addison-Wesley Publishing Company, Inc.
[2] Scott Robert Ladd - United States of America,
1996.
C++: Components And Algorithms
M&T Books. A Division of MIS:Press,Inc. A Subsidiary of Henry Holt and Company, Inc.115 Wes 18th Street. New York, New York 10011
[3] Dơng Tử Cờng
Lập trình bằng C++
Nhà xuất bản Khoa học kỹ thuật, Hà Nội - 1998
[4] Đoàn Văn Ban - Trung tâm KHTN và Công nghệ
Quốc Gia
Phân tích, thiết kế và lập trình hớng đối tợng Nhà xuất bản thống kê, Hà Nội - 1997