Home > OO Programming > Prosedural vs OO (Part 4)

Prosedural vs OO (Part 4)

Jadi bagaimana dengan kedua programmer tersebut. Larry melihat ada celah pada code brad dan kemudian terjadi lah berdebatan.

Larry : Ada duplikasi code. Rotate procedure ada di keempat benda Shape.

Brad : Itu method bukan prosedur. Dan Itu kelas bukan benda.

Larry : Terserahlah. Ini disain yg bodoh. Kau harus maintain 4 rotate yg berbeda. Bagaimana itu bisa ??

Brad : Mmm… final designnya adalah sebagai berikut. Ini disebut inheritance.

fourclass1

Lihat lah hal2 yang general atau yg sama dari keempat kelas diatas. Itu adalah Shape dan semua shape dapat berotasi dan playSound. Nah kemudian fitur2 yg sama tersebut diangkat menjadi sesuatu yg lebih abstract ke dalam kelas Shape

shapeclass

Dan kemudian keempat kelas tersebut dihubungkan dengan Shape tersebut. Hubungan ini disebut inheritance

classtree

Jadi kita bisa mengatakan Square diturunkan dari Shape. Dan kita bisa membuang method rotate() dan playSound() dari shape yg lain. Jadi kita hanya punya satu copy untuk dimaintain, di shape.
Shape dikatakan sebagai superclass dari 4 kelas yg lain. 4 kelas yang lain adalah subclass dri Shape.Subclass mewarisi method2 yg ada pada superclass. Jadi kelas square, circle, triangle, amoeba masing2 memiliki method rotate() dan playSound(). Jadi jika shape memiliki suatu fungsionalitas maka kelas turunannya secara langsung juga akan memilikinya.

Larry : Loh .. trus bagaimana dengan amoeba ?? procedure rotatenya tidak sama dengan ketiga kelas yang lain, begitu juga dengan playSound

Brad : Method bukan procedure.

Larry : Ntah apapun itu. Bagaimana amoeba bisa melakukan hal yg berbeda dari ketiga kelas yang lain jika dia memiliki fungsionalitas yg sama dengan parentnya ??

Brad : Itulah step yg terakhir. Kelas amoeba mengoverride method dari kelas Shape.

classtree2

Overriding artinya subclass mendefinisikan kembali salah satu dari method yg diwariskan ketika dia ingin mengubah atau menambahkan behaviour pada method itu.

Larry : Bagaimana caranya memberitahu amoeba untuk melakukan sesuatu. Bukankah kita harus memanggil methodnya dan menyebutkan rotate yg mana ??

Brad : Nah. Itulah yg paling cool dari OO. Jadi ketika kita membutuhkan segitiga untuk melakukan rotasi maka kita akan menginvoke method rotate(). Program yg memanggilnya tidak perlu mengetahui bagaimana segitiga melakukannya. Dan ketika kita ingin menambahkan sesuatu yg baru kita hanya perlu menambahkan kelas dan object tersebut akan memiliki behaviournya sendiri. Jadi dia dapat mengurus dirinya sendiri. Kita tinggal menyuruhnya melakukan sesuatu tanpa perduli gimana sih caranya melakukannya. Itu bukan urusan kita. Itu urusan object tersebut.

Categories: OO Programming Tags: ,
  1. Waku-waku
    October 9, 2009 at 3:15 am

    mas weltam, terima kasih banyak dengan artikel yang ini.. gw suka banget, jadi bener2 ngerti bedany pemrograman OO dan prosedural, hehe..

    sampai2 gw tersenyum sendiri bacany😀

  2. weltam
    October 9, 2009 at 10:18 am

    terima kasih. artikel tersebut saya rangkum atau sadur dari Head First Java 2nd Edition. Coba cek buku itu. Mudah2an dapat membantu.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: