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: Quan hệ giữa các lớp

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:57

65
lượt xem
5
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: Quan hệ giữa các lớp" cung cấp cho người học các kiến thức: Các mối quan hệ lớp, thừa kế 3. một số vấn đề khác, ví dụ - Pe. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm 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: Quan hệ giữa các lớp

  1. Quan hệ giữa các lớp v 2.3 - 09/2018 Lê Viết Mẫn - lvman@hce.edu.vn 1 Quan hệ giữa các lớp
  2. các bạn đã có thể... Virus.cs Virus - reproductionRate : float - resistance : float -instance defaultReproductionRate : float = 0.1 + Virus(newResistance : float) + Virus(newReproductionRate : float, newResistance : float) + reproduce(immunity : float) : Virus* + survive(immunity : float) : bool Lê Viết Mẫn - lvman@hce.edu.vn 2 Quan hệ giữa các lớp
  3. chúng ta sẽ học... cài đặt mô hình bằng C# Lê Viết Mẫn - lvman@hce.edu.vn 3 Quan hệ giữa các lớp
  4. Nội dung 1. Các mối quan hệ lớp 2. Thừa kế 3. Một số vấn đề khác 4. Ví dụ - Pet Lê Viết Mẫn - lvman@hce.edu.vn 4 Quan hệ giữa các lớp
  5. Các mối quan hệ lớp Lê Viết Mẫn - lvman@hce.edu.vn 5 Quan hệ giữa các lớp
  6. Mối quan hệ lớp • Cho phép các đối tượng tương tác với nhau • Các đối tượng giao tiếp bằng cách gởi thông điệp thông qua các kết nối • Các đối tượng có thể truy xuất các hàm, thuộc tính của các đối tượng mà nó kết nối • Được thể hiện thông qua các đồ thị liên kết • Các nút / đỉnh là các lớp (hình chữ nhật) • Các cạnh / cung là các quan hệ • Các mối quan hệ lớp • Association - q.h kết hợp • Aggregation - q.h thu nạp • Composition - q.h thành phần • Generization - tổng quát hoá (kỹ thuật thừa kế) Lê Viết Mẫn - lvman@hce.edu.vn 6 Quan hệ giữa các lớp
  7. Association - q.h kết hợp work at Person Company Employee Employer • Quan hệ kết hợp cho phép các đối tượng gọi các hàm, thuộc tính lẫn nhau • Các đối tượng kết hợp không phải tồn tại mãi và không bắt buộc được tạo ra cùng lúc • Cho phép null • Không được phép hủy cấp phát bộ nhớ của đối tượng nó tham chiếu đến • Tạo ra đối tượng mới bên ngoài lớp rồi mới gán vào cho lớp để lưu trữ • Khi gán đối tượng mới thì không xoá đối tượng cũ Lê Viết Mẫn - lvman@hce.edu.vn 7 Quan hệ giữa các lớp
  8. Ví dụ - q.h kết hợp Person Company work at -workAt:Company -employee:Person Employee Employer Person.cs Company.cs using System; using System; namespace AssociationEx namespace AssociationEx { { p h ần class Person class Company t h ành g lớp b i ế n tr on ữ { { Tạo Person lưu tr string name; string name; kiểu pany để với lớp Company workAt; ần Person employee; Com uan hệ h q h p ành rong mối on t ... o b i ế n a ny t u trữ ... Pers } T ạ p om để lư p } u C } kiể erson với lớ } P lớp uan hệ q mối pany Com Lê Viết Mẫn - lvman@hce.edu.vn 8 Quan hệ giữa các lớp
  9. Ví dụ - q.h kết hợp Person.cs using System; ư ợ ng namespace AssociationEx đ ố it b ê n Tạo pany t ừ { n v ào class Person Com i rồi gá à { ngo string name; Company workAt; l l nu // Có thể cho phép gán đối tượng ngay tại cấu tử é p h public Person (string name) {...} Không có Huỷ tử p h o public Person (string name, Company c) {...} để xoá đối tượng C public Person () {} trong biến workAt public string Name { get {...} set {...} } // hoặc gán đối tượng mới thông qua thuộc tính public Company WorkAt { get {...} set {...} } Khi gán đối tượng mới thì ... không xoá đối } ư ợ ng tượng cũ o đ ối t từ bên } Tạ pany vào n Com i rồi gá à ngo Lê Viết Mẫn - lvman@hce.edu.vn 9 Quan hệ giữa các lớp
  10. Multiplicity - bản số Một khách hàng có thể Một đơn hàng chỉ thuộc có nhiều đơn hàng về một khách hàng Order Customer * belong to 1 -belongTo:Customer -orders:List of Orders Order.cs Customer.cs using System; using System; using System.Collections.Generic; namespace AssociationEx { namespace AssociationEx class Order { ặc h o { class Customer A r ray bản g ợ int id; { Dùn để hỗ tr Customer belongTo; string name; List List orders; số ... } ... } } } Lê Viết Mẫn - lvman@hce.edu.vn 10 Quan hệ giữa các lớp
  11. Navigability - tính khả điều hướng Order Customer * belong to 1 -belongTo:Customer • Đơn hàng biết nó thuộc về khách hàng nào, nhưng khách hàng không biết nó có đơn hàng nào Order.cs Customer.cs using System; using System; namespace AssociationEx namespace AssociationEx { { class Order class Customer { { int id; string name; Customer belongTo; ... ... } } } } Lê Viết Mẫn - lvman@hce.edu.vn 11 Quan hệ giữa các lớp
  12. Aggregation - q.h thu nạp • Quan hệ thu nạp là quan hệ part-of • Cài đặt quan hệ • Sử dụng các liên kết yếu • Các thành phần và toàn thể có vòng đời độc lập • Tạo mối quan hệ khi cần thiết • Gán đối tượng mới thì bỏ kết nối với đối tượng cũ • Tạo ra đối tượng mới của lớp thành phần bên trong hoặc bên ngoài lớp toàn thể • Bỏ kết nối với đối tượng lớp thành phần trong hàm huỷ tử của lớp toàn thể Lê Viết Mẫn - lvman@hce.edu.vn 12 Quan hệ giữa các lớp
  13. Ví dụ - q.h thu nạp Car.cs using System; using System.Collections.Generic; namespace AggregationEx { class Car { Engine engine; List doors; } } Lê Viết Mẫn - lvman@hce.edu.vn 13 Quan hệ giữa các lớp
  14. Ví dụ - q.h thu nạp using System; namespace AggregationEx i đ ối { n ố i vớ h ỏ k ết p thàn class Car B g lớ àm ợ n g h { tư r o n h ầ n t a lớp Engine engine; p t ử củ huỷ thể public Car () {} toàn // Xoá đối tượng trong hàm huỷ tử ~Car () { engine = null; } Car.cs // Tạo đối tượng mới bên ngoài lớp rồi gán thông qua thuộc tính // không cần thao tác xoá đối tượng cũ public Engine CarEngine { get {...} set {...} } ư ợ ng ối t nh r a đ th à // Tạo đối tượng mới bên trong lớp Tạo của lớp g n public void SetEngine(string nameEngine) mới bên tro ài o { phần bên ng c engine = new Engine(nameEngine); hoặ oàn thể } t i t ượ ng lớp ... Gán đ ố i } h ì b ỏ kế t nố mới t n g cũ } ố i tư ợ với đ Lê Viết Mẫn - lvman@hce.edu.vn 14 Quan hệ giữa các lớp
  15. Composition - q.h thành phần • Quan hệ thành phần là biến thể mạnh hơn của quan hệ thu nạp • Một thành phần chỉ thuộc về một toàn thể • Các thành phần thường sống và chết theo toàn thể • Cài đặt quan hệ • Sử dụng liên kết mạnh • Các thành phần và toàn thể có đời sống trùng lặp nhau • Khởi tạo các thành phần trong cấu tử của toàn thể • Các thành phần chỉ thuộc về một toàn thể • Các thành phần không thể thay đổi trong suốt quá trình thực thi • Tạo đối tượng lớp thành phần bên trong lớp toàn thể • Không gán đối tượng mới, chỉ cho phép thay đổi dữ liệu • Xoá đối tượng lớp thành phần trong hàm huỷ tử của lớp toàn thể Lê Viết Mẫn - lvman@hce.edu.vn 15 Quan hệ giữa các lớp
  16. Ví dụ - q.h thành phần Company.cs using System; using System.Collections.Generic; namespace CompositionEx { class Company { List employees; TaxRegistration taxReg; ... } } Lê Viết Mẫn - lvman@hce.edu.vn 16 Quan hệ giữa các lớp
  17. Ví dụ - q.h thành phần using System; namespace CompositionEx g l ớp i t ư ợn { ạ o đố n b ên class Company T ầ ph oàn thể n h { thà l ớ pt g TaxRegistration taxReg; tron public Company () {} // Tạo đối tượng mới bên trong cấu tử ng Company.cs public Company (string id, int day, int month, int year) it ư ợ á đ ố h ần { taxReg = new TaxRegistration( id, day, month, year ); } Xo nh p t ử th à hu ỷ // Xoá đối tượng trong hàm huỷ tử lớp h à m th ể n g n ~Car () { taxReg = null; } tro ớp toà l của // Chỉ cho phép thay đổi dữ liệu, không gán đối tượng mới public string TaxReg { get {...} set { taxReg.ID = value; } } ... á n đối } ô n g g i, chỉ Kh g mớ y đ ổi n a } tượ hép th p cho ệu i dữ l Lê Viết Mẫn - lvman@hce.edu.vn 17 Quan hệ giữa các lớp
  18. So sánh các quan hệ Kết hợp Thu nạp Thành phần Liên kết yếu Liên kết mạnh Tạo ra đối tượng mới Tạo ra đối tượng mới Tạo đối tượng lớp thành bên ngoài lớp rồi mới của lớp thành phần bên phần bên trong lớp toàn gán vào cho lớp để lưu trong hoặc bên ngoài thể trữ lớp toàn thể Khi gán đối tượng mới Gán đối tượng mới thì Không gán đối tượng thì không xoá đối tượng bỏ kết nối với đối tượng mới, chỉ cho phép thay cũ cũ đổi dữ liệu Không được phép hủy Bỏ kết nối với đối tượng Xoá đối tượng lớp thành cấp phát bộ nhớ của đối lớp thành phần trong phần trong hàm huỷ tử tượng nó tham chiếu hàm huỷ tử của lớp toàn của lớp toàn thể đến thể Lê Viết Mẫn - lvman@hce.edu.vn 18 Quan hệ giữa các lớp
  19. Inheritance - Thừa kế Lê Viết Mẫn - lvman@hce.edu.vn 19 Quan hệ giữa các lớp
  20. Generalization - tổng quát hoá • Tổng quát hóa gom những thứ giống nhau giữa vài lớp trong một lớp cha (superclass) • Cụ thể hóa (specialization) thêm những thứ khác nhau vào trong lớp con Những đặc tính giống nhau được đặt ở lớp cha Text Những đặc tính khác nhau được tách ra đặt ở các lớp con Lê Viết Mẫn - lvman@hce.edu.vn 20 Quan hệ giữa các lớp
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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