Sabtu, 15 Mei 2010

Inheritance(Warisan)

Pewarisan


Terminologi asing untuk pewarisan adalah inheritance. Mungkin dalam literatur lain Anda akan sering menjumpai istilah ini. Secara gamblang, pewarisan berarti sebuah kelas mewarisi state dan behaviour dari kelas lain. Sebagai contoh, sebuah kelas RumahMewah akan mewarisi state dan behaviour dari kelas Rumah. Begitu juga dengan kelas RumahSederhana. Kelas RumahMewah dan RumahSederhana disebut subkelas, atau kelas anak, dari kelas Rumah, yang disebut superkelas, atau kelas induk.

Seluruh subkelas akan mewarisi (inherits) state dan behaviour dari superkelasnya. Dengan begitu, semua subkelas dari superkelas yang sama akan memiliki state dan behaviour yang sama. Namun, masing-masing subkelas bisa menambah sendiri state atau behaviournya. Misalkan, pada kelas Rumah tidak terdapat variable kolamRenang, namun subkelas RumahMewah memiliki variabel tersebut. Contoh lain misalnya kelas Rumah tidak memiliki metode nyalakanAlarm, namun rumah mewah memiliki metode itu.

Dalam kasus tertentu subkelas mungkin memiliki implementasi behaviour yang berbeda dengan superkelasnya. Hal seperti ini disebut override. Contohnya subkelas SepedaBalap memiliki implementasi metode ubahGigi yang berbeda dengan implementasi metode tersebut pada superkelas Sepeda.

Tingkat pewarisan tidak hanya terbatas pada dua tingkatan. Dari contoh di atas, kita bisa saja membuat subkelas dari kelas SepedaBalap, dan seterusnya. Kita bisa terus memperpanjang tingkat pewarisan ini sepanjang yang kita butuhkan. Dengan begitu, subkelas-subkelas yang dibuat akan lebih khusus dan lebih terspesialisasi. Namun terdapat batasan pewarisan dalam Java yang disebut single inheritance. Artinya sebuah kelas hanya dapat mewarisi sifat dari satu dan hanya satu superkelas saja. Dalam beberapa bahasa pemrograman berorientasi objek lain, yang berlaku adalah multiple inheritance. Artinya sebuah kelas dapat mewarisi sifat dari beberapa superkelas sekaligus.

Dalam Java, terdapat kelas Object yang merupakan superkelas dari semua kelas dalam Java, baik yang builtin ataupun yang kita buat sendiri, lansung maupun tidak langsung. Karena itu sebuah variabel bertipe Object akan dapat menyimpan referensi ke objek apapun dalam bahasa Java. Kelas Object ini memiliki behaviour yang dibutuhkan semua objek untuk dapat dijalankan di Java Virtual Machine. Sebagai contoh, semua kelas mewarisi metode toString dari kelas Object, yang mengembalikan representasi String dari objek tersebut.

Manfaat penggunaan konsep pewarisan antara lain: pertama, kita dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas. Kedua, kita dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang ada. Hal ini berguna jika kita ingin membuat semacam template kelas. Kelas semacam ini disebut kelas abstrak, karena behaviournya masih abstrak dan belum diimplementasikan. Subkelas-subkelas dari kelas semacam ini, yang disebut kelas konkret, mengimplementasikan behaviour abstrak tersebut sesuai dengan kebutuhan masing-masing.

Sedikit penjelasan mengenai kelas abstrak, kelas ini bisa memiliki hanya satu atau lebih metode abstrak. Subkelas dari kelas ini bertanggung jawab untuk memberikan implementasi untuk metode-metode abstrak tersebut. Sebagai akibat dari keberadaan metode abstrak ini, kelas abstrak tidak dapat diinstanskan (dibuatkan instansnya) atau digunakan untuk menciptakan sebuah objek dari kelas tersebut.
Interface

Arti harfiah dari interface adalah antarmuka, yaitu suatu alat untuk digunakan benda-benda yang tidak terhubung secara langsung untuk berinteraksi. Dalam bahasa pemrograman, interface digunakan oleh berbagai objek yang tidak terhubung untuk saling berinteraksi. Jadi dalam bahasa pemrograman, interface dapat didefinisikan sebagai koleksi definisi metode-metode dan variabel-variabel konstan, namun tanpa implementasi. Implementasi akan dilakukan oleh kelas-kelas yang mengimplements interface ini. Tanpa implementasi di sini tidak seperti pada kelas abstrak yang merupakan metode-metode yang tidak melakukan apa-apa, melainkan hanya sekedar nama metode saja.

Sebelumnya telah dijelaskan bahwa sebuah kelas tidak dapat menjadi subkelas dari beberapa superkelas, melainkan hanya bisa menjadi subkelas dari satu superkelas saja. Hal ini membuat desain program lebih rapi dan teratur, sehingga dapat mengurangi kompleksitas program. Namun, terkadang hal ini dapat menjadi suatu halangan yang tidak menyenangkan, yaitu saat kita membutuhkan suatu kelas yang memiliki sifat-sifat dari dua atau lebih kelas lain. Pada masalah seperti ini, interface dapat memberikan alternatif jalan keluar.

Dengan adanya interface maka beberapa kelas akan dapat menangani interaksi yang sama namun dengan behaviour yang bisa berbeda. Misalnya beberapa kelas mengimplementasi sebuah interface yang sama, maka kelas-kelas tersebut dapat menangani interaksi sesuai interface tersebut, namun tiap kelas dapat memiliki implementasi yang berbeda-beda.

Begitu juga bila sebuah kelas mengimplementasi banyak interface, maka kelas tersebut akan dapat menangani interaksi-interaksi sesuai salah satu interface yang diimplement oleh kelas tersebut. Namun, kelas tersebut harus mengimplementasi sendiri behaviournya. Di sinilah letak perbedaan penggunaan interface dengan multiple inheritance. Dalam multiple inheritance, layaknya single inheritance, subkelas tidak harus mengimplementasikan sendiri behaviournya karena secara default kelas tersebut akan mengikuti behaviour superkelasnya.



Manfaat Pewarisan penggunaan konsep pewarisan antara lain: pertama, kita dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas. Kedua, kita dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang ada. Hal ini berguna jika kita ingin membuat semacam template kelas. Kelas semacam ini disebut kelas abstrak, karena behaviournya masih abstrak dan belum diimplementasikan. Subkelas-subkelas dari kelas semacam ini, yang disebut kelas konkret, mengimplementasikan behaviour abstrak tersebut sesuai dengan kebutuhan masing-masing.




class Dompet
{
private int rp,isi,keluar;

Dompet(int rp)
{ this.rp=rp;
isi=0;
keluar=0;
}

Dompet()
{ rp=0; }

void isi(int rp)
{ this.rp=this.rp+rp;
isi+=rp;
}
void keluar(int rp)
{ if (this.rp-rp<0)
System.out.println("berapa uangnya yang kurang! ");
else {
this.rp-=rp;
keluar+=rp; }
}

int isiDompet()
{ return rp; }
int totalIsi() { return isi; }
int totalKeluar() { return keluar; }




Lalu program berikut adalah contoh penggunaan class Dompet
view source
print?
class testDompet
{
public static void main(String[]args)
{
Dompet punyaAna= new Dompet(37500);
Dompet punyaSinta= new Dompet(234500);
System.out.println("Isi dompet Ana "+punyaAna.isiDompet());
System.out.println("Isi dompet Sinta "+punyaSinta.isiDompet());
punyaAna.keluar(7500);
punyaAna.isi(30000);
punyaAna.keluar(7500);
System.out.println("Isi dompet Ana "+punyaAna.isiDompet());
}
}

Jumat, 14 Mei 2010

Anak kimia yang stress..

Sayangku….
Akhirnya hari ini aku telah menyelesaikan run yang ke-3.
Ternyata methanolisis trigliserida memang harus
berlangsung secara endotermis
dengan bantuan katalis basa Grace Davison pada suhu optimal 70oC.
Begitu banyak design proses
stoikiometri yang berwujud
persamaan neraca massa dan energy balance
yang telah kita kalkulasi selama ini.


Baik itu berupa laju alir volumetric,
konsentrasi slurry,power pump, pressure drop, friction factor
serta heat loss yang mudah sekali berubah seiring waktu
yang mengikuti persamaan integral dT/dx.

Aku masih ingat ketika menghitung Reynold Number-mu.
Ternyata NRe-mu lebih dari 10.000
yang menandakan keturbulenan pola aliran asmaramu.
Aku memang terlalu egois
dalam mengatur sistem control emosimu,
temperatur hatimu dan konsentrasi perasaanmu.

Aku begitu egois untuk merubah transformasi dirimu.
Semua itu kulakukan semata-mata
supaya termodinamika reaksi kita berlangsung
secara efektif dan efisien
Agar reaktan cinta kita terkonversi sempurna 100%
dengan reaction yield lebih besar dari 85%.

Sayangku....
Seandainya kita bisa saling mentransfer panas asmara kita.
Tak peduli apakah itu secara konduksi, konveksi ataupun radiasi.
Asalkan sesuai dengan hukum relativitas einstein E=mc2
dan persamaan ideal PV=nRT.

Pastilah molekul cintaku dan cintamu bersatu
membentuk suatu senyawa stabil
dengan ikatan atom rangkap yang kuat,
tidak bisa dipengaruhi oleh daya tarik radikal bebas
yang tidak bertanggungjawab dan mengotori permukaan aktifnya.

Aku yakin sekali,
kita pasti bisa membentuk suatu larutan yang homogen
dimana pada setiap titik dalam lerung hati kita
memiliki konsentrasi yang sama.

Walaupun sekat-sekat di hati kita begitu kuat dan tebal,
bukankah konsentrasi hati kita juga bisa sama
jika kita merendahkan diri
untuk berdifusi? Biarlah aku saja yang berdifusi,
kan konsentrasiku lebih tinggi dibandingkan konsentrasimu?

Senyawa cinta kita pasti aman untuk disimpan
karena flash point-nya tinggi.
Viskositas yang rendah,
serendah viskositas solar sebelum diinjeksikan
ke dalam ruang bakar mesin diesel.

Dan juga boiling point yang tidak melebihi 100oC,
serta tidak se-eksplosif trinitrogliserin.
Dan aku juga tak ingin struktur cinta kita
serumit polimer plastis sintetis,
apalagi sebesar bobot enzim yang berperan sebagai biokatalis.

Sayangku....
Aku tak peduli apa kata Perry,. Mc Cabe, Geankoplis,
Brownell, Coulson, Smith, Van Ness
maupun Himmelblau tentang design reactor cinta kita.
Biarlah kita merancang sendiri
seberapa tinggi kolom destilasi kita.
Seberapa tebal flanges kita.

Kalau cost estimation-nya sesuai,
aku akan membuatmu sekokoh cooling tower
dan seanggun evaporator,
dan secantik continuous stirred tank reactor.

Aku akam melengkapimu dengan heat exchanger,
vaporizer, condenser,coil, filters, buble cup, tanki storage,
bahkan kalau perlu aku tambahkan kolom fraksionasi hidrokarbon.
Dan sebagai agitatormu aku tambahkan picth blade turbine saja ya.

Sayangku….
Maaf kalau selama ini
aku disibukkan dengan Operasi Teknik Kimia,
Aplikasi dan Komputasi Numeris.
Setiap hari aku selalu berhadapan
dengan mbak Termodinamika Teknik Kimia,
teman akrabku adalah mas Transfer

Massa-Panas dan Momentum, masKalkulus
dan teman diskusiku adalah si kembar imut
Teknik Reaksi Homogen-Heterogen,
serta teman kostku adalah om Chemical Engineering Design,
serta miss cantik Proses Industri Kimia
yang selalu datang dalam setiap mimpiku
dan sangat mempesona hasrat intelektualku.

Maaf juga kalau secara sembunyi-sembunyi
aku berkencan dengan fixed bed reactor,
pacaran sama Evaporator, dinner sama plugflow reactor,
dan malam mingguan dengan fermentor.

Anak Kedokteran

Hari itu, ketika tubuhku pada metabolisme nya
yang terendah…

Mataku berakomodasi tak percaya…
Benarkah yang tertangkap oleh nervi optici-ku??

Dalam sms mu…
Katamu, akulah nukleus kehidupanmu…
Katamu, jika kau flagelatta, maka akulah ATP…
Katamu, jika kau inflamasi, akulah prostaglandin…

Sadarkah kau??
Kau berhasil membuatku mengalami hipertensi
fisiologis dan tachycardi
Perintahkan membrana tympani mu mendengar
seluruh discuss vertebralis ku berkata…

“Setiap cardiac outputku membutuhkan
pacemaker darimu.
Setiap detail gerakan glossus mu merangsang
saraf simpatisku.”

“Ucapan selamat malammu laksana diazepam…
Ucapan “jangan menangis, sayang”mu bagaikan
valium bagiku…
Dan ketika kau pergi…terasa bagaikan
imunosupresi untukku…”

Apa yang terjadi padaku??

Cinta kau bilang??
Tak pernah kudengar Dorland mengucapkannya…
Di jurnal mana aku bisa memperoleh Randomised
Control Trial dengan Double Blind tentang nya??

Diagnosa aku…
Infus aku dengan cairan elektrolit “aku milikmu”…
Dan kita akan mengaktivasi seluruh sistem organ
kita bersama-sama…
Sampai brain stem death memisahkan kita

cinta anak elektronika

Sejak pertama kali bertemu denganmu,
aku tahu engkaulan yang kunanti selama ini.

Lihatlah...
Setiap ku memandangmu,::x
amperemeter dan voltmeter cintaku selalu menunjukan skala penuh,
dan gelombang di osiloskop hatiku bergerak tak karuan
Setiap ku mendekatimu,
hatiku bergetar lebih dahsyat dari
getaran turbin yang membangkitkan
arus AC tiga fasa 220 volt 50 hertz.

Bila engkau jauh,=((
aku bagai komputer digital tanpa mikroprosesor,
aku bagaikan rangkaian pemancar tanpa catu daya.

Karena hanya engkau yang bisa me-recharge kekosongan
muatan kapasitor hatiku.:x
Hanya engkau yang bisa mengaktifkan
perangkat keras dan perangkat lunak
yang aku miliki.

Aku ingin hatiku dan hatimu bagai anoda dan katoda dari
dioda yang dibias maju.
Aku ingin hati kita bagai belitan induktor yang melekat
kuat pada inti transformator.

> tidak lebih dari satu ohm agar sinyal-sinyal
analog yang aku kirim
boleh mengalir indah dari emitter hatiku
sampai di kolektor hatimu tanpa
distorsi yang berarti.

Biarlah sinyal-sinyal itu engkau sampling,
kuantisasi dan dekodekan
agar engkau bisa menganalisis kesungguhan byte-byte cinta ini.

Jangan sangsikan ketulusanku padamu.
Biarlah keraguanmu aku tapis menggunakan band pass filter.

Kalau tak percaya pada cintaku, belahlah dadaku.
Engkau akan melihat namamu tertera indah pada display LCD hatiku.
Masih tak percaya?
Belahlah lebih dalam lagi,
engkau akan melihat rangkaian penerima
yang jalur-jalurnya telah cacat
akibat menerima gelombang elektromagnetik
intensitas tinggi yang engkau pancarkan.
Masih tak percaya juga?=((

Biarlah....
Demi engkau aku rela memutus saklar utama kehidupanku
agar engkau tahu betapa besarnya amplituda cintaku.