Selasa, 15 Februari 2011

Source Code - Inheritance

Mengenai Inheritance menghitung luas bangun datar (square, circle, rectangle, oval) dengan menggunakan struktur model pewarisan Multilevel ?


#include

#include

using namespace std;

class BasePoint { //class induk

public:

BasePoint(int px, int py):x(px),y(py) {} //constructor dengan default argument

int x, y; //position

virtual string type() = 0; //default constructor dengan nilai 0 (nol)

virtual void info() {

cout << endl << "figure: " << type() << endl;

cout << "position: x=" << x << ", y=" << y << endl;

}

};

class Figure1P : public BasePoint { // pewarisan bersifat public dari class BasePoint

public:

Figure1P(int px, int py, int r):p1(r),BasePoint(px, py) {} //constructor dengan default argument

int p1;

virtual void info() { //default constructor dengan nilai 0 (nol)

BasePoint::info();

cout << "property 1: p=" << p1 << endl;

}

};

class Square : public Figure1P { // pewarisan bersifat public dari class Figure1P

public:

Square(int px, int py, int r):Figure1P(px, py, r) {}; //constructor dengan default argument

virtual string type() { //default constructor dengan nilai 0 (nol)

return "square";

}

};

class Circle : public Figure1P { // pewarisan bersifat public dari class Figure1P

public:

Circle(int px, int py, int r):Figure1P(px, py, r) {} //constructor dengan default argument

virtual string type() { //default constructor dengan nilai 0 (nol)

return "circle";

}

};

class Figure2P : public Figure1P { // pewarisan bersifat public dari class Figure1P

public:

Figure2P(int px, int py, int w, int h):p2(h),Figure1P(px, py, w) {} //constructor dengan default argument

int p2;

virtual void info() { //default constructor dengan nilai 0 (nol)

Figure1P::info();

cout << "property 2: p=" << p2 << endl;

}

};

class Rectangle : public Figure2P { // pewarisan bersifat public dari class Figure2P

public:

Rectangle(int px, int py, int w, int h):Figure2P(px, py, w, h) {} //constructor dengan default argument

virtual string type() { //default constructor dengan nilai 0 (nol)

return "rectangle";

}

};

class Oval : public Figure2P {

public:

Oval(int px, int py, int w, int h):Figure2P(px, py, w, h) {}; //constructor dengan default argument

virtual string type() { //default constructor dengan nilai 0 (nol)

return "oval";

}

};

void main(void) {

BasePoint **objs = new BasePoint*[5];

// allocate space for 10 BasePoint pointers,

// they may be used to store derived classes

// creating objects

objs[0] = new Circle(7, 6, 55);

objs[1] = new Rectangle(12, 54, 21, 14);

objs[2] = new Square(19, 32, 10);

objs[3] = new Oval(43, 10, 4, 3);

objs[4] = new Square(3, 41, 3);

bool flag=false;

do {

cout<< endl << "We have 5 objects with numbers 0..4" << endl;

cout<<"Enter object number to view information about it " << endl;

cout<< "Enter any other number to quit " << endl;

char onum; // in fact, this is a character, not a number

// this allows user to enter letter and quit...

cin >> onum;

// flag -- user have entered number 0..4

flag = ((onum >= '0')&&(onum <= '4'));

if (flag)

objs[onum-'0']->info();

} while(flag);

// freeing memory

for(int i=0;i<5;i++)

delete objs[i];

delete [] objs;

}

Source Code - Operator Overloading

Overload operat or unary ++ untuk menambah data, operator * untuk menampilkan data dan operator ~ untuk mencari data

#include
class complex
{
float riil; float imajiner;
public:
complex()
{
riil=0;
imajiner=0;
};
complex(float real, float imaginer)
{
riil=real;
imajiner=imaginer;
};
void display(void)
{
cout<<"["< };
complex operator + (complex c) // operator overloading
{
complex temp;
temp.riil=riil+c.riil;
temp.imajiner=imajiner+c.imajiner;
return(temp);
};
void operator - (void) // operator overloading
{
riil=-riil;
imajiner=-imajiner;
};
};

void main()
{
complex c1(2.5f, 6.1f);
complex c2(3.3f, 4.5f);
complex c3;
-c2;
c3=c1+c2;
cout<<"\nC1=";
c1.display();
cout<<"\nC2=";
c2.display();
cout<<"\nC3=";
c3.display();
}

Source Code - Overloading Function

Overloading Function untuk Luas Segitiga dengan 2 parameter


#include

class segitiga

{

int alas1, tinggi2;

double tinggi1, alas2;

public:

void MD() // fungsi perkalian & pembagian (Multiplication&Division)

{

alas1=25;tinggi2=50;

cout<<"Hasil = "<// Hasil perhitungan Luas Segitiga dengan 2 parameter

};

void MD(int x, int y) // fungsi perkalian & pembagian (Multiplication&Division)

{

alas1=x;tinggi2=y;

cout<<"Hasil = "<// Hasil perhitungan Luas Segitiga dengan 2 parameter

};

void MD(int x, double y) // fungsi perkalian & pembagian (Multiplication&Division)

{

alas1=x;tinggi1=y;

cout<<"Hasil = "<// Hasil perhitungan Luas Segitiga dengan 2 parameter

};

void MD(double x, int y) // fungsi perkalian & pembagian (Multiplication&Division)

{

tinggi1=x;alas1=y;

cout<<"Hasil = "<// Hasil perhitungan Luas Segitiga dengan 2 parameter

};

void MD(double x, double y) // fungsi perkalian & pembagian (Multiplication&Division)

{

tinggi1=x;alas2=y;

cout<<"Hasil = "<// Hasil perhitungan Luas Segitiga dengan 2 parameter

};

};

void main()

{

segitiga luas;

luas.MD();

luas.MD(15,20);

luas.MD(2.30,40);

luas.MD(4,45.25);

luas.MD(8.75,2.50);

}

Source Code - Friend Function

Friend Function untuk Luas Segitiga


#include

class Y;

class X

{

int a;

public:

void execute()

{

cout<<"Masukkan alas : ";cin>>a;

};

friend void luas (X,Y); // friend declared

};

class Y

{

int t;

public:

void execute()

{

cout<<"Masukkan tinggi : ";cin>>t;

};

friend void luas (X,Y); // friend declared

};

void luas (X q, Y w)

{

int luas;

luas=q.a*w.t/2;

cout<<"Luas Segitiga : "<

};

void main()

{

X x;

Y y;

x.execute();

y.execute();

luas(x,y);

}