Pages

Jumat, 08 Februari 2013

Cara Setting Kabel LAN Straight dan Crossover

Cara Setting Kabel LAN Straight dan Crossover


Cara Setting Kabel LAN Straight dan Crossover

Internet pada masa ini sudah menjadi sesuatu yang biasa. Setiap orang, sekolah dan perkantoran sudah menggunakan internet untuk menunjang dan mempermudah dalam pekerjaan mereka. Tetapi sekarang saya tidak membahas tentang internet, tetapi membahas bagaimana menggungakan 1 internet dengan banyak komputer. Diperlukan router atau hub untuk mengkoneksikan beberapa komputer itu.

Saya pernah mengalami kendala di kantor saat menginstalasi komputer baru ke network yang ada. Pertama saya membeli kabel LAN straight karena saya sempat membaca sebuah artikel (lupa situsnya..hehee..) ditulis jika menggunakan hub dan diperlukan kabel straight. Setelah pasang kabel ternyata koneksinya error dengan tulisan "Limited or no Connectivity". Nah looo.... Mulai dah gejala-gejala bikin parno kambuh.. Akhirnya saya coba di komputer lain disebelahnya, ternyata koneksi berhasil. Tapi kenapa dikomputer baru ga bisa ya??? Trus browsing lagi, ketemu situs lain yang menyarankan menentukan IPaddress statis dab DNS Server-nya. Langsung aja coba.. Koneksinya berhasil, tetapi gak bisa akses internet.. (x,x) Berfikir dalam hati "Gue harus gimana nih???"

Nah jika ada sobat yang mengalami hal seperti saya, ikuti saja langkah-langkah yang saya lakukan ya...

PERTAMA :
Buka Local Area Connection Status di pojok kanan bawah (icon komputer kembar) kemudian klik Properties, trus pada tampilan Local Area Properties klik Configure silahkan cari pilihah Speed and Duplex (setiap tipe LAN pada komputer memiliki menu yang berbeda, tetapi pasti ada settingan Speed and Duplex) set valuenya menjadi 10 Mbps Full Duplex. Setelah itu klik OK. Koneksi LAN anda akan me-restart secara otomatis.

Jika masih terjadi error pada Koneksi LAN anda berarti tipe kabel LAN yang anda gunakan tidak cocok. Sebelumnya saya menggunakan kabel LAN tipe Straight kemudian saya ubah pemasangan nya dengan LAN tipe Cross (Crossover). Jika anda sebelum nya menggunakan kabel LAN tipe Cross, coba ganti pakai Straight saja. Karena keadaan mesin kita tidak ada yang bisa memastikan (buktinya komputer sebelah mau, dan komputer baru ga mau, padahal settingan semua sudah disamakan)

KEDUA
Cara membuat kabel LAN tipe Straight sangat mudah, tapi sebagai referensi sobat-sobat semua, saya jelaskan dengan gambar saja ya.. Ikuti saja warna kabel2 berikut.

Berikut alat alat yang diperlukan untuk pemasangan kabel LAN
1. Kabel LAN UTP isi 8
    Kabel UTP untuk LAN
Untuk harga kabel UTP isi 8 saya membeli seharga Rp. 5.000/meter. Jika membeli yang murahan seharga Rp. 3.000/meter bisa berdampak pada koneksi terputus-putus. Jika menggunakan kabel yang berjarak panjang, usahakan menggunakan kualitas yang bagus, seharga kurang lebih Rp. 5.000/meter.

2. Jack RJ45 Connector
     Jack RJ45 untuk LAN Head
Harga untuk 1 buah RJ45 saya membeli Rp. 2.500, ada beberapa jenis dan kualitas untuk RJ45, tetapi tetap usahakan beli yang kualitas yang baik agar penyambungan kabel tidak mengalami kendala atau masalah.

3. Crimping (Tang penjepit)
    Crimping untuk penjepit kabel LAN pada Head
Harga tang Crimping berkisar Rp. 35.000 sampai Rp. 50.000 an. Ada berbagai bentuk yang bisa anda pilih dan fungsinya sama saja.

Berikut adalah cara pemasangan LAN tipe Straight

Ujung kabel pertama       Ujung kabel kedua
  Kabel Straight untuk LAN           Kabel Straight untuk LAN
Warna kabel untuk LAN straight sama antara ujung satu dan ujung lainnya.


Kemudian untuk kabel LAN tipe Cross

Kabel Cross untuk LAN

Untuk mempermudah sobat jika sudah terlanjur pasang ujung pertama dengan warna berbeda, lakukan hal berikut pada ujung kedua, berikut perubahan nya. Pin 1 ditukar dengan Pin 3 (jadi Pin 1 dimasukkan ke Pin 3 dan Pin 3 dimasukkan ke Pin 1) dan yang selanjutnya tukarkan pin yang 2 dengan pin 6 (kabel yang seharusnya dimasukkan ke pin 2, masukkan ke pin 6 demikian sebaliknya)

Kesimpulannya

PIN           Unjung 1                         Ujung 2
1               1.putih orange               3.putih hijau
2               2.orange                         6.hijau
3               3.putih hijau                   1.putih orange
4               4.biru                               4.biru
5               5.putih biru                     5.putih biru
6               6.hijau                             2.orange
7               7.putih cokelat               7.putih cokelat
8               8.cokelat                         8.cokelat

Setelah selesai, silahkan coba pasang pada komputer anda, kalau masih ada masalah error pada koneksi sobat, bisa di share melalui komentar dibawah ini, saya akan berusaha memberi solusi yang terbaik..

Salam

Kamis, 24 Januari 2013

Install Ubuntu 12.04 menggunakan CD

Install Ubuntu 12.04 menggunakan CD

Sudah lama tidak update Ubuntu, saya coba cek Ubuntu terbaru, ternyata sudah Ubuntu 12.04! Sungguh tertinggal komputer ini.
Disini kita akan mencoba install Ubuntu 12.04 menggunakan CD. Sebelumnya, kita download file ISO Ubuntu 12.04 di sini : Ubuntu 12.04. Setelah selesai download, mount menggunakan Ultra ISO atau software lainnya lalu copy ke cd kosong dan burning. Isi dari file ISO tersebut dapat dilihat di gambar di bawah ini.
install ubuntu 12.04
Setelah kita burning ke CD, kita bisa langsung restart komputer kita untuk melakukan instalasi Ubuntu. Pada umumnya, CD yang tadi di burning bootable, yaitu bisa langsung melakukan instalasi Ubuntu. Akan tetapi jika ada kendala yaitu CD tidak bisa bootable, kita harus kembali masuk ke windows.
Mount kembali file ISO tadi, lalu jalankan file wubi.exe hingga tampil gambar berikut.
install ubuntu 12.04
Pilih “Demo dan Instalasi Penuh”
install ubuntu 12.04
Pada pilihan ini, pilih pilihan paling bawah ” Bantu saya agar dapat boot dari CD”, tekan tombol “Selesai”
install ubuntu 12.04
Selanjutnya tekan tombol “Pasang” sampai muncul proses pemasangan, dan tunggu hingga selesai.
install ubuntu 12.04
Setelah selesai, kita restart kembali komputer kita. Ketika booting kembali, akan ada pilihan menu OS, pilih “Ubuntu” dan pada tampilan berikutnya, pilih “Normal Mode” sampai kita masuk ke OS Ubuntu.
Setelah masuk ke OS Ubuntu, akan ada icon di desktop dengan nama “Instalasi Penuh”, klik icon tersebut.
Ketika muncul window proses instalasi, lakukan instruksinya. Kita bisa melihat cara instalasinya di http://www.ubuntu.com/download/help/install-ubuntu-desktop. Maaf tidak disertakan langsung disini, karena ribet harus coba-coba lagi :D
Oke, ketika Ubuntu 12.04 terinstall di komputer kita, komputer akan langsung eject CD-ROM dan restart. Kita ambil CD yang ada di CD-ROM.
akan ada tampilan menu OS, kita pilih Ubuntu 12.04 yaitu di pilihan menu paling atas.

Menghapus pilihan menu OS

Lalu jika kita ingin masuk kembali ke OS windows, akan ada pilihan OS yang tadi sebelum kita install Ubuntu, dimana ada penghitung waktu mundur. Merasa ribet alias terganggu dengan tampilan ini? Jika merasa ingin menghapus pilihan menu yang kedua, kita masuk dulu ke Windows.
Kilik kanan di My Computer, Pilih “Properties”
install ubuntu 12.04
Setelah itu akan muncul tampilan berikut.
install ubuntu 12.04
Pilih “Advanced system settings”
install ubuntu 12.04
Pilih Tab “Advanced” dan di bagian “Startup and Recovery”, tekan tombol “Settings..”
install ubuntu 12.04
Pada pilihan combobox “Default operating system”, pilih “Windows 7″ (OS default yang ingin kita pilih)
Pada checkbox dibawahnya ada option “Time to display list of operating system:” uncheck option/pilihan ini (jangan dichecklist).
diperhatikan : jangan uncheck (tidak dichecklist) ketika “Default operating system” yang dipilih adalah SELAIN “Windows 7″. Hal ini akan mengakibatkan kita tidak bisa masuk ke OS Windows lagi.
Setelah semua selesai, silahkan restart dan coba lagi. Semoga bermanfaat :)

Selasa, 22 Januari 2013

Cara Merubah Template Blog

Cara Merubah Template Blog

Bosan dengan tampilan blog anda ? silahkan ganti tampilan nya dengan template yang dapat anda cari secara gratis di banyak situs penyedia template gratis.

Untuk merubah template sbb :



  1. Cari Situs Penyedia Template Gratis
  2. Untuk informasi template gratis bisa lihat di blog saya yang lain di http://panduanbisnis1.blogspot.com/2009/02/template-gratis.html atau anda bisa langsung kesini : http://btemplates.com/ atau disini http://freetemplates.blogspot.com/ 
  3. Di situs penyedia template pilih template yang anda sukai .
  4. Lalu klik 'download'. 
  5. Simpan hasil download dihardisk anda,. 
  6. Setelah di download Klik kanan ikon hasil download itu , 
  7. lalu klik " extrak here"



  Cara Merubah Template Blogspot





Catatan : Pastikan terlebih dulu bahwa anda telah mengetahui template lama anda memakai yg mana, apakah dengan classic(HTML) template, atau New (XML) template.

Membedakan Template Klasik dengan Template New XML


Ciri-ciri nya bisa dilihat di dalam halaman editor HTML sbb :

Untuk yg classic(HTML) , cirinya di paling atas..diawali dengan <! DOCTYPE html...dst..dst.., seperti tampak dalam gambar sbb :

Tips Cara Merubah Template Blogspot

Dan untuk yang New (XML) template cirinya di paling atas..diawali dengan <!?xml version="1.0.....dst..dst.., seperti tampak dalam gambar sbb :


Tutorial Cara Merubah Template Blogspot



Ciri lain perbedaan template antara yg classic dan New, bisa kita lihat saat kita berada di halaman awal dashbor blogspot, dimana jka kita mempunyai banyak blog dalam satu akun, maka disitu akan terlisting deretan blog milik kita, yaitu sbb :



Panduan Cara Merubah Template Blogspot



Di gambar atas, bisa kita lihat satu blog saya : Bisnis Air OXY , adalah ber template "NEW" disitu ada link utk "LAYOUT"  Design dimana di link itu lah tempatnya kita untuk mengotak-atik tampilan blog,
sedangkan blog Belajar HTML Mencari Usaha Halal, ber template "Classic" dan link untuk mengotak-atik Tampilan blog , adanya di link "TEMPLATE"


Update 16 Juni 2011 : Ada perubahan pada dashbor blogspot sbb : Untuk Template New XML akan tertulis tab Design ( Bukan Layout:lagi seperti yg di Dashbor lama )


Jika kita sudah mengetahui jenis template lama kita, maka langkah selanjutnya adalah mencari template yg sesuai dengan template lama, misalnya yg lama pakai New (XML) , maka carilah template dengan yg New (XML) pula..dan sebaliknya.

Ciri hasil download template New (XML) ( setelah di ekstrak dari ZIP file) seperti terlihat dalam gambar :








Dan Ciri hasil download template classic(HTML) seperti terlihat dalam gambar :







Setelah proses men download template selesai, dan sudah sesuai dengan pilihan template antara yg lama dengan yg baru, Langkah selanjutnya sbb :

  • Signup (Masuk) ke dashboar blogspot milik anda.
  • Pilih "LAYOUT"  Design  atau "tata letak".




  • Pilih Edit HTML.
  • Klik "Download Full Template" untuk menyimpan template lama anda dan agar anda mempunyai backup unuk jaga-jaga jika terjadi "gagal"
  • lalu klik tab "Telusuri" atau "browse" .
  • Nah anda akan mencari file hasil download anda di dalam file hardisk yang tadi anda simpan.
  • Jika sudah ketemu klik 'open'.
  • anda akan kembali ke halaman blogspot.
  • Lalu klik "Unggah" atau Upload.
  • Setelah proses upload selesai, akan ada konfirmasi bahwa template baru itu akan menghapus beberapa wdiget/gadget yang telah terpasang di blog anda sebelumnya.
  • Oleh sebab itu jika anda ingin gadget itu tampil kembali di template anda yang baru ,maka sebelum anda merubah template, sebaiknya kode-kode html dari widget dicopy dulu dan bisa anda simpan di notepad sementara.
  • Selesai.
Nah semoga bermanfaat....Silahkan tuliskan komentar anda jika ingin sharing disin

Kamis, 04 Oktober 2012

Tips Anti Galau...

“Galau!!” merupakan sebuah kata-kata yang sedang naik daun, di mana kata-kata itu menandakan seseorang tengah dilanda rasa kegelisahan, kecemasan, serta kesedihan pada jiwanya. Tak hanya laku di facebook atau twitter saja, bahkan di media televisi pun orang-orang seakan-akan dicekoki dengan kata-kata “galau” tersebut.
Pada dasarnya, manusia adalah sesosok makhluk yang paling sering dilanda kecemasan. Ketika seseorang dihadapkan pada suatu masalah, sedangkan dirinya belum atau tidak siap dalam menghadapinya, tentu jiwa dan pikirannya akan menjadi guncang dan perkara tersebut sudahlah menjadi fitrah bagi setiap insan.
...Jangankan kita manusia biasa, bahkan Rasulullah pun pernah mengalami keadaan keadaan galau pada tahun ke-10 masa kenabiannya...
Jangankan kita sebagai manusia biasa, bahkan Rasulullah Muhammad shalallahu alaihi wasallam pun pernah mengalami keadaan tersebut pada tahun ke-10 masa kenabiannya. Pada masa yang masyhur dengan ‘amul huzni (tahun duka cita) itu, beliau ditinggal wafat oleh pamannya, Abu Thalib, kemudian dua bulan disusul dengan wafatnya istri yang sangat beliau sayangi, Khadijah bintu Khuwailid.
Sahabat Abu Bakar, ketika sedang perjalanan hijrah bersama Rasulullah pun di saat berada di dalam gua Tsur merasa sangat cemas dan khawatir dari kejaran kaum Musyrikin dalam perburuan mereka terhadap Rasulullah. Hingga turunlah surat At-Taubah ayat 40 yang menjadi penenang mereka berdua dari rasa kegalauan dan kesedihan yang berada pada jiwa dan pikiran mereka.

Jangan Galau, Innallaha Ma’ana!
Allah Ta’ala berfirman, “Janganlah engkau bersedih, sesungguhnya Allah bersama kami” (QS. At Taubah: 40).
Ayat di atas mungkin dapat menjadikan kita agar lebih merenungi lagi terhadap setiap masalah apapun yang kita hadapi. Dalam setiap persoalan yang tak kunjung terselesaikan, maka hadapkanlah semua itu kepada Allah Ta’ala. Tak ada satupun manusia yang tak luput dari rasa sedih, tinggal bagaimana kita menghadapi kesedihan dan kegalauan tersebut.
...Allah telah memberikan solusi kepada manusia untuk mengatasi rasa galau yang sedang menghampiri jiwa...
Adakalanya, seseorang berada pada saat-saat yang menyenangkan, tetapi, ada pula kita akan berada pada posisi yang tidak kita harapkan. Semua itu sudah menjdai takdir yang telah Allah Ta’ala tetapkan untuk makhluk-makhluk Nya.
Tetapi, Allah Ta’ala juga telah memberikan solusi-solusi kepada manusia tentang bagaimana cara mengatasi rasa galau atau rasa sedih yang sedang menghampiri jiwa. Karena dengan stabilnya jiwa, tentu setiap orang akan mampu bergerak dalam perkara-perkara positif, sehingga dapat membuat langkah-langkahnya menjadi lebih bermanfaat, terutama bagi dirinya lalu untuk orang lain.
Obat Galau | Tips Anti Galau | Cara Mengobati Galau | Cara Menghindari Galau
Berikut ini adalah kunci dalam mengatasi rasa galau;
1. Sabar
Hal pertama yang dilakukan oleh Nabi Muhammad ketika menghadapi cobaan yang tiada henti adalah dengan meneguhkan jiwa dalam bingkai kesabaran. Karena dengan kesabaran itulah seseorang akan lebih bisa menghadapi setiap masalah berat yang mendatanginya.
Allah Ta’ala berfirman, “Sesungguhnya Allah bersama orang-orang yang sabar” (Qs. Al-Baqarah 153).
Selain menenangkan jiwa, sabar juga dapat menstabilkan kacaunya akal pikiran akibat beratnya beban yang dihadapi.
2. Adukanlah semua itu kepada Allah
Ketika seseorang menghadapi persoalan yang sangat berat, maka sudah pasti akan mencari sesuatu yang dapat dijadikan tempat mengadu dan mencurahkan isi hati yang telah menjadi beban baginya selama ini. Allah sudah mengingatkan hamba-Nya di dalam ayat yang dibaca setiap muslim minimal 17 kali dalam sehari:
“Hanya kepada-Mulah kami menyembah, dan hanya kepada-Mulah kami meminta pertolongan” (QS. Al Fatihah 5).
...ketika keluhan itu diadukan kepada Sang Maha Pencipta, maka akan meringankan beban berat yang kita derita...
Mengingat bahwa manusia adalah makhluk yang banyak sekali dalam mengeluh, tentu ketika keluhan itu diadukan kepada Sang Maha Pencipta, maka semua itu akan meringankan beban berat yang selama ini kita derita.
Rasulullah shalallahi alaihi wasallam ketika menghadapi berbagai persoalan pun, maka hal yang akan beliau lakukan adalah mengadu ujian tersebut kepada Allah Ta’ala. Karena hanya Allah lah tempat bergantung bagi setiap makhluk.
3. Positive thinking
Positive thinking atau berpikir positif, perkara tersebut sangatlah membantu manusia dalam mengatasi rasa galau yang sedang menghinggapinya. Karena dengan berpikir positif, maka segala bentuk-bentuk kesukaran dan beban yang ada pada dalam diri menjadi terobati karena adanya sikap bahwa segala yang kesusahan-kesusahan yang dihadapi, pastilah mempunyai jalan yang lebih baik yang sudah ditetapkan oleh Allah Ta’ala. Sebagaimana firman-Nya;
“Karena Sesungguhnya sesudah kesulitan itu ada kemudahan. Sesungguhnya sesudah kesulitan itu ada kemudahan” (Qs Al-Insyirah 5-6).
4. Dzikrullah (Mengingat Allah)
Orang yang senantiasa mengingat Allah Ta’ala dalam segala hal yang dikerjakan. Tentunya akan menjadikan nilai positif bagi dirinya, terutama dalam jiwanya. Karena dengan mengingat Allah segala persoalan yang dihadapi, maka jiwa akan menghadapinya lebih tenang. Sehingga rasa galau yang ada dalam diri bisa perlahan-perlahan dihilangkan. Dan sudah merupakan janji Allah Ta’ala, bagi siapa saja yang mengingatnya, maka didalam hatinya pastilah terisi dengan ketenteraman-ketenteraman yang tidak bisa didapatkan melainkan hanya dengan mengingat-Nya.
...Bersabar, berpikir positif, ingat Allah dan mengadukan semua persoalan kepada-Nya adalah solusi segala persoalan...
Sebagaimana firman-Nya:
“Orang-orang yang beriman dan hati mereka menjadi tenteram dengan mengingat Allah. Ingatlah, hanya dengan mengingat Allah lah hati menjadi tenteram” (Qs Ar-Ra’du 28).

Berbeda dengan orang-orang yang lalai kepada Allah, yang di mana jiwa-jiwa mereka hanya terisi dengan rasa kegelisahan, galau, serta kecemasan semata. Tanpa ada sama sekali yang bisa menenangkan jiwa-Nya.
Tentunya, sesudah mengetahui tentang faktor-faktor yang dapat mengatasi persoalan galau, maka jadilah orang yang selalu dekat kepada Allah Ta’ala. Bersabar, berpikir positif, mengingat Allah, serta mengadukan semua persoalan kepada-Nya merupakan kunci dari segala persoalan yang sedang dihadapi. Maka dari itu, Janganlah galau, karena sesungguhnya Allah bersama kita

Selasa, 10 Juli 2012

Bridge Pattern

Bridge Pattern ini merupakan pattern yang kuat (powerfull) dan sering
digunakan dalam pengembangan. Dan ini sebanding dengan usaha untuk mempelajarinya yang cukup menantang.
Untuk memahami design pattern yang satu ini, kita perlu melihat makna decouple (tidak berpasangan), abstraction (abstraksi), dan implementation (implementasi) dari sisi yang berbeda terlebih dahulu.
Decouple adalah bagaimana objek tidak terhubung satu sama lain, berdiri sendiri (independent), terpisah.
Abstraksi adalah konsep bagaimana antar objek saling terhubung.
Sedangkan “implementasi” janganlah dipandang sebagai penurunan dari suatu kelas abstrak (concrete class). Pandanglah “implementasi” sebagai objek lain yang digunakan oleh kelas abstrak (dan turunannya) untuk mengimplementasi dirinya (“nya” ditujukan untuk kelas abstrak).
Dalam sebagian besar tutorial, bridge pattern didefinisikan sebagai

pattern yang berusaha memisahkan antara abstraksi dan implementasi.
Bingung? Hehe.. Namanya juga teori, biasanya mengawang-awang jika tidak diaplikasikan. Yuk kita aplikasikan!
(Untuk contoh bridge pattern ini, saya ambil dari buku Design Patterns JAVA Workbook .)
Misalkan kita punya modal diagram kelas yang pada superclassnya terdapat sebuah kelas abstrak “MachineController”. Nah, di dalam MachineController ini terdapat beberapa abstract dan concrete method. Salah satu concrete method pada MachineController, yaitu inputfull, menggunakan hasil dari salah satu abstract method “getQueueMax()”.
public boolean inputfull(){
return getQueueMax() >= getQueue.size();

}
Dan selayaknya sebuah abstract method, method getQueueMax() ini baru akan didefinisikan dalam kelas yang turunan MachineController, yaitu StarPressController dan ShellController. Kedua kelas turunan ini mendefinisikan method getQueueMax() dengan cara yang berbeda. Berikut ini adalah diagram kelas yang dimaksudkan :
1
Sampai disini, masih baik-baik saja. 
Kemudian pada suatu hari, kita baru menyadari bahwa kita membutuhkan mekanisme (controller) yang berbeda pada untuk proses pengetesan.
Misalkan kita membutuhkan satu tambahan method pada kelas abstrak MachineController, yaitu method overflow(). Maka kita akan membuat sebuah kelas baru, kelas abstrak TestController, yang diturunkan dari kelas MachineController.
Sebagai kelas abstark, TestController membutuhkan StarPressController dan ShellController untuk mendefinisikan method abstrak getQueueMax(). Maka bentuk diagram kelas yang kita miliki sekarang adalah :
2
Dengan penambahan suatu mekanisme baru, maka bertambahlah tiga buah kelas pada diagram kelas kita. Bagaimana nanti jika kita akan menambahkan dua mekanisme baru? Berarti akan ada penambahan enam kelas baru! Bagaimana jika ada sepuluh mekanisme baru?! Begitu seterusnya hingga kelas-kelas ini beranak-pinak.
Keruwetan ini dapat ditangani oleh bridge pattern.
Langkah yang perlu dilakukan adalah :
  1. Buatlah sebuah interface yang berisi method-method abstrak dari superclass (MachineController).
  2. Untuk kelas-kelas yang mendefinisikan method abstrak dengan definisi yang berbeda, pindahkan letakkan dibawah interface. (implements)
  3. Kelas abstrak MachineController didefinisikan sebagai concrete class .
  4. Lakukan aggregasi! Buatlah sebuah atribut yang merupakan instans dari interface DriverController. Gunakan instans ini untuk mengakses method-method pada interface DriverController sebagai pengisi dari method konkrit, contohnya inputfull(). [Karena inputfull membutuhkan method getQueueMax()] Maka “bentuk” method inputfull() sekarang adalah :
public boolean inputfull(){
return driver.getQueueMax() <= driver.getQueue.getSize();

}
Dan diagram kelas kita sekarang adalah :
3
Nah, sekarang jika kita menginginkan mekanisme kontrol yang baru, tinggal membuat SEBUAH kelas yang diturunkan dari MachineController, semisal dengan TestController. Demikian pula jika suatu saat nanti kita membutuhkan tipe driver yang baru, maka kita tinggal menambah sebuah kelas yang mengimplementasikan DriverController, semisal dengan ShellDriver.
Inilah bridge pattern yang berhasil memisahkan (decouple) antara abstraksi dengan implementasinya. 
Dalam bukunya “Design Pattern Explained : A New Perspective on Object-Oriented Design”, Alan Shalloway dan James R. Trott menyatakan bahwa penurunan memang merupakan “surga” dalam pemrograman berbasis objek. Namun penggunaan penurunan kelas secara berlebihan akan menyulitkan pengembangan aplikasi di masa yang akan datang.

Setelah class diagram di atas, sekarang kita lanjutkan ke penerapannya pada sebuah script PHP seperti di bawah ini :
1
2 
3abstract class SaklarImplementasi {
4    abstract function status_awal($in_awal);
5    abstract function status_akhir($in_akhir);
6}
7 
8class SaklarKamar extends SaklarImplementasi {
9    function status_awal($status_awal_in) {
10      return '|||||'.$status_awal_in.'|||||';
11    }
12    function status_akhir($status_akhir_in) {
13      return '------'.$status_akhir_in.'------';
14    }
15}
16 
17class SaklarDapur extends SaklarImplementasi {
18    function status_awal($status_awal_in) {
19      return $status_awal_in;
20    }
21    function status_akhir($status_akhir_in) {
22      return strtoupper($status_akhir_in);
23    }
24}
25 
26class SaklarGarasi extends SaklarImplementasi {
27    function status_awal($status_awal_in) {
28      return 'garasi - '.$status_awal_in;
29    }
30    function status_akhir($status_akhir_in) {
31      return 'garasi - '.strtoupper($status_akhir_in);
32    }
33}
34 
35abstract class Saklar {
36    private $status_awal;
37    private $status_akhir;
38    private $kode;
39    function __construct($status_awal_in, $status_akhir_in, $kode_in) {
40      $this->status_awal = $status_awal_in;
41      $this->status_akhir  = $status_akhir_in;
42      if ($kode_in == 'dapur') {
43        $this->kode = new SaklarDapur();
44      } else if($kode_in == 'kamar') {
45        $this->kode = new SaklarKamar();
46      } else if($kode_in == 'garasi') {
47        $this->kode = new SaklarGarasi();
48      }
49    }
50    function status_awal() {
51      return $this->kode->status_awal($this->status_awal);
52    }
53    function status_akhir() {
54      return $this->kode->status_akhir($this->status_akhir);
55    }
56}
57 
58class SaklarHidup extends Saklar {
59    function hidupkan() {
60      return $this->status_awal() . " -> " . $this->status_akhir();
61    }
62} 
63 
64class SaklarMati extends Saklar {
65    function matikan() {
66      return $this->status_akhir() . ' -> ' . $this->status_awal();
67    }
68}
69  cetak('Lampu Kamar, mati -> hidup');
70  $saklar = new SaklarHidup('off','on','kamar');
71  cetak($saklar->hidupkan());
72  cetak('');
73 
74  cetak('Lampu Dapur, mati -> hidup');
75  $saklar = new SaklarHidup('off','on','dapur');
76  cetak($saklar->hidupkan());
77  cetak('');
78 
79  cetak('Lampu Kamar, hidup -> mati');
80  $saklar = new SaklarMati('off','on','kamar');
81  cetak($saklar->matikan());
82  cetak('');
83 
84  cetak('Lampu Dapur, hidup -> mati');
85  $saklar = new SaklarMati('off','on','dapur');
86  cetak($saklar->matikan());
87  cetak('');
88 
89  function cetak($isi) {
90    echo $isi."
"
;
91  }
92 ?>

Strategi Method Pattern

NIM : 1108100268
Strategy pattern (juga dikenal sebagai kebijakan pola) adalah pola desain perangkat lunak tertentu, dimana algoritma dapat dipilih saat runtime. Secara resmi berbicara, strategi pola mendefinisikan sebuah keluarga algoritma, merangkum masing-masing, dan membuat mereka saling dipertukarkan. Strategi ini memungkinkan algoritma yang bervariasi secara independen dari klien yang menggunakannya.[1]
Sebagai contoh, sebuah kelas yang melakukan validasi pada data yang masuk dapat menggunakan pola strategi untuk memilih algoritma validasi yang didasarkan pada jenis data, sumber data, pilihan pengguna, dan faktor-faktor lain yang membedakan, atau. Faktor-faktor ini tidak diketahui untuk setiap kasus sampai run-time, dan mungkin memerlukan validasi yang berbeda untuk dilakukan. Strategi validasi, dikemas secara terpisah dari objek memvalidasi, dapat digunakan oleh benda-benda lain memvalidasi dalam berbagai bidang sistem (atau bahkan berbagai sistem) tanpa duplikasi kode.
Persyaratan penting dalam bahasa pemrograman adalah kemampuan untuk menyimpan referensi untuk beberapa kode dalam struktur data dan mengambilnya. Ini dapat dicapai dengan mekanisme seperti pointer asli fungsi, fungsi kelas, kelas atau kelas contoh dalam berorientasi objek bahasa pemrograman, atau mengakses penyimpanan internal implementasi bahasa kode melalui refleksi.
Structure :
Contoh di Java
// The classes that implement a concrete strategy should implement this.
// The context class uses this to call the concrete strategy.
interface Strategy {
    int execute(int a, int b); 
}

// Implements the algorithm using the strategy interface
class ConcreteStrategyAdd implements Strategy {

    public int execute(int a, int b) {
        System.out.println("Called ConcreteStrategyAdd's execute()");
        return a + b;  // Do an addition with a and b
    }
}

class ConcreteStrategySubtract implements Strategy {

    public int execute(int a, int b) {
        System.out.println("Called ConcreteStrategySubtract's execute()");
        return a - b;  // Do a subtraction with a and b
    }
}

class ConcreteStrategyMultiply implements Strategy {

    public int execute(int a, int b) {
        System.out.println("Called ConcreteStrategyMultiply's execute()");
        return a * b;   // Do a multiplication with a and b
    }    
}

// Configured with a ConcreteStrategy object and maintains a reference to a Strategy object
class Context {

    private Strategy strategy;

    // Constructor
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int a, int b) {
        return strategy.execute(a, b);
    }
}

// Test application
class StrategyExample {

    public static void main(String[] args) {

        Context context;

        // Three contexts following different strategies
        context = new Context(new ConcreteStrategyAdd());
        int resultA = context.executeStrategy(3,4);

        context = new Context(new ConcreteStrategySubtract());
        int resultB = context.executeStrategy(3,4);

        context = new Context(new ConcreteStrategyMultiply());
        int resultC = context.executeStrategy(3,4);
    }
}

Adapter Pattern

Kondisi :
Kita mempunyai sebuah class dan sebuah client yang akan menggunakan class tersebut, tetapi tipe class yang akan kita pakai tersebut tidak cocok dengan tipe yang dibutuhkan oleh client*. Yang dimaksud dengan “tipe class tidak cocok “ di sini adalah bahwa class tersebut secara hierarki tidak bisa masuk ke tipe yang dibutuhkan client. (Di akhir tulisan ini disertakan sebuah contoh kasus)
* Sebagai contoh di Java, client di sini dapat berupa sebuah method yang mempunyai parameter bertipe tertentu. Tipe parameter inilah yang tidak sesuai dengan tipe class yang sudah ada.
Tujuan :
Mengubah kontrak dari suatu class sehingga dapat memenuhi kontrak dari client.
Kontrak** di sini adalah behavior yang harus dipunyai oleh suatu class.
**Di Java, kontrak bisa diimplementasikan sebagai interface, abstract class, atau bahkan concrete class. Tapi pada desain yang baik (prefer interface rather than implementation), kontrak biasa diimplementasikan sebagai interface.
Solusi :
Cara untuk mengatasi hal ini cukup mudah, yaitu tinggal membuat sebuah class baru yang memenuhi kontrak dari client.
Implementasi :
Secara intuitif, ada dua pendekatan solusi yang bisa kita lakukan, yaitu dengan inheritance dan dengan composition. Cara yang pertama dikenal sebagai class adapter dan cara kedua dikenal sebagai object adapter.
Sebagai contoh kasus, jika kita sudah punya definisi class sebagai berikut (existing classes).

 1  interface Animal {
 2      public void sleep();
 3  }
 4
 5  class Cat implements Animal {
 6      public void sleep() {
 7          System.out.println("I'm so sleeeepy.. Miauwww");
 8          System.out.println("(Trying to find comfy place to sleep)");
 9          System.out.println("(Find a place, and put its head on its hand)");
10      }
11  }
12
13  class Mouse implements Animal {
14      public void sleep() {
15          System.out.println("Soo sleeepy.. cit cit");
16          System.out.println("(Try to find a hole..)");
17          System.out.println("(Can't find one..creating a new one)");
18          System.out.println("Zzz..zzz.z");
19      }
20  }

Permasalahan : kita harus menggunakan beberapa ekor binatang (Animal) sebagai pemeran (Actor) pada sebuah adegan film (MovieScene), karena skenario film tersebut membutuhkan adegan dimana beberapa ekor binatang akan tidur.

 1  class MovieScene {
 2
 3      private List actorList = new ArrayList();
 4
 5      public void addActor(Actor actor) {
 6          this.actorList.add(actor);
 7      }
 8
 9      public void playScene() {
10          System.out.println("--Begin the scene--");
11
12          Actor actor;
13          for (Iterator iter = actorList.iterator(); iter.hasNext();) {
14              actor = (Actor) iter.next();
15              actor.act();
16          }
17
18          System.out.println("--End fo scene--");
19      }
20
21  }
22
23
24  interface Actor {
25      public void act();
26  }
27
28  class HumanActor implements Actor {
29      public void act() {
30          System.out.println("I'm an human actor and now doing my scenario script...");
31      }
32  }
Kita mempunyai sebuah permasalahan baru, di mana kita harus menggunakan class yang sudah ada sebelumya (Cat) di dalam solusi permasalahan baru kita.
 1  class Movie {
 2      public static void main(String[] args) {
 3          MovieScene scene = new MovieScene();
 4          Actor bruceWillis = new HumanActor();
 5  
 6          scene.addActor(bruceWillis);
 7  
 8          Cat tom = new Cat();
 9          // Animal or Cat can't fit into Actor
10          // so we can't use scene.addActor(Cat cat);
11          // nor write Actor tom = new Cat() here
12          // nor using scene.addActor(Animal a); if we declare tom as an Animal
13  
14          scene.playScene();
15      }
16  }
Untuk mengatasi hal ini, kita mengimplementasikan Adapter pattern, salah satu caranya yaitu dengan membuat sebuah class baru yang meng-implement interface yang dibutuhkan oleh MovieScene.addActor (yaitu Actor), dan menghubungkan method yang dibutuhkan oleh Actor dengan method yang disediakan oleh Animal.

 1  class AnimalActor implements Actor{
 2
 3      private Animal animal;
 4
 5      public AnimalActor(Animal animal){
 6          this.animal = animal;
 7      }
 8
 9      public void act() {
10          animal.sleep();
11      }
12
13  }
Cara yang kedua adalah dengan melakukan composition antara subclass dari ActorAdapter berikut ini dengan Animal, dan meng-override method yang ada dengan pemanggilan method pada Animal.

1  class ActorAdapter implements Actor{
2      public void act() {
3          // do nothing..
4      }
5  }
Sekarang kita bisa menggunakan dua binatang kita untuk ikut serta dalam film.

 1  class MouseActor extends ActorAdapter{
 2    
 3      private Mouse mouse;
 4    
 5      public MouseActor(Mouse mouse){
 6          this.mouse = mouse;
 7      }
 8    
 9      public MouseActor(){
10          mouse.sleep();
11      }
12    
13      public void act() {
14          super.act();
15      }
16  }
17
18
19  class Movie {
20      public static void main(String[] args) {
21          MovieScene scene = new MovieScene();
22          Actor bruceWillis = new HumanActor();
23
24          Cat tom = new Cat();
25          Mouse jerry = new Mouse();
26        
27          Actor adaptedTom = new AnimalActor(tom);
28          Actor adaptedJerry = new MouseActor(jerry);
29        
30          scene.addActor(bruceWillis);
31          scene.addActor(adaptedTom);
32          scene.addActor(adaptedJerry);
33        
34          // suppose that we want to create a new type of Actor and add it to the scene
35          scene.addActor(new ActorAdapter(){
36              public void act() {
37                  System.out.println("Simply do nothing..");
38                  // hey, this looks like how we add an adapter on Swing ;)
39              }
40          });
41        
42          scene.playScene();
43      }
44  }