Rabu, 10 Juni 2009

contoh pembahasan laporan alpro II: operator overloading dan exception handling

Dengan pembahasan yang gw bwt ini moga bisa membantu kalian semua dalam mengerjakan laporan.....CAYOOOOOO_<


PEMBAHASAN
complex.cpp
Berikut ini akan dibahas dari listing program yang telah didapati outputnya:
#include &lt;iostream.h&gt;
#include &lt;stdlib.h&gt;
// merupakan pendefisian file header yaitu file yang akan dibaca oleh program yang merupakan file baku yang akan dicari dalam direktori-direktori yang didefinisikan oleh kompilator yang menentukan perintah instruksi yang akan digunakan didalam program utama misalnya perintah-perintah seperti cin, cout, printf, scanf dll yang dipakai oleh masing-masing header tersebut.

class complex
{
double real;
double imaginer;
//merupakan suatu class dengan nama &acirc;��complex&acirc;�� yang merupakan kelas induk Dimana didalam kelas ini terdapat objek real dan imaginer yang sama memiliki tipe data double.

public:
//merupakan mode access public yang nantinya akan didefinisikan anggota-anggota didalamnya dengan fungsinya masing-masing.

complex (double re=0, double im=0)
{
real = re;
imaginer = im;
}
//merupakan suatu fungsi yang terdapat pada kelompok mode access public yang memilki parameter dengan tipe data double dan masing-masing benilai nol (0). Dimana dalam fungsi ini didefinisikan objek pada class complex tadi memiliki parameter.

complex operator- ()
{
complex result;
result.real = -real;
result.imaginer = - imaginer;

return result;
}

//merupakan suatu pendefinisian fungsi dalam kelompok mode access public dimana dalam fungsi ini dengan operator pengurangan (-). Yang didalamnya didefisikan objek-objeknya dengan akhir nilai objek &acirc;��result&acirc;�� akan dikembalikan ke nilai yang semula.

complex operator+ (complex c)
{
complex result;
result.real= real + c.real;
result.imaginer = imaginer + c.imaginer;
return result;
}
//merupakan suatu pendefinisian fungsi dalam kelompok mode access public dimana dalam fungsi ini dengan operator penjumlahan(+) dengan parameter dalam fungsi ini &acirc;��complex c&acirc;��. Yang didalamnya didefisikan objek-objeknya dengan akhir nilai objek &acirc;��result&acirc;�� akan dikembalikan ke nilai yang semula.

complex operator- (complex c)
{
complex result;
result.real = real - c.real;
result.imaginer = imaginer + c.imaginer;
return result;
}
//merupakan suatu pendefinisian fungsi dalam kelompok mode access public dimana dalam fungsi ini dengan operator pengurangan (-) dengan parameter didalamnya ialah &acirc;��complex c&acirc;��. Yang didalam fungsi ini akan didefisikan objek-objeknya dengan akhir nilai objek &acirc;��result&acirc;�� akan dikembalikan ke nilai yang semula.

void display()
{
cout &lt;&lt; '(' &lt;&lt; real &lt;&lt; ', ' &lt;&lt; imaginer &lt;&lt; ')' &lt;&lt; endl;
}
};
//merupakan suatu pendefinisian fungsi dengan nama &acirc;��display&acirc;�� yang mana fungsi ini digunakan untuk mencetakan tampilan nilai dari objek real dan imaginer. Dengan perintah endl akan menyebabkan pebacaan akan di lanjutkan ke baris berikutnya.

int main() //merupakan main class ( kelas utama ) yang akan mengembalikan nilai tipe int (return 0).

{
complex z (1,2), w (3,4), b;
complex a= z+w;
a.display();
//merupakan suatu pendefinisian objek terhadap class complex yang dimana memiliki objek z, w, dan b dam dalam objek a didefinisikan nilai objek z ditambah dengan nilai objek w hingga akhirnya objek a akan melakukan pemanggilan fungsi &acirc;��display&acirc;�� untuk mencetak hasilnya. Ini merupakan untuk pendefinisian operator (+) penambahan.

a=z-w;
a.display();
//merupakan pendefinisian objek a yang akan didapat dari pengurangan nilai dari objek z dikurangi objek w. dan akan dilakukan pencetakan terhadap objek a tersebbut. Ini merupakan untuk pendefinisian operator (-) pegurangan.

b=-a;
b.display();
//merupakan suatu pendefinisian objek b yang mana akan dihasilkan dari nilai minus a yang nantinya dalam pendefinisian ini akan dilakukan pemanggilan fungsi terhadap fungsi &acirc;��displey&acirc;�� untuk mencetak nilai objek b.
} //merupakan suatu penutup dalam suatu program utama (main program)


matriks22.cpp

Berikut ini akan dibahas dari listing program yang telah didapati outputnya:
#include &lt;iostream.h&gt;
#include &lt;stdlib.h&gt;
// merupakan pendefisian file header yaitu file yang akan dibaca oleh program yang merupakan file baku yang akan dicari dalam direktori-direktori yang didefinisikan oleh kompilator yang menentukan perintah instruksi yang akan digunakan didalam program utama misalnya perintah-perintah seperti cin, cout, printf, scanf dll yang dipakai oleh masing-masing header tersebut.

class Matriks22 {
//merupakan suatu kelas dengan nama class &acirc;��matriks22&acirc;��. Dimana didalamnya nantinya akan didefinisikan kelompok-kelompok mode access.

public:
Matriks22 ();
Matriks22 (int [] [2]);
Matriks22 operator-();
Matriks22 operator+ (Matriks22);
void print();
//merupakan suatu pendefinisian suatu kelompok mode access public dengan terdapatnya defini fungsi-fungsi dalam deklarasi pada mode access public ini. Anggota-angota fungsi mode access public ini ialah fungsi &acirc;��matriks22&acirc;�� tanpa parameter lalu dilanjutkan dengan fungsi &acirc;��matriks22&acirc;�� dengan parameter yang bertipe data int. Selanjutnya fungsi yang dengan nama yang sama dengan penggunaan operator (-) pengurangan dan dilanjutkan lagi dengan fungsi masih dengan nama yang sama yang dengan penggunaan operator (+) penjumlahan. Dan akhir definisi dideklarasikan fungsi dengan nama &acirc;��print&acirc;�� yang nantinya akan digunakan untuk melakukan pencetakkan hasil.

private:
int array [2] [2];
};
//merupakan suatu definisi kelompok mode access private yang didalamnya terdapat anggota pendeklarasian array yang bertipe int dengan objeknya masing-masing 2.

Matriks22::Matriks22()
{
for (int i=0;i&lt;2;i++)
for (int j = 0; j&lt;2; j++)
array[i] [j] = 0;
}
//merupakan suatu pendeklarasian fungsi yang memiliki nama sama dengan nama kelas induk yang juga merupakan suatu kostruktor. Dalam fungsi ini didefinisikan suatu objek yang nantinya objek tersebut dideklarasikan dengan pengulangan for dengan nilai akhir sama dengan nol pada deklarasinya.

Matriks22::Matriks22 (int arr[] [2])
{
for (int i=0; i&lt;2;i++)
for (int j=0; j&lt;2;j++)
array [i] [j] = arr [i] [j];
}
//merupakan suatu pendeklarasian fungsi yang memiliki nama sama dengan nama kelas induk yang memiliki objek yang bertipe arr yang juga merupakan suatu kostruktor. Dalam fungsi ini juga didefinisikan suatu objek yang nantinya objek tersebut dideklarasikan dengan pengulangan for dimana pada akhirnya array dengan dua objek sama dengan yang objek dengan tipe arr.

Matriks22 Matriks22:: operator- ()
{
Matriks22 temp;
for (int i=0; i&lt;2; i++) {
for (int j=0; j&lt;2;j++) {
if (array [i] [j] !=0)
temp.array [i] [j] = -1*array[i] [j];
}
}
return temp;
}
//merupakan suatu pendeklarasian fungsi dengan operator (-) pengurangan dimana objek fungsi memiliki nama yang sama dengan nama kelas induk yang tidak memiliki parameter. Dalam fungsi ini juga didefinisikan suatu objek yang yang bertipe temp yang nantinya objek tersebut dideklarasikan dengan pengulangan for dimana pada akhirnya array memiliki dua objek yaitu &acirc;��i dan j&acirc;�� yang merupakan array dengan pemanggilan objek temp yang dideklarasikan sama dengan objek dengan tipe array. Dan akhir deklarasi akan dilakukan pengembalian nilai terhadap objek temp.

Matriks22 Matriks22::operator+(Matriks22 b)
{
Matriks22 temp;
for (int i=0; i&lt;2;i++)
for(int j = 0; j&lt;2;j++) {
temp.array [i] [j] = array[i] [j]+b.array[i] [j];
}
return temp;
}
//merupakan suatu pendeklarasian fungsi dengan operator (+) penjumlahan dengan parameter &acirc;��matrik2 b&acirc;�� dimana objek fungsi memiliki nama yang sama dengan nama kelas induk yang tidak memiliki parameter. Dalam fungsi ini juga didefinisikan suatu objek yang yang bertipe temp yang nantinya objek tersebut dideklarasikan dengan pengulangan for dimana pada array memiliki dua objek yaitu &acirc;��i dan j&acirc;�� dengan pemanggilan objek &acirc;��temp&acirc;�� yang nantinya merupakan dilakukan penambahan pada array dengan objek b dengan objek dengan tipe array yang juga memiliki dua objek. Dan akhir deklarasi akan dilakukan pengembalian nilai terhadap objek temp.

void Matriks22::print ()
{
for (int i=0; i&lt;2; i++) {
for (int j=0; j&lt;2; j++) {
cout &lt;&lt; array [i] [j] &lt;&lt; &quot; &quot;;
}
cout &lt;&lt; endl;
}
cout &lt;&lt; endl; Matriks22 m1 (data1),m2 (data2),m3;
}
//merupakan suatu pendeklarasian fungsi yang akan dilakukan suatu pencetakan terhadap hasil dari deklarasi fungsi-fungsi yang terdapat pada kelas matrik22. Dalam fungsi ini juga objeknya akan dideklarasikan dengan pengulangan for dimana pada akhirnya akan dilakukan pemanggilan pada fungsi matriks22 dengan objek yang telah dideklarasikan.

main ()
//merupakan main class ( kelas utama ) yang tidak akan mengembalikan nilai apapun.

{
int data1 [2] [2] = { {1,2},{4,5}};
int data2 [2] [2] = { {2,2},{2,2}};
//merupakan suatu pendefinisian objek terhadap parameter &acirc;��data1 dan data2&acirc;�� yang telah didefinisikan pada fungsi di atas dengan nilai bertipe int. dan akan dideklarasikan niai-nilai terhadap objek-objek tersebut.

m3 = -m1;
m3.print();
//merupakan suatu pendefinisian terhadap objek m3 yang akan bernilai sama dengan minus objek. Dan akan dilakukannya pencetakan terhadap nilai objek m3 dengan pemanggilan objek print.

m3 = m1 + m2;
m3.print();
//merupakan suatu pendefinisian terhadap objek m3 yang akan bernilai sama dengan objek m1 ditambah dengan objek m2. Dan akan dilakukannya pencetakan terhadap nilai objek m3 dengan pemanggilan objek print.

} //merupakan suatu penutup dalam suatu program utama (main program)


exception.cpp

Berikut ini akan dibahas dari listing program yang telah didapati outputnya:
#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;
// merupakan pendefisian file header yaitu file yang akan dibaca oleh program yang merupakan file baku yang akan dicari dalam direktori-direktori yang didefinisikan oleh kompilator yang menentukan perintah instruksi yang akan digunakan didalam program utama misalnya perintah-perintah seperti cin, cout, printf, scanf dll yang dipakai oleh masing-masing header tersebut.

class DivideByZeroException {
//merupakan suatu kelas dengan nama &acirc;��class DivideByZeroException&acirc;�� yang merupakan suatu kelas induk.

public:
DivideByZeroException::DivideByZeroException()
: message (&quot;Attempted to divide by zero&quot;){}

char* what() {return message;}
//merupakan suatu pendeklarasian suatu kelompok mode access public yang diadalamnya didefinisikan suatu eksepsi yang digunakan menampilkan suatu pesan yang menyatakan error. Lalu akan dilakukan suatu pengecekan apakah bisa dilakukan manipulasi eksepsi dengan bertipe string dan akhirnya akan dilakukan pengembalian pesan yang didefinisikan tadi.

private:
char* message;
};
//merupakan suatu pendeklarasian suatu kelompok mode access private yang diadalamnya didefinisikan suatu pesan untuk eksepsi yang bertipe data string.

double quotient ( int numerator, int denominator)
{
if (denominator ==0)
throw DivideByZeroException();

return static_cast&lt;double&gt; (numerator)/ denominator;
}
//merupakan suatu pendefinisian fungsi pada eksepsi dengan tipe data double yang mana eksepsi hanya terdapat satu saja yang memiliki parameter &acirc;��numerator dan denominator&acirc;�� yang masing-masing bertipe data int. yang didefinisikan didalam fungsi ini jika nilai denominator benilai 0 maka akan dilakukannya suatu pelemparan ke eksepsi awal. Dan akhir akan dilakukan pengulangan lagi untuk data bertipe data double antara pada objek numerator atau denominator.

int main() //merupakan main class ( kelas utama ) yang akan mengembalikan nilai tipe int (return 0).

{
int a,b;
//merupakan suatu pendefinisian untuk pendeklarasian objek yang bertipe data int.

cout &lt;&lt; &quot; Input a and b : &quot;;
cin &gt;&gt; a &gt;&gt; b;
//merupakan suatu pendeklarasian untuk menampilkan suatu kalimat yan g nantinya akan diinputkan data pada saat output nanti.

try {
cout &lt;&lt; &quot;Result is&quot; &lt;&lt; quotient (a,b) &lt;&lt; endl;
}
catch (DivideByZeroException &amp;e)
{
cout &lt;&lt; &quot; Exception occured : &quot; &lt;&lt; e.what() &lt;&lt; endl;
}
//merupakan suatu definisi pada pendeklarasian blog try-catch, dimana akan dicetak nilai dari suatu eksepsi tadi jika eksepsi dengan objek a dan b pada try. Dan pada catch akan dilakukan pencetakan nilai eksepsi jika suatu inputan pembaginya nol.
getch();
//merupakan akhir dari program utama

} //merupakan suatu penutup dalam suatu program utama (main program)

0 komentar:

Posting Komentar