Bài giảng Lập trình hướng đối tượng: Chương 5 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM
Số trang: 59
Loại file: pdf
Dung lượng: 534.13 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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 đọc những kiến thức như: 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 trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng: Chương 5 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM CHƯƠNG 5: Click to edit Master subtitle style THỪA KẾ Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM 1 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 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 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 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 KẾT TẬP (AGGREGATION) 6 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 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 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 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 nhất 10 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ớn hơn 11 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 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 Sơ đồ lớp 14 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); } 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); } 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 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; } 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 ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng: Chương 5 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM CHƯƠNG 5: Click to edit Master subtitle style THỪA KẾ Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM 1 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 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 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 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 KẾT TẬP (AGGREGATION) 6 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 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 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 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 nhất 10 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ớn hơn 11 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 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 Sơ đồ lớp 14 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); } 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); } 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 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; } 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 ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Lập trình hướng đối tượng Lập trình hướng đối tượng Sử dụng lớp cơ sở Lớp dẫn xuất Tái sử dụng codeGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 272 0 0 -
101 trang 199 1 0
-
14 trang 133 0 0
-
Giáo trình lập trình hướng đối tượng - Lê Thị Mỹ Hạnh ĐH Đà Nẵng
165 trang 112 0 0 -
Giáo trình Lập trình Windows 1 - Trường CĐN Đà Lạt
117 trang 96 0 0 -
Giáo trình Phân tích, thiết kế hướng đối tượng với UML: Phần 1 - Trường ĐH Công nghiệp Quảng Ninh
111 trang 95 0 0 -
265 trang 78 0 0
-
Giáo trình Lập trình hướng đối tượng với Java: Phần 2 - Trần Thị Minh Châu, Nguyễn Việt Hà
141 trang 75 0 0 -
33 trang 68 0 0
-
Ngôn ngữ lập trình C# 2005 - Tập 3: Lập trình hướng đối tượng (Phần 1)
196 trang 51 0 0