Bài giảng Ngôn ngữ lập trình nâng cao - Bài 3: Thực th nạp chồng, kế thừa - Nguyễn Xuân Hùng

Có bốn kiểu quan hệ tồn tại giữa các lớp, đó là: Quan hệ kế thừa Quan hệ hợp thành Quan hệ sử dụng Quan hệ thể hiện Lập trình hướng đối tượng cho phép các lớp kế thừa trạng thái và hành vi sử dụng chung của lớp khác. Tổng quát hóa nghĩa là nhiều lớp có thể kế thừa từ cùng một lớp cha. Quan hệ hợp thành tồn tại khi một lớp được tạo nên tù một lớp khác.

pdf35 trang | Chia sẻ: huongthu9 | Lượt xem: 360 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Ngôn ngữ lập trình nâng cao - Bài 3: Thực th nạp chồng, kế thừa - Nguyễn Xuân Hùng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Slide 1 of 31Ver. 1.0 Object-Oriented Programming Using C# NGÔN NGỮ LẬP TRÌNH NÂNG CAO Slide 2 of 31Ver. 1.0 Object-Oriented Programming Using C# Trong mục này chúng ta sẽ học: Thực thi nạp chồng toán tử Xác định quan hệ giữa các lớp Sử dụng lớp và kế thừa Mục tiêu Slide 3 of 31Ver. 1.0 Object-Oriented Programming Using C# Nhắc lại – Sự cần thiết phải nạp chồng toán tử Hầu hết các kiểu dữ liệu có các toán tử liên quan với chúng. Ví dụ, kiểu dữ liệu int trong C# có các toán tử: +, -, *, / hỗ trợ các phép toán toán học. Một class là một kiểu dữ liệu người dùng định nghĩa. Để tính toán trên kiểu dữ liệu này nó cần nạp chồng tùy theo yêu cầu người lập trình Ví dụ: Slide 4 of 31Ver. 1.0 Object-Oriented Programming Using C# Nhắc lại – Sự cần thiết phải nạp chồng toán tử (tiếp) Để cộng hai khoảng cách lưu trữ trong đối tượng của lớp Length, bạn cần gọi 1 hàm. Ví dụ ta có hàm Add_Dist, ta sẽ gọi như sau: object3.Add_Dist(object1, object2); Slide 5 of 31Ver. 1.0 Object-Oriented Programming Using C# Nhắc lại – Sự cần thiết phải nạp chồng toán tử (tiếp) Nếu bạn muốn so sánh hai đối tượng, bạn phải xây dựng hàm để so sánh. Ví dụ: objec1.CompareDistance(object2); Thay cho các hàm Add_Dist() và CompareDistance(), cách đơn giản hơn chúng ta sử dụng: object3 = object1 + object2 Hoăc object1 > object2; object1 == object2; object1 < object2  Cùng với dữ liệu người dùng định nghĩa, chúng ta sẽ nạp chồng các toán tử liên quan tới chúng. Slide 6 of 31Ver. 1.0 Object-Oriented Programming Using C# Nạp chồng toán tử một ngôi (tiếp) Các toán tử một ngôi hoạt động với một toán hạng. Một ví dụ của toán tử một ngôi là toán tử tăng (++) và toán tử giảm (--). Toán tử một ngôi có thể được phân loại như sau: Toán tử một ngôi tiền tố đơn, ví dụ như toán tử trừ –. Tiền tố và hậu tố của toán tử tăng và toán tử giảm ví dụ ++() toán tử tăng tiền tố. Cú pháp: className operator (Object1); Slide 7 of 31Ver. 1.0 Object-Oriented Programming Using C# Nạp chồng toán tử một ngôi (tiếp) Ví dụ nạp chồng toán tử - (âm): Slide 8 of 31Ver. 1.0 Object-Oriented Programming Using C# Nạp chồng toán tử một ngôi (tiếp) Kết quả của chương trình trên: Slide 9 of 31Ver. 1.0 Object-Oriented Programming Using C# Nạp chồng toán tử hai ngôi Toán tử hai ngôi là toản tử thực thi với hai toán hạng. Toán tử hai ngôi bao gồm các toản tử toán học (+, -, *, /, %), toán tử gán toán học (+=, -=, *=, /=. %=), và toán tử so sánh (, =, ==, !=). Nạp chồng toán tử hai ngôi tương tự như toán tử một ngôi, ngoại trừ toán tử hai ngôi yêu cầu thêm một tham số nữa. Cú pháp nạp chồng toán tử hai ngôi trong C#: operator (Object1,Object2); Slide 10 of 31Ver. 1.0 Object-Oriented Programming Using C# Nạp chồng toán tử hai ngôi (tiếp) Ví dụ: nạp chồng toán tử cộng + Slide 11 of 31Ver. 1.0 Object-Oriented Programming Using C# Nạp chồng toán tử hai ngôi (tiếp) Ví dụ: nạp chồng toán tử cộng + Kết quả: Slide 12 of 31Ver. 1.0 Object-Oriented Programming Using C# Định nghĩa phép chuyển kiểu Phép chuyển kiểu chia thành 2 loại: ngầm định (implicit) và tường minh (explicit) Ví dụ về chuyển kiểu ngầm định và tường minh Slide 13 of 31Ver. 1.0 Object-Oriented Programming Using C# Định nghĩa phép chuyển kiểu (tiếp) Slide 14 of 31Ver. 1.0 Object-Oriented Programming Using C# Ví dụ: Nạp chồng toán tử Vấn đề đặt ra: FunCity Land là công viên vui chơi giải trí mới được thành lập ở Hà Nội. Bình là người đứng đầu của bộ phận kỹ thuật của FunCity. Hiện tại anh đang làm việc trong dự án liên quan tới tính toán khoảng cách. Dự án này sẽ tính toán phạm vi của FunCity Land từ các vị trị khác nhau bởi vì nhiều khách hàng không biết chính xác vị trí của công viên. Bình cần phát triển một chương trình, sẽ chấp nhận vị trí người khách và khoảng cách đã đi của khách hàng từ vị trí đó. Sau khi phân tích vị trí và khoảng cách đã đi của khách hàng, chương trình sẽ hiển thị khoảng cách còn lại và tổng quãng đường đã đi. Giúp Bình phát triển một ứng dụng sử dụng nạp chồng toán tử hai ngôi cộng (+) Slide 15 of 31Ver. 1.0 Object-Oriented Programming Using C# Trong ứng dụng phần mềm, classes và objects có quan hệ với nhau. Trong phương pháp hướng đối tượng, đối tượng (objects) thực thi hành động đáp ứng các thông điệp từ đối tượng khác xác định hành vi của đối tượng đó. Phương pháp này chỉ ra các quan hệ giữa các lớp dựa trên hành vị của lớp đó. Xác định quan hệ giữa các lớp Slide 16 of 31Ver. 1.0 Object-Oriented Programming Using C# Trong ứng dụng phần mềm, classes và objects có quan hệ với nhau. Trong phương pháp hướng đối tượng, đối tượng (objects) thực thi hành động đáp ứng các thông điệp từ đối tượng khác xác định hành vi của đối tượng đó. Phương pháp này chỉ ra các quan hệ giữa các lớp dựa trên hành vi của lớp đó. Xem xét sự giống nhau và khác nhau giữa xe hơi, xe ô tô, người lái xe, động cơ ta thấy rằng: Xe tải là một kiểu của xe hơi Xe ô tô là một kiểu khác của xe hơi Động cơ là một phần của xe hơi Người lái xe lái chiếc xe Xác định quan hệ giữa các lớp Slide 17 of 31Ver. 1.0 Object-Oriented Programming Using C# Có đa dạng quan hệ giữa các đối tượng và lớp trong môi trường hướng đối tượng: Quan hệ kế thừa: Lập trình hướng đối tượng cho phép các lớp kế thừa trạng thái và hành vi sử dụng chung từ các lớp khác. Trong lập trình C#, một lớp được phép kế thừa từ một lớp khác. Sự tổng quát hóa là cần thiết để tạo các chương trình có thể tùy biến đề phù hợp với các yêu cầu mới.. Chúng ta cùng tìm hiểu về khái niệm quan hệ kế thừa qua ví dụ sau. Kiểu của quan hệ Slide 18 of 31Ver. 1.0 Object-Oriented Programming Using C# Lớp cha Kiểu của quan hệ (tiếp) Slide 19 of 31Ver. 1.0 Object-Oriented Programming Using C# Lớp cha Lớp con Kiểu của quan hệ (tiếp) Slide 20 of 31Ver. 1.0 Object-Oriented Programming Using C# Lớp cha Lớp con Nhận được các đặc tính của cha, như là chiều cao, nước da, và hành vi Kiểu của quan hệ (tiếp) Slide 21 of 31Ver. 1.0 Object-Oriented Programming Using C# Chúng ta cũng có thể thiết lập quan hệ giữa các lớp cha và các lớp con cháu. Hình sau chỉ ra sự kế thừa của các lớp con cháu với lớp cha. Kiểu của quan hệ (tiếp) Automobile Mitsubishi Car Bus Ford BMW Toyota Slide 22 of 31Ver. 1.0 Object-Oriented Programming Using C# Quan hệ hợp thành: Lập trình hướng đối tượng cho phép chúng ta tạo dựng một đối tượng từ một đối tượng khác. Cơ chế tạo dựng một đối tượng như vậy được gọi là hợp thành. Ví dụ: lớp Car gồm có một động cơ, hoặc hành khách đi trên tàu đề có một vé do đó lớp KhachHang bao gồm lớp VeTau. Kiểu của quan hệ (tiếp) Slide 23 of 31Ver. 1.0 Object-Oriented Programming Using C# Quan hệ sử dụng: Lập trình hướng đối tượng cho phép một lớp sử dụng một lớp khác. Kiểu quan hệ như vậy được gọi là sự sử dụng. Ví dụ: BMV (thuộc lớp Car) được lái bởi Vinh, Hoàng lái chiếc xe bus (thuộc lớp Bus),...  Cả hai lớp Car và Bus đều sử dụng cùng lớp Driver (đối tượng là Vinh và Hoàng) Kiểu của quan hệ (tiếp) Slide 24 of 31Ver. 1.0 Object-Oriented Programming Using C# Quan hệ thể hiện: Lập trình hướng đối tượng cho phép một quan hệ giữa một lớp và đối tượng của lớp đó. Kiểu quan hệ như vậy được gọi là sự thể hiện. Ví dụ: BMV là một ô tô, bạn là một sinh viên Kiểu của quan hệ (tiếp) Slide 25 of 31Ver. 1.0 Object-Oriented Programming Using C# Câu hỏi Xây dựng sự kế thừa của các đối tượng: máy trộn (Mixer), VCR, ti vi màu (color television), máy giặt (washing machine), Dàn âm thanh (stereo), và sinh ra các lớp cha có thể. Trả lời: Hình sau là một ví dụ về kế thừa của các đối tượng trên. Electronic Entertainment Utility Color Television VCR Stereo Mixer Washing Machine Slide 26 of 31Ver. 1.0 Object-Oriented Programming Using C# Câu hỏi Xác định các quan hệ giữa các thành phần lớp sau: 1. Television – Speaker 2. Mammal – Tiger 3. Garment – Shirt 4. Cup – Tea 5. Computer – Microprocessor Trả lời: 5 và 1 là quan hệ hợp thành 3 và 2 là quan hệ kế thừas. 4 không trình bày bất kỳ quan hệ nào. Tea không là thuộc tính của Cup. Slide 27 of 31Ver. 1.0 Object-Oriented Programming Using C# Câu hỏi Xác định các lớp và quan hệ sử dụng trong trường hợp của một cửa hàng. Có một vài quầy bán hàng và mỗi quầy trong cửa hàng được quản lý bởi một người bán hàng, bán một mặt hàng nhất định. Mỗi khách hàng tiếp cận một quầy. Phụ thuộc vào miêu tả của khách hàng để mua sản phẩm, người bán hàng bán sản phẩm cho khách hàng và chấp nhận thanh toán. Trả lời: Quan hệ sử dụng của trường hợp trên là: Người bán hàng quản lý các quầy hàng. Mỗi quầy bán một mặt hàng. Khách hàng mua một sản phẩm. Khách hàng trả tiền cho người bán hàng. Slide 28 of 31Ver. 1.0 Object-Oriented Programming Using C# Trong C#, kế thừa là thuộc tính mà đối tượng của lớp dẫn xuất sao chép biến thành viên và hàm thành viên của lớp cơ sở. Một lớp có các thuộc tính kế thừa hoặc thuộc tính nhận được từ lớp khác được gọi là lớp dẫn xuất (derived class). Lớp mà các thuộc tính được dẫn xuất được gọi là lớp cơ sở (base class). Trong lập trình hướng đối tượng, lớp cơ sở thực sự là lớp cha và lớp dẫn xuất là lớp con. Sự dụng kế thừa và kế thừa Slide 29 of 31Ver. 1.0 Object-Oriented Programming Using C# Mỗi thể hiện của lớp dẫn xuất bao gồm các thuộc tính của lớp cơ sở. Bất kỳ thay đổi nào của lớp cơ sở tự động thay đổi hành vi của lớp dẫn xuất của nó. Cú pháp sử dụng trong C# để tạo một lớp dẫn xuất như sau: class { ... } class : { ... } Thực thi kế thừa Slide 30 of 31Ver. 1.0 Object-Oriented Programming Using C# Chúng ta có thể sử dụng quy tắc để thiết lập khi nào kế thừa được yêu cầu khi thiết kế chương trình. Luôn luôn kiểm tra kiểu quan hệ giữa lớp dẫn xuất và lớp cơ sở. Chắc chắn rằng lớp dẫn xuất là một kiểu của lớp cơ sở. Chúng ta có thể sử dụng lớp kế thừa với hàm tạo. Trong kế thừa, lớp dẫn xuất nhận các biến thành viên và hàm thành viên của lớp cơ sở. Điều này có nghĩa thứ tự kế thừa phải tuần tự trong quá trình xây dựng đối tượng. Thực thi kế thừa (tiếp) Slide 31 of 31Ver. 1.0 Object-Oriented Programming Using C# Ví dụ: Thực thi kế thừa (tiếp) Slide 32 of 31Ver. 1.0 Object-Oriented Programming Using C# Ví dụ: Kết quả: Thực thi kế thừa (tiếp) Slide 33 of 31Ver. 1.0 Object-Oriented Programming Using C# Trong mục này, chúng ta đã học: Toán tử có thể được phân loại như toán tử một ngôi và toán tử hai ngôi. Toán tử mộ ngôi làm việc với một toán hạng và được phân loại như sau: Toán tử một ngôi tiền tố đơn Toán từ tiền tố và hậu tố tăng và giảm. Một toán tử một ngôi tiền tố có thể được định nghĩa bởi hàm thành viên không tham số hoặc bởi hàm không phải là thành viên có một tham số. Toán tử hai ngôi làm việc với hai toán hạng. Nạp chồng toán tử hai ngôi tương tự với nạp chồng toán tử một ngôi ngoại trừ toán tử hai ngôi yêu cầu một thêm một tham số nữa. Tổng kết Slide 34 of 31Ver. 1.0 Object-Oriented Programming Using C# Có bốn kiểu quan hệ tồn tại giữa các lớp, đó là: Quan hệ kế thừa Quan hệ hợp thành Quan hệ sử dụng Quan hệ thể hiện Lập trình hướng đối tượng cho phép các lớp kế thừa trạng thái và hành vi sử dụng chung của lớp khác. Tổng quát hóa nghĩa là nhiều lớp có thể kế thừa từ cùng một lớp cha. Quan hệ hợp thành tồn tại khi một lớp được tạo nên tù một lớp khác. Quan hệ sử dụng tồn tại giữa hai hoặc nhiều lớp không liên quan nếu một lớp sử dụng lớp khác. Tổng kết (tiếp) Slide 35 of 31Ver. 1.0 Object-Oriented Programming Using C# Một quan hệ thể hiện là quan hệ giữa một lớp và thể hiện của lớp đó. Một lớp mà kế thừa hoặc dẫn xuất các thuộc tính từ lớp khác được gọi là lớp dẫn xuất và lớp được dẫn xuất được gọi là lớp cơ sở. Kế thừa tránh việc dưa thừa trong mã và cho phép bảo trì dễ dàng mã. Hàm tạo đưuọc gọi theo thứ tự: lớp cơ sở - lớp dẫn xuất. Tổng kết (tiếp)

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_ngon_ngu_lap_trinh_nang_cao_bai_3_thuc_th_nap_chon.pdf