Kamis, 24 September 2009

Polymorphism

Poly berarti banyak dan morph berarti bentuk, jadi polymorphism dapat berarti dapat menggunakan banyak bentuk tanpa harus mengacu details yang sama. Sebagai contoh ketika sebuah perusahaan telepon/provider telepon mengirimkan sinyal ke anda (dering telepon), mereka tidak tahu telepon apa yang anda gunakan, bisa model lama dengan dering kuno, bisa HP dengan dengan dering music mp3, TV Phone, PDA Phone dll. Yang provider tahu bahwa masing-masing telepon mempunyai ‘base type’ telepon dan mempunyai method untuk berdering. Ketika provider mengirim sinyal mereka hanya berharap bahwa telepon akan berdering tidak peduli teleponnya, nah provider telepon memperlakukan telepon anda secara polymorphism

Anda dapat mengimplementasikan polymorphism dengan dua cara yaitu :

· Membuat virtual method pada base class (class induk)

· Membuat class turunan yang mempunyai method dengan keyword override yang mengganti isi dari method dengan keyword virtual yang ada pada base class-nya


Contoh program :
 
#include 
#include 
#include 
class Foo
{
    public:
        Foo(std::string x) : someString(x) { std::cout <<>
               std::endl; }
        Foo(double x) : someDouble(x) { std::cout <<>
               std::endl; }
        Foo(float x) : someFloat(x) { std::cout <<>
               std::endl; }
        Foo(bool x) : someBool(x) { std::cout <<>
        Foo(int x) : someInt(x) { std::cout <<>
        ~Foo() { }
 
    private:
        std::string someString;
        double someDouble;
        float someFloat;
        bool someBool;
        int someInt;
};


int main()
{
        std::vector* my_foo;
        my_foo = new std::vector;
        my_foo->push_back(new Foo(static_cast
               ("SomeString")));
        my_foo->push_back(new Foo(102.352));
        my_foo->push_back(new Foo(1.7));
        my_foo->push_back(new Foo(true));
        my_foo->push_back(new Foo(25));
        
        for(unsigned int i = 0; i <>size(); ++i)
               
        delete my_foo;
        return(EXIT_SUCCESS);
}

Tidak ada komentar:

Posting Komentar