Download Pertemuan-05_Class

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Class dan Object
Beberapa orang pada awalnya, biasanya tidak memperhatikan perbedaan antara class dan
object. Object adalah sekumpulan software yang terdiri dari variable dan method-method terkait. Class
adalah blueprint, atau prototype, yang mendefinisikan variable dan method-method pada seluruh object
tertentu. Object saling berinteraksi dengan saling memanggil metode dari satu object ke object lainnya,
disebut message. Perhatikan kode berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*Di sini definisikan sebuah class bernama NiceGuy Disimpan sebagai file NiceGuy.java dan
compile file tersebut, maka akan didapat file bernama NiceGuy.class*/
public class NiceGuy {
private String name;
public NiceGuy(String name) {
System.out.println("Instantiation of NiceGuy named " + name);
this.name=name;
}
public void sayHello() {
System.out.println("Hello object oriented world...");
}
public void sayHelloOutLoud() {
System.out.println("HELLOOO OBJECT ORIENTED WORLD....");
}
public String getName( ) {
return name;
}
}
Gambar 1. Definisi class NiceGuy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*Di sini, dibuat sebuah java application yang bernama OurFirstCode. Simpan source ini
dalam file bernama OurFirstCode.java, di direktori yang sama dengan tempat disimpannya
NiceGuy.java. Kemudian compile file tersebut, maka akan didapatkan file OurFirstCode.class.
Lalu jalankan aplikasi ini dengan mengetikan java OurFirstCode pada command line*/
public class OurFirstCode {
public static void main(String[ ] args) {
NiceGuy ng= new NiceGuy (“Deitel”);
ng.sayHello();
ng.sayHelloOutLoud();
//Mengembalikan nilai yang ada pada ng
String NiceGuyName = ng.getName( );
System.out.println(“OH…!!!! HE’S “ + NiceGuyName.toUpperCase());
}
}
Gambar 2. Aplikasi Java
Gambar 1 merupakan contoh pendefinisian sebuah class bernama NiceGuy. Gambar 2
merupakan kode dari sebuah aplikasi java yang bernama OurFirstCode. Pada aplikasi tersebut
digunakan class NiceGuy untuk membuat objek bertipe NiceGuy.
PENDEFINISIAN CLASS
Sintaks dalam mendefinisikan class adalah sebagai berikut
:
[modifier-modifier] class namaclass [extends parentclass]
[implements interface] {
[deklarasi field-field]
[definisi method-method]
}
PBO/Java/Ayuliana/Revisi 2009
1
Yang tertera didalam kurung siku bersifat optional. Dengan demikian, definisi minimal dari sebuah
class bisa jadi seperti berikut
:
class Useless {
//….mmm….
}
Pada Gambar 1, dideklarasikan 1 field dan 3 method yaitu field yang bernama name dengan tipe
string., secara umum sintaks untuk mendeklarasikan field adalah :
type namafield;
Tipe dari field bisa primitif (seperti int, boolean, float, dan sebagainya), dan bisa juga Object
(seperti String, Vector, Hashtable, dan sebagainya). Method-method yang dimiliki class NiceGuy adalah
1. method sayHello() merupakan method void,
2. method sayHelloOutLoud( ) merupakan method void,
3. method getName() merupakan method non-void.
Secara umum sintaks dalam pendefinisian sebuah method adalah :
[modifier-modifier] return-type namamethod
( [parameter1, [parameter2],… , [parameter N] ) {
[statement-statement];
}
Tipe Return bisa void, tipe data primitif, atau tipe data object. Method dengan tipe return non-void
harus mencantumkan statement return <something> pada akhir deklarasi method. Kata return juga dapat
digunakan pada method void untuk keluar dari method tersebut.
Bagian penting lain dari definisi class adalah constructor. Pendefinisian constructor dicontohkan
pada baris 6-8 class NiceGuy. Constructor digunakan pada saat penciptaan objek dari sebuah class.
Pendeklarasian constructor mirip dengan pendeklarasian method, dengan satu pengecualian bahwa
constructor tidak mencantumkan tipe return.
[modifier-modifier] namaconstructor ([parameter 1], [parameter 2], …, [parameter N]) {
[statement-statement];
}
Hal lain yang perlu dicatat tentang constructor adalah, nama constructor harus sama dengan
class. Constructor tanpa parameter disebut default constructor. Jika constructor sama sekali tidak
dideklarasikan, maka compiler secara otomatis akan membuatkan sebuah default constructor.
Pada Gambar 2, aplikasi OurFirstCode memanfaatkan class NiceGuy untuk menciptakan sebuah
objek bertipe NiceGuy dimemori. Setelah itu, reference ng dapat digunakan untuk memanggil methodmethod (mengirimkan pesan kepadanya) atau mengakses field-field dari objek yang bersangkutan.
Reference adalah seperti alamat rumah sedangkan objek adalah rumahnya. dengan mengetahui
alamat, maka dapat mencapai rumah yang dimaksud.
INHERITANCE
Salah satu topik penting dalam OOP adalah inheritance (pewarisan sifat). Dengan inheritance,
pengembangan software dapat bekerja lebih efisien dan lebih cepat. Berkat inheritance dapat
menggunakan definisi class yang pernah dibuat sebelumnya untuk membuat class-class lain yang
menyerupai class tersebut. Perhatikan contoh berikut
:
1
public class KattWorld {
2
public static void main (String args[]) {
3
Katt k = new Katt();
4
k.speak();
5
Anggora a = new Anggora();
6
a.speak(); a.jump();
7
Siam s = new Siam();
PBO/Java/Ayuliana/Revisi 2009
2
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
s.speak();
}
}
class Katt {
public Katt() {
system.out.println(“Katt Constructor”);
}
public void speak() {
system.out.println(“Miaww…”); }
}
class Anggora extends Katt {
public void jump() {
system.out.println(“Crash…Boom…”);
}
}
class Siam extends Katt {
public Siam() {
system.out.println(“Siam Constructor”); }
public void speak() {
system.out.println(“Mmurrrr…mmurrrr…”);
}
Gambar 3. Kisah kucing
}
Hal pertama yang harus diperhatikan dari gambar 3 adalah cara melakukan inheritance. Contoh
diatas mempunyai satu class bernama Katt. Kemudian dibuat class lainnya yang mempunyai sifat seperti
Katt, tetapi memiliki keunikan sendiri. Contohnya adalah class Anggora, yang merupakan subclass dari
Katt.
Kini dapat dikatakan bahwa Katt menjadi parentclass (baseclass atau superclass) dari class
Anggora. Secara umum suatu class sebagai turunan dari baseclass dapat didefinisikan dengan cara :
class namaclass extends baseclass {
[statement-statement];
}
METHOD OVERRIDING
Misalkan dibuat varian baru lain dari Katt dengan cara mengeong Murr….Murr…Murr…. varian
itu diberi nama Siam. Maka Siam didefinisikan sebagai subclass dari Katt, tapi kini dilakukan metode
overriding, dengan mendefinisikan ulang method speak() didalam definisi class Siam. Jika dijalankan
akan menghasilkan output
:
Katt constructor
Miaww…
Katt constructor
Miaww…
Crash…Boom…
Katt constructor
Siam constructor
Mmurrr…mmurrr…
Sewaktu berlangsung konstruksi/instantiasi objek bertipe Siam, default constructor Katt dijalankan
terlebih dahulu. Ini menunjukkan bahwa default, kecuali diminta yang lain, dari baseclass secara otomatis
dijalankan terlebih dahulu sebelum constructor dari class yang bersangkutan dijalankan.
PBO/Java/Ayuliana/Revisi 2009
3
THE LAST SUPER
Didefinisikan dua varian baru dari Katt, yaitu Alley dan Lucifer :
1 public class KattWorldReturn {
2
public static void main (String args[]) {
3
Alley al = new Alley(2);
4
al.speak();
5
Lucifer lucy = new Lucifer(1, “Thou shalt be killed…!!!”);
6
lucy.speak();
}
7
}
8
9 class Alley extends Katt {
10
int illnessSeverity;
11
public Alley(int sick) {
12
illnessSeverity = sick; }
13
14
public void speak() {
15
super.speak();
16
for (int i=0; i < illnessSeverity; i++) {
17
system.out.println(“eeerrrggghh.. …<sendawa>”); }
18
}
19
}
20
21 class Lucifer extends Alley {
22
string curse;
23
public Lucifer(int sick, string cs) {
24
super(sick);
25
curse = cs;
}
26
27
public void speak() {
28
super.speak();
29
system.out.println(curse); }
30
}
Gambar 4. Kisah kucing---Return
Jika dijalankan akan menghasilkan output
Katt constructor
Miaww…
eeerrrggghh.. …<sendawa>
eeerrrggghh.. …<sendawa>
Katt constructor
Miaww…
eeerrrggghh.. …<sendawa>
Thou shalt be killed…
:
CONTOH 1 :
1 class A {
2
int i;
3
A(){ System. out. print ("constructor A Tanpa Parameter\n");}
4
A(int a){
5
System. out. print ("constructor A Dengan Parameter\n");
6
System. out. print ("i in A = " + a + '\n');} }
7
8 class B extends A {
9
int i;
10
B (){
System. out. print ("constructor B Tanpa Parameter\n"); }
11
PBO/Java/Ayuliana/Revisi 2009
4
12
B (int a, int b) {
13
super(b);
14
super.i = b; i = a;
15
System. out. print ("constructor B Dengan Parameter\n");}
16
void show() {
17
System. out. println("i in superclass : "+ super.i);
18
System. out. println("i in subclass : "+ i); } }
19
20 class C extends B {
21
C(){
super(3,4);
22
System. out. print ("constructor C Tanpa Parameter\n");} }
23
24 class SuperSub {
25
public static void main (String args[ ]) {
26
C SubOb = new C();
27
B SubOb2 = new B(1,3);
28
SubOb.show(); }
29 }
OUTPUT :
constructor A Dengan Parameter
i in A = 4
constructor B Dengan Parameter
constructor C Tanpa Parameter
constructor A Dengan Parameter
i in A = 3
constructor B Dengan Parameter
i in superclas : 4
i in subclass : 3
CONTOH 2 :
1 class A {
2
int i;
3
A(){
System. out. print ("constructor A Tanpa Parameter\n");}
4
A(int a){
5
System. out. print ("constructor A Dengan Parameter\n");
6
System. out. print ("i in A = " + a + '\n');} }
7
8 class B extends A {
9
int i = 6;
10
B (){ super(5);
11
super.i= i*2;
12
System. out. print ("constructor B Tanpa Parameter\n");}
13
B (int a, int b) {
14
super.i = b; i = a;
15
System. out. print ("constructor B Dengan Parameter\n");}
16
void show() {
17
System. out. println("i in superclass : "+super.i);
18
System. out. println("i in subclass : "+ i); } }
19
20 class C extends B {
21
C(){ super();
22
System. out. print ("constructor C Tanpa Parameter\n");} }
PBO/Java/Ayuliana/Revisi 2009
5
23 class SuperSub {
24
public static void main (String args[]) {
25
C SubOb = new C();
26
B SubOb2 = new B(2,4);
27
B SubOb3 = new B();
28
SubOb.show(); }
29 }
OUTPUT :
constructor A Dengan Parameter
i in A = 5
constructor B Tanpa Parameter
constructor C Tanpa Parameter
constructor A Tanpa Parameter
constructor B Dengan Parameter
constructor A Dengan Parameter
i in A = 5
constructor B Tanpa Parameter
i in superclas : 12
i in subclass : 6
PBO/Java/Ayuliana/Revisi 2009
6