Bài giảng Lập trình hướng đối tượng - Chương 1: Lập trình hướng đối tượng
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 1: Lập trình hướng đối tượng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_lap_trinh_huong_doi_tuong_chuong_1_lap_trinh_huong.pdf
Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 1: Lập trình hướng đối tượng
- Object-oriented programming is a method of implementation in which programs are organized as cooperative collections of objects, each of which represents an instance of some class, and whose classes are all members of a hierarchy of classes united via inheritance relationships. (Grady Booch et al) Chương 1 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CT176 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- Nội dung 1. Lịch sử của Ngôn ngữ lập trình 2. Lập trình hướng đối tượng (OOP) 3. Các khái niệm quan trọng 4. Các đặc điểm của OOP CT176 – Lập trình Hướng đối tượng 2
- ² Mở đầu Mở đầu • Lập trình Hướng đối tượng (Object-Oriented Programming) Cổ điển Hướng thủ tục Hướng đối tượng CT176 – Lập trình Hướng đối tượng 3
- ² Mở đầu Máy tính & Ngôn ngữ lập trình • Máy tính: Trung gian diễn đạt tư duy con người. ⇒ Kém giống máy và giống nhiều hơn tư duy của con người. • Ngôn ngữ lập trình: Trừu tượng hóa (abstraction). SORT(StudentList); ADD.L d1, d2 WINDOW.SHOW(); MOV AX, BX 0110 1010 0010 CT176 – Lập trình Hướng đối tượng 4
- ² Mở đầu Trừu tượng hóa (Abstraction) CT176 – Lập trình Hướng đối tượng 5
- ² Mở đầu Trừu tượng hóa (Abstraction) CT176 – Lập trình Hướng đối tượng 6
- ² Mở đầu Trừu tượng hóa (Abstraction) CT176 – Lập trình Hướng đối tượng 7
- ² Lịch sử ngôn ngữ lập trình Ngôn ngữ máy & hợp ngữ • Ngôn ngữ máy: § Là các lệnh/chỉ thị của các bộ xử lý của máy tính. § Là dãy các giá trị nhị phân 0, 1 § Không gần với ngôn ngữ của con người ⇒ khó hiểu, khó nhớ! • Hợp ngữ: § Trừu tượng hóa cho ngôn ngữ máy nền tảng. § Các lệnh máy dưới dạng các dãy số 0, 1 được ký hiệu bằng các chỉ thị gần với ngôn ngữ con người. Trong giai đoạn này, máy tính được sử dụng chủ yếu để tính toán. CT176 – Lập trình Hướng đối tượng 8
- ² Lịch sử ngôn ngữ lập trình Ngôn ngữ lập trình cấp cao • Còn được gọi là ngôn ngữ ra lệnh: § Trừu tượng hóa cho hợp ngữ. § Vẫn đòi hỏi người lập trình suy nghĩ dưới dạng cấu trúc máy tính (do chưa đủ công cụ khái niệm để biểu diễn “thế giới thật” một cách gần gũi). ⇒ Người lập trình phải thiết lập mối quan hệ giữa mô hình máy (trong không gian giải quyết vấn đề - máy tính) và mô hình của vấn đề (không gian của vấn đề - thế giới thật). Trong giai đoạn này, máy tính bắt đầu được sử dụng để giải quyết nhiều vấn đề trong thế giới thật CT176 – Lập trình Hướng đối tượng 9
- ² Lịch sử ngôn ngữ lập trình Ngôn ngữ lập trình HĐT • Lập trình Hướng đối tượng: § Cung cấp các công cụ (khái niệm) cho phép người lập trình mô hình hóa thế giới thật trong không gian giải quyết vấn đề một cách dễ dàng. § Mô hình mà Lập trình hướng đối tượng chọn lựa là biểu diễn vấn đề trong không gian giải pháp như các “sự vật” hay “đối tượng” (object). § Đây là một sự trừu tượng hóa mạnh mẽ và linh họat vì bản chất của thế giới là sự tương tác giữa các “sự vật”. ⇒ Nó cho phép mô tả vấn đề dưới dạng vấn đề, thay vì dưới dạng máy tính (nơi giải pháp sẽ chạy) CT176 – Lập trình Hướng đối tượng 10
- ² Lịch sử ngôn ngữ lập trình Ngôn ngữ lập trình HĐT • Ý tưởng chủ đạo của OOP là các sự vật: § Chương trình là một tập các sự vật tương tác lẫn nhau. § Sự vật trong OOP là sự tái hiện của các sự vật trong thế giới thật: Mỗi sự vật có những đặc tính (properties/ characteristics) và khả năng (capacities) riêng. CT176 – Lập trình Hướng đối tượng 11
- ² Lịch sử ngôn ngữ lập trình Lịch sử của OOP • OOP là phương pháp lập trình chính hiện nay: § Simula 1967, Smalltalk 1972 § Giữa thập niên 90’s, OOP mới bắt đầu được chú ý và sử dụng rộng rãi. § Hầu hết các ngôn ngữ lập trình hiện đại đều hướng đối tượng: C++, Java, .NET, (Dr. Alan Kay, cha đẻ của Smalltalk đã nhận được ACM Turing Award năm 2003) CT176 – Lập trình Hướng đối tượng 12
- ² Phương pháp Lập trình Hướng đối tượng Lập trình cổ điển vs. OOP • Lập trình cổ điển: typedef struct { char *mssv; char *hoten; float diemTB; Cấu trúc dữ liệu } Sinhvien; Sinhvien *dssv1, *dssv2; void sapxep(Sinhvien *) { } void luu(Sinhvien *, char *) { } void nhap(Sinhvien *) { } Giải thuật void main() { nhap(dssv1); sapxep(dssv2); } CT176 – Lập trình Hướng đối tượng 13
- ² Phương pháp Lập trình Hướng đối tượng Lập trình cổ điển vs. OOP • Lập trình Hướng đối tượng: mssv nhapTT() hoten hienthi() diemTB luu() SINHVIEN sapxep() nhapDS() malop nhapDS() siso hienthiDS() luuDS() luuDS() sapxep() LOP(DSSV) CT176 – Lập trình Hướng đối tượng 14
- ² Phương pháp Lập trình Hướng đối tượng Lập trình cổ điển vs. OOP CT176 – Lập trình Hướng đối tượng 15
- ² Phương pháp Lập trình Hướng đối tượng Tại sao phải OOP? • Liên kết chặt chẽ giữa dữ liệu và thao tác (hàm) của một đối tượng. ⇒ Cho phép ta tập trung vào bản chất của vấn đề hơn là các chi tiết bên trong vấn đề. • Các dữ liệu và hàm được “bao gói” trong một đối tượng ⇒ Có thể che dấu được những dữ liệu cần thiết, hoặc chỉ cho phép truy xuất thông qua các hàm. STACK P int P int U O int a[100]; S P int *a; H CT176 – Lập trình Hướng đối tượng 16
- ² Phương pháp Lập trình Hướng đối tượng Đặc trưng của OOP • Trong OOP, vấn đề (chương trình) được mô hình hóa như là tập hợp của các đối tượng hoạt động cộng tác với nhau: § Chương trình: tương tác của nhóm các đối tượng § Tương tác giữa các đối tượng: là sự hoạt động của từng đối riêng rẽ, thông qua việc gửi các thông điệp/yêu cầu cho nhau. CT176 – Lập trình Hướng đối tượng 17
- ² Phương pháp Lập trình Hướng đối tượng Đặc trưng của OOP • Trong OOP, các đối tượng có thể được “nhân hóa”. Ví dụ, một “cái cửa” có thể tự mở, một “menu” có thể tự “hiển thị”, • Tuy nhiên, các đối tượng phải được “yêu cầu” khi nào cần thực hiện thao tác gì bởi các đối tượng khác (thụ động) ⇒ Các đối tượng trong chương trình phải “hợp tác” với nhau để giải quyết một vấn đề. CT176 – Lập trình Hướng đối tượng 18
- ² Phương pháp Lập trình Hướng đối tượng Đặc trưng của OOP • Trong OOP, đối tượng thể hiện sự trừu tượng hóa: § Nó là một “hộp đen”: che dấu đi những chi tiết không cần thiết. § Cho phép người lập trình điều khiển được sự phức tạp của vấn đề: chỉ chú ý vào các đặc tính “bản chất” của đối tượng. Tiếp cận từ dưới lên CT176 – Lập trình Hướng đối tượng 19
- ² Phương pháp Lập trình Hướng đối tượng Đặc trưng của OOP 1. Mọi thứ đều là sự vật. 2. Chương trình là một nhóm các sự vật “nói chuyện” với nhau bằng việc gửi các thông báo cho nhau. 3. Mỗi sự vật đều có bộ nhớ riêng, được tạo nên từ các sự vật khác. 4. Mọi sự vật đều có kiểu (lớp). 5. Tất cả các sự vật cùng kiểu (lớp) đều có thể nhận cùng thông báo. (Thinking in Java) CT176 – Lập trình Hướng đối tượng 20
- ² Phương pháp Lập trình Hướng đối tượng Đối tượng (object) • Đây là khái niệm quan trọng nhất trong OOP: Trong OOP, mọi thứ đều là đối tượng. • Là một thực thể được sử dụng bởi máy tính, là “cái mà ứng dụng muốn đề cập đến”. • Mô tả cho một sự vật hoặc khái niệm trong thực tế. Một đối tượng có thể là: § Một đối tượng thật (real object). § Một đối tượng khái niệm (conceptual object). § Một đối tượng phần mềm (software object). CT176 – Lập trình Hướng đối tượng 21
- ² Phương pháp Lập trình Hướng đối tượng Đối tượng (object) • Đối tượng thế giới thật: Là một đối tượng cụ thể mà ta có thể sờ, nhìn thấy hay cảm nhận được. § Ví dụ: cái đồng hồ, chiếc xe, con chó, • Đối tượng khái niệm: Đây thực sự là những khái niệm, những quá trình (process) trong thực tế được trừu tượng hóa thành các đối tượng. § Ví dụ: Ngày tháng (Date), chuỗi, hình tròn, CT176 – Lập trình Hướng đối tượng 22
- ² Phương pháp Lập trình Hướng đối tượng Đối tượng (object) • Mỗi đối tượng có hai thành phần: § Thuộc tính (property, attribute): mô tả các đặc điểm, trạng thái của đối tượng. § Hành vi (behavior, method): mô tả các thao tác, các hoạt động mà đối tượng có thể thực hiện (thể hiện “khả năng”, “chức năng” của một đối tượng) • Ngoài ra, một đối tượng còn có một định danh (object identifier) dùng để phân biệt giữa các đối tượng. CT176 – Lập trình Hướng đối tượng 23
- ² Phương pháp Lập trình Hướng đối tượng Đối tượng (object) CT176 – Lập trình Hướng đối tượng 24
- ² Phương pháp Lập trình Hướng đối tượng Đối tượng (object) Sự vật Thuộc tính Hành vi Ví dụ Con chó Tên: Mino Sủa Màu sắc: Xám Ăn Giống: Nhật Chạy Trạng thái: Vui vẻ Cắn PUSH STACK A P int P int Stack A List 2 5 1 POP U O int a[100]; S P Empty: NO. H Bóng đèn Nhãn hiệu: ABC Bật Màu: Xanh Tắt Trạng thái: Mở Sáng Loại: Đèn bàn Mờ CT176 – Lập trình Hướng đối tượng 25
- ² Phương pháp Lập trình Hướng đối tượng Lớp (class) • Còn được gọi là loại/kiểu của đối tượng. • Lớp là một khuôn mẫu để tạo ra các đối tượng cùng kiểu. • Lớp định nghĩa các thuộc tính và phương thức (hành vi) chung cho tất cả các đối tượng cùng lớp. • Một đối tượng được gọi là một thể hiện (instance) của một lớp và giá trị thuộc tính của chúng có thể khác nhau. CT176 – Lập trình Hướng đối tượng 26
- ² Phương pháp Lập trình Hướng đối tượng Lớp (class) Mino Lớp Thuộc tính Hành vi Chó Chó Tên Sủa Màu sắc Ăn Lulu Giống Chạy Trạng thái Cắn Bóng đèn Nhãn hiệu Bật Màu Tắt ĐQ A123 Trạng thái Sáng Pana P124 Loại Mờ Đèn Xe ôtô Nhãn hiệu Chạy Màu sắc Dừng Ferrari 458 Giá Tăng tốc Ôtô Hộp số Giảm tốc Tốc độ Chavrolet Cruze CT176 – Lập trình Hướng đối tượng 27
- ² Phương pháp Lập trình Hướng đối tượng Lớp (class) CT176 – Lập trình Hướng đối tượng 28
- ² Phương pháp Lập trình Hướng đối tượng Thuộc tính và phương thức • Thuộc tính: Mô tả trạng thái của một đối tượng ⇒ Bao gồm: tên và kiểu • Phương thức: Thể hiện cho khả năng của một đối tượng có thể thực hiện được những hành vi gì? ⇒ Bao gồm: tên, đối số và nội dung. Lớp Thuộc tính Hành vi Xe ôtô Nhãn hiệu: chuỗi. Chạy { } Màu sắc: chuỗi. Dừng {tốc độ = 0; } Giá: số thực. Tăng tốc(km/h) {tốc độ += km/h; } Hộp số: số nguyên. Giảm tốc(km/h) {tốc độ -= km/h; } Tốc độ: số nguyên. CT176 – Lập trình Hướng đối tượng 29
- ² Phương pháp Lập trình Hướng đối tượng Hàm và việc truyền thông điệp • Trong một chương trình OOP, các đối tượng hoạt động cộng tác với nhau thông qua việc truyền thông điệp cho nhau. • Thông điệp (message): là một yêu cầu thực hiện một thao tác, hoạt động. Gồm có: § Tên thông điệp (tên của phương thức). § Các tham số của thông điệp (tham số của pthức) • Truyền thông điệp: gửi thông điệp đến đối tượng được yêu cầu. Bao gồm: § Đối tượng cần nhận thông điệp. § Thông điệp Car1 CT176 – Lập trình Hướng đối tượng 30
- ² Phương pháp Lập trình Hướng đối tượng Hàm và việc truyền thông điệp • Việc thực hiện phương thức của một đối tượng chỉ ảnh hưởng đến dữ liệu của chính đối tượng đó chứ không ảnh hưởng đến các đối tượng khác trong cùng lớp Car1.Tăng tốc(80km/h) CT176 – Lập trình Hướng đối tượng 31
- ² Các đặc điểm của Lập trình Hướng đối tượng Các đặc điểm của OOP • Tính bao gói (encapsulation): Là một trong những đặc điểm quan trọng của OOP. • Thể hiện ở: § Sự kết hợp chặt chẽ giữa dữ liệu và thao tác của cùng một đối tượng. § Giới hạn đường truy cập đến các thành phần của một đối tượng ⇒ Chi tiết của một đối tượng được che dấu đi, giảm sự phức tạp và sự phụ thuộc của chương trình vào sự cài đặt của đối tượng. CT176 – Lập trình Hướng đối tượng 32
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính bao gói • Thuộc tính truy cập (access modifier): § Public (dùng chung): các thành phần có thể được truy cập từ “bên ngoài”. § Private (dùng riêng): những thành phần chỉ được truy xuất “bên trong” lớp. § Protected (được bảo vệ): những thành phần chỉ được truy xuất từ bên trong lớp hoặc các lớp con (thừa kế) của nó. CT176 – Lập trình Hướng đối tượng 33
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính bao gói • Tính bao gói và sự trừu tượng hóa có mối liên hệ mật thiết, hỗ trợ lẫn nhau: § Trừu tượng hóa tập trung vào những đặc điểm thuộc về bản chất của đối tượng trong khi sự bao gói tập trung vào sự cài đặt những tính chất đó. § Sự bao gói thường đạt được nhờ sự che dấu thông tin (information hiding), che đi các chi tiết không cần thiết hoặc không phải là các thuộc tính thuộc về bản chất của đối tượng. CT176 – Lập trình Hướng đối tượng 34
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính kế thừa (inheritance) • Là một trong những đặc điểm quan trọng của OOP, cho phép dùng lại mã (reusability). • Dùng để mô hình hóa mối quan hệ “là” (“is a”) giữa các đối lớp/đối tượng với nhau: § Đối tượng “thừa kế” là một đối tượng đã có sẵn khác, với những thuộc tính và phương thức “tương tự” nhau. • Thừa kế sử dụng “sự tương tự” (similarities) và “sự khác nhau” (differences) để mô hình một nhóm các đối tượng có liên quan với nhau. CT176 – Lập trình Hướng đối tượng 35
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính kế thừa (inheritance) - Lớp được thừa kế: Lớp cha Animal (superclass), lớp cơ sở (based class). - Lớp thừa kế: lớp con (subclass), Reptile Mammal Fish lớp dẫn xuất (derived class). Dog Cat Moose - EX: - Loài bò sát, loài động vật có vú, loài cá đều là động vật Person (animal) - Thầy giáo, sinh viên, cán bộ Professor Student Faculty đều là người (person). CT176 – Lập trình Hướng đối tượng 36
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính kế thừa (inheritance) • Trong thừa kế, lớp con “là” lớp cha ⇒ lớp con có tất cả thuộc tính và phương thức của lớp cha (“thừa kế” từ lớp cha!). Tuy nhiên, nó chỉ được truy xuất vào các thành phần nào mà lớp cha cho phép. • Một lớp con được tạo ra bằng cách: § Thêm vào một số thuộc tính, phương thức mới § Tái định nghĩa các phương thức của lớp cha. • Phân loại: thừa kế đơn, thừa kế bội (đa thừa kế). Chú ý: Cần phân biệt giữa quan hệ “is a” và quan hệ ”part of” giữa các đối tượng! CT176 – Lập trình Hướng đối tượng 37
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính đa hình (Polymorphism) • Các loại đối tượng khác nhau có thể có cách ứng xử khác nhau cho cùng một thông điệp. Draw() Shape Triangle Circle Rectangle Home() Student Res-Student NonRes-Student CT176 – Lập trình Hướng đối tượng 38
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính đa hình (Polymorphism) • Các kỹ thuật thể hiện tính đa hình: Dùng liên kết động (dynamic binding) kết hợp với nạp đè hàm (overriding): § Lớp cha chung sẽ khai báo phương thức chung. § Mỗi lớp con sẽ nạp đè hàm trong lớp cha chung theo những cách khác nhau. § Trong Java: các hàm bị nạp đè mặc nhiên sẽ được liên kết động. § Trong C++: khai báo phương thức ảo trong lớp cha chung để phương thức được liên kết động. CT176 – Lập trình Hướng đối tượng 39
- ² Các đặc điểm của Lập trình Hướng đối tượng Tính đa hình (Polymorphism) home() CT176 – Lập trình Hướng đối tượng 40
- v Tổng kết Tổng kết Interactive map: CT176 – Lập trình Hướng đối tượng 41
- v Quiz Quiz 1. The acronym OOP stands for ___. a) Object-Ordering Programs b) Other-Object Procedures c) Object-Organized Projects d) Object-Oriented Programming 2. ___ refers to the combination of characteristics of an object along with its behaviors. a) Reusability b) Inheritance c) Encapsulation d) Polymorphism CT176 – Lập trình Hướng đối tượng 42
- v Quiz Quiz 3. A big advantage of OOP over traditional programming is ___. a) The objects are all declared Public b) The ability to reuse classes c) The convenience of giving all objects in a project the same name d) None of the above CT176 – Lập trình Hướng đối tượng 43
- v Quiz Quiz 4. Real-world objects contain ___ and ___. 5. A software object's state is stored in ___. 6. A software object's behavior is exposed through ___. 7. Hiding internal data from the outside world, and accessing it only through publicly exposed methods is known as data ___. 8. A blueprint for a software object is called a ___. CT176 – Lập trình Hướng đối tượng 44
- v Quiz Quiz 12. Tính bao gói thể hiện ở các đặc điểm nào? 13. Truyền thông điệp có nghĩa là gì? 14. Một lớp thừa kế lớp khác được gọi là? 15. Một phương thức có thể truy xuất các thành phần có thuộc tính truy xuất gì trong cùng lớp? 16. Muốn sử dụng tính đa hình, cần kết hợp các tính chất nào của lập trình hướng đối tượng? 17. Định nghĩa nhiều phương thức trùng tên trong cùng một lớp được gọi là gì? CT176 – Lập trình Hướng đối tượng 45
- ² Bài tập Assignment 1. Hãy cho biết trong trò chơi trên, bao gồm những đối tượng/sự vật nào? 2. Mỗi đối tượng có thể thực hiện các thao tác/hành động nào? 3. Liệt kê thuộc tính của từng đối tượng. CT176 – Lập trình Hướng đối tượng 46
- CT176 – Lập trình Hướng đối tượng 47
- ² Phụ lục Phụ lục – UML • UML: Unified Modeling Language. • Là một ngôn ngữ dùng để mô hình hóa các hệ thống thông tin theo Hướng đối tượng. • Bao gồm một hệ thống các ký hiệu (symbol), sơ đồ (diagram). • Được sử dụng trong nhiều giai đoạn của qui trình phát triển phần mềm. • Một số công cụ: Rational Rose, Visio, StartUML, ArgoUML, CT176 – Lập trình Hướng đối tượng 48
- ² Phụ lục Phụ lục – UML • UML bao gồm 9 loại sơ đồ: 1. Use case disgram: Sơ đồ use case. 2. Class diagram: Sơ đồ lớp. 3. Object diagram: Sơ đồ đối tượng. 4. Sequence diagram: Sơ đồ trình tự. 5. State diagram: Sơ đồ trạng thái. 6. Collaboration diagram: Sơ đồ cộng tác. 7. Component disgram: Sơ đồ thành phần. 8. Deployment diagram: Sơ đồ triển khai. 9. Activity diagram: Sơ đồ hoạt động. CT176 – Lập trình Hướng đối tượng 49
- ² Phụ lục Phụ lục – UML • Class diagram (sơ đồ lớp): § Mô tả cấu trúc của hệ thống theo hướng đối tượng. § Cấu trúc của một hệ thống được xây dựng từ các lớp và mối quan hệ giữa chúng. • Ký hiệu (notation): § Lớp. § Giao diện. § Quan hệ: o Kết hợp (Association), tập hợp (Aggregation) và tổng hợp (Composition). o Hiện thực hóa (Realization). o Thừa kế/Tổng quát hóa (Generalization). CT176 – Lập trình Hướng đối tượng 50
- ² Phụ lục Phụ lục – UML • Lớp: CT176 – Lập trình Hướng đối tượng 51
- ² Phụ lục Phụ lục – UML • Giao diện và quan hệ Realization: Quan hệ realization là quan hệ giữa giao diện và lớp cài đặt nó. Quan hệ Realization CT176 – Lập trình Hướng đối tượng 52
- ² Phụ lục Phụ lục – UML • Quan hệ kết hợp (Association): Mô tả mối liên hệ ngữ nghĩa giữa các lớp. Lớp Tên Association Quan hệ Association Tên role CT176 – Lập trình Hướng đối tượng 53
- ² Phụ lục Phụ lục – UML • Quan hệ kết hợp nhiều chiều (n-ary) • Lớp kết hợp (association class): Được xem là thuộc tính của một quan hệ kết hợp. Lớp kết hợp CT176 – Lập trình Hướng đối tượng 54
- ² Phụ lục Phụ lục – UML • Quan hệ tập hợp (Aggregation): Là một dạng đặc biệt của quan hệ kết hợp, mô tả mối quan hệ toàn thể-bộ phận giữa một thực thể và các bộ phận của một thực thể. Toàn thể Bộ phận CT176 – Lập trình Hướng đối tượng 55
- ² Phụ lục Phụ lục – UML • Quan hệ tổng hợp (Composition): Là một dạng đặc biệt của quan hệ tập hợp, có tính sở hữu cao. Trong đó, các bộ phận của một thực thể không thể sống lâu hơn thực thể. Chú ý: Nếu không có sinh viên à không có schedule. Hoặc, nếu không tồn tại quyển sách (book) thì không có các chương sách (chapter) CT176 – Lập trình Hướng đối tượng 56
- ² Phụ lục Phụ lục – UML • Quan hệ thừa kế (Inheritance): Lớp cha Lớp con CT176 – Lập trình Hướng đối tượng 57