09HCB

Trang chủ 09HCB- Lớp Hoàn Chỉnh Đại Học Khoá 2009-2011
 
Trang ChínhTrang Chính  GalleryGallery  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share
 

 Tính đa hình

Go down 
Tác giảThông điệp
canary

canary

Tổng số bài gửi : 52
Join date : 17/03/2010

Tính đa hình Empty
Bài gửiTiêu đề: Tính đa hình   Tính đa hình Empty19/3/2010, 10:01 pm

Xin mọi người chỉ giáo giúp cho
Người ta định nghĩa Tính đa hình như thế này:
"Đa hình là khái niệm luôn đi kèm với kế thừa. Do tính kế thừa, một lớp có thể sử dụng lại các phương thức của lớp khác. Tuy nhiên, nếu cần thiết, lớp dẫn xuất cũng có thể định nghĩa lại một số phương thức của lớp cơ sở. Đó là sự nạp chồng phương thức trong kế thừa. Nhờ sự nạp chồng phương thức này, ta chỉ cần gọi tên phương thức bị nạp chồng từ đối tượng mà không cần quan tâm đó là đối tượng của lớp nào. Chương trình sẽ tự động kiểm tra xem đối tượng là thuộc kiểu lớp cơ sở hay thuộc lớp dẫn xuất, sau đó sẽ gọi phương thức tương ứng với lớp đó. Đó là tính đa hình"
HTV cũng ko hỉu lắm về định nghĩa này. Mong các anh chị chỉ giáo thêm.
Thanks
Về Đầu Trang Go down
titanotam

avatar

Tổng số bài gửi : 140
Join date : 17/03/2010
Age : 32
Đến từ : TPHCM

Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty19/3/2010, 10:47 pm

* Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau. Người lập trình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng mà không bị nhầm lẫn.

Thí dụ khi định nghĩa hai đối tượng "hinh_vuong" và "hinh_tron" thì có một phương thức chung là "chu_vi". Khi gọi phương thức này thì nếu đối tượng là "hinh_vuong" nó sẽ tính theo công thức khác với khi đối tượng là "hinh_tron".

Định nghĩa này trên wiki, mình tin là bạn hiểu. Very Happy

_________________
MOD HỖ TRỢ
Y/M: hnt_tamhuynh@yahoo.com
Về Đầu Trang Go down
canary

canary

Tổng số bài gửi : 52
Join date : 17/03/2010

Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty19/3/2010, 11:05 pm

ờ, hỉu chút chút. thanks I love you

giống như khi ta có 2 hàm có tên chung là f
mà 2 hàm đó có đầu vào khác nhau như sau:
f(x, y) : hàm tính hàm số có đầu vào là 2 biến còn
f(x, y, z) : hàm tính hàm số có đầu vào là 3 biến

khi ta gọi hàm tính f(2,3) thì trình biên dịch sẽ tự động hỉu là mình đang muốn gọi tới hàm thứ nhất f(x, y)


đúng hok u ? Very Happy
Về Đầu Trang Go down
titanotam

avatar

Tổng số bài gửi : 140
Join date : 17/03/2010
Age : 32
Đến từ : TPHCM

Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty20/3/2010, 7:56 pm

HTV đã viết:
ờ, hỉu chút chút. thanks I love you

giống như khi ta có 2 hàm có tên chung là f
mà 2 hàm đó có đầu vào khác nhau như sau:
f(x, y) : hàm tính hàm số có đầu vào là 2 biến còn
f(x, y, z) : hàm tính hàm số có đầu vào là 3 biến

khi ta gọi hàm tính f(2,3) thì trình biên dịch sẽ tự động hỉu là mình đang muốn gọi tới hàm thứ nhất f(x, y)


đúng hok u ? Very Happy

Bạn đâu thể nào đặt tên là f(x,y,z) cho hàm thứ 2 được nữa, vì f đã đặt tên cho hàm thứ 1 là f(x,y) rồi mà

_________________
MOD HỖ TRỢ
Y/M: hnt_tamhuynh@yahoo.com
Về Đầu Trang Go down
titanotam

avatar

Tổng số bài gửi : 140
Join date : 17/03/2010
Age : 32
Đến từ : TPHCM

Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty20/3/2010, 8:13 pm

titanotam đã viết:
HTV đã viết:
ờ, hỉu chút chút. thanks I love you

giống như khi ta có 2 hàm có tên chung là f
mà 2 hàm đó có đầu vào khác nhau như sau:
f(x, y) : hàm tính hàm số có đầu vào là 2 biến còn
f(x, y, z) : hàm tính hàm số có đầu vào là 3 biến

khi ta gọi hàm tính f(2,3) thì trình biên dịch sẽ tự động hỉu là mình đang muốn gọi tới hàm thứ nhất f(x, y)


đúng hok u ? Very Happy

Bạn đâu thể nào đặt tên là f(x,y,z) cho hàm thứ 2 được nữa, vì f đã đặt tên cho hàm thứ 1 là f(x,y) rồi mà
Một ví dụ về tính đa hình động
1. class Nguoi
2. {
3. public:
4. virtual void Chao() // Hàm ảo
5. {
6. cout << "Toi chua biet chao";
7. };
8. };
9. //------------------
10. class NguoiViet : public Nguoi
11. {
12. public:
13. void Chao()
14. {
15. cout << "Xin chao.";
16. }
17. };
18. //------------------
19. class NguoiAnh : public Nguoi
20. {
21. public:
22. void Chao()
23. {
24. cout << "Hello.";
25. }
26. };
27. //------------------
28. void main()
29. {
30. Nguoi *n; NguoiViet nv; NguoiAnh na;
31. n = &nv;
32. n->Chao(); // (*)
33. n = &na;
34. n->Chao(); // cùng dòng code voi (*) nhưng lại cho kết quả khác
35. }

_________________
MOD HỖ TRỢ
Y/M: hnt_tamhuynh@yahoo.com
Về Đầu Trang Go down
canary

canary

Tổng số bài gửi : 52
Join date : 17/03/2010

Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty20/3/2010, 10:08 pm

bây giờ thì HTV đã hỉu. Thank you, titanotam. Very Happy
Về Đầu Trang Go down
ngocthai

ngocthai

Tổng số bài gửi : 60
Join date : 17/03/2010

Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty22/3/2010, 5:37 pm

Các bạn xem thêm ở đây:
http://vi.wikipedia.org/wiki/C%2B%2B
Về Đầu Trang Go down
canary

canary

Tổng số bài gửi : 52
Join date : 17/03/2010

Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty22/3/2010, 7:12 pm

thanks I love you I love you I love you
Về Đầu Trang Go down
Sponsored content




Tính đa hình Empty
Bài gửiTiêu đề: Re: Tính đa hình   Tính đa hình Empty

Về Đầu Trang Go down
 
Tính đa hình
Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
09HCB :: Lưu trữ :: HK1 :: NMCNPM-
Chuyển đến