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 - Bài 5: Kết tập và kế thừa

Chia sẻ: Nguyên Phương | Ngày: | Loại File: PDF | Số trang:0

74
lượt xem
3
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 - Bài 5: Kết tập và kế thừa" có cấu trúc gồm 3 phần cung cấp cho sinh viên các kiến thức: Tái sử dụng mã nguồn, kết tập, kế thừa. Đây là một tài liệu hữu ích dành cho các bạn sinh viên Công nghệ thông tin và những ai quan tâm đến lĩnh vực này dùng làm tài liệu học tập và nghiên cứu.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng - Bài 5: Kết tập và kế thừa

  1. 8/24/2011 Mục tiêu bài học Bộ môn Công nghệ Phần mềm  Giải thích về khái niệm tái sử dụng mã nguồn Viện CNTT & TT  Chỉ ra được bản chất, mô tả các khái niệm Trường Đại học Bách Khoa Hà Nội liên quan đến đến kết tập và kế thừa  So sánh kết tập và kế thừa Biểu diễn được kết tập và kế thừa trên UML LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG   Giải thích nguyên lý kế thừa và thứ tự khởi Bài 05. Kết tập và kế thừa tạo, hủy bỏ đối tượng trong kế thừa  Á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 Nội dung Nội dung 1. Tái sử dụng mã nguồn 1. Tái sử dụng mã nguồn 2. Kết tập (Aggregation) 2. Kết tập (Aggregation) 3. Kế thừa (Inheritance) 3. Kế thừa (Inheritance) 3 4 1. Tái sử dụng mã nguồn (Re-usability) 1. Tái sử dụng mã nguồn (2)  Các cách sử dụng lại lớp đã có: 5 6 1
  2. 8/24/2011 Ưu điểm của tái sử dụng mã nguồn Nội dung 1. Tái sử dụng mã nguồn 2. Kết tập (Aggregation) 3. Kế thừa (Inheritance) 7 8 2. Kết tập 2.1. Bản chất của kết tập  Ví dụ:  Lớp toàn thể chứa đối tượng của lớp thành phần 9 10 2.2. Biểu diễn kết tập bằng UML Ví dụ 1 4 TuGiac Diem 11 12 2
  3. 8/24/2011 class TuGiac { 2.3. Minh họa trên Java private Diem d1, d2; private Diem d3, d4; public TuGiac(Diem p1, Diem p2, class Diem { Diem p3, Diem p4){ private int x, y; d1 = p1; d2 = p2; d3 = p3; d4 = p4; public Diem(){} } public Diem(int x, int y) { public TuGiac(){ this.x = x; this.y = y; d1 = new Diem(); d2 = new Diem(0,1); } d3 = new Diem (1,1); d4 = new Diem (1,0); public void setX(int x){ this.x = x; } } public int getX() { return x; } public void printTuGiac(){ public void hienThiDiem(){ d1.printDiem(); d2.printDiem(); System.out.print("(" + x + ", " d3.printDiem(); d4.printDiem(); + y + ")"); System.out.println(); } } } 13 14 } Ví dụ khác về Kết tập Game Die … 3 - value : int  Một trò chơi gồm 2 đối thủ, 3 quân súc sắc … + throw() và 1 trọng tài. Player Arbitrator - name : String 2 - name : String - points : int + countingPoints() + throwDie() 15 16 2.4. Thứ tự khởi tạo trong kết tập Nội dung 1. Tái sử dụng mã nguồn 2. Kết tập (Aggregation) 3. Kế thừa (Inheritance) 17 18 3
  4. 8/24/2011 3.1. Tổng quan về kế thừa 3.1.1. Bản chất kế thừa  Ví dụ:  Kế thừa (Inherit, Derive) 19 20 3.1.1. Bản chất kế thừa (2) 3.1.2. Biểu diễn kế thừa trong UML  Lớp con  Là một loại (is-a-kind-of) của lớp cha Mammal Whale Horse 21 22 3.1.3. Kết tập và kế thừa Phân biệt kế thừa và kết tập Kế thừa Kết tập  So sánh kết tập và kế thừa?  Giống nhau?  Khác nhau? 23 24 4
  5. 8/24/2011 3.1.4. Cây phân cấp kế thừa (Inheritance hierarchy) A 3.1.4. Cây phân cấp kế thừa (2)  Siblings B Vehicle Hình C Car Moto Hình hai chiều Hình ba chiều SportCar Compact SportMoto Hình tròn Tứ giác Tam giác Hình cầu Hình lăng trụ Tứ diện 25 26 Lớp Object Lớp Object (2)  Trong gói java.lang 27 28 3.2. Nguyên lý kế thừa 3.2. Nguyên lý kế thừa (2)  Các trường hợp không được phép kế thừa? public Không có protected private Cùng lớp Lớp con cùng gói Lớp con khác gói Khác gói, non-inher 29 30 5
  6. 8/24/2011 public class TuGiac { 3.3. Cú pháp kế thừa trên Java protected Diem d1, d2, d3, d4; public void setD1(Diem _d1) {d1=_d1;} public Diem getD1(){return d1;} public void printTuGiac(){...}  Cú pháp kế thừa trên Java: … Ví dụ: }  class HinhVuong extends TuGiac { public class HinhVuong extends TuGiac { public HinhVuong(){ ... d1 = new Diem(0,0); d2 = new Diem(0,1); } d3 = new Diem(1,0); d4 = new Diem(1,1); } } public class Test{ public static void main(String args[]){ HinhVuong hv = new HinhVuong(); hv.printTuGiac(); } 31 } 32 public class TuGiac { protected Diem d1, d2, d3, d4; public void printTuGiac(){...} Ví dụ 2 public TuGiac(){...} public TuGiac(Diem d1, Diem d2, class Person { Diem d3, Diem d4) { ...} private String name; } private Date bithday; public class HinhVuong extends TuGiac { public String getName() {return name;} public HinhVuong(){ super(); } ... public HinhVuong(Diem d1, Diem d2, } Diem d3, Diem d4){ class Employee extends Person { super(d1, d2, d3, d4); private double salary; } public boolean setSalary(double sal){ } salary = sal; public class Test{ return true; public static void main(String args[]){ } HinhVuong hv = new HinhVuong(); public String getDetail(){ hv.printTuGiac(); String s = name+", "+birthday+", "+salary; } } 33 34 } } Ví dụ 2 Ví dụ 2 (tiếp) class Person { public class Test { protected String name; public static void main(String args[]){ protected Date bithday; Employee e = new Employee(); public String getName() {return name;} e.setName("John"); ... e.setSalary(3.0); } class Employee extends Person { } private double salary; } public boolean setSalary(double sal){ salary = sal; return true; } public String getDetail(){ String s = name+", "+birthday+", "+salary; } 35 36 } 6
  7. 8/24/2011 Ví dụ 3 – Cùng gói Ví dụ 3 – Khác gói public class Person { package abc; Date birthday; public class Person { String name; protected Date birthday; ... protected String name; } ... } public class Employee extends Person { ... import abc.Person; public String getDetail() { public class Employee extends Person { String s; ... String s = name + "," + birthday; public String getDetail() { s += ", " + salary; String s; return s; s = name + "," + birthday + "," + salary; } return s; } } 37 38 } 3.4.1. Tự động gọi constructor của lớp 3.4. Khởi tạo và huỷ bỏ đối tượng cha public class TuGiac {  Khởi tạo đối tượng: protected Diem d1, d2; public class Test { protected Diem d3, d4; public static void public TuGiac(){ main(String arg[]) System.out.println Hủy bỏ đối tượng: {  ("Lop cha TuGiac()"); HinhVuong hv = } new HinhVuong(); //… } } } public class HinhVuong extends TuGiac { public HinhVuong(){ //Tu dong goi TuGiac() System.out.println ("Lop con HinhVuong()"); 39 } 40 } 3.4.2. Gọi trực tiếp constructor của lớp cha Ví dụ public class Test { public static public class TuGiac { Bắt buộc nếu lớp cha không có phương thức void main(String  protected Diem d1, d2; arg[]) khởi tạo mặc định protected Diem d3, d4; public TuGiac(Diem d1, { HinhVuong hv = Diem d2, Diem d3, Diem d4){ new System.out.println("Lop cha TuGiac(d1, d2, d3, d4)"); HinhVuong(); this.d1 = d1; this.d2 = d2; } this.d3 = d3; this.d4 = d4; } } } public class HinhVuong extends TuGiac { public HinhVuong(){ System.out.println ("Lop con HinhVuong()"); 41 } 42 } 7
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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