Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
905,89 KB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH BÁO CÁO SEMINAR LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ĐỀ TÀI: CHƯƠNG TRÌNH BIÊN SOẠN NHẠC Sinh Viên Thực Hiện: Trần Ngọc Long Nguyễn Văn Nam Nguyễn Hoàng Phúc 22520822 22520922 22521127 MỤC LỤC MỤC LỤC YÊU CẦU BÀI TOÁN CÁC LỚP TRONG BÀI TOÁN LỚP KiTu LỚP NotNhac KẾ THỪA LỚP KiTu LỚP DauLang KẾ THỪA LỚP KiTu LỚP BaiNhac 5 SƠ ĐỒ CÁC LỚP ĐỐI TƯỢNG GIẢI QUYẾT YÊU CẦU BÀI TOÁN Soạn nhạc Nhập nhạc 1.1 Xuất nhạc 1.1 Tìm đếm có dấu lặng đen nhạc Cho biết nốt nhạc có cao độ cao nhất, thấp nhạc 7 7 CÀI ĐẶT BÀI TOÁN 1.LỚP KiTu Constructor 1.1 Hàm nhap() 1.2 1.3 Hàm play() 9 Các hàm lấy giá 1.4 trị Hàm checkLangDen() 1.5 1.6 Hàm hỗ trợ màu sắc LỚP NotNhac Constructor 2.1 Hàm nhap() 2.2 2.3 Các hàm trả giá trị Hàm play() 2.4 Hàm hỗ trợ playSound(const string& 2.5 filename) LỚP DauLang 1 1 1 1 2 3 Constructor 13 Hàm checkLangDen() 3.2 13 Hàm play() 3.3 14 LỚP BaiNhac 14 Constructor 4.1 destructor 14 Hàm thembainhac() 4.2 14 Hàm demDauLang() 4.3 15 Hàm getNotecaonhat() 4.4 15 Hàm getNotethapnhat() 4.5 16 Hàm hỗ trợ playbainhaccho(const vector& bainhac) lớp 4.6 BaiNhac 16 Hàm playbainhac() 4.7 16 HÀM main() 17 3.1 CHẠY CHƯƠNG TRÌNH 18 YÊU CẦU BÀI TOÁN Xây dựng chương trình mơ biên soạn nhạc với ký kiệu âm nhạc: + Nốt nhạc: ký hiệu để xác định cao độ (độ cao), trường độ (độ dài, độ ngân vang) âm Có ký hiệu nốt nhạc để xác định cao độ từ thấp đến cao, Đơ (C), Rê (D), Mi (E), Fa (F), Sol (G), La (A), Si (B) +Trường độ: dùng hình nốt để thể hiện: - Nốt trịn có trường độ nốt đen - Nốt trắng có trường độ nốt đen - Nốt đen có trường độ phách (đơn vị thời gian âm nhạc) - Nốt móc đơn có trường độ 1/2 nốt đen - Nốt móc đơi có trường độ 1/4 nốt đen - Nốt móc tam có trường độ 1/8 nốt đen - Nốt móc tứ có trường độ 1/16 nốt đen + Dấu lặng (Z - Zero) ký hiệu cho biết phải ngưng, khơng diễn tấu âm (khơng có cao độ) khoảng thời gian Các dấu lặng thời gian tương ứng (giá trị trường độ) với dạng dấu nhạc nào, có tên gọi tương tự: Trường độ 1/2 1/4 1/8 1/16 Á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 lớp đối tượng xây dựng chương trình thực yêu cầu sau: Soạn nhạc Tìm đếm có dấu lặng đen (Q) nhạc Cho biết nốt nhạc có cao độ cao nhất, thấp nhạc 5 CÁC LỚP TRONG BÀI TOÁN LỚP KiTu Thuộc tính: truongDo: double tenKitu: string Phương thức: nhap() :void :Nhập vào giá trị truongDo play() :void :Xuất kí tự nốt nhạc getCaoDo(): int : trả giá trị mặc định getTruongDo(): double getTenKiTu(): string checkLangDen(): bool : trả giá trị mặc định false getSoundFile(): string : trả tên file âm LỚP NotNhac KẾ THỪA LỚP KiTu Thuộc tính: caoDo: int tenSoundFile: string Phương thức: nhap() :void :viết lại hàm nhap() lớp KiTu(nhập hai caoDo truongDo) gán tenSoundFile tương ứng với tên file âm cao độ nhập play() :void : phát âm với hỗ trợ từ playSound() getSoundFile(): string getCaoDo():int Hàm hỗ trợ lớp playSound() :void :phát âm tương ứng với tenSoundFile LỚP DauLang KẾ THỪA LỚP KiTu Thuộc tính: Khơng có Phương thức: checkLangDen(): bool :viết lại hàm checkLangDen() lớp KiTu, trả giá trị True play(): void : hàm làm chương trình ngủ khoảng thời gian LỚP BaiNhac Thuộc tính: bainhac :vector Phương thức: thembainhac(): void demDauLang() :void getNotecaonhat():void getNotethapnhat():void playbainhac() const:void Hàm hỗ trợ lớp: playbainhaccho(): void SƠ ĐỒ CÁC LỚP ĐỐI TƯỢNG Các lớp NotNhac DauLang kế thừa phương thức thuộc tính( khai báo protected) lớp KiTu Tính kế thừa Vector bainhac dùng để quản lí hai đối tượng DauLang NotNhac vector Các phương thức có tên gọi lại có cách sử dụng khác tùy theo đối tượng Tính đa hình GIẢI QUYẾT U CẦU BÀI TOÁN Soạn nhạc 1.1 Nhập nhạc - Hàm main() gọi hàm thembainhac() lớp bainhac Người dùng chọn có lựa chọn + Nhập NotNhac: hàm Nhập , tạo đối tượng NotNhac đưa vào vector KiTu + Nhập DauLang: gọi hàm Nhập , tạo đối tượng DauLang đưa vào vector KiTu +Phát nhạc : hàm kết thúc, khơng tiếp tục đưa lựa chọn nhập vào cac NotNhac DauLang 1.1 Xuất nhạc Hàm main() gọi hàm playbainhac() lớp bainhac Hàm kết thúc vector bainhac rỗng Nếu không rỗng hàm gọi hàm playbainhaccho(const vector& bainhac) để vừa phát âm thanh, vừa xuất kí hiệu âm Tìm đếm có dấu lặng đen nhạc Hàm main() gọi hàm demdaulang() lớp bainhac Nếu vector bainhac rỗng hàm kết thúc Nếu vector bainhac khơng rỗng vịng lặp for duyệt q phần tử vector bainhac để kiểm tra dấu lặng đen Nếu có, biến countlangden tăng thêm Khi vịng lặp kết thúc, xuất giá trị biến countlangden tương ứng với số dấu lặng đen nhạc Cho biết nốt nhạc có cao độ cao nhất, thấp nhạc Hàm main() gọi hàm getNotecaonhat() lớp bainhac Nếu vector bainhac rỗng hàm kết thúc Nếu khơng hàm tạo biến hasNote có kiểu bool (dùng để kiểm tra xem bainhac có nốt nhạc hay không), biến max gán -1 biến temp(vị trí kí hiệu vector bainhac) gán Một vòng lặp for duyệt qua phần tử vector bainhac Nếu cao độ 0( Dấu Lặng) chuyển sang vịng lặp Nếu cao độ khác lớn max gán cao độ cho max, lưu lại vị trí kí hiệu vào biến temp, đồng thời thay đổi giá trị hasNote sang true 8 Sau vịng lặp kết thúc, hasNote có giá trị false cho biết nhạc có dấu lăng, ngược lại hàm xuất nốt có cao độ cao Tương tự với hàm tìm nốt thấp CÀI ĐẶT BÀI TOÁN 1.LỚP KiTu 1.1 Constructor 1.2 Hàm nhap() 10 1.3 Hàm play() 1.4 Các hàm lấy giá trị 1.5 Hàm checkLangDen() 11 1.6 Hàm hỗ trợ màu sắc LỚP NotNhac 2.1 Constructor 12 2.2 Hàm nhap() 2.3 Các hàm trả giá trị 2.4 Hàm play() 13 2.5 Hàm hỗ trợ playSound(const string& filename) LỚP DauLang 3.1 Constructor 3.2 Hàm checkLangDen() 14 3.3 Hàm play() LỚP BaiNhac 4.1 Constructor destructor 4.2 Hàm thembainhac() 15 4.3 Hàm demDauLang() 4.4 Hàm getNotecaonhat() 16 4.5 Hàm getNotethapnhat() 4.6 Hàm hỗ trợ playbainhaccho(const vector& bainhac) lớp BaiNhac 4.7 Hàm playbainhac() 17 HÀM main() 18 CHẠY CHƯƠNG TRÌNH - Nhập vào Note: - Nhập vào dấu lặng - Nhập liên tục nốt nhạc dấu lặng 19 Kết quả: Một dãy kí hiệu âm xuất âm phát Sau đó, chương trình xuất số lượng dấu lặng đen, nốt cao nốt thấp - Đếm số dấu lặng đen: - Xuất nốt có cao độ lớn thấp - Phát lại nhạc