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.
35 trang |
Chia sẻ: huongthu9 | Lượt xem: 454 | Lượt tải: 0
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:
- bai_giang_ngon_ngu_lap_trinh_nang_cao_bai_3_thuc_th_nap_chon.pdf