Logo | |
|
| C++:ghi đè chức năng với phương thức ảo | |
| Tác giả | Thông điệp |
---|
hotboy
Thú CƯng :
Số bài viết : 705 Điểm : 1043 Được cảm ơn : 9 Ngày sinh : 21/03/1990 Tham gia ngày : 13/05/2010 Tuổi : 34 Đến từ : BDU
| Tiêu đề: C++:ghi đè chức năng với phương thức ảo 7/8/2010, 10:33 | |
| điều kì diệu của lập trình hướng đối tượng là phương thức ảo,thông qua các phương thức ảo ta có thể quản lý tất cả các đối tượng.để khỏi dài dòng tui đi thẳng vô vấn đề luôn: đầu tiên chúng ta có 1 lớp quản lý 1 lớp cơ sở nào đó của các đối tượng-nó được gọi là factory.Nó sử dụng các phương thức ảo để quản lý đối tượng-nghĩa là để thêm đối tượng mới,loại bỏ chúng,đưa chúng trở về người dùng và báo cáo về những đối tượng nào đang sử dụng và không sử dụng. tiếp theo chúng ta sẽ có 1 tập hợp dẫn xuất,những lớp này ghi đè chức năng của lớp cơ sở bằng cách sử dụng các phương thức ảo để hoàn thành những tác vụ khác nhau.
ưu điểm:chúng ta sẽ tiết kiệm thời gian,k cần tái thực hiện nhiều lần |
| | | hotboy
Thú CƯng :
Số bài viết : 705 Điểm : 1043 Được cảm ơn : 9 Ngày sinh : 21/03/1990 Tham gia ngày : 13/05/2010 Tuổi : 34 Đến từ : BDU
| Tiêu đề: Re: C++:ghi đè chức năng với phương thức ảo 7/8/2010, 10:33 | |
| - Code:
-
#include<stdio.h> #include<string> #include<vector> class Object { private: std::string _name; bool _inUse; public: Object(void) { _name="Object"; _inUse=false; } Object(const char *name) { _name=name; _inUse=false; } Object(const Object &aCopy) { _name=aCopy._name; _inUse=aCopy._inUse; } virtual ~Object() {} virtual void MarkInUse(bool bFlag) { _inUse=bFlag; } virtual bool InUse(void) { return _inUse; } virtual const char *Name(void) { return _name.c_str(); } virtual void Report()=0; };
class MyObject1:public Object { public: MyObject1():Object("MyObject") {} virtual void Report() { printf("I am a MyObject1 Object \n"); } };
class MyObject2:public Object { public: MyObject2():Object("MyObject") {} virtual void Report() { printf("I am a MyObject2 Object \n"); } };
class MyObject3:public Object { public: MyObject3():Object("MyObject") {} virtual void Report() { printf("I am a MyObject3 Object \n"); } };
class Factory { private: std::vector<Object *>_objects; public: Factory() {} //<ethod to add an object to the pool virtual void Add(Object *obj) { obj->MarkInUse(true); _objects.insert(_objects.end(),obj); } //Method to retrive an object not in use
virtual Object *Get(void) { std::vector<Object *>::iterator iter; for(iter=_objects.begin();iter!=_objects.end();++iter) { if((*iter)->InUse()==false) { printf("Found one \n"); //Mark in use (*iter)->MarkInUse(true); //And give it back return (*iter); } } //didn't find one return NULL; } virtual void Remove(Object *obj) { std::vector<Object *>::iterator iter; for(iter=_objects.begin();iter!=_objects.end();++iter) { if((*iter)==obj) { (*iter)->MarkInUse(false); break; } } } virtual void Report() { std::vector<Object *>::iterator iter; for(iter=_objects.begin();iter!=_objects.end();++iter) { if((*iter)->InUse()==true) { printf("Object at %lx in use \n",(*iter)); } else { printf("Object at %lx NOT in use \n",(*iter)); } (*iter)->Report(); } } }; int main() { //Implement an object factory object Factory f; //Add some objects to the factory MyObject1 *obj1=new MyObject1; MyObject2 *obj2=new MyObject2; MyObject3 *obj3=new MyObject3; f.Add(obj1); f.Add(obj2); f.Add(obj3); //Remove one to simulate the destruction of an object f.Remove(obj1); //Now try to get a new one back Object *pObject=f.Get(); printf("i got back a %s object\n",pObject->Name()); //Generate a report to see what is in use f.Report(); }
|
| | | hotboy
Thú CƯng :
Số bài viết : 705 Điểm : 1043 Được cảm ơn : 9 Ngày sinh : 21/03/1990 Tham gia ngày : 13/05/2010 Tuổi : 34 Đến từ : BDU
| Tiêu đề: Re: C++:ghi đè chức năng với phương thức ảo 7/8/2010, 10:34 | |
| bà con thông cảm do code hơi dài nên tách ra 2 bài cho dễ nhìn chứ hem phải xì.......................pammmmmmmmmmmmmmm đâu nha [You must be registered and logged in to see this image.] |
| | | Sakura
Thú CƯng :
Số bài viết : 1124 Điểm : 1688 Được cảm ơn : 35 Ngày sinh : 03/11/1990 Tham gia ngày : 16/03/2010 Tuổi : 34 Đến từ : Bình Dương Ngề nghiệp : IT Student
| Tiêu đề: Re: C++:ghi đè chức năng với phương thức ảo 7/8/2010, 12:22 | |
| ưu điểm:chúng ta sẽ tiết kiệm thời gian,k cần tái thực hiện nhiều lần nó khác kế thừa chỗ nào dzị hotboy? chưa hiểu lắm! , kế thừa cũng sử dụng lại mã vậy? |
| | | tkhking
Member Năng Động
Thú CƯng :
Số bài viết : 114 Điểm : 135 Được cảm ơn : 1 Ngày sinh : 18/03/1990 Tham gia ngày : 01/07/2010 Tuổi : 34 Đến từ : Óc Trâu Lấy Ra Ngề nghiệp : Student Chăm ngôn : King
| Tiêu đề: Re: C++:ghi đè chức năng với phương thức ảo 7/8/2010, 12:30 | |
| hothoy ghê quá nhìn code mà hoa cả mắt [You must be registered and logged in to see this image.] không biết khi nào mình mới bằng hótboy đây [You must be registered and logged in to see this image.] |
| | | hotboy
Thú CƯng :
Số bài viết : 705 Điểm : 1043 Được cảm ơn : 9 Ngày sinh : 21/03/1990 Tham gia ngày : 13/05/2010 Tuổi : 34 Đến từ : BDU
| Tiêu đề: Re: C++:ghi đè chức năng với phương thức ảo 7/8/2010, 14:03 | |
| - tkhking đã viết:
- ghê quá nhìn code mà hoa cả mắt [You must be registered and logged in to see this image.]
k nhiều lắm đâu,cái đó chỉ là 1 cái ví dụ nhỏ thôi mà,z mà nhiều thì mai mốt sao đi làm coder được [You must be registered and logged in to see this image.] hehehe nói chơi thui chứ quánh em tụi nghiệp [You must be registered and logged in to see this image.] |
| | | hotboy
Thú CƯng :
Số bài viết : 705 Điểm : 1043 Được cảm ơn : 9 Ngày sinh : 21/03/1990 Tham gia ngày : 13/05/2010 Tuổi : 34 Đến từ : BDU
| Tiêu đề: Re: C++:ghi đè chức năng với phương thức ảo 7/8/2010, 14:07 | |
| - Edward_Thien đã viết:
- ưu điểm:chúng ta sẽ tiết kiệm thời gian,k cần tái thực hiện nhiều lần
nó khác kế thừa chỗ nào dzị hotboy? chưa hiểu lắm!, kế thừa cũng sử dụng lại mã vậy? tui cũng thuộc dạng gà con mới nở nên k biết giải thích sao đây nên copy về cho ông coi thử nèh: - Trích dẫn :
- Factory method (factory method pattern) là một mẫu thiết kế hướng đối
tượng, nhằm giải quyết vấn đề tạo một đối tượng mà không cần thiết chỉ ra một cách chính xác lớp nào sẽ được tạo. Factory method giải quyết vấn đề này bằng cách định nghĩa một phương thức cho việc tạo đối tượng, và các lớp con thừa kế có thể override để chỉ rõ đối tượng nào sẽ được tạo. Nói chung, "factory method" thường được áp dụng cho những phương thức mà nhiệm vụ chính của nó là tạo ra đối tượng. - Trích dẫn :
- Tính kế thừa (inheritance): Đặc tính này cho phép một đối
tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa. Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại. Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng có tính chất này. |
| | | Sponsored content
| Tiêu đề: Re: C++:ghi đè chức năng với phương thức ảo | |
| |
| | | | C++:ghi đè chức năng với phương thức ảo | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| Latest topics | » Renew forum by Mr.Cuong 4/4/2015, 08:10
» Diễn đàn bỏ lâu vậy mà vẫn không die! by theanhkkt 1/4/2015, 08:03
» Phân biệt giải thuật tìm kiếm sâu và sâu dần... by mailoc 20/12/2014, 15:12
» Toàn bộ giáo trình bên mạng của Nhất Nghệ đây (Link mediafire) Hot down nhanh kẻo die by mrchikoy 11/6/2013, 10:34
» [Thông báo] Còn ai nhớ page này by jetvhs 10/6/2013, 13:45
» PHI HÀNH ĐOÀN MỚI LÊN ISS by Sakura 10/6/2013, 00:41
» LAPTOP ASUS TAICHI VỚI MÀN HÌNH FULL HD KÉP by Mr.Cuong 25/5/2013, 12:04
» Video tự học C# từ A->Z by Sakura 7/5/2013, 16:11
» Cơ Bản Ép Kiểu Trong Java by Sakura 7/5/2013, 16:09
» THÔNG BÁO VỀ VIỆC DỰ KIẾN KIỂM TRA NĂNG LỰC NGOẠI NGỮ - TIN HỌC THÁNG 07/2012 by Sakura 7/5/2013, 16:09
» Mấy anh chị cho em xin cái đồ án mẫu !! by huutuan_se7en 4/1/2013, 22:37
» Làm thế nào để tạo ra 1 form đăng nhập bằng C Sharp by Sakura 14/9/2012, 18:09
» Tổ chức đi du lịch Vũng Tàu 2 ngày 1 đêm by o0ovioletstaro0o 15/8/2012, 20:51
» Những hình ảnh báo cáo tốt nghiệp khóa 2008 -2012 by hotboy 10/8/2012, 13:35
» Banner xấu quá! @@ by con_ca_nho90 25/7/2012, 19:43
» mấy anh chị cho em khóa 12 hỏi cái này by con_ca_nho90 25/7/2012, 19:40
» Hướng dẫn - Làm website bằng Google Site; Đăng ký và sử dụng Google Apps by Già Làng 18/6/2012, 14:20
» Tài liệu ôn thi QTDA CNTT by Sakura 15/6/2012, 15:38
» học phí, lệ phí thi lại học lại năm học 2012 - 2013 update :P by o0ovioletstaro0o 4/6/2012, 14:36
» [11TH02][QTDACNTT] - Tài liệu full by Sakura 15/5/2012, 08:13
|
|