Xem mẫu

  1. om Bộ môn Công nghệ Phần mềm .c Viện CNTT & TT ng Trường Đại học Bách Khoa Hà Nội co an th ng LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG o du Bài 06. Kết tập và kế thừa u cu CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. Mục tiêu bài học om ◼ Giải thích về khái niệm tái sử dụng mã nguồn .c ◼ Chỉ ra được bản chất, mô tả các khái niệm ng liên quan đến đến kết tập và kế thừa co So sánh kết tập và kế thừa an ◼ th Biểu diễn được kết tập và kế thừa trên UML ng ◼ o Giải thích nguyên lý kế thừa và thứ tự khởi du ◼ tạo, hủy bỏ đối tượng trong kế thừa u cu ◼ Áp dụng các kỹ thuật, nguyên lý về kết tập và kết thừa trên ngôn ngữ lập trình Java 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  3. Nội dung om 1. Tái sử dụng mã nguồn .c 2. Kết tập (Aggregation) ng Kế thừa (Inheritance) co 3. an 4. Ví dụ và bài tập th o ng du u cu 3 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  4. Nội dung om 1. Tái sử dụng mã nguồn .c 2. Kết tập (Aggregation) ng Kế thừa (Inheritance) co 3. an 4. Ví dụ và bài tập th o ng du u cu 4 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  5. 1. Tái sử dụng mã nguồn (Re-usability) om ◼ Tái sử dụng mã nguồn: Sử .c dụng lại các mã nguồn đã ng viết co Lập trình cấu trúc: Tái sử dụng an ◼ hàm/chương trình con th ng ◼ OOP: Khi mô hình thế giới thực, o du tồn tại nhiều loại đối tượng có các thuộc tính và hành vi tương u cu tự hoặc liên quan đến nhau ◼ → Làm thế nào để tái sử dụng lớp đã viết? 5 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  6. 1. Tái sử dụng mã nguồn (2) om ◼ Các cách sử dụng lại lớp đã có: .c ◼ Sao chép lớp cũ thành 1 lớp khác → Dư thừa và ng khó quản lý khi có thay đổi co Tạo ra lớp mới là sự tập hợp hoặc sử dụng các an ◼ đối tượng của lớp cũ đã có → Kết tập (Aggregation) th o ng Tạo ra lớp mới trên cơ sở phát triển từ lớp cũ đã du ◼ có → Kế thừa (Inheritance) u cu 6 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  7. Ưu điểm của tái sử dụng mã nguồn om ◼ Giảm thiểu công sức, chi phí .c ◼ Nâng cao chất lượng phần ng mềm co Nâng cao khả năng mô hình an ◼ hóa thế giới thực th ng Nâng cao khả năng bảo trì o du ◼ (maintainability) u cu 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  8. Nội dung om 1. Tái sử dụng mã nguồn .c 2. Kết tập (Aggregation) ng Kế thừa (Inheritance) co 3. an 4. Ví dụ và bài tập th o ng du u cu 8 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  9. 2. Kết tập om ◼ Ví dụ: .c ◼ Điểm ng Tứ giác gồm 4 điểm co ◼ → Kết tập an Kết tập th ◼ ng ◼ Quan hệ chứa/có ("has- o du a") hoặc là một phần u (is-a-part-of) cu 9 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  10. 2.1. Bản chất của kết tập om ◼ Kết tập (aggregation) .c ◼ Tạo ra các đối tượng của các lớp có sẵn trong ng lớp mới → thành viên của lớp mới. co Kết tập tái sử dụng thông qua đối tượng an ◼ th ◼ Lớp mới ng Lớp toàn thể (Aggregate/Whole), o ◼ du ◼ Lớp cũ u cu ◼ Lớp thành phần (Part). 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  11. 2.1. Bản chất của kết tập (2) om ◼ Lớp toàn thể chứa đối tượng .c của lớp thành phần ng Là một phần (is-a-part of) của co ◼ lớp toàn thể an Tái sử dụng các thành phần dữ th ◼ ng liệu và các hành vi của lớp thành o phần thông qua đối tượng thành du phần u cu 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  12. 2.2. Biểu diễn kết tập bằng UML om ◼ Sử dụng "hình thoi" tại đầu của lớp toàn thể .c Sử dụng bội số quan hệ ng ◼ (multiplicity) tại 2 đầu co ◼ 1 số nguyên dương: 1, 2,... an th ◼ Dải số (0..1, 2..4) ng ◼ *: Bất kỳ số nào o du ◼ Không có: Mặc định là 1 u ◼ Tên vai trò (rolename) 1 4 cu TuGiac Diem ◼ Nếu không có thì mặc định là tên của lớp (bỏ viết hoa chữ cái đầu) 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  13. Ví dụ om .c ng co an th o ng du u cu 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  14. 2.3. Minh họa trên Java om class Diem { private int x, y; .c public Diem(){} ng public Diem(int x, int y) { co this.x = x; this.y = y; an } th public void setX(int x){ this.x = x; } ng public int getX() { return x; } o du public void printDiem(){ System.out.print("(" + x + ", " + y + ")"); u cu } } 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  15. class TuGiac { 1 4 private Diem d1, d2; TuGiac Diem private Diem d3, d4; public TuGiac(Diem p1, Diem p2, om Diem p3, Diem p4){ .c d1 = p1; d2 = p2; d3 = p3; d4 = p4; ng } co public TuGiac(){ an d1 = new Diem(); d2 = new Diem(0,1); th d3 = new Diem (1,1); d4 = new Diem (1,0); ng } o du public void printTuGiac(){ u d1.printDiem(); d2.printDiem(); cu d3.printDiem(); d4.printDiem(); System.out.println(); } 15 } CuuDuongThanCong.com https://fb.com/tailieudientucntt
  16. public class Test { public static void main(String arg[]) { om Diem d1 = new Diem(2,3); .c Diem d2 = new Diem(4,1); Diem d3 = new Diem (5,1); ng Diem d4 = new Diem (8,4); co an TuGiac tg1 = new TuGiac(d1, d2, d3, d4); TuGiac tg2 = new TuGiac(); th tg1.printTuGiac(); ng tg2.printTuGiac(); o } du } u cu 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  17. Cách cài đặt khác 1 4 TuGiac Diem om class TuGiac { private Diem[] diem = new Diem[4]; .c public TuGiac(Diem p1, Diem p2, ng Diem p3, Diem p4){ co diem[0] = p1; diem[1] = p2; an th diem[2] = p3; diem[3] = p4; ng } o public void printTuGiac(){ du diem[0].printDiem(); diem[1].printDiem(); u cu diem[2].printDiem(); diem[3].printDiem(); System.out.println(); } } 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  18. 2.4. Thứ tự khởi tạo trong kết tập om ◼ Khi một đối tượng được tạo mới, các thuộc .c tính của đối tượng đó đều phải được khởi tạo ng và gán những giá trị tương ứng. co ◼ Các đối tượng thành phần được khởi tạo an th trước ng → Các phương thức khởi tạo của các lớp của o du các đối tượng thành phần được thực hiện u cu trước 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  19. Nội dung om 1. Tái sử dụng mã nguồn .c 2. Kết tập (Aggregation) ng Kế thừa (Inheritance) co 3. an 4. Ví dụ và bài tập th o ng du u cu 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  20. 3.1. Tổng quan về kế thừa om ◼ Ví dụ: .c ◼ Điểm ng ◼ Tứ giác gồm 4 điểm co → Kết tập an th ◼ Tứ giác ng ◼ Hình vuông o du → Kế thừa u cu 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt
nguon tai.lieu . vn