Professional Documents
Culture Documents
B CNG THNG
TRNG CAO NG CNG NGHIP PHC YN
BI TP LP TRNH HNG
I TNG C++
C BN
- 1-
tranxuanthuc.pci@gmail.com
- 2-
tranxuanthuc.pci@gmail.com
{
cout<<"Ho ten: "<<HT<<endl;
cout<<"Ngay sinh: "<<NS<<endl;
cout<<"Que quan: "<<Q<<endl;
cout<<"Nganh hoc: "<<NH<<endl;
cout<<"Nam tot nghiep: "<<NTN<<endl;
}
void main()
{
int i,n;
Kysu a[100];
cout<<"n= ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Ky su thu "<<(i+1)<<": \n";
a[i].nhap();
}
cout<<"Thong tin vua nhap:\n";
for(i=0;i<n;i++)
a[i].xuat();
int Max=a[0].NTN;
for(i=0;i<n;i++)
if(a[i].NTN>Max)
Max=a[i].NTN;
cout<<"Ky su co nam tot nghiep gan day nhat la: \n";
for(i=0;i<n;i++)
if(a[i].NTN==Max)
a[i].xuat();
getch();
}
Bi 1.2. Xy dng lp My in gm cc thng tin: Trng lng my, nm sn xut,
hng sn xut. Sau , xy dng lp dn xut: My in kim, ngoi cc thuc tnh ca
my in ra cn c thm thuc tnh : s kim (int), tc in (trang/ pht - int). Xy dng
lp My in Laser ngoi cc thuc tnh ca my in cn c thm cc thuc tnh: phn
gii (int), tc in (int). Hai lp dn xut ny c cc phng thc: Nhp: nhp cc
thng tin ca my in, Xut: xut cc thng tin ca my in ra mn hnh.
Xy dng chng trnh chnh nhp vo thng tin ca n my in kim v m my
in Laser. Xut cc thng tin ln mn hnh.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
class Mayin
{
public:
CN: Trn Xun Thc
- 3-
tranxuanthuc.pci@gmail.com
float TL;
char NamSX[30];
char HangSX[30];
};
class Mkim:public Mayin
{
int Skim;
int Tdo;
public:
void nhap();
void xuat();
};
class Mlaser:public Mayin
{
int DPG;
int TD;
public:
void nhap();
void xuat();
};
void Mkim::nhap()
{
cout<<"Trong luong may: ";cin>>TL;
cout<<"Nam sx: ";gets(NamSX);fflush(stdin);
cout<<"Hang sx: ";gets(HangSX);fflush(stdin);
cout<<"So kim: ";cin>>Skim;
cout<<"Toc do in: ";cin>>Tdo;
}
void Mkim::xuat()
{
cout<<"Trong luong may: "<<TL<<endl;
cout<<"Nam sx: "<<NamSX<<endl;
cout<<"Hang sx: "<<HangSX<<endl;
cout<<"So kim: "<<Skim<<endl;
cout<<"Toc do in: "<<Tdo<<endl;
}
void Mlaser::nhap()
{
cout<<"Trong luong may: ";cin>>TL;
cout<<"Nam sx: ";gets(NamSX);fflush(stdin);
cout<<"Hang sx: ";gets(HangSX);fflush(stdin);
cout<<"Do phan giai: ";cin>>DPG;
cout<<"Toc do in: ";cin>>TD;
}
void Mlaser::xuat()
{
cout<<"Trong luong may: "<<TL<<endl;
- 4-
tranxuanthuc.pci@gmail.com
- 5-
tranxuanthuc.pci@gmail.com
void xuat();
Person()
{
strcpy(HT,"");strcpy(NS,"");strcpy(QQ,"");
}
};
class Diem
{
public:
int Dtoan;
int Dly;
int Dhoa;
void nhap();
void xuat();
Diem()
{
Dtoan=Dly=Dhoa=0;
}
};
class Hocsinh:public Person,public Diem
{
char Lop[30];
int TDiem;
public:
void nhap();
void xuat();
Hocsinh()
{
strcpy(Lop,"");TDiem=0;
}
};
void Person::nhap()
{
cout<<"Ho ten: ";gets(HT);fflush(stdin);
cout<<"Ngay sinh: ";gets(NS);fflush(stdin);
cout<<"Que quan: ";gets(QQ);fflush(stdin);
}
void Person::xuat()
{
cout<<"Ho ten: "<<HT<<endl;
cout<<"Ngay sinh: "<<NS<<endl;
cout<<"Que quan: "<<QQ<<endl;
}
void Diem::nhap()
{
cout<<"Diem toan: ";cin>>Dtoan;
cout<<"Diem ly: ";cin>>Dly;
- 6-
tranxuanthuc.pci@gmail.com
My
- Nhn hiu
- Nh sn sut
- Gi thnh
void input();
void output();
- Tc
- Dung lng
RAM;
- Dung lng HDD
void input();
void output();
- 7-
Nh sn xut
private:
- Tn NSX
- a ch
tranxuanthuc.pci@gmail.com
(vi input v output l cc phng thc nhp, xut thng tin ca cc thuc tnh
ca lp). Vit chng trnh chnh nhp vo danh sch n my tnh. In ra thng tin ca
cc my tnh ca nh sn xut IBM. Sp xp danh sch cc my tnh theo chiu tng
dn ca gi thnh v in danh sch sp ra mn hnh. Xo mi my tnh ca hng
Intel sn xut v in danh sch kt qu ra mn hnh.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
class NhaSX
{
char TenNSX[30];
char DC[30];
friend class May;
friend class Maytinh;
friend void In(Maytinh *a,int n);
friend void Xoa(Maytinh *a,int *n);
};
class May
{
public:
char NH[30];
NhaSX NSX;
float GT;
void nhap();
void xuat();
};
class Maytinh:public May
{
float TD;
int DLR;
int DLHDD;
public:
void nhap();
void xuat();
CN: Trn Xun Thc
- 8-
tranxuanthuc.pci@gmail.com
- 9-
tranxuanthuc.pci@gmail.com
a[i].xuat();
}
void Sap(Maytinh a[100],int n)
{
int i,j;
Maytinh tg;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(a[j].GT<a[i].GT)
{
tg=a[i];
a[i]=a[j];
a[j]=tg;
}
}
void Xoa(Maytinh a[100],int *n)
{
for(int i=0;i<*n;i++)
while(strcmp(a[i].NSX.TenNSX,"Intel")==0)
{
for(int j=i;j<*n;j++)
a[j]=a[j+1];
*n=*n-1;
}
}
void main()
{
int n,i;
Maytinh a[100];
cout<<"n= ";cin>>n;
for(i=0;i<n;i++)
a[i].nhap();
cout<<"---May tinh cua hang IBM---\n";
In(a,n);
cout<<"---Sap xep may tinh tang dan theo gia---\n";
Sap(a,n);
CN: Trn Xun Thc
- 10-
tranxuanthuc.pci@gmail.com
for(i=0;i<n;i++)
a[i].xuat();
cout<<"---DS may tinh con lai sau khi xoa---\n";
Xoa(a,&n);
for(i=0;i<n;i++)
a[i].xuat();
getch();
}
Bi 2.2. Ci t cc lp theo biu sau:
My tnh
- Tc
- Dung lng RAM
- Dung lng HDD
void input();
void output();
My
- Nhn hiu
- Nh sn sut
- Gi thnh
void input();
void output();
Nh sn xut
private:
- Tn NSX
- a ch
public:
void input();
void output();
(vi input v output l cc phng thc nhp, xut thng tin ca cc thuc tnh ca
lp). Vit chng trnh chnh nhp vo danh sch n my tnh. In ra thng tin ca cc
my tnh ca nh xn sut Intel. Sp xp danh sch cc my tnh theo chiu gim dn
ca gi thnh v in danh sch sp ra mn hnh. Cho bit gi thnh trung bnh ca
mi chic my tnh?
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
class NhaSX
{
char TenNSX[30];
char DC[30];
friend class May;
friend class Maytinh;
friend void In(Maytinh *a,int n);
friend void Xoa(Maytinh *a,int *n);
};
class May
{
CN: Trn Xun Thc
- 11-
tranxuanthuc.pci@gmail.com
public:
char NH[30];
NhaSX NSX;
float GT;
void nhap();
void xuat();
};
class Maytinh:public May
{
int TD;
float DLR;
float DLHDD;
public:
void nhap();
void xuat();
};
void May::nhap()
{
cout<<"Nhan hieu: ";gets(NH);fflush(stdin);
cout<<"Ten NSX: ";gets(NSX.TenNSX);fflush(stdin);
cout<<"Dia chi: ";gets(NSX.DC);fflush(stdin);
cout<<"Gia thanh: ";cin>>GT;
}
void May::xuat()
{
cout<<"Nhan hieu: "<<NH<<endl;
cout<<"Ten NSX: "<<NSX.TenNSX<<endl;
cout<<"Dia chi: "<<NSX.DC<<endl;
cout<<"Gia thanh: "<<GT<<endl;
}
void Maytinh::nhap()
{
May::nhap();
cout<<"Toc do: ";cin>>TD;
cout<<"Dung luong Ram: ";cin>>DLR;
cout<<"Dung luong HDD: ";cin>>DLHDD;
CN: Trn Xun Thc
- 12-
tranxuanthuc.pci@gmail.com
}
void Maytinh::xuat()
{
May::xuat();
cout<<"Toc do: "<<TD<<endl;
cout<<"Dung luong Ram: "<<DLR<<endl;
cout<<"Dung luong HDD: "<<DLHDD<<endl;
}
void In(Maytinh a[100],int n)
{
for(int i=0;i<n;i++)
if(strcmp(a[i].NSX.TenNSX,"IBM")==0)
a[i].xuat();
}
void Sap(Maytinh a[100],int n)
{
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(a[i].GT<a[j].GT)
{
Maytinh tg=a[i];
a[i]=a[j];
a[j]=tg;
}
}
void Xoa(Maytinh a[100],int *n)
{
for(int i=0;i<*n;i++)
while(strcmp(a[i].NSX.TenNSX,"Intel")==0)
{
for(int j=i;j<*n;j++)
a[j]=a[j+1];
*n=*n-1;
}
}
void main()
CN: Trn Xun Thc
- 13-
tranxuanthuc.pci@gmail.com
{
int n,i;
Maytinh a[100];
float TB=0,GTB=0;
cout<<"n= ";cin>>n;
for(i=0;i<n;i++)
{
a[i].nhap();
TB=TB+a[i].GT;
}
GTB=(GTB+TB)/n;
cout<<"Gia trung binh: "<<GTB<<endl;
cout<<"---May tinh cua hang IBM---\n";
In(a,n);
cout<<"---Sap xep---\n";
Sap(a,n);
for(i=0;i<n;i++)
a[i].xuat();
cout<<"---May tinh con lai sau khi xoa---\n";
Xoa(a,&n);
for(i=0;i<n;i++)
a[i].xuat();
getch();
}
Bi 2.3. Ci t lp theo s sau:
V
Gi gc
Ngy
void nhap()
void xuat()
V ngi ln
V tr em
-Gim (%)
-Gim (%)
-Gi v
-Gi v
void nhap()
void nhap()
void xuat()
void xuat()
- 14-
tranxuanthuc.pci@gmail.com
- 15-
tranxuanthuc.pci@gmail.com
}
void VeNL::xuat()
{
Ve::xuat();
cout<<"Giam: "<<Giam<<"%"<<endl;
cout<<"Gia ve: "<<Giave<<endl;
}
void VeTE::nhap()
{
Ve::nhap();
cout<<"Giam: ";cin>>Giam;
Giave=Giagoc-(Giagoc*Giam)/100;
}
void VeTE::xuat()
{
Ve::xuat();
cout<<"Giam: "<<Giam<<"%"<<endl;
cout<<"Gia ve: "<<Giave<<endl;
}
void main()
{
VeNL x;
VeTE y;
cout<<"Ve nguoi lon:\n";
x.nhap();
x.xuat();
cout<<"Ve tre em:\n";
y.nhap();
y.xuat();
getch();
}
Bi 2.4. Vit chng trnh m phng hot ng ca mt b my vi tnh gm cc b
phn: Ngun (Power), H iu hnh (OS), Mn hnh (Monitor), CPU theo s sau
(ni dung cc phng thc th sinh t xc nh sao cho tho mn yu cu trong
chng trnh chnh):
Power
Bt_Ngun():
void
Tt_Ngun():
void
CPU
Nguon:
Power
HH: OS
Ci_t(Tn: char*):
void
Bt_CPU():void
tSng(s: int): void
Tt_CPU(): void
OS
Tn: char(30)
Computer
Mn_Hnh: Monitor
Cpu: CPU
- 16-
tranxuanthuc.pci@gmail.com
Khi_ng():
void
Tt_HH(): void
Monitor
_sng: int
tSng(s: int):
void
- 17-
tranxuanthuc.pci@gmail.com
CPU Cpu;
public:
void Cai_Dat(char *Ten);
void Bat_CPU();
void Datdosang(int ds);
void Tat_CPU();
};
void Power::Bat_Nguon()
{
cout<<"Nguon da bat";
}
void Power::Tat_Nguon()
{
cout<<"Nguon da tat";
}
void OS::Khoi_Dong()
{
cout<<"He dieu hanh da khoi dong. "<<Ten;
}
void OS::Tat_HDH()
{
cout<<"Da tat he dieu hanh.";
}
void Monitor::Datdosang(int ds)
{
Do_Sang=ds;
cout<<"Do sang da duoc dat: "<<ds;
}
void Computor::Cai_Dat(char*Ten)
{
strcpy(Cpu.HDH.Ten,"WINXP");
}
void Computor::Bat_CPU()
{
Cpu.Nguon.Bat_Nguon();
Cpu.HDH.Khoi_Dong();
}
void Computor::Datdosang(int ds)
{
Man_Hinh.Datdosang(ds);
}
void Computor::Tat_CPU()
{
Cpu.HDH.Tat_HDH();
Cpu.Nguon.Tat_Nguon();
}
void main()
- 18-
tranxuanthuc.pci@gmail.com
{
Computor x;
x.Cai_Dat("WINXP");
x.Bat_CPU();
x.Datdosang(15);
x.Tat_CPU();
getch();
}
Bi 2.5. Ci t lp theo s sau:
Person
Hospital
Person
H tn
Tui
Tn BV
a ch
H tn
Tui
Nhap( )
Xuat( )
Nhap( )
Xuat( )
Nhp vo mt danh sch gm n bnh nhn. Sp xp danh sch theo chiu tng dn ca
tui. In ra cc bnh nhn c iu tr trong bnh vin c gim c bnh vin l
Hong H.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
class Person
{
public:
char HT[30];
int Tuoi;
void nhap();
void xuat();
};
class Hospital
{
char TenBV[30],DC[30];
Person GD;
friend class BN;
friend void IN(BN *a,int n);
};
class BN:public Person
{
char TS[30],CD[30];
Hospital BV;
public:
void nhap();
CN: Trn Xun Thc
- 19-
tranxuanthuc.pci@gmail.com
void xuat();
friend void IN(BN *a,int n);
};
void Person::nhap()
{
cout<<"Ho ten: ";gets(HT);fflush(stdin);
cout<<"Tuoi: ";cin>>Tuoi;
}
void Person::xuat()
{
cout<<"Ho ten: "<<HT<<endl;
cout<<"Tuoi: "<<Tuoi<<endl;
}
void BN::nhap()
{
Person::nhap();
cout<<"Tien su: ";gets(TS);fflush(stdin);
cout<<"Chuan doan: ";gets(CD);fflush(stdin);
cout<<"Ten BV: ";gets(BV.TenBV);fflush(stdin);
cout<<"Dia chi: ";gets(BV.DC);fflush(stdin);
BV.GD.nhap();
}
void BN::xuat()
{
Person::xuat();
cout<<"Tien su: "<<TS<<endl;
cout<<"Chuan doan: "<<CD<<endl;
cout<<"Ten BV: "<<BV.TenBV<<endl;
cout<<"Dia chi: "<<BV.DC<<endl;
BV.GD.xuat();
}
void IN(BN a[100],int n)
{
for(int i=0;i<n;i++)
if(strcmp(a[i].BV.GD.HT,"Hoang Ha")==0)
a[i].xuat();
}
void main()
{
int n,i,j;
BN a[100];
BN tg;
cout<<"n= ";cin>>n;
for(i=0;i<n;i++)
a[i].nhap();
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
- 20-
tranxuanthuc.pci@gmail.com
if(a[j].Tuoi<a[i].Tuoi)
{
tg=a[i];
a[i]=a[j];
a[j]=tg;
}
cout<<"---- Day sap xep----\n";
for(i=0;i<n;i++)
a[i].xuat();
cout<<"---BN duoc dieu tri co BS Hoang Ha---\n";
IN(a,n);
getch();
}
III. DNG PHIU.
Vi vic ci t cc chc nng Nhp, Xut cho mt phiu bt k, ta d dng
chuyn chng thnh s lp. Vi dng ny cn ch ti cc thuc tnh suy din ca
phiu. Thng thng y l cc thuc tnh mang tnh thng k v ta cn tnh gi tr
cho cc thuc tnh ny bng cch thng k cc gi tr ca cc thuc tnh khc (v d
tnh tng s lng ti sn bng cch duyt qua cc ti sn cng v dn s lng).
iu ny rt d b mi ngi b qua do n thng khng c ch v quan tm
ng mc.
Bi 3.1. Vit chng trnh qun l im ca sinh vin vi mi sinh vin c cc
thng tin v: M sinh vin, Tn sinh vin, Lp hc v Mn hc, bit rng mt sinh
vin ch thuc 1 Lp hc v c nhiu mn hc.
Thng tin v Lp hc bao gm: Tn lp, kho. Thng tin v mn hc bao gm:
Tn mn, s trnh, im. Yu cu chng trnh c cc chc nng sau:
- Nhp thng tin cho n sinh vin sao cho mi sinh vin c thng tin.
- In ra danh sch cc sinh vin va nhp gm cc thng tin: m sinh vin, tn sinh
vin, Tn lp, Kho.
- In phiu bo im cho tng sinh vin theo mu:
Phiu Bo im
M sinh vin: SV001.
Lp:
Tin 2
Bng im:
Tn mn
C s d liu
Lp trnh HT
H iu hnh
S trnh
im
4
8
3
7
5
9
im trung bnh:
8.17
Trong im trung bnh = (S trnh * im)/ (S trnh)
#include<iostream.h>
#include<conio.h>
CN: Trn Xun Thc
- 21-
tranxuanthuc.pci@gmail.com
#include<stdio.h>
#include<iomanip.h>
#include<math.h>
class SV
{
char MaSV[10],TenSV[30];
public:
void nhap();
void xuat();
};
class Lop
{
char TenL[30];
int Khoa;
public:
void nhap();
void xuat();
};
class Mon
{
char TenMH[30];
int ST;
int Diem;
public:
void nhap();
void xuat();
friend class Phieu;
};
class Phieu
{
SV a;
Lop b;
int n;
Mon c[100];
public:
void nhap();
void xuat();
};
void SV::nhap()
{
cout<<"Ma sinh vien: ";gets(MaSV);fflush(stdin);
cout<<"Ten sinh vien: ";gets(TenSV);fflush(stdin);
}
void SV::xuat()
{
cout<<"Ma sinh vien: "<<MaSV;
cout<<" Ten sinh vien: "<<TenSV<<endl;
- 22-
tranxuanthuc.pci@gmail.com
}
void Lop::nhap()
{
cout<<"Lop: ";gets(TenL);fflush(stdin);
cout<<"Khoa: ";cin>>Khoa;
}
void Lop::xuat()
{
cout<<"Lop: "<<TenL;
cout<<"
Khoa: "<<Khoa<<endl;
}
void Mon::nhap()
{
cout<<"Ten Mon: ";gets(TenMH);fflush(stdin);
cout<<"So trinh: ";cin>>ST;
cout<<"Diem: ";cin>>Diem;
}
void Mon::xuat()
{
cout<<setw(5)<<TenMH<<setw(10)<<ST<<setw(10)<<Diem<<endl;
}
void Phieu::nhap()
{
a.nhap();
b.nhap();
cout<<"Nhap so mon: ";cin>>n;
for(int i=0;i<n;i++)
c[i].nhap();
}
void Phieu::xuat()
{
cout<<"
PHIEU BAO DIEM
\n";
a.xuat();
b.xuat();
cout<<"Bang diem:\n";
cout<<"Ten mon So trinh Diem\n";
for(int i=0;i<n;i++)
c[i].xuat();
float D=0,TongST=0,DTB;
for(int i=0;i<n;i++)
{
D=D+c[i].ST*c[i].Diem;
TongST=TongST+c[i].ST;
}
DTB=D/TongST;
cout<<"
Diem trung binh: "<<DTB<<endl;
}
- 23-
tranxuanthuc.pci@gmail.com
void main()
{
int n;
Phieu x[100];
cout<<"n= ";cin>>n;
for(int i=0;i<n;i++)
x[i].nhap();
for(int i=0;i<n;i++)
x[i].xuat();
getch();
}
Bi 3.2. Vit chng trnh cho php nhp, xut phiu sau:
PHIU KHM BNH
M phiu: PH01.
Ngy khm: Nguyn Hi H
Tn bnh nhn: Hong H
Gii tnh: Nam Tui: 18
a ch:
Thi Bnh
Tin s bnh: Vim mi d ng
Bc s chn on: inh Th Lan Ni cng tc: Phng khm K- BV Bch Mai
M triu chng
Tn triu chng
TC005
Nhc u vng vt v chiu
TC09
St m v m
TC010
B di khe mt b ph n
Kt lun: Vim xoang cp
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iomanip.h>
class BN
{
char TenBN[30];
char GT[20];
int Tuoi;
char DC[30],TSB[30];
public:
void nhap();
void xuat();
};
class BS
{
char TenBS[30];
char NoiCT[30];
public:
- 24-
tranxuanthuc.pci@gmail.com
void nhap();
void xuat();
};
class TC
{
char MaTC[30];
char TenTC[30];
public:
void nhap();
void xuat();
};
class Phieu
{
char MaP[30],Ngay[30];
BN a;
BS b;
int n;
TC c[100];
char KL[50];
public:
void nhap();
void xuat();
};
void BN::nhap()
{
cout<<"Ten BN: ";gets(TenBN);fflush(stdin);
cout<<"Gioi tinh: ";gets(GT);fflush(stdin);
cout<<"Tuoi: ";cin>>Tuoi;
cout<<"Dia chi: ";gets(DC);fflush(stdin);
cout<<"Tien su benh: ";gets(TSB);fflush(stdin);
}
void BN::xuat()
{
cout<<"Ten benh nhan: "<<TenBN;
cout<<" Gioi tinh: "<<GT;
cout<<" Tuoi: "<<Tuoi<<endl;
cout<<"Dia chi: "<<DC;
cout<<" Tien su benh: "<<TSB<<endl;
}
void BS::nhap()
{
cout<<"Ten BS: ";gets(TenBS);fflush(stdin);
cout<<"Noi cong tac: ";gets(NoiCT);fflush(stdin);
}
void BS::xuat()
{
cout<<"Ten BS: "<<TenBS;
- 25-
tranxuanthuc.pci@gmail.com
PH01.
tranxuanthuc.pci@gmail.com
- 27-
tranxuanthuc.pci@gmail.com
int n;
Taisan c[100];
public:
void nhap();
void xuat();
};
void Nhanvien::nhap()
{
cout<<"Ten NV: ";gets(TenNV);fflush(stdin);
cout<<"Chuc vu: ";gets(CV);fflush(stdin);
}
void Nhanvien::xuat()
{
cout<<"Nhan vien kiem ke: "<<TenNV;
cout<<" Chuc vu: "<<CV<<endl;
}
void Phong::nhap()
{
cout<<"Ten phong: ";gets(TenP);fflush(stdin);
cout<<"Ma phong: ";gets(MaP);fflush(stdin);
cout<<"Truong phong: ";gets(TP);fflush(stdin);
}
void Phong::xuat()
{
cout<<"Kiem ke tai phong: "<<TenP;
cout<<" Ma phong: "<<MaP<<endl;
cout<<"Truong phong: "<<TP<<endl;
}
void Taisan::nhap()
{
cout<<"Ten tai san: ";gets(TenTS);fflush(stdin);
cout<<"So luong: ";cin>>SL;
cout<<"Tinh trang: ";gets(TT);fflush(stdin);
}
void Taisan::xuat()
{
cout<<setw(5)<<TenTS<<setw(15)<<SL<<setw(15)<<TT<<endl;
}
void Phieu::nhap()
{
cout<<"Ma phieu: ";gets(MP);fflush(stdin);
cout<<"Ngay KK: ";gets(Ngay);fflush(stdin);
a.nhap();
b.nhap();
cout<<"n= ";cin>>n;
for(int i=0;i<n;i++)
c[i].nhap();
- 28-
tranxuanthuc.pci@gmail.com
}
void Phieu::xuat()
{
cout<<"
PHIEU KIEM KE TAI SAN
cout<<"Ma phieu: "<<MP;
cout<<" Ngay kiem ke: "<<Ngay<<endl;
a.xuat();
b.xuat();
cout<<"Ten Tai san So luong
Tinh trang\n";
for(int i=0;i<n;i++)
c[i].xuat();
cout<<"So tai san da kiem ke: "<<n;
int TL=0;
for(int i=0;i<n;i++)
TL=TL+c[i].SL;
cout<<" Tong so luong: "<<TL;
}
void main()
{
Phieu x;
x.nhap();
x.xuat();
getch();
}
\n";
Bi 3.4. Vit chng trnh cho php nhp, xut phiu sau:
PHIU XUT SCH
M phiu: PH01.
M khch hng: KH005
a ch: Minh khai
Thng tin sch xut:
M sch
Tn sch
S001
Ton 6
S003
Vn 6
S005
Ting Anh 6
S lng
50
30
10
Tng s tin:
Thnh tin
600000
300000
100000
1000000 VN
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<iomanip.h>
class KH
{
CN: Trn Xun Thc
- 29-
tranxuanthuc.pci@gmail.com
char MaKH[10],TenKH[30],DC[30];
int DT;
public:
void nhap();
void xuat();
};
class Sach
{
char MaS[10],TenS[30];
float Gia;
int SL;
public:
void nhap();
void xuat();
friend class Phieu;
};
class Phieu
{
char MaP[10],Ngay[30];
KH a;
int n;
Sach b[100];
public:
void nhap();
void xuat();
};
void KH::nhap()
{
cout<<"Ma khach hang: ";gets(MaKH);fflush(stdin);
cout<<"Ten khach hang: ";gets(TenKH);fflush(stdin);
cout<<"Dia chi: ";gets(DC);fflush(stdin);
cout<<"So DT: ";cin>>DT;
}
void KH::xuat()
{
cout<<"Ma khach hang: "<<MaKH;
cout<<"
Ten KH: "<<TenKH<<endl;
cout<<"Dia chi: "<<DC;
cout<<"
So DT: "<<DT<<endl;
}
void Sach::nhap()
{
cout<<"Ma sach: ";gets(MaS);fflush(stdin);
cout<<"Ten sach: ";gets(TenS);fflush(stdin);
cout<<"Gia: ";cin>>Gia;
cout<<"So luong: ";cin>>SL;
}
- 30-
tranxuanthuc.pci@gmail.com
void Sach::xuat()
{
cout<<setw(5)<<MaS<<setw(10)<<TenS<<setw(10)<<Gia<<setw(10)<<setw(
10)<<SL;
cout<<setw(10)<<Gia*SL<<endl;
}
void Phieu::nhap()
{
cout<<"Ma phieu: ";gets(MaP);fflush(stdin);
cout<<"Ngay xuat: ";gets(Ngay);fflush(stdin);
a.nhap();
cout<<"nhap so sach: ";cin>>n;
for(int i=0;i<n;i++)
b[i].nhap();
}
void Phieu::xuat()
{
cout<<"
PHIEU XUAT SACH
\n";
cout<<"Ma phieu: "<<MaP;
cout<<"Ngay xuat: "<<Ngay<<endl;
a.xuat();
cout<<" Ma sach Ten sach Gia So luong Thanh tien\n";
for(int i=0;i<n;i++)
b[i].xuat();
int t=0;
for(int i=0;i<n;i++)
t=t+(b[i].Gia * b[i].SL);
cout<<"
Tong thanh tien: "<<t<<" VND";
}
void main()
{
Phieu x;
x.nhap();
x.xuat();
getch();
}
Bi 3.5. Vit chng trnh qun l vic t phng khch sn. Yu cu cc thuc tnh
u t phm vi truy cp private v chng trnh p ng c cc chc nng sau:
- To mt phiu t phng: cho php nhp cc thng tin v m phiu, ngy t,
ngy n (thu), cc thng tin v khch hng, cc thng tin v phng t.
- In ra phiu t phng theo mu sau:
PHIU T PHNG
M phiu: PH01.
M khch hng: KH005
CN: Trn Xun Thc
Ngy t: 01/02/2007
Ngy n: 15/02/2007
Tn KH: Trn Thanh H
- 31-
tranxuanthuc.pci@gmail.com
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iomanip.h>
class KH
{
char MaKH[10],TenKH[30],DC[30];
int CMND;
char NC[30];
public:
void nhap();
void xuat();
};
class Phong
{
char MaP[10],LP[20],Hang[20];
int SN;
public:
void nhap();
void xuat();
friend class Phieu;
};
class Phieu
{
char MP[10],NDat[20],NDen[20];
int DC;
KH a;
int n,i;
Phong b[100];
public:
void nhap();
void xuat();
};
void KH::nhap()
{
cout<<"Ma khach hang: ";gets(MaKH);fflush(stdin);
cout<<"Ten khach hang: ";gets(TenKH);fflush(stdin);
CN: Trn Xun Thc
- 32-
tranxuanthuc.pci@gmail.com
- 33-
tranxuanthuc.pci@gmail.com
int t=0;
for(i=0;i<n;i++)
t=t+ b[i].SN;
cout<<" Tong so nguoi o: "<<t<<endl;
}
void main()
{
Phieu x;
x.nhap();
x.xuat();
getch();
}
IV. CC DNG BI TP KHC
Ngoi vic lm vng cch ci t cc bi tp thng thng, ta cn b xung
thm mt s kin thc ci t cc lp c tnh cht c bit. Cc lp c thm
phng thc ton t l nhng lp thuc loi ny.
1. nh ngha hm ton t theo lp trnh cu trc
a. Phn loi ton t
Mt biu thc c to nn t cc ton t (php ton) v cc ton hng (s
hng). V d biu thc Q = 2*x + b th cc ton t * v + cng vi cc ton hng 2, x
v b c s dng. Cc ton t c th tm chia lm hai loi:
Ton t mt ngi: L nhng ton t thc hin trn mt ton hng. Thuc
loi ny c php ph nh (!), Php tng 1 n v (++), gim mt n v (--), php i
du
Ton t hai ngi: L nhng ton t thc hin trn 2 ton hng. Thuc loi
ny bao gm cc ton t cng (+), tr (-), nhn (*), chia (/).
Trong lp trnh, cc ton t cng, tr, nhn, chia, trn cc ton hng thng
thng c nh ngha sn, ta ch vic s dng. Tuy nhin, mt s ton t trn cc
ton hng c bit li cha c nh ngha. V d: php cng , tr, nhn, chia hai
phn s, php cng, tr, nhn, chia hai s phc .v.v..
Chng ny nhm gip ta cch thc ci t cc php ton cha c nh ngha
trong lp trnh nh vy. Sau khi ci t, ta c th s dng chng nh cc ton t thng
thng.
b. Hm ton t trong lp trnh cu trc.
Ta tr li vi phng php lp trnh cu trc. Khi , mt hm ton t c c
im sau:
- Hm ton t c ci t tng t hm thng thng, ch khc tn hm v
cch s dng.
- Tn hm: c vit theo dng: operator <K hiu ton t>
- C php ca hm:
<Kiu tr v> operator <K hiu ca ton t> (cc i s)
{
CN: Trn Xun Thc
- 34-
tranxuanthuc.pci@gmail.com
Thn hm ton t;
}
V d: Hm ton t cng hai s thc bt k c vit nh sau:
float operator + (float x, float y)
{
return x + y;
}
Cch s dng hm ton t: C hai cch gi mt hm ton t.
Cch 1: gi nh hm thng thng. VD: cng hai s thc a, b ta c th vit:
cout<< Tong cua hai so a va b la << operator+(a,b);
Cch 2: gi nh mt ton t: Ta c th s dng hm ton t nh mt ton t, tc
l ta c th vit:
cout<< Tong cua hai so S1 va S2 la << S1 + S2;
Php cng trn s gi ti hm ton t cng nh ngha.
VD: Mt s phc c dng: <Phn thc> + i * <Phn o>. Cho hai s phc X = a +
i*b v Y = c + i * d. Khi X + Y s cho s phc c dng: X+Y = (a+c) + i * (b + d).
Hy nh ngha hm ton t thc hin cng hai s phc bt k.
typedef struct SP
{
float Phanthuc;
float Phanao;
};
//Dinh nghia ham toan tu cong hai so phuc
SP operator+(SP x, SP y)
{
SP tg;
tg.Phanthuc = x.Phanthuc + y.Phanthuc;
tg.Phanao = x.Phanao + y.Phanao;
return tg;
}
void main()
{
//Khai bao hai so phuc x va y va so phuc tong T
SP x,y, T;
x.Phanthuc = 2; x.Phanao = 3;
y.Phanthuc= 3; y.Phanao = 5;
//Cong hai so phuc va in ket qua len man hinh
T = operator+(x, y); //Co the viet T = x + y
cout<<"Ket qua "<<T.Phanthuc<<"+ i * "<<T.Phanao;
getch();
}
- 35-
tranxuanthuc.pci@gmail.com
- 36-
tranxuanthuc.pci@gmail.com
- 37-
tranxuanthuc.pci@gmail.com
PS PS::operator-(PS y)
{
PS z;
z.TS=TS*y.MS-y.TS*MS;
z.MS=MS*y.MS;
return z;
}
void main()
{
PS x,y,z;
cout<<"PS z: \n";cin>>x;
cout<<x<<endl;
cout<<"PS y: \n";cin>>y;
cout<<y<<endl;
z=x+y;
cout<<"Phep cong: "<<z<<endl;
z=x-y;
cout<<"Phep tru: "<<z<<endl;
getch();
}
Bi 4.2. Php nhn hai phn thc c nh ngha nh sau:
a c ac
x
.
b d bd
- 38-
tranxuanthuc.pci@gmail.com
};
istream & operator>>(istream & x,PS & y)
{
cout<<"Tu so: ";x>>y.TS;
cout<<"Mau so: ";x>>y.MS;
return x;
}
ostream & operator<<(ostream & x,PS & y)
{
x<<y.TS<<"/"<<y.MS<<endl;
return x;
}
PS PS::operator*(PS y)
{
PS z;
z.TS=TS*y.TS;
z.MS=MS*y.MS;
return z;
}
void main()
{
PS x,y,z;
cout<<"Phan so thu nhat:\n";cin>>x;
cout<<x<<endl;
cout<<"Phan so thu hai:\n";cin>>y;
cout<<y<<endl;
z=x*y;
cout<<"Ket qua phep nhan 2 ps: "<<z;
getch();
}
Bi 4.3. Cho hai s phc dng:
SP1 = a1+ i*b1; SP2 = a2+ i*b2;
Php cng, tr hai s phc c nh ngha nh sau:
SP3 = SP1 + SP2 = (a1+a2) + i*(b1+b2);
SP3 = SP1 - SP2 = (a1-a2) + i*(b1-b2);
Hy xy dng lp s phc vi cc thuc tnh Thc, o v cc phng thc:
Phng thc khi to: khi gn phn thc v phn o ca s phc.
Phng thc xut: in gi tr ca s phc ln mn hnh
Phng thc ton t + v - hai s phc.
Xy dng chng trnh chnh s dng lp S phc ni trn.
- 39-
tranxuanthuc.pci@gmail.com
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class SP
{
float T,A;
public:
friend istream & operator>>(istream & x,SP & y);
friend ostream & operator<<(ostream & x,SP & y);
SP operator+(SP y);
SP operator-(SP y);
SP()
{
T=A=0;
}
SP(float x1,float x2)
{
T=x1;A=x2;
}
};
istream & operator>>(istream & x,SP & y)
{
cout<<"Phan thuc: ";x>>y.T;
cout<<"Phan ao: ";x>>y.A;
return x;
}
ostream & operator<<(ostream & x,SP & y)
{
x<<y.T<<"+"<<y.A<<"*i";
return x;
}
SP SP::operator+(SP y)
{
SP z;
z.T=T+y.T;
z.A=A+y.A;
return z;
}
SP SP::operator-(SP y)
{
SP z;
- 40-
tranxuanthuc.pci@gmail.com
z.T=T-y.T;
z.A=A-y.A;
return z;
}
void main()
{
SP x,y,z;
cout<<"SP x: \n";cin>>x;
cout<<x<<endl;
cout<<"SP y: \n";cin>>y;
cout<<y<<endl;
z=x+y;
cout<<"Cong sp: "<<z<<endl;
z=x-y;
cout<<"Tru sp: "<<z<<endl;
getch();
}
Bi 4.4. Xy dng lp ma trn gm cc thuc tnh: float a[100][100] l mt mng hai
chiu cha cc phn t ca ma trn, m, n l cc thuc tnh cha kch thc thc t ca
ma trn v cc phng thc:
Ton t nhp ma trn (>>) v xut (<<): nhp cc gi tr m, n v ma trn a.
Xut ma trn: xut cc gi tr ca ma trn a ln mn hnh.
Phng thc ton t i du ma trn (-): i du tt c cc phn t ca ma
trn.
Xy dng chng trnh chnh trong khai bo mt i tng thuc lp ma trn.
Nhp cc gi tr cho ma trn, i du ma trn v in ma trn i du ra mn hnh.
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
class MT
{
int n,m;
float a[100][100];
public:
friend istream & operator>>(istream & x,MT & y);
friend ostream & operator<<(ostream & x,MT & y);
MT operator-();
};
istream & operator>>(istream & x,MT & y)
{
cout<<"n= ";x>>y.n;
- 41-
tranxuanthuc.pci@gmail.com
cout<<"m= ";x>>y.m;
for(int i=0;i<y.n;i++)
for(int j=0;j<y.m;j++)
{
gotoxy(5+3*j,5+i);
x>>y.a[i][j];
}
return x;
}
ostream & operator<<(ostream & x,MT & y)
{
for(int i=0;i<y.n;i++)
{
for(int j=0;j<y.m;j++)
{
x<<y.a[i][j]<<" ";
}
x<<endl;
}
return x;
}
MT MT::operator-()
{
MT z;
z.n=n;
z.m=m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
z.a[i][j]=-a[i][j];
}
return z;
}
void main()
{
MT y,z;
cout<<"Nhap MT :\n";cin>>y;
z=-y;
cout<<"Doi dau: \n"<<z<<endl;
getch();
}
Bi 4.5. Tng t bi 4.4 nhng thay bng xy dng phng thc ton t i du ma
trn hy xy dng phng thc ton t chuyn v ma trn (Ma trn A gi l chuyn v
ca ma trn A nu A[i][j] = A[j][i]). Phng thc nhp (>>) v xut (<<) ma trn.
Xy dng chng trnh chnh minh ho cch s dng cc phng thc ton t trn.
#include<iostream.h>
CN: Trn Xun Thc
- 42-
tranxuanthuc.pci@gmail.com
#include<stdio.h>
#include<conio.h>
#include<math.h>
class MT
{
int n,m;
float a[100][100];
public:
friend istream & operator>>(istream & x,MT & y);
friend ostream & operator<<(ostream & x,MT & y);
MT operator-();
};
istream & operator>>(istream & x,MT & y)
{
cout<<"n= ";x>>y.n;
cout<<"m= ";x>>y.m;
for(int i=0;i<y.n;i++)
for(int j=0;j<y.m;j++)
{
gotoxy(5+3*j,5+i);
x>>y.a[i][j];
}
return x;
}
ostream & operator<<(ostream & x,MT & y)
{
for(int i=0;i<y.n;i++)
for(int j=0;j<y.m;j++)
{
gotoxy(5+3*j,10+i);
x<<y.a[i][j]<<" ";
}
return x;
}
MT MT::operator-()
{
MT z;
z.n=m;
z.m=n;
- 43-
tranxuanthuc.pci@gmail.com
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
z.a[i][j]=a[j][i];
}
return z;
}
void main()
{
MT y,z;
cout<<"Nhap MT :\n";cin>>y;
z=-y;
cout<<"Ma tran chuyen vi: \n"<<z<<endl;
getch();
}
Bi 4.6. Xy dng lp Tam thc bc hai vi cc thuc tnh l cc h s a, b, c thc v
cc phng thc:
Phng thc khi to: khi gn cc gi tr ca cc h s a, b, c.
Phng thc xut: in tam thc ln mn hnh (c dng ax2+bx+c = 0)
Phng thc ton t i du tam thc: i du cc h s a, b, c. Xy dng
ton t cng hai tam thc theo nh ngha :
(a1x2+b1x+c1=0 ) + (a2x2+b2+c2=0) = (a1+a2)x2+(b1+b2)x+(c1+c2)=0.
Xy dng chng trnh chnh khai bo mt i tng thuc lp Tam thc. Khi
gn gi tr cho cc h s, o du cc h s v in tam thc o du ra mn hnh.
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
class TT
{
float a,b,c;
public:
friend istream & operator>>(istream & x,TT & y);
friend ostream & operator<<(ostream & x,TT & y);
TT operator+(TT y);
- 44-
tranxuanthuc.pci@gmail.com
TT operator-();
};
istream & operator>>(istream & x,TT & y)
{
cout<<"a= ";x>>y.a;
cout<<"b= ";x>>y.b;
cout<<"c= ";x>>y.c;
return x;
}
ostream & operator<<(ostream & x,TT & y)
{
x<<y.a<<"x2+"<<y.b<<"x+"<<y.c<<"=0";
return x;
}
TT TT::operator+(TT y)
{
TT z;
z.a=a+y.a;
z.b=b+y.b;
z.c=c+y.c;
return z;
}
TT TT::operator-()
{
TT z;
z.a=-a;z.b=-b;z.c=-c;
return z;
}
void main()
{
TT x,y,z;
cout<<"Tam thuc 1: \n";cin>>x;
CN: Trn Xun Thc
- 45-
tranxuanthuc.pci@gmail.com
cout<<x<<endl;
cout<<"Tam thuc 2: \n";cin>>y;
cout<<y<<endl;
z=x+y;
cout<<"z= "<<z<<endl;
z=-z;
cout<<"z= "<<z<<endl;
getch();
}
Bi 4.7. Ci t mng mt chiu gm cc phng thc nhp (), xut () v cc
ton t:
Sp mng tng dn (++);
Sp mng gim dn (- -);
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
class Mang
{
int n;
float a[100];
public:
void nhap();
void xuat();
Mang operator++();
Mang operator--();
};
void Mang::nhap()
{
cout<<"n= ";cin>>n;
for(int i=0;i<n;i++)
{
cout<<"a["<<i<<"]= ";
CN: Trn Xun Thc
- 46-
tranxuanthuc.pci@gmail.com
cin>>a[i];
}
}
void Mang::xuat()
{
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}
Mang Mang::operator++()
{
Mang z;
int i,j;
float tg;
z.n=n;
for(i=0;i<n;i++)
z.a[i]=a[i];
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(z.a[j]<z.a[i])
{
tg=z.a[i];
z.a[i]=z.a[j];
z.a[j]=tg;
}
return z;
}
Mang Mang::operator--()
{
Mang z;
int i,j;
float tg;
z.n=n;
CN: Trn Xun Thc
- 47-
tranxuanthuc.pci@gmail.com
for(i=0;i<n;i++)
z.a[i]=a[i];
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(z.a[i]<z.a[j])
{
tg=z.a[i];
z.a[i]=z.a[j];
z.a[j]=tg;
}
return z;
}
void main()
{
Mang x,z;
x.nhap();
z=++x;
cout<<"Mang tang dan:\n";
z.xuat();
z=--x;
cout<<"\nMang giam dan:\n";
z.xuat();
getch();
}
Bi 4.8.
Xy dng cc lp thi gian (TIME) lu tr thi gian gm: Gi, pht, giy.
Thc hin ci t ton t nhp (>>), xut (<<) v cc php ton t +, ++, <
VD:
TIME A(1,59,59), B, C;
Cin>>B
//nhp: 1, 59, 6
C=A+B;
Cout<<C;
//Kq 3h 59m 5s
A++;
//Kq A=2h 0m 0s
If(A<B)
//Kq sai
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
CN: Trn Xun Thc
- 48-
tranxuanthuc.pci@gmail.com
- 49-
tranxuanthuc.pci@gmail.com
- 50-
tranxuanthuc.pci@gmail.com
- 51-
tranxuanthuc.pci@gmail.com
p = & d2;
p->nhap();//van la phuong thuc nhap() cua lop A
p = & d3;
p->nhap();//van la phuong thuc nhap() cua lop A
}
2. Phng thc o v ngha ca phng thc o
Trong nhiu trng hp, ta mong mun:
Khi con tr i tng p thuc lp A ang cha a ch ca mt i tng thuc
lp B hoc C m ta vit: P nhap(); th s truy cp ti phng thc nhap() ca lp B
hoc C.
Mun c nh vy th phng thc nhap() ca 3 lp A, B, C phi l phng thc
o.
Cc phng thc vit theo kiu thng thng u l cc phng thc tnh. Phng
thc nhap() trong v d trn l phng thc tnh.
Cch chuyn phng thc tnh thnh phng thc o:
Cch 1: Thm t kho virtual vo trc phng thc tnh ca c tt c cc lp (c
s v dn xut).
VD: on trnh sau chuyn phng thc tnh nhap() thnh phng thc o:
class A
{
int a;
public:
virtual void nhap()
{
cout<<"Nhap a "; cin>>a;
}
};
class B: public A
{
int b;
public:
virtual void nhap()
{
cout<<" Nhap b "; cin>>b;
}
};
class C: public B
{
int c;
CN: Trn Xun Thc
- 52-
tranxuanthuc.pci@gmail.com
public:
virtual void nhap()
{
cout<<" Nhap c "; cin>>c;
}
};
Cch 2: Ch cn thm t kho virtual vo trc phng thc tnh ca lp c s.
class A
{
int a;
public:
virtual void nhap()
{
cout<<"Nhap a "; cin>>a;
}
};
class B: public A
{
int b;
public:
void nhap()
{
cout<<" Nhap b "; cin>>b;
}
};
class C: public B
{
int c;
public:
void nhap()
{
cout<<" Nhap c "; cin>>c;
}
};
Khi , trong chng trnh chnh, nu p tr ti i tng ca lp no th phng
thc nhap() ca i tng thuc lp s c gi khi ta vit p nhap();
void main()
{
A d1, *p;
B d2;
CN: Trn Xun Thc
- 53-
tranxuanthuc.pci@gmail.com
C d3;
p = & d2;
p->nhap();//phuong thuc nhap() cua lop B duoc goi
p = & d3;
p->nhap();//phuong thuc nhap() cua lop C duoc goi
}
3. Phng thc o v s kt ni ng
Trong v d trn, cng mt li gi phng thc : p nhap(); nhng c th truy
cp ti phng thc o ca lp A hoc B hoc C. Li gi p nhap(); tng ng vi 3
phng thc nhap() khc nhau.
Khi ta s dng phng thc o, r rng l: cng mt con tr thuc lp c s, cng
mt li gi phng thc nhng li gi li tng ng vi nhiu phng thc khc
nhau. Ta gi l s tng ng bi hay tnh a hnh.
Li gi p nhap(); c th kt ni ti phng thc nhap() ca lp A hoc lp B,
hoc lp C. iu c ngha l li gi khng lin kt cng ti mt phng thc
nhap() no m s lin kt l ng.
Nh vy, khi s dng phng thc o th ta c th lin kt ng t mt li gi
phng thc ti nhiu phng thc cng tn, cng b i s. Tnh cht nh vy ca
phng thc o gi l s kt ni ng.
4. V d v s dng phng thc o
Xy dng lp Cy gm cc thuc tnh: Chiu cao, tui, chu vi tn v cc
phng thc:
Phng thc nhp: nhp cc gi tr cho cc thuc tnh ca lp Cy.
Phng thc xut: xut cc gi tr ca cc thuc tnh thuc lp Cy ln mn
hnh.
Xy dng lp Cy cnh, ngoi cc thuc tnh ca lp Cy cn c cc thuc tnh:
Gi thnh, chng loi v cc phng thc:
Phng thc nhp: nhp cc gi tr cho cc thuc tnh ca lp Cy cnh.
Phng thc xut: xut cc gi tr ca cc thuc tnh thuc lp Cy cnh ln
mn hnh.
Vit chng trnh chnh khai bo 2 i tng thuc 2 lp trn v mt con tr thuc
lp Cy. Dng con tr ny nhp, xut cc thuc tnh ca hai i tng trn.
class Cay
{
public:
float Chieucao;
float Dotuoi;
float CVTan;
public:
virtual void nhap()
CN: Trn Xun Thc
- 54-
tranxuanthuc.pci@gmail.com
{
cout<<"Nhap thong tin cho Cay "<<endl;
cout<<"Chieu cao "; cin>>Chieucao;
cout<<"Do tuoi "; cin>>Dotuoi;
cout<<"Chu vi tan "; cin>>CVTan;
}
virtual void xuat()
{
cout<<"Thong tin cua lop Cay "<<endl;
cout<<"Chieu cao: "<<Chieucao<<endl;
cout<<"Do tuoi: "<<Dotuoi<<endl;
cout<<"Chu vi tan: "<<CVTan<<endl;
}
};
class Caycanh: public Cay
{
float Giathanh;
char Chungloai[30];
public:
void nhap()
{
cout<<"Nhap thong tin cho Cay canh"<<endl;
cout<<"Chieu cao "; cin>>Chieucao;
cout<<"Do tuoi "; cin>>Dotuoi;
cout<<"Chu vi tan "; cin>>CVTan;
cout<<"Gia thanh "; cin>>Giathanh;
cout<<"Chung loai "; gets(Chungloai);
}
void xuat()
{
cout<<"Thong tin cua lop Cay Canh "<<endl;
cout<<"Chieu cao: "<<Chieucao<<endl;
cout<<"Do tuoi: "<<Dotuoi<<endl;
cout<<"Chu vi tan: "<<CVTan<<endl;
cout<<"Gia thanh: "<<Giathanh<<endl;
cout<<"Chung loai: "<<Chungloai<<endl;
}
};
void main()
{
- 55-
tranxuanthuc.pci@gmail.com
Cay a, *p;
Caycanh b;
p = &a;
p->nhap();//Nhap cua lop Cay
p=&b;
p->nhap();//Nhap cua lop Caycanh
p=&a;
p->xuat();//Xuat cua lop Cay
p=&b;
p->xuat();//Xuat cua lop Caycanh
getch();
}
5. Lp c s tru tng v cc thnh phn o
Trong nhiu trng hp, ta ch mun dng con tr ca lp c s truy cp ti
cc phng thc o ca cc lp dn xut. Ngoi ra, rt t khi dng con tr lp c s
truy cp ti phng thc o ca chnh lp ny.
Tuy nhin, con tr ca lp c s c th truy cp cc phng thc o ca cc lp
dn xut th lp c s cng phi c phng thc o ny. T y xut hin mt kh
nng: Phng thc o ca lp c s c th ch c nh ngha hnh thc m khng
c dng. Khi thn ca phng thc o ny khng cn c bt c dng lnh no.
Mt phng thc o ca lp c s m trong thn ca n khng thc thi mt lnh
no (tr return) gi l phng thc thun o.
Lp c s c phng thc thun o gi l lp c s tru tng.
Khi thit k phn mm hng i tng, ta lun xc nh c cc lp c th c
trong phn mm v cy th bc th hin s k tha ca cc lp. Ngi ta thng to ra
cc lp c s tru tng, trong c cc phng thc thun o. Nhng phng thc
nh vy khng thc hin mt cng vic no m ch dng to phng thc o cho
cc phng thc cng tn trong cc lp dn xut. T , ch cn khai bo mt con tr
thuc lp c s tru tng ny, ta c th dng con tr truy cp ti cc phng
thc o ca cc lp dn xut. T y, to ra s linh hot trong truy cp cc lp dn
xut.
Phng thc o ch c to ra sau khi hnh thnh i tng, do vy, phng
thc khi to khng th l phng thc o nhng phng thc hu b c th l
phng thc o. Ngoi ra, phng thc ton t cng c th l phng thc o.
u nhc im ca phng thc o:
Chng trnh s dng nhiu phng thc o s linh hot hn trong s truy
cp cc phng thc cng tn ca cc lp dn xut.
Vic thc thi chng trnh s chm hn.
Tn nhiu b nh hn do phi to ra mt bng ch mc ca cc phng thc
o.
- 56-
tranxuanthuc.pci@gmail.com
- 57-
tranxuanthuc.pci@gmail.com
- 58-
tranxuanthuc.pci@gmail.com
- 59-
tranxuanthuc.pci@gmail.com