intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hướng đối tượng: Chương 5 - ĐH Ngoại ngữ - Tin học

Chia sẻ: Bautroibinhyen27 Bautroibinhyen27 | Ngày: | Loại File: PPTX | Số trang:59

42
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Lập trình hướng đối tượng - Chương 5: Thừa kế" cung cấp cho người học các kiến thức: Vấn đề tái sử dụng code & các hình thức, lý do thừa kế, lớp cơ sở, lớp dẫn xuất, sử dụng lớp cơ sở, constructor và thừa kế,... Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 5 - ĐH Ngoại ngữ - Tin học

  1. Click to edit Master subtitle style CHƯƠNG 5: THỪA KẾ Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM 1
  2. NỘI DUNG • Vấn đề tái sử dụng code & các hình thức • Lý do thừa kế • Lớp cơ sở • Lớp dẫn xuất • Sử dụng lớp cơ sở • Constructor và thừa kế • Access modifier: protected • Lớp cơ sở của mọi lớp: Lớp object • Lớp sealed và lớp partial 2
  3. Vấn đề tái sử dụng code • Xuất phát từ nhu cầu: – Sử dụng lại những đoạn code có sẵn – Hoặc phát triển thêm từ những code có sẵn mà không phải viết lại từ đầu  Ưu điểm: – Giảm chi phí – Nâng cao khả năng bảo trì và khả năng mô hình hóa 3
  4. Vấn đề tái sử dụng code • Lập trình cấu trúc: chương trình con • OOP: nhiều loại đối tượng có thuộc tính, hành vi tương tự nhau  tái sử dụng các lớp đã viết • Trong một lớp vẫn tái sử dụng phương thức 4
  5. Các hình thức tái sử dụng code Có 3 hình thức: • Sao chép lớp cũ thành 1 lớp khác  Hạn chế: Dư thừa, khó quản lý khi có thay đổi • Kết tập (Aggregation): Lớp mới là tập hợp hoặc sử dụng (không thay đổi) các lớp đã có • Thừa kế (Inheritance): Lớp mới phát triển thêm các thuộc tính hoặc phương thức từ lớp đã có 5
  6. KẾT TẬP (aggregation) 6
  7. Kết tập (Aggregation) • Thành phần lớp mới chứa các đối tượng của lớp cũ – Lớp mới: Lớp chứa/Lớp toàn thể Sử dụng các thuộc tính và phương thức của lớp thành phần thông qua đối tượng – Lớp cũ: Lớp thành phần • Ví dụ: – Lớp cũ: Điểm (Point) – Lớp mới: Tam giác (Triangle) có 3 điểm 7
  8. Ký hiệu quan hệ kết tập Số lượng lớp thành phần trong lớp chứa có thể: • 1 số nguyên dương (1, 2, 3, ...) • Dải số (0..1, 1..n) • Bất kỳ giá trị nào: * • Không ghi: mặc định là 1 8
  9. Ví dụ quan hệ kết tập public class Point { private int x; private int y; //Định nghĩa các phương thức } public class Triangle { Point dinhA; //Đỉnh A Point dinhB; //Đỉnh B Point dinhC; //Đỉnh C //Định nghĩa các phương thức } 9
  10. Bài tập tại lớp • Cài đặt lớp Point và lớp Triangle có chức năng: – Nhập – Xuất – Tính chu vi – Tính diện tích (Mỗi lớp phải có: Property get, set; constructor; kiểm tra ràng buộc nếu có) • Cài đặt lớp ListTriangle chứa danh sách các Triangle có chức năng: nhập, xuất và cho biết thông tin tam giác có diện tích lớn 10
  11. Bài tập ví dụ Xây dựng chương trình trò chơi xúc xắc với cách chơi như sau: • Mỗi xúc xắc sẽ có giá trị ngẫu nhiên từ 1 đến 6 • Quy định số lần gieo xúc xắc • Hai người lần lượt gieo 1 hạt xúc xắc • Sau mỗi lượt gieo, số điểm của lượt đó được tích lũy vào số điểm của người chơi tương ứng • Sau các lượt gieo theo quy định, người thắng cuộc là người có tổng số điểm lớn11
  12. Phát hiện lớp và thông tin của lớp • Xúc xắc (XucXac) – Thuộc tính: giá trị của mặt (giaTri) – Phương thức: sinh ngẫu nhiên giá trị mặt của xúc xắc (SinhGiaTri()) • Người chơi (NguoiChoi) – Thuộc tính: tên (ten), điểm (diem) – Phương thức: gieo xúc xắc (GieoXucXac()) 12
  13. Phát hiện lớp và thông tin của lớp • Trận đấu (TranDau) – Thuộc tính: xúc xắc (xucXac), 2 người chơi (nguoiChoi), số vòng chơi (soVong), người thắng cuộc (nguoiThang) – Phương thức: bắt đầu (BatDau()), kết thúc (KetThuc), hiển thị thông tin (HienThi()), thực hiện trận đấu (ThucHienTranDau()) 13
  14. Sơ đồ lớp 14
  15. public class XucXac private int giaTri; //Định nghĩa Constructor và Property get, set //tại đây … public void SinhGiaTri() { Random random = new Random(); this.giaTri = random.Next(1, 7); }
  16. public class NguoiChoi private String ten; private int diem; //Định nghĩa constructor, property get, set //tại đây ... public void GieoXucXac(XucXac xucXac) { Console.Write("> Nhan Enter …"); Console.ReadLine(); xucXac.SinhGiaTri(); this.diem += xucXac.GiaTri; //get giá trị xucXac Console.Write(" - Diem hien tai = " + this.diem); }
  17. public class TranDau private XucXac xucXac; private NguoiChoi nguoiChoi1; private NguoiChoi nguoiChoi2; private NguoiChoi nguoiThang; private int soVong; //Định nghĩa constructor, property get, set tại đây... public void BatDau() { Console.WriteLine("Tran dau bat dau..."); for (int i = 1; i
  18. public class TranDau public void KetThuc() { int diem1 = nguoiChoi1.Diem; int diem2 = nguoiChoi2.Diem; if (diem1 > diem2) this.nguoiThang = this.nguoiChoi1; else if (diem2 > diem1) this.nguoiThang = this.nguoiChoi2; }
  19. public class TranDau public void HienThi() { Console.WriteLine("*** Ket qua tran dau ***"); Console.WriteLine("- Diem cua {0}: {1}", nguoiChoi1.Ten, nguoiChoi1.Diem); Console.WriteLine("- Diem cua {0}: {1}", nguoiChoi2.Ten, nguoiChoi2.Diem); if (nguoiThang != null) Console.WriteLine("Nguoi thang: " + nguoiThang.Ten); else Console.WriteLine("Tran dau hoa!!!"); } public void ThucHienTranDau() { BatDau(); KetThuc(); HienThi(); }
  20. Bài tập về nhà • Hãy viết lại các lớp trong Bài tập ví dụ trên để thoả yêu cầu sau: – Có thêm thuộc tính soBanThang ghi lại số bàn thắng – Cho biết số ván đấu (>2), nếu người chơi nào thắng quá bán đầu tiên thì sẽ thắng – VD: Giả sử 2 người chơi phải chơi 3 ván đấu. Nếu người chơi nào thắng trước 2 ván thì người chơi đó thắng cả trận đấu – Nếu hòa thì tính điểm để kết luận người thắng 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2