Professional Documents
Culture Documents
----------------------------------------------------------
MỤC LỤC
MỤC LỤC.............................................................................................................2
YÊU CẦU BÀI TOÁN..........................................................................................4
CÁC LỚP TRONG BÀI TOÁN............................................................................5
1. LỚP KiTu.....................................................................................................................................5
2. LỚP NotNhac KẾ THỪA LỚP KiTu...............................................................................................5
3. LỚP DauLang KẾ THỪA LỚP KiTu...............................................................................................5
4. LỚP BaiNhac...............................................................................................................................5
5. SƠ ĐỒ CÁC LỚP ĐỐI TƯỢNG.....................................................................................................6
GIẢI QUYẾT YÊU CẦU BÀI TOÁN..................................................................7
1. Soạn một bản nhạc......................................................................................................................7
1.1 Nhập 1 bài nhạc...................................................................................................................7
1.1 Xuất 1 bài nhạc...................................................................................................................7
2. Tìm và đếm có bao nhiêu dấu lặng đen trong bản nhạc................................................................7
3. Cho biết nốt nhạc có cao độ cao nhất, thấp nhất trong bản nhạc.................................................7
CÀI ĐẶT BÀI TOÁN............................................................................................9
1.LỚP KiTu..........................................................................................................................................9
1.1 Constructor.........................................................................................................................9
1.2 Hàm nhap().........................................................................................................................9
1.3 Hàm play().........................................................................................................................10
1.4 Các hàm lấy giá trị..............................................................................................................10
1.5 Hàm checkLangDen()........................................................................................................10
1.6 Hàm hỗ trợ màu sắc...........................................................................................................11
2. LỚP NotNhac............................................................................................................................11
2.1 Constructor........................................................................................................................11
2.2 Hàm nhap()........................................................................................................................12
2.3 Các hàm trả về giá trị.........................................................................................................12
2.4 Hàm play().........................................................................................................................12
2.5 Hàm hỗ trợ playSound(const string& filename)..................................................................13
3. LỚP DauLang............................................................................................................................13
3
3.1 Constructor........................................................................................................................13
3.2 Hàm checkLangDen()........................................................................................................13
3.3 Hàm play().........................................................................................................................14
4. LỚP BaiNhac.............................................................................................................................14
4.1 Constructor và destructor..................................................................................................14
4.2 Hàm thembainhac()...........................................................................................................14
4.3 Hàm demDauLang()..........................................................................................................15
4.4 Hàm getNotecaonhat()......................................................................................................15
4.5 Hàm getNotethapnhat()....................................................................................................16
4.6 Hàm hỗ trợ playbainhaccho(const vector<KiTu*>& bainhac) ngoài lớp BaiNhac................16
4.7 Hàm playbainhac().............................................................................................................16
5. HÀM main()...............................................................................................................................17
CHẠY CHƯƠNG TRÌNH...................................................................................18
4
Áp dụng kiến thức lập trình hướng đối tượng (kế thừa, đa hình) thiết kế sơ đồ chi
tiết các lớp đối tượng và xây dựng chương trình thực hiện các yêu cầu sau:
2. Tìm và đếm có bao nhiêu dấu lặng đen (Q) trong bản nhạc.
3. Cho biết nốt nhạc có cao độ cao nhất, thấp nhất trong bản nhạc.
5
getNotethapnhat():void
playbainhac() const:void
Hàm hỗ trợ ngoài lớp:
playbainhaccho(): void
5. SƠ ĐỒ CÁC LỚP ĐỐI TƯỢNG
Các lớp NotNhac và DauLang được kế thừa các phương thức và các thuộc
tính( được khai báo protected) của lớp KiTu.
Tính kế thừa
Vector <KiTu*> bainhac dùng để quản lí cả hai đối tượng DauLang và NotNhac
trong cùng 1 vector này. Các phương thức có cùng tên gọi nhưng lại có cách sử
dụng khác nhau tùy theo đối tượng.
Tính đa hình
7
- Sau khi vòng lặp kết thúc, nếu hasNote có giá trị false thì sẽ cho biết bài
nhạc chỉ có dấu lăng, ngược lại thì hàm sẽ xuất ra nốt có cao độ cao nhất
- Tương tự với hàm tìm nốt thấp nhất
9
1.1 Constructor
2. LỚP NotNhac
2.1 Constructor
12
3. LỚP DauLang
3.1 Constructor
4. LỚP BaiNhac
5. HÀM main()
18
- Kết quả: Một dãy kí hiệu âm thanh xuất hiện lần lượt cùng âm thanh
được phát ra. Sau đó, chương trình xuất ra số lượng dấu lặng đen, nốt
cao nhất và nốt thấp nhất.