Bai tap thuc hanh lap trinh huong doi tuong

32 1.3K 3
Bai tap thuc hanh lap trinh huong doi tuong

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài tập nâng cao C++ dành cho người mới bắt đầu. Lập trình hướng đối tượng xu thế phát triển của nhân loại. Full bộ chi tiết câu hỏi, bài giảng đính kèm. aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccdddddddddddddddddddddddđ

TRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP THỰC HÀNH LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Biên soạn: Tôn Quang Toại TP.HỒ CHÍ MINH, 2016 MỤC LỤC NỘI DUNG TRANG BUỔI LỚP VÀ ĐỐI TƯỢNG (1/3) MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Hiểu nguyên tắc (trụ cột đầu tiên) lập trình hướng đối tượng: Đóng gói (Encapsulation) Hiểu cách mô hình đối tượng/lớp đơn giản giới thực thành đối tượng/lớp lập trình Biết Hiểu rõ thành phần lớp a Fields b Constructors c Methods Có kỹ xây dựng lớp đơn giản, với phương thức tính toán đơn giản thông qua ngôn ngữ lập trình C# Bài Xây dựng lớp Account Một tài khoản ngân hàng khách hàng có số thông tin: Mã số tài khoản, số tiền • Khai báo fields • Thêm phương thức constructor để tạo đối tượng tài khoản có thông tin • Thêm phương thức Get/Set cho fields Viết phương thức Main() • Dùng constructor để tạo tài khoản, sau xuất thông tin tài khoản lên hình • Thay đổi số tiền tài khoản, sau xuất lại thông tin tài khoản lên hình Ví dụ: Thong tin tai khoan hien tai: - Ma so tai khoan: 123456 - So tien: 1000000 Trang Thong tin tai khoan sau cap nhat: - Ma so tai khoan: 123456 - So tien: 800000 Bài Xây dựng lớp Book Một sách chứa số thông tin: mã sách, tên sách, giá sách, giảm giá • Khai báo fields • Thêm phương thức constructors để: o Tạo đối tượng sách có mã sách tên sách o Tạo đối tượng sách có đầy đủ thông tin • Thêm phương thức Get/Set cho fields • Thêm phương thức tính giá bán sách, biết rằng: Giá bán sách = Giá sách – Giảm giá Viết phương thức Main() • Dùng constructor để tạo sách • In thông tin sách hình, sau tính xuất giá bán sách • Thay đổi Giảm giá, sau in thông tin sách hình • Tính xuất giá bán sách Ví dụ: Thong tin quyen sach hien tai: - Ma so sach: B1234 - Ten sach: Mindset - Gia sach: 70000 - Giam gia: 7000 Gia ban cua sach: 63000 Thong tin quyen sach sau cap nhat: - Ma so sach: B1234 - Ten sach: Mindset - Gia sach: 70000 - Giam gia: 24000 Gia ban cua sach: 46000 Bài Xây dựng lớp Student Một sinh viên có số thông tin: mã sinh viên, họ tên, năm sinh, địa Trang • Khai báo fields • Thêm constructors để: o Tạo đối tượng có mã sinh viên tên sinh viên o Tạo đối tượng có đầy đủ thông tin • Thêm phương thức Get/Set cho fields • Thêm phương thức tính tuổi sinh viên Viết phương thức Main() dùng constructor để tạo sinh viên, sau in thông tin sinh viên hình tính tuổi sinh viên Ví dụ: Thong tin sinh vien: - Ma sinh vien: TH151234 - Ho ten: Nguyen Van A - Nam sinh: 1997 - Dia chi: 123 Nguyen Trai, P10, Q5, TP.HCM Tuoi cua sinh vien: 19 tuoi Bài Xây dựng lớp Circle Một hình tròn có bán kính r • Khai báo field • Thêm constructors: o Constructor dùng để tạo đối tượng hình tròn có bán kính r o Constructor tham số (còn gọi parameterless constructor hay default constructor) để tạo đối tượng hình tròn • • • • • có bán kính r Thêm phương thức Get/Set cho field Thêm phương thức Input() để nhập thông tin hình tròn từ bàn phím Thêm phương thức Output() để xuất thông tin hình tròn hình Thêm phương thức tính diện tích hình tròn: Thêm phương thức tính chu vi hình tròn: Viết phương thức Main() • Dùng default constructor để tạo hình tròn có giá trị mặc định • Xuất thông tin hình tròn hình • Nhập bán kính khác cho hình tròn từ bàn phím Trang • In thông tin hình tròn nhập, sau tính diện tích chu vi hình tròn Ví dụ: Thong tin hinh tron: Ban kinh r: Nhap hinh tron: Nhap ban kinh r: 16 Thong tin hinh tron: Ban kinh r: 16 Dien tich hinh tron: … Chu vi hinh tron: … Trang BUỔI LỚP VÀ ĐỐI TƯỢNG (2/3) MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Có kỹ sử dụng properties Có kỹ sử dụng lớp xây dựng: a Tạo Mảng đối tượng lớp xây dựng b Tạo Field lớp có kiểu lớp khác Bài Dùng property với lớp Account Trong lớp Account thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu field • Số tiền phải số dương Bài Dùng properties với lớp Book Trong lớp Book thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu fields • Tên sách không chuỗi rỗng • Giá sách phải số dương • Giảm giá không số âm Bài Dùng properties với lớp Student Trong lớp Student thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu fields • Họ tên không chuỗi rỗng • Năm sinh phải số dương • Địa không chuỗi rỗng Bài Dùng properties với lớp Circle Trong lớp Circle thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu field • Bán kính r phải số không âm Trang 10 Bài Sử dụng mảng đối tượng lớp Circle Tạo project mới, sau thêm lớp Circle project vào project Viết phương thức Main() • • • • Khai báo nhập n hình tròn (số n nhập từ bàn phím) Xuất thông tin n hình tròn nhập hình Tính xuất diện tích hình tròn Tìm diện tích lớn n hình tròn Ví dụ: Nhap so duong tron n: Nhap duong tron thu 1: Ban kinh r: Nhap duong tron thu 2: Ban kinh r: Nhap duong tron thu 3: Ban kinh r: 15 duong tron da nhap: Ban kinh r: Ban kinh r: Ban kinh r: 15 Dien Dien Dien Dien tich tich tich tich cua duong duong duong duong tron: tron 1: … tron 2: … tron 3: … Dien tich duong tron lon nhat: … Bài Tạo lớp Color Trên máy tính, màu (color) biểu diễn giá trị red, green, blue (có giá trị từ đến 255) alpha (hay transparency, mức độ suốt màu, có giá trị từ đến 255, với hoàn toàn suốt, 255 đậm đặc) Hãy tạo lớp Color • Thêm instance variables (một cách gọi khác fields) • Thêm constructors Trang 11 o Constructor không tham số (default constructor) để tạo đối tượng cho fields: red, green, blue, alpha có giá trị mặc định 255 (màu trắng) o Constructor có tham số để tạo đối tượng màu có thông tin o Constructor có tham số đối tượng color cho trước Constructor có nhiệm vụ tạo đối tượng màu chép thông tin đối tượng color tham số vào đối tượng tạo (Người ta gọi constructor Copy constructor) public Color() {} public Color(int red, int green, int blue, int alpha) {} public Color(Color color) {} • Thêm properties cho fields với ràng buộc field mô tả • Thêm phương thức tính giá trị mức xám (grayscale) màu (grayscale trung bình red, green, blue) Bài Xây dựng lớp Ball, sử dụng lớp Color làm field Trái banh có fields: kích thước (size hay radius), màu sắc (color) số lần ném banh (timeOfThrown) • Khai báo fields cho Ball (field color nên dùng kiểu Color tạo trước) • Thêm constructors o Constructor không tham số để tạo đối tượng Ball có thông tin mặc định: kích thước 1, số lần ném banh 0, màu màu mặc định o Constructor có tham số để tạo đối tượng có thông tin • Thêm properties cho fields (nhớ ràng buộc liệu hợp lý) • Thêm phương thức Pop (Pop nghĩa mô hình việc làm cho trái banh nổ): Banh nổ nghĩa thay đổi size thành giá trị • Thêm phương thức Throw (Throw nghĩa mô hình việc ném trái banh): Ném banh nghĩa cộng vào số lần ném (nhưng cộng banh chưa bị nổ) • Viết phương thức Input() để nhập thông tin trái banh • Viết phương thức Output() xuất thông tin trái banh Trang 12 Viết phương thức Main() • Khai báo tạo n trái banh có giá trị mặc định (số n nhập từ bàn phím) • Nhập lại thông tin trái banh thứ • Xuất thông tin n trái banh hình (kiểm tra xem liệu có mong đợi không) • Ném trái banh thứ 1, • Cho nổ trái banh thứ nén trái banh thứ • In số lần nén trái banh Trang 13 • Cài đặt default constructor • Cài đặt parameter constructors • Cài đặt properties (Chú ý: lớp Triangle tạo property có tên Base thay Width) • Cài đặt thêm phương thức Area() để tính diện tích hình tương ứng Bài Xây dựng lớp dựa sơ đồ Cho sơ đồ lớp sau Trang 23 • • • • • • Hãy xây dựng lớp thừa kế theo sơ đồ Product có constructor với tham số Software có constructor với tham số Hardware có constructor với tham số Tạo đối tượng Software xuất thông tin đối tượng hình Tạo đối tượng Hardware xuất thông tin đối tượng hình Trang 25 BUỔI ĐA HÌNH (1/2) MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Hiểu nguyên tắc thứ ba (trụ cột thứ ba) lập trình hướng đối tượng: đa hình (polymorphím) - sau đóng gói (encapsulation) thừa kế (inheritance) Có kỹ thực bước xây dựng lớp/phương thức có tính đa hình a Hiểu từ khóa virtual lớp sở b Có kỹ override method lớp dẫn xuất Sử dụng lớp/phương thức có tính đa hình Bài Biết Hiểu bước xây dựng phương thức có tính đa hình Có loại xe (Car): LandRover, Ford, Honda cần mô hình máy tính LandRover Ford Honda Mỗi loại xe tương ứng với lớp: Lớp LandRover, lớp Ford, lớp Honda Mỗi loại xe di chuyển (Move) dùng động khác • Xe LandRover • Xe Ford • Xe Honda : Dùng động 2.0 L engine : Dùng động V engine : Dùng động i-vtec engine Như vậy, lớp có phương thức Move() riêng để xuất hình thông tin động xe dùng Hãy thiết kế lớp viết phương thức Move() lớp cho: Trang 26 - Lúc đầu người dùng tạo danh sách chứa đối tượng (danh sách vừa chứa xe LandRover, vừa chứa xe Ford vừa chứa xe Honda, loại xe tạo nhiều lần) - Với danh sách đối tượng tạo, lệnh Move (Gọi phương thức Move()) cho đối tượng danh sách, đối tượng dùng động tương ứng để di chuyển (yêu cầu, cần xuất hình xe di chuyển động phương thức Move()) Người ta nói, phương thức Move() có tính đa hình Cụ thể, thiết kế lớp viết phương thức Move() cho phương thức Main() hoạt động cho kết sau: static void Main() { Car[] cars = new Car[3]; cars[0] = new LandRover(); cars[1] = new Ford(); cars[2] = new Honda(); foreach (Car car in cars) car.Move(); } Phương thức Move() chạy cho kết quả: Move: LandRover (2.0 L engine) Move: Ford (V engine) Move: Honda (i-vtex engine) Sơ đồ thừa kế: Trang 27 car.Move() gọi Move() lớp LandRover car.Move() gọi Move() lớp Ford car.Move() gọi Move() lớp Honda • Cài đặt sơ đồ thừa kế • Cài đặt phương thức Move() cho phương thức có tính đa hình • Trong phương thức Main(), viết lệnh kiểm tra tính đa hình phương thức Move() mô tả Chú ý: Phương thức Main() viết khác (Dùng collection có tên List) static void Main() { List cars = new List(); cars.Add(new LandRover()); cars.Add(new Ford()); cars.Add(new Honda()); foreach (Car car in cars) car.Move(); } Kết thực lệnh là: Move: LandRover (2.0 L engine) Move: Ford (V engine) Move: Honda (i-vtex engine) Bài Tính đa hình phương thức tính diện tích Area() hình Có loại hình khác cần quản lý: hình chữ nhật (Rectange), hình tròn (Circle) Trang 28 radius o height width • Hình chữ nhật: có chiều cao (height) chiều rộng (width) • Hình tròn: có bán kính radius Diện tích hình tính sau: Yêu cầu: • Hãy thiết kế lớp (vẽ sơ đồ lớp) cho toán cho phương thức tính diện tích Area() hình có tính đa hình (chú ý: lớp sở không cần phải có fields) • Hãy cài đặt sơ đồ lớp cho phương thức tính diện tích Area() hình có tính đa hình • Tạo danh sách chứa số đối tượng Rectangle, Circle (dùng phương thức constructor để tạo đối tượng) • Tính diện tích hình (xuất diện tích hình) • Tính tổng diện tích hình Bài Tính đa hình phương thức nhập (Input())/xuất (Output()) Trong 2, • Viết phương thức nhập liệu Input() cho lớp hình chữ nhật hình tròn cho phương thức có tính đa hình • Viết phương thức xuất liệu Output() cho lớp hình chữ nhật hình tròn cho phương thức có tính đa hình • Trong phương thức Main() o Nhập n hình khác (n nhập từ bàn phím) o Xuất thông tin hình nhập Trang 29 o Tính xuất diện tích hình nhập Tính xuất diện tổng diện tích hình nhập Phương thức Main() hoạt động cho kết có dạng sau: Nhap so hinh n: Nhap hinh thu 1: Loai hinh (Neu hinh chu nhat nhap ‘C’, hinh tron nhap ‘T’): C Height: Width: Nhap hinh thu 2: Loai hinh (Neu hinh chu nhat nhap ‘C’, hinh tron nhap ‘T’): T Radius: Cac hinh da nhap: Hinh chu nhat: Height=3, Width=4 Hình tron: Radius=9 Dien tich hinh chu nhat: … Dien tich hinh tron: … Tong dien tich: … Trang 30 BUỔI ĐA HÌNH (2/2) MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Phân tích, thiết kế toán đơn giản có tính đa hình Sử dụng lớp/phương thức có tính đa hình Bài Tính lương nhân viên Công ty phần mềm TinySoft (cạnh tranh với Microsoft) cần quản lý nhân viên Nhân viên công ty thuộc hai phận: Programmer Tester Thông tin nhân viên gồm: mã nhân viên, họ tên nhân viên Lương hàng tháng phận sau: • Programmer: Mỗi lập trình viên có lương hàng tháng riêng Nếu tháng số lỗi lập trình < 20 tăng thêm 10% lương • Tester: Mỗi nhân viên kiểm thử phần mềm mức lương hàng tháng, nhân viên nhận tiền overtime (gọi tắt OT: tiền làm qua đêm) Số tiền OT số OT nhân với 200.000 đồng Yêu cầu: Hãy viết chương trình nhập n nhân viên tính lương n nhân viên Bài Tính điểm thí sinh Phân tích, thiết kế thực theo hướng đối tượng chương trình tính điểm thi cho thí sinh thi tin học, thông tin Cuộc thi: danh sách thí sinh Cuộc thi giành cho hai đối tượng thí sinh: Chuyên (giành cho thí sinh chưa có giải trước đây) Siêu cúp (giành cho thí sinh đoạt giải trước đây) Biết thí sinh phải làm thi lập trình, riêng đối tượng Chuyên làm thêm thi tiếng Anh (để cộng điểm thêm), đối tượng Siêu cúp phải làm thêm sở liệu (CSDL) Trang 31 • Thông tin chung thí sinh: sbd (số báo danh), hoten (họ tên), bai1, bai2, bai3 (điểm 1, 2, 3), tongdiem (tổng điểm cuối thí sinh) • Thông tin riêng cho đối tượng Chuyên: tiengAnh (điểm tiếng Anh) • Thông tin riêng cho đối tượng Siêu cúp: csdl (điểm CSDL) Kết xét sau: • Thí sinh Chuyên: Tổng thi lập trình + điểm thưởng tiếng Anh xét sau: o 7≤tiengAnh≤8: cộng điểm o 9≤tiengAnh≤10: cộng điểm • Thí sinh Siêu cúp: Tổng điểm thi Yêu cầu: Viết chương trình nhập thông tin thi xuất tổng điểm thi thí sinh Trang 33 BUỔI INTERFACE MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Định nghĩa (khai báo) interface Hiện thực (cài đặt) interface Sử dụng interface Bài Cơ Interface – Interface lớp Một sách (Book) chứa số thông tin: mã sách, tên sách, giá sách, giảm giá Khai báo interface IBook cho sách Trong interface IBook có: • Các properties sách • Phương thức tính giá sách Xây dựng lớp Book thực (cài đặt) interface IBook Chú ý: Phương thức tính giá bán sách tính sau: Giá bán sách = Giá sách – Giảm giá Bài Cơ Interface – Nhiều lớp thực interface thực tính đa hình Lớp Rectangle (hình chữ nhật) có: chiều rộng chiều cao Lớp Cirlce (hình tròn) có: bán kính • Xây dựng interface IShape có phương thức tính diện tích hình • Xây dựng lớp Rectange lớp Circle cài đặt interface IShape Bài Tính lương nhân viên Công ty phần mềm TinySoft cần quản lý nhân viên Nhân viên công ty thuộc hai phận: Programmer Tester Thông tin nhân viên gồm: mã nhân viên, họ tên nhân viên Lương hàng tháng phận sau: Trang 34 • Programmer: Mỗi lập trình viên có lương hàng tháng riêng Nếu tháng số lỗi lập trình < 20 tăng thêm 10% lương • Tester: Mỗi nhân viên kiểm thử phần mềm mức lương hàng tháng, nhân viên nhận tiền overtime (gọi tắt OT: tiền làm qua đêm) Số tiền OT số OT nhân với 200.000 đồng Yêu cầu: • Xây dựng interface chứa phương thức tính lương, lớp abstract chứa thông tin Programmer Tester • Xây dựng lớp Programmer, Tester • Hãy viết chương trình nhập n nhân viên tính lương n nhân viên Trang 35 BUỔI XỬ LÝ NGOẠI LỆ MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Bắt exception Ném exception Hiểu Sử dụng số lớp exception có sẵn Một số lớp exception có sẵn: • • • • • • • • • • NotImplementedException IndexOutOfRangeException InvalidCastException FormatException NotSupportedException NullReferenceException StackOverflowException DivideByZeroException ArgumentNullException ArgumentOutOfRangeException Bài Valid lớp Person Định nghĩa lớp Person có fields: first name, last name, age Validate setters fields, ném exceptions tương ứng trường hợp nhập vào không hợp lệ Cụ thể: • first name, last name null chuỗi empty (Dùng phương thức string.IsNullOrEmpty()) • age nằm Bước 1: Xây dựng lớp Person file Person.cs Trang 36 Bước 2: Thêm Properties validate liệu Với property field firstName: Với property field age: Trang 37 Sinh viên tự làm: • Thêm property cho field lastName validate liệu • Trong constructor nên dùng Properties để khởi tạo fields (thay dùng fields trực tiếp) Bước 3: Test lớp Person Trong phương thức Main tạo số đối tượng Person để kiểm tra lớp Person hoạt động đắn không Trang 38 Bước 4: Thêm khối try … catch để bắt ngoại lệ Sinh viên tự làm: • Bắt ngoại lệ cho đối tượng p3, p4, p5 Bài Bắt ngoại lệ Viết chương trình đọc số nguyên, sau tính in bậc hai số Nếu số nhập vào số âm in "Invalid number" Trong trường hợp nào, cuối in chữ "Good bye" Dùng try-catch-finally Bài Ném ngoại lệ Viết phương thức ReadNumber(int min, int max) nhập số nguyên đoạn Nếu nhập số không hợp lệ chữ phương thức ném exception Dùng phương thức để viết chương trình nhập 10 số: , cho Nếu người dùng nhập số không hợp lệ yêu cầu người dùng nhập lại Trang 39

Ngày đăng: 16/05/2017, 22:30

Từ khóa liên quan

Mục lục

  • BUỔI 1. LỚP VÀ ĐỐI TƯỢNG (1/3)

  • BUỔI 2. LỚP VÀ ĐỐI TƯỢNG (2/3)

  • BUỔI 3. LỚP VÀ ĐỐI TƯỢNG (3/3)

  • BUỔI 4. OPERATOR OVERLOADING

  • BUỔI 5. THỪA KẾ

  • BUỔI 6. ĐA HÌNH (1/2)

  • BUỔI 7. ĐA HÌNH (2/2)

  • BUỔI 8. INTERFACE

  • BUỔI 9. XỬ LÝ NGOẠI LỆ

Tài liệu cùng người dùng

Tài liệu liên quan