Bài giảng Lập trình hướng đối tượng - Bài 5: Kết tập và kế thừa
lượt xem 3
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 119 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 86 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 103 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn