C++:ghi đè chức năng với phương thức ảo


Diễn đàn chia sẻ kiến thức, kinh nghiệm về IT và cuộc sống!
 
Trang ChínhGalleryTìm kiếmLatest imagesĐăng kýĐăng Nhập
Top posters
Sakura (1124)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
hotboy (705)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
Già Làng (373)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
con_ca_nho90 (289)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
that_true (154)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
theanhkkt (143)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
phamay (137)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
lovelonelyman (134)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
o0ovioletstaro0o (128)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
stevenhung (122)
C++:ghi đè chức năng với phương thức ảo Vote_lcapC++:ghi đè chức năng với phương thức ảo Voting_barC++:ghi đè chức năng với phương thức ảo Vote_rcap 
Âm - Dương lịch
Clock
Logo
11TH02 Pro!
Liên kết
Tin tức 60s
Tin công nghệ
Thời sự 24h
Game Moblie

Share
 

 C++:ghi đè chức năng với phương thức ảo

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
hotboy

C++:ghi đè chức năng với phương thức ảo Stars7
hotboy

Thú CƯng : C++:ghi đè chức năng với phương thức ảo Hippopotamus-icon
Nam Aries

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

C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiêu đề: 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 I_icon_minitime7/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
Về Đầu Trang Go down
hotboy

C++:ghi đè chức năng với phương thức ảo Stars7
hotboy

Thú CƯng : C++:ghi đè chức năng với phương thức ảo Hippopotamus-icon
Nam Aries

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

C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiê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 I_icon_minitime7/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();
   
}

Về Đầu Trang Go down
hotboy

C++:ghi đè chức năng với phương thức ảo Stars7
hotboy

Thú CƯng : C++:ghi đè chức năng với phương thức ảo Hippopotamus-icon
Nam Aries

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

C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiê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 I_icon_minitime7/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.]
Về Đầu Trang Go down
Sakura

C++:ghi đè chức năng với phương thức ảo Stars7
Sakura

Thú CƯng : C++:ghi đè chức năng với phương thức ảo I-hate-Cats-icon
Nam Scorpio

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

C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiê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 I_icon_minitime7/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!Very Happy, kế thừa cũng sử dụng lại mã vậy?
Về Đầu Trang Go down
tkhking

Member Năng Động


Member Năng Động
tkhking

Thú CƯng : C++:ghi đè chức năng với phương thức ảo Panda-icon
Nam Pisces

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

C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiê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 I_icon_minitime7/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.]
Về Đầu Trang Go down
hotboy

C++:ghi đè chức năng với phương thức ảo Stars7
hotboy

Thú CƯng : C++:ghi đè chức năng với phương thức ảo Hippopotamus-icon
Nam Aries

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

C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiê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 I_icon_minitime7/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.]
Về Đầu Trang Go down
hotboy

C++:ghi đè chức năng với phương thức ảo Stars7
hotboy

Thú CƯng : C++:ghi đè chức năng với phương thức ảo Hippopotamus-icon
Nam Aries

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

C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiê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 I_icon_minitime7/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!Very Happy, 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.
Về Đầu Trang Go down
Sponsored content




C++:ghi đè chức năng với phương thức ảo Empty
Bài gửiTiê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 I_icon_minitime

Về Đầu Trang Go down
 

C++:ghi đè chức năng với phương thức ảo

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

 Similar topics

-
» Phương Thức ToString trong Java
» CCác bài tập của cô Phượng dạy thực hành HQTCSDL-nhóm 2 đây!
» [Lập Trình Tính Toán Hình Thức]Full Thực hành tuần 1 --> 3
» Tài liệu ôn thi thực hành môn "Các hệ cơ sở tri thưc"!
» Pé Gà Bông tổ chức picnic sau đồ án ngành

Permissions in this forum:Bạn không có quyền trả lời bài viết
IT World! :: HỌC TẬP :: Học Kỳ IV :: Lập Trình Hướng Dối Tượng(OOP)-