Xét bài toán quản lý hoá đơn bán hàng. Mỗi hoá đơn có 2 dữ liêu là tên hàng và tiền bán. Sử dụng hàm tạo để tạo ra các hoá đơn, dùng hàm huỷ để bỏ đi (loại đi) các hoá đơn không cần lu trữ, dùng một phơng thức để sửa chữa nội dung hoá đơn (nhập lại tiền bán). Vấn đề đặt ra là sau một số thao tác: Tạo, sửa và huỷ hoá đơn thì tổng số hoá
đơn còn lại là bao nhiêu và tổng số tiền trên các hoá đơn còn lại là bao nhiêu?
Chơng trình dới đây nhằm đáp ứng yêu cầu đặt ra. //CT4_14.CPP
// thanh phan tinh
// Lop HDBH (hoa don ban hang) #include <conio.h> #include <iostream.h> class HDBH { private: char *tenhang ; double tienban ; static int tshd ;
static double tstienban ; public:
HDBH(char *tenhang1=NULL,double tienban1=0.0 ) { tienban=tienban1; tenhang=tenhang1; ++tshd; tstienban += tienban; } ~HDBH() { --tshd; tstienban -= tienban; } void sua(); static void in(); } ;
int HDBH::tshd=0;
double HDBH::tstienban=0; void HDBH::in()
{
cout <<"\n\nTong so hoa don: " << tshd; cout <<"\nTong so tien: " << tstienban; }
void HDBH::sua() {
cout << "\n\nTen hang: " << tenhang; cout << "\nTien ban : " << tienban; tstienban -= tienban;
cout << "\nSua tien ban thanh : " ; cin >> tienban;
tstienban += tienban; }
void main() {
HDBH *h1 = new HDBH("Xi mang",2000); HDBH *h2 = new HDBH("Sat thep",3000); HDBH *h3 = new HDBH("Ti vi",4000); clrscr();
HDBH::in(); getch(); delete h1;
HDBH::in(); getch(); h2->sua(); HDBH::in(); getch(); delete h3; HDBH::in(); getch(); } Đ 10. Mảng đối tợng 10.1. Khai báo
Có thể dùng tên lớp để khai báo mảng đối tợng (giống nh khai báo mảng int, float, char, ...) theo mẫu:
Tên_lớp tên_mảng[kích_cỡ] ;
Ví dụ giả sử đã định nghĩa lớp DIEM (Điểm), khi đó có thể khai báo các mảng đối tợng DIEM nh sau:
DIEM a[10], b[20] ;
ý nghĩa:a là mảng kiểu DIEM gồm 10 phần tử b là mảng kiểu DIEM gồm 20 phần tử
Câu lệnh khai báo mảng sẽ gọi tới hàm tạo không đối để tạo các phần tử mảng. Trong ví dụ trên, hàm tạo đợc gọi 30 lần để tạo 30 phần tử mảng đối tợng.