Anda di halaman 1dari 24

LAPORAN HASIL PRAKTIKUM

ALGORITMA DAN PEMPROGRAMAN II

Nama

: Yopi Lala

NIM

: DBC 113 016

Kelas

:G

Modul

: II (PEWARISAN)

JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2014

BAB I
TUJUAN DAN LANDASAN TEORI
A. Tujuan
Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu
membuat kelas baru dari kelas yang sudah ada dengan pewarisan.
B. Landasan Teori
1. PENGERTIAN PEWARISAN (INHERITANCE)
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek
dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class
dapat mempunyai class turunan. Inheritance adalah konsep pemrograman
berorientasi object yang memungkinkan membuat hubungan di mana ada class
yang mewarisi semua attribute dan method dari class lain. Class baru yang lebih
spesifik disebut subclass atau class turunan, sedangkan class yang diturunkan
disebut superclass. Untuk menguji suatu kasus disebut inheritance atau tidak,
dapat menggunakan kata kunci IS A. (Namun, pengujian ini hanya berlaku
searah (dari subclass ke superclass)).
Suatu class yang mempunyai class turunan dinamakan parent class atau
base class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau
child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent
class.
Karena suatu subclass dapat mewarisi apa apa yang dipunyai oleh parent
class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia
punyai dan juga apa-apa yang ia warisi dari class parent-nya.
Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain
hanya memperluas (extend) parent class-nya.
Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan
semakin bersifat spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh
binatang, demikian halnya juga macan , kucing, Paus dan Monyet memiliki
seluruh sifat yang diturunkan dari class mamalia.
Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup
didefinisikan didefinisikan dalam class binatang saja.

Class mamalia tidak perlu mendefinisikan ulang apa yang telah dimiliki
oleh class binatang, karena sebagai class turunannya, ia akan mendapatkan
karakteristik dari class binatang secara otomatis. Demikian juga dengan class
macan, kucing, Paus dan monyet, hanya perlu mendefinisikan karakteristik yang
spesifik dimiliki oleh class-nya masing-masing. Contoh lain mamalia: (berdaun
teling, beranak, menyusui). Contohnya: Anjing, kucing, marmut pengujiaannya:
marmut IS A mamalia. Kendaraan (mempunyai kemudi) contohnya: mobil, motor,
pesawat terbang Pengujiannya: motor IS A kendaraan.
Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka
hanya perlu mendefinisikan karakteristik yang lebih umum akan didapatkan dari
class darimana ia diturunkan.
PemrogramanC++ memungkinkan suaru class dapat mewarisi data
ataupun ke anggota class lain. Dalam hal ini class yang diwarisi sifat disebut class
turunan, sedangkan kelas yang mewarisi disebut class dasar.
Pewarisan dibedakan menjadi 3, yaitu :
1. Pewarisan tunggal adalah pewarisan yang mana kelas dasarnya tunggal. Pada
pewarisan ini, kelas turunan dapat berjumlah lebih dari satu.
2. Pewarisan jamak adalah dimana satu kelas diturunkan lebih dari satu kelas
yaang berbeda. Perlu dicatat bahwa kelas dasarnya bukan merupakan turunan
dari satu kelas.
3. Pewarisan jamak maya adalah yang mana kelas dasarnya lebih dari satu dan
beberapa diatara kelas tersebut merupakan kelas turunan dari kelas dasar yang
sama.
Salah satu hal penting dalam class adalah inheritance. Inheritance
mengijinkan kita untuk membuat objek yang diturunkan dari objek lain, sehingga
dimungkinkan didalamnya terdapat member lain selain membernya sendiri.
Sebagai contoh, misalnya kita ingin mendeklarasikan sederetan class yang
mendeskripsikan polygon seperti CRectangle atau CTriangle. Keduanya dapat
dideskripsikan dengan dua atribut yakni : alas dan tinggi.
Untuk menurunkan class dari yang lain, kita menggunakan operator :
(colon) dalam deklarasi class turunan dengan cara sbb:
class derived_class_name: public base_class_name;

Dimana

derived_class_name

adalah

nama

class

turunan

dan

base_class_name adalah nama class yang menjadi dasar. Public dapat diganti
dengan akses lain misalnya protected atau private, dan menjelaskan akses untuk
member yang diturunkan.
Kelas dasar :
-

Sifat a

Sifat b
Kelas turunan :

Sifat a

Sifat b

Sifat c
Sifat a dan sifat b diwariskan pada kelas turunan.
Keuntungan pewarisan sifat adalah suatu kode yang telah ditulis mudah

sekali untuk dipanggil kembali. Sifat yang dimaksud dalam class adalah private,
protected dan public. Sifat yang dapat diwariskan adalah protected dan public.
Private bersifat khusus sehingga tidak adapt diwariskan.
2. DEKLARASI PEWARISAN (INHERITANCE)
Deklarasi yang digunakan adalah dengan menambahkan kata kunci
extends setelah deklarasi nama class, kemudian diikuti dengan nama parent classnya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin
melakukan perluasan class.
public class B extends A { }
Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass
dari class Object.
public class A extends Object { }
3. KAPAN KITA MENERAPKAN INHERITANCE
Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu
class yang dapat diperluas dari class lain.
Misal terdapat class Pegawai public class Pegawai { public String nama;
public double gaji; } Misal terdapat class Manager public class Manajer { public

String

nama;

public

double

gaji;

public

String

departemen;

Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang
identik sama dengan class Pegawai, hanya saja ada tambahan data member
departemen.
Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan
dari class Pegawai dengan tambahan data member departemen.
Disini perlu memakai konsep inheritance, sehingga class Manajer dapat
kita tuliskan seperti berikut :
public class Manajer extends Pegawai { public String departemen; }
4. KEUNTUNGAN INHERITANCE
Subclass menyediakan state/behaviour yang spesifik yang membedakannya
dengan superclass, hal ini akan memungkinkan programmer Java untuk

menggunakan ulang source code dari superclass yang telah ada.


Programmer Java dapat mendefinisikan superclass khusus yang bersifat
generik, yang disebut abstract class, untuk mendefinisikan class dengan
behaviour dan state secara umum.

5.

ISTILAH INHERITANCE
Extends

Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
Superclass Superclass digunakan untuk menunjukkan hirarki class yang

berarti class dasar dari subclass/class anak.


Subclass Subclass adalah class anak atau turunan secara hirarki dari

superclass.
Super Keyword ini digunakan untuk memanggil konstruktor dari superclass

atau menjadi variabel yang mengacu pada superclass.


Methode Overriding Pendefinisian ulang method yang sama pada
subclass.Dalam inheritance, method overriding berbeda dengan method
overloading. Kalau method overriding adalah mendefinisikan kembali
method yang sama, baik nama method maupun signature atau parameter yang
diperlukan dalam subclass, kalau method overloading adalah mendefinisikan
method yang memiliki nama yang sama, tetapi dengan signature yang
berbeda dalam definisi class yang sama.

BAB II
Langkah Kerja
1. Buatlah program seperti dibawah ini!
#include <iostream.h>
#include<conio.h>
Class point {

Public :
Point (float = 0.0, float = 0.0);
Void cetakPoint ();
Protected :
Float x,y;
};
Point : : point (float, float b)
{
Cout << konstruktor point dijalankan << endl;
X = a;
Y = b;
}
Void point : : cetakPoint ()
{
Cout << point : << [ << x << , << y << ] << endl;
}
Class circle : public point {
Public :
Circle (float r = 0.0, float a = 0.0, float b = 0.0); // konstruktor
Float area ();
Void cetakPoint ();
Protected :
Float radius, l;
};
Circle : : circle (float r, float a, float b) : point (a, b) {
Cout << konstruktor circle dijalankan << endl;
Radius = r;
}
Float circle : : area ()
{
1 = 3.14 * radius * radius ;
Return l;
}
Void circle : : cetakPoint ()
{
Point : : cetakPoint ();
Cout << circle dgn r : << radius<< center : [<<x<<, <<y<<]
endl;
Cout << luas circle : <<l<< endl;
}
Class cylinder : public circle {
Public :
Cylinder (float h = 0.0, float r = 0.0, float a = 0.0, float b = 0.0);
// konstruktor
Float area ();
Float vol ();
Void cetakPoint ();
Protected

Float height, l, v;
};
Cylinder : : cylinder (float h, float r, float a, float b) : circle (r, a, b)
{
Cout << konstruktor cylinder dijalankan << endl;
Height = h;
}
Float cylinder : : area ()
{
L = (2*circle : : area () + 2*3.14 * radius * height);
Return l;
}
Float cylinder : : vol ()
{
V = ( circle : : area () * height);
Return v;
}
Void cylinder : : cetakPoint ()
{
Circle : : cetakPoint ();
Cout << tinggi tabung (h) : <<height<<endl;
Cout << luas tabung
: <<l<< endl;
Cout << volume tabung : <<v<<endl;
}
Int main ()
{
Point p (1.1, 2.2);
Cout << endl;
Circle lingkaran (10, 5, 5);
Lingkaran.area ();
Lingkaran.cetakPoint ();
Cout << endl;
Cylinder tabung (20, 30, 3, 4);
Tabung.area ();
Tabung.vol ();
Tabung.cetakPoint ();
Getch ();
Return 0;
}
2. Buatlah program untuk menghitung luas dan keliling persegi panjang serta
volume dan keliling kotak. Program tersebut harus menerapkan prinsip
pewarisan.
#include<iostream.h>
#include<conio.h>

class Alas {
public :
Alas (float =0.0, float =0.0);
float hitungluas();
float hitungkeliling();
void tampilhasil();
protected:
float panjang, lebar,L,K;
};
Alas::Alas (float p, float l)
{
panjang = p;
lebar = l;
}
float Alas::hitungluas()
{
L = panjang*lebar;
return L;
}
float Alas::hitungkeliling()
{
K = (2 * (panjang+lebar ));
return K;
}
void Alas::tampilhasil()
{
cout<<"Hitung Persegi Panjang"<<endl;
cout<<"Panjang : "<<panjang<<endl;
cout<<"Lebar : "<<lebar<<endl;

cout<<"Luas persegi Panjang

: "<<L<<endl;

cout<<"Keliling Persegi Panjang : "<<Alas::hitungkeliling()<<endl;


}
class Balok : public Alas {
public :
Balok(float h = 0.0, float p = 0.0, float l = 0.0);
float hitungvol();
float hitungkeliling();
void tampilhasil();
protected :
float height, V, K;
};
Balok::Balok (float h, float p, float l): Alas(p,l)
{
height = h;
}
float Balok::hitungvol()
{
V = (2*Alas::hitungluas () * height);
return V;
}
float Balok::hitungkeliling()
{
K = (2*Alas::hitungkeliling()+4* height);
return K;
}
void Balok::tampilhasil()
{
cout<<"Hitung Kotak"<<endl;
cout<<"Panjang Kotak : "<<panjang<<endl;

cout<<"Lebar Kotak

: "<<lebar<<endl;

cout<<"Tinggi Kotak

: "<<height<<endl;

cout<<"Volume Kotakk

: "<<V<<endl;

cout<<"Keliling Kotak

: "<<Balok::hitungkeliling()<<endl;

}
int main()
{
Alas ppanjang (7, 5);
ppanjang.hitungluas();
ppanjang.hitungkeliling();
ppanjang.tampilhasil();
cout<<endl;
Balok kotak (3, 4, 9);
kotak.hitungluas();
kotak.hitungvol();
kotak.tampilhasil();
getch();
return 1;
}

BAB III
PEMBAHASAN
Pewarisan (Inheritance) adalah konsep pemrograman berorientasi object
yang memungkinkan membuat hubungan di mana ada class yang mewarisi semua

attribute dan method dari class lain. Pada program di bawah ini kita menggukanan
konsep pewarisan.
1. Program 1
#include <iostream.h>
#include<conio.h>
Class point {
Public :
Point (float = 0.0, float = 0.0);
Void cetakPoint ();
Protected :
Float x,y;
};
Point : : point (float, float b)
{
Cout << konstruktor point dijalankan << endl;
X = a;
Y = b;
}

#include<iostream.h> di gunakan untuk program yang melibatkan objek


cout dan cin, pernyataan cout atau Character out adalah objek dalam c++
yang di gunakan untuk mengarahkan data ke dalam standar output dan
digunakan untuk mencetak text pada layar monitor, sedangkan cin atau
Character input adalah objek pada c++ yang berfungsi untuk

menginputkan data ke program.


#include<conio.h> di perlukan jika kita menggunakan fungsi clrscr() untuk
membersihkan layar dan fungsi getch() untuk menerima sembarang input

dari keyboard.
Ada dua akses yang di gunakan pada program di atas untuk mengakses
kelas utama yaitu public dan protected Perintah public menyatakan bahwa
perintah-perintah yang ada di bawahnya dapat di akses di luar class,

sedangkan private sebaliknya dimana perintah yang ada di bawahnya hanya

dapat di akses di dalam kelas itu saja


Konstruktor dengan sifat public Point yang mendefinisikan variable x sama
dengan a, dan variabel y sama dengan b.

Void point : : cetakPoint ()


{
Cout << point : << [ << x << , << y << ] << endl;
}

Coding di atas berfungsi untuk menampilkan nilai dari point dengan fungsi
yang dipanggil pada kelas cetakPoint itu sendiri

}
Class circle : public point {
Public : akses kelas yang baru.
Circle (float r = 0.0, float a = 0.0, float b = 0.0); // konstruktor
Float area ();
Void cetakPoint ();
Protected : akses kelas yang baru.
Float radius, l;
};
Circle : : circle (float r, float a, float b) : point (a, b) {
Cout << konstruktor circle dijalankan << endl;
Radius = r;
}
Float circle : : area ()
{
1 = 3.14 * radius * radius ;
Return l;
}

Point : : cetakPoint ();


Cout << circle dgn r : << radius<< center : [<<x<<,
<<y<<] endl;

Merupakan pemanggilan dari fungsi circle dgn r pada program utama sama
dengan pemanggilan pada fungsi lebar sebelumnya.
Cout << luas circle : <<l<< endl;

Merupakan pemanggilan dari fungsi luas circle pada program utama sama
dengan pemanggilan pada fungsi lebar sebelumnya.

}
Class cylinder : public circle {
Public :
Cylinder (float h = 0.0, float r = 0.0, float a = 0.0, float b = 0.0);
// konstruktor
Float area ();
Float vol ();
Void cetakPoint ();
Protected
Float height, l, v;
};
Cylinder : : cylinder (float h, float r, float a, float b) : circle (r, a, b)
{
Cout << konstruktor cylinder dijalankan << endl;
Height = h;
}
Float cylinder : : area ()
{
L = (2*circle : : area () + 2*3.14 * radius * height);
Return l;
}
Float cylinder : : vol ()
{
V = ( circle : : area () * height);
Return v;
}
Void cylinder : : cetakPoint ()
{
Circle : : cetakPoint ();
Cout << tinggi tabung (h) : <<height<<endl;

Cout << luas tabung

: <<l<< endl;

Cout << volume tabung

: <<v<<endl;

Menampilkan nilai dari tinggi tabung dengan fungsi yang dipanggil pada
kelas point, luas tabung dipanggil dengan fungsi dari kelas cetakPoint yang
bersifat polymorfisme sehingga akan terbentuk ikatan dinamis antara variable
tinggi tabung dengan fungsi luas tabung dan volume tabung dengan fungsi
yang dipanggil dari kelas Point.

}
Int main ()
{
Point p (1.1, 2.2);
Cout << endl;
Circle lingkaran (10, 5, 5);
Lingkaran.area ();
Lingkaran.cetakPoint ();
Cout << endl;
Cylinder tabung (20, 30, 3, 4);
Tabung.area ();
Tabung.vol ();
Tabung.cetakPoint ();
Getch ();
Return 0;
}
Jika di jalankan maka program di atas akan menghasilkan :

2. Program untuk menghitung luas dan keliling persegi panjang serta volume
dan keliling kotak menggunakan prinsip pewarisan.

Coding Program :
#include<iostream.h>
#include<conio.h>
class Alas {
public :
Alas (float =0.0, float =0.0);
float hitungluas();
float hitungkeliling();
void tampilhasil();
protected:
float panjang, lebar,L,K;
};
Alas::Alas (float p, float l)
{
panjang = p;
lebar = l;
}
float Alas::hitungluas()
{
L = panjang*lebar;
return L;
}
float Alas::hitungkeliling()
{
K = (2 * (panjang+lebar ));
return K;
}
void Alas::tampilhasil()

{
cout<<"Hitung Persegi Panjang"<<endl;
cout<<"Panjang : "<<panjang<<endl;
cout<<"Lebar : "<<lebar<<endl;
cout<<"Luas persegi Panjang

: "<<L<<endl;

cout<<"Keliling Persegi Panjang : "<<Alas::hitungkeliling()<<endl;


}
class Balok : public Alas {
public :
Balok(float h = 0.0, float p = 0.0, float l = 0.0);
float hitungvol();
float hitungkeliling();
void tampilhasil();
protected :
float height, V, K;
};
Balok::Balok (float h, float p, float l): Alas(p,l)
{
height = h;
}
float Balok::hitungvol()
{
V = (2*Alas::hitungluas () * height);
return V;
}
float Balok::hitungkeliling()
{
K = (2*Alas::hitungkeliling()+4* height);
return K;
}

void Balok::tampilhasil()
{
cout<<"Hitung Kotak"<<endl;
cout<<"Panjang Kotak : "<<panjang<<endl;
cout<<"Lebar Kotak

: "<<lebar<<endl;

cout<<"Tinggi Kotak

: "<<height<<endl;

cout<<"Volume Kotakk

: "<<V<<endl;

cout<<"Keliling Kotak

: "<<Balok::hitungkeliling()<<endl;

}
int main()
{
Alas ppanjang (7, 5);
ppanjang.hitungluas();
ppanjang.hitungkeliling();
ppanjang.tampilhasil();
cout<<endl;
Balok kotak (3, 4, 9);
kotak.hitungluas();
kotak.hitungvol();
kotak.tampilhasil();
getch();
return 1;
}
Pada program di atas kita menggunakan prinsip pewarisan dimana kelas
Alas merupakan kelas induk dan kelas balok merupakan kelas turunan dari kelas
Alas.
Pada program di atas kita menggunakan kelas Alas sebagai kelas induk
(base kelas), pada kelas di atas kita juga menggunakan member class dengan
acces specifier protected dan public. Protected access specifier akan mem-protect/
melindungi member/variable dari pengakses-san di luar class Alas. Bila anda
memiliki class lain yang tidak ada hubungannya dengan class Alas maka anda
tidak akan bisa mengakses variable ini terlebih mengubah nilainya, sedangkan
public access specifier adalah kebalikan dari Protected access specifier di mana

member/variable dapat di akses di luar kelas. Tetapi dengan kita menjadikan Class
lain sebagai Derived Class / Class Turunan , maka Class turunan tersebut akan
memiliki varible dari Base Class ini itulah salah satu fungsi pewarisan.pada
program di atas kita juga melihat class baru yang merupakan Derived Class dari
class Alas. Tanda colon ( : ) / titik dua merupakan tanda inheritance. Pada class
ini kita bisa memanggil variable milik dari class Alas. Inilah gunanya inheritance
atau pewarisan. Pada akhir program kita melihat Kode int main, fungsi main c++
kita membuat sebuah object baru (ukan variable atau function) yaitu ppanjang
yang dibuat dari class nya masing-masing. Nah, dari object tadi, kita memanggil
fungsi dari base class Alas. Perlu di ingat bahwa semua member dari class Alas
akan diturunkan ke derived classnya.

Jika di jalankan maka output dari program di atas adalah sebagai berikut :

BAB IV
Kesimpulan
Dari praktikum yang di lakukan dapat di simpulkan bahwa :

Pewarisan adalah penurunan sifat yang ada pada suatu kelas kepada kelas yang

baru menjadi turunannya.


Pewarisan pada c++ ada dua macam yaitu pewarisan tunggal dan pewarisan
jamak, pewarisan tunggal artinya sebuah kelas hanya mewarisi atribut dan
method dari satu kelas induk, sedangkan pewarisan jamak sebaliknya dia

mewarisi lebih dari satu kelas.


Dengan pewarisan dapat diciptakan suatu kelas baru yang mana kelas tersebut
mewarisi seluruh sifat kelas dasar yang mempunyai akses public dan protected

ditambah sifat khusus dari kelas yang bersangkutan.


Pewarisan dibedakan menjadi 3, yaitu :
1. Pewarisan tunggal; yang mana kelas dasarnya tunggal.
2. Pewarisan jamak; dimana satu kelas diturunkan lebih dari satu kelas yaang
berbeda.
3. Pewarisan jamak maya; yang mana kelas dasarnya lebih dari satu dan
beberapa diatara kelas tersebut merupakan kelas turunan dari kelas dasar
yang sama.

Bab V
Daftar Pustaka
http://lecturer.ukdw.ac.id/yuan/wpcontent/uploads/2009/09/INHERITANCE.pdf
http://www.scribd.com/doc/87120401/57/INHERITANCE-PEWARISAN
http://novrido.himatif.or.id/download/PBO_Dasar.pdf
http://www.assinkchemie.nl/pdf/pbo.pdf
http://zegyjib.wordpress.com/matkul/oop2/oop2-inheritance-turunan-ataupewarisan-c-java-c/

BAB VI
Lampiran

Program 1 :

Output :

Program untuk menghitung luas dan keliling persegi panjang serta volume
dan keliling kotak menggunakan prinsip pewarisan.

Output :

Anda mungkin juga menyukai