"SELAMAT DATANG DI BLOGKU, SILAHKAN PILIH MENU INFO & TIPS YANG TERSEDIA"

Likes

Selasa, 26 Oktober 2010

PERMASALAHAN DALAM Polymorphism

Polymorphism adalah salah satu dari tiga kemampuan yang mendasar yang dimiliki oleh OOP, setelah data abstraction dan inheritance.

Polymorphism menyediakan cara yang berbeda pada pemisahan interface dari implementasinya, untuk memasangkan ulang apa dari bagaimana. Polymorphism memberikan organisasi kode yang lebih baik dan kode menjadi lebih mudah dibaca, juga memberikan suatu kemampuan pada program untuk berkembang secara terus menerus baik pada tahap pengembangan awal ataupun pada saat ingin menambahkan kemampuan-kemampuan yang baru.

Encapsulation membuat tipe data yang baru dengan mengkombinasikan karakteristik-karakteristik dan perilaku-perilaku. Dengan menggunakan kata kunci private kita dapat menyembunyikan interface dari implementasi. Cara yang seperti ini dapat memudahkan para programmer yang mempunyai background prosedural. Tetapi polymorphism menangani decoupling dalam bentuk types. Kita mengetahui kalau inheritance memperbolehkan perlakuan yang sama pada object turunan maupun object asal. Kemampuan ini sangat penting karena memperbolehkan beberapa tipe yang ada (turunan dari tipe asal yang sama) mendapat perlakuan seperti kalau mereka itu satu tipe, dan hanya dibutuhkan satu kode saja untuk mengakses keseluruhan tipe yang ada. Metode polymorphism ini memperbolehkan untuk memanggil satu tipe untuk mengekspresikan perbedaannya dari tipe yang lainnya, yang sejenis, selama mereka diturunkan dari tipe asal yang sama. Perbedaan ini diekspresikan melalui perbedaan-perbedaan dalam perilaku dari metoda-metoda yang dapat kita panggil dari class asal.

Dalam pembahasan ini kita akan menjelaskan tentang polymorphism (juga disebut sebagai dynamic binding atau late binding atau run-time binding) mulai dari yang paling dasar, dengan contoh yang membeberkan tentang pengaruh polymophism dalam program yang akan dibuat.

Sebelumnya kita mengetahui kalau sebuah object dapat digunakan sebagai tipenya sendiri atau sebagai object dari tipe asalnya. Mengambil handle sebuah object dan memperlakukannya sebagai handle dari tipe asal disebut sebagai upcasting karena urutan dari cabang-cabang inheritance digambarkan class asal terletak yang paling atas.

Kita juga akan menemui sebuah masalah seperti yang tertera dari kode berikut ini:

//: Music.java

// Inheritance & upcasting

package c07;

class Note {

private int value;

private Note(int val) { value = val; }

public static final Note

middleC = new Note(0),

cSharp = new Note(1),

cFlat = new Note(2);

} // Etc.

class Instrument {

public void play(Note n) {

System.out.println(\"Instrument.play()\");

}

}

// Wind objects are instruments

// because they have the same interface:

class Wind extends Instrument {

// Redefine interface method:

public void play(Note n) {

System.out.println(\"Wind.play()\");

}

}

public class Music {

public static void tune(Instrument i) {

// ...

i.play(Note.middleC);

}

public static void main(String[] args) {

Wind flute = new Wind();

tune(flute); // Upcasting

}

} ///:~

Metode diatas Music.tune() menerima sebuah handle Instrument, tetapi juga segala sesuatunya yang diturunkan dari Instrument. Didalam main(), kita dapat melihat semua ini terjadi sebagai sebuah handle Wind dilewatkan ke tune(), dengan tanpa cast sama sekali. Ini semua masih dapat diterima, interface dari Instrument harus muncul didalam Wind, karena Wind diturunkkan dari Instrument. Upcasting dari Wind ke Instrument bisa membuat “narrow” pada interface tersebut, tapi semua ini tidak dapat mengurangi interface keseluruhan dari Instrument.

Program berikut ini mungkin akan tampak aneh. Mengapa kita secara sengaja melupakan tipe dari sebuah object ? Ini semua dapat terjadi bila kita melakukan upcast, dan menjadikannya kelihatan seperti kalau tune() secara langsung mengambil handle dari Wind sebagai sebuah argumen. Ini semua membuat sesuatu yang mendasar : Kalau kita melakukannya, kita harus menuliskan tune() yang baru untuk setiap Instrument didalam system kita. Anggap saja kita mengikuti alasan ini dan menambahkan instrument Stringed dan Brass :

//: Music2.java

// Overloading instead of upcasting

class Note2 {

private int value;

private Note2(int val) { value = val; }

public static final Note2

middleC = new Note2(0),

cSharp = new Note2(1),

cFlat = new Note2(2);

} // Etc.

class Instrument2 {

public void play(Note2 n) {

System.out.println(\"Instrument2.play()\");

}

}

class Wind2 extends Instrument2 {

public void play(Note2 n) {

System.out.println(\"Wind2.play()\");

}

}

class Stringed2 extends Instrument2 {

public void play(Note2 n) {

System.out.println(\"Stringed2.play()\");

}

}

class Brass2 extends Instrument2 {

public void play(Note2 n) {

System.out.println(\"Brass2.play()\");

}

}

public class Music2 {

public static void tune(Wind2 i) {

i.play(Note2.middleC);

}

public static void tune(Stringed2 i) {

i.play(Note2.middleC);

}

public static void tune(Brass2 i) {

i.play(Note2.middleC);

}

public static void main(String[] args) {

Wind2 flute = new Wind2();

Stringed2 violin = new Stringed2();

Brass2 frenchHorn = new Brass2();

tune(flute); // No upcasting

tune(violin);

tune(frenchHorn);

}

} ///:~

Kode diatas dapat dijalankan, tetapi disana ada kekurangan terbesar. Kita harus menuliskan metoda tipe yang spesifik untuk setiap class Instrument2 yang baru kita tambahkan. Ini semua berarti makin banyak kode yang akan kita tulis, tetapi juga berarti kalau kita ingin menambahkan sebuah metoda baru seperti tune() atau sebuah tipe baru dari Instrument, kita mendapatkan kalau perkerjaan kita makin banyak. Dengan menambahkan fakta bahwa kompiler tidak akan memberikan pesan-pesan kesalahan kalau kita lupa meng overload salah satu dari metoda-metoda kita dan seluruh proses pekerjaan dengan tipe menjadi tidak dapat ditangani.

Bukankah dapat menjadi lebih menyenangkan kalau kita hanya menuliskan satu metoda saja yang dapat mengambil class asal sebagai argumennya, dan bukan dari semua class-class turunannya. Itulah memang lebih memudahkan bila kita melupakan adanya class-class turunan, dan menuliskan kode yang hanya berkomunikasi dengan class asal?

Itulah apa yang disediakan oleh polymorphism. Walau bagaimanapun kebanyakan programmer (yang berasal dari latar belakang prosedural) mempunyai sedikit kesulitan untuk beradaptasi dengan polymorphism

Minggu, 07 Maret 2010

PRINTER INKJET, DOT MATRIK & LASERJET


Printer ini mencetak dengan cara diketuk seperti halnya mesin tik. Bahkan untuk warnanya pun masih menggunakan pita. Dengan menggunakan printer ini, cetakan dapat langsung dirangkap dengan karbon. Sebab sistem pencetakannya masih menggunakan sistem ketukan. Sebagai sumber warnanya juga masih menggunakan pita seperti layaknya mesin ketik. Berhubung menggunakan pita, maka warna yang dapat dihasilkan pun tidak bervariasi. Hanya hitam, biru, dan merah saja. Dan jarang sekali yang dapat menggunakan ketiga warna ini secara sekaligus.

Printer dot matrix sangat murah, begitu pula dengan tintanya. Namun, printer dot matrix selain berisik pada saat bekerja juga sangat lamban. Belum lagi kemampuan printer dalam mencetak warna sangat terbatas. Paling banyak hanya ada dua warna cetakan yang dapat digunakan. Meskipun saat ini teknologi printer sudah semakin canggih, namun printer dot matrix masih diproduksi. Sebab printer dot matrix dapat digunakan untuk mencetak dokumen tembusan, yang biasanya digunakan untuk membuat kwitansi, bon, dan dokumen keuangan lainnya. Selain itu, satu lagi yang menjadi kelemahan printer ini adalah geraknya yang sangat lamban dan suaranya yang agak berisik ketika sedang bekerja.
Kelebihan :
Dapat mencetak rangkap sekaligus.
Dapat mencetak ukuran kertas yang lebar.
Biaya printer dan tinta murah
Kelemahan :
Dpi dan ppm rendah
Geraknya sangat lamban
Suaranya berisik ketika bekerja
Warna yang dihasilkan tidak bervariasi.


· INKJET
Inkjet/deskjet yang tersedia di pasaran saat ini memiliki kemampuan untuk mencetak sampai ukuran kertas yang sangat besar, dan dengan kualitas yang sangat baik. Resolusi printer deskjet/inkjet saat ini dapat mencapai 5760×1440 dpi. Inkjet mencetak dengan cara memasukkan satu demi satu titik warna ke area gambar. Cara inilah yang membuat hasil yang diperoleh dari printer Inkjet sangat baik. Namun, cara ini juga memiliki kelemahan, yaitu waktu pencetakan menjadi lebih panjang.


Mutu Cetak
Pada umumnya printer inkjet warna memiliki resolusi warna maksimal, yakni 4.800 x 1.200 titik per inci
Biaya per halaman
Biaya tinta mempunyai efek paling besar pada biaya keseluruhan printer inkjet. Penjual umumnya menjual cartridge tinta sekitar US$ 20-40 per warna (cyan, magenta, yellow) dan US$ 10-35 untuk warna hitam. Makin murah sebuah cartridge, kian sedikit volume tinta. Satu cartridge bisa mencetak 300-800 halaman.
Keunggulan :
Dpi & ppm lebih tinggi dari pada dot matrik
Lebih mudah mencetak gambar dan warna
Kemampuan mencetak sampai kertas yang lebar dengan kualitas yang baik
Kelemahan :
Tidak dapat mencetak rangkap
Biaya operasional lebih mahal
Waktu mencetak menjadi lebih panjang

LASER JET
Printer laser biasanya digunakan pada perusahaan-perusahaan untuk mencetak dokumen hitam putih. Printer laser memang sangat efisien dalam mencetak hitam putih. Karena di samping sangat cepat, kapasitas warnanya lebih banyak dibandingkan dengan printer indoor lainnya. Sebenarnya printer laser juga ada yang tersedia untuk mencetak dokumen berwarna atau bergambar. Namun di samping ukuran kertasnya yang terbatas, harganya pun sangat mahal. Printer laser menggunakan serbuk sebagai sumber warnanya. Berbeda dengan inkjet/deskjet yang menggunakan tinta sebagai sumber warnanya.
Kemampuan printer laser dalam mencetak sangat cepat. Minimal dua kali lebih cepat dari printer inkjet. Harga tintanya pun masih lebih murah untuk jumlah cetakan yang sama. Hanya saja, harga printer laser lebih mahal ketimbang inkjet, apalagi untuk yang berwarna.Kerja printer laser mirip dengan mesin fotocopy, yaitu menggunakan photographic drum. Kualitas cetakan yang dihasilkan selain cepat juga cukup tajam dan hemat biaya tinta. Printer laser sangat tepat digunakan bagi mereka yang frekuensi mencetaknya sangat tinggi. Biasanya adalah perkantoran perkantoran. Namun, tidak menutup juga home user menggunakan printer laser. Hanya saja untuk printer laser berwarna yang kualitasnya sama dengan inkjet, harganya dapat dua kali lebih besar dari printer inkjet itu sendiri.

Keunggulan :
Dpi, ppm sangat tinggi
Efisien untuk mencetak hitam putih
Kapasitas warna lebih banyak dibanding printer indoor lainnya.
Kelemahan :
§ Biaya operasional tinggi
§ Tidak dapat digunakan secara terus menerus.

· BUBLE JET
Printer ini memang masih terhitung cukup mahal. Meskipun gambar dapat dikatakan menyerupai hasil cetakan film. Saat ini, ia memang belum dapat mencetak pada ukuran kertas yang besar sehingga ukurannya juga dapat dikatakan kecil. Printer ini biasanya dapat digunakan langsung dengan kamera tanpa perantara komputer. Karena selain dilengkapi dengan konektor USB, ia juga dilengkapi dengan card reader. Kini juga sudah tersedia printer photo portable yang dapat juga digunakan sebagai slide show.
Keunggulan :
Stabil, respond dan suara sangat lembut.
Dapat digunakan langsung dengan kamera tanpa perantara computer

Kekurangan :
Cartridge mahal
Hasil menggenang apabila terkena air

KEUNGULAN SERTA KEKURANGAN MONITOR & LCD

Keunggulan Monitor CRT dibandingkan LCD, antara lain :
- Harganya lebih murah dibandingkan monitor LCD
- Kualitas gambar yang lebih tajam dan cerah dibandingkan monitor LCD
- Mampu menghasilkan resolusi gambar yang lebih tinggi dibandingkan dengan monitor LCD
- Memiliki sudut viewable lebih baik dibandingkan monitor LCD
Sedangkan Kekurangan Monitor CRT dibandingkan LCD, antara lain :

- Menimbulkan efek radiasi yang bisa mengganggu kesehatan.
- Dimensinya menyita ruangan yang cukup besar. Apalagi bila ukurannya makin besar
- Menimbulkan efek kedip (flicker) yang mengganggu mata
- Butuh konsumsi listrik yang lebih tinggi dibandingkan LCD
- Sinyal gambar analog
- Area layarnya tidak optimum karena harus dialokaskan untuk bezel/frame
- bentuknya kurang sedap dilihat dibandingkan dengan monitor LCD.



Keunggulan Monitor LCD dibandingkan Monitor CRT, antara lain :

- Konsumsi listrik rendah
- Tidak menghasilkan radiasi elektromagnet yang mengganggu kesehatan
- Tidak menimbulkan efek kedipan (flicker free)
- Area layarnya optimum karena tidak termakan untuk bezel/frame
- Dimensinya tidak akan menyita ruangan terlalu besar dan ringan untuk dijinjing
- Bentuknya stylish dan enak dilihat
- Sinyal gambar digital

Sedangkan Kekurangan Monitor LCD dibandingkan Monitor CRT, antara lain :

- Harganya lebih mahal dibandingkan dengan monitor CRT
- Kualitas gambar yang dihasilkan belum sebaik monitor CRT
- Resolusi gambar yang dihasilkan lebih rendah dibandingkan monitor CRT
- Sudut viewable-nya terbatas. Begitu kita mengeset sudut pandang, gambar terlihat akan berubah di mata kita.

Sponsor Resmi

Sponsor Resmi

Game Seru!!!!

Pengunjungku!!!!

free counters free counters

Bagaimana tanggapan anda mengenai isi blog ini?

"TERIMA KASIH TELAH BERKUNJUNG DI BLOGKU"