tag:blogger.com,1999:blog-81743004294150970412024-03-19T04:12:05.263-07:00DESA BUNDERUnknownnoreply@blogger.comBlogger33125tag:blogger.com,1999:blog-8174300429415097041.post-17004418617935857892015-10-18T19:03:00.001-07:002017-12-14T11:49:48.244-08:00ANTOGAN WATER PARK<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0gy6NzVbuIyniYp_fSOCS2YyK-E1S1sOfpTwPVGovgUduZ-CtsNCrG9Q9E8-9CLvytHYzM01XKVdsjWZcCrJ0Id5-YwbJE1k2BhP1Os0GB32J1eKSX60_saaM9X7sL3RuHJKPks5OH8YZ/s1600/slide+3.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0gy6NzVbuIyniYp_fSOCS2YyK-E1S1sOfpTwPVGovgUduZ-CtsNCrG9Q9E8-9CLvytHYzM01XKVdsjWZcCrJ0Id5-YwbJE1k2BhP1Os0GB32J1eKSX60_saaM9X7sL3RuHJKPks5OH8YZ/s1600/slide+3.jpg" /></a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-63002235001629127432015-02-09T16:29:00.001-08:002015-02-09T16:29:12.669-08:00Konfigurasi IP Address, DNS, dan NAT Pada Ubuntu Server 10.10<div class="posttitle">
<h2>
Konfigurasi IP Address, DNS, dan NAT Pada Ubuntu Server 10.10</h2>
<div class="post-info">
<a href="https://kurniawanadam.wordpress.com/author/adamkurniawanmrg/" title="Pos-pos oleh Adam Kurniawan Mrg"></a> </div>
</div>
<div style="text-align: justify;">
<img alt="" class="alignright size-full wp-image-510" src="https://kurniawanadam.files.wordpress.com/2011/05/konfigurasi-ip-address-dns-dan-nat-pada-ubuntu-server-10-10.png?w=500" title="Konfigurasi IP Address, DNS, dan NAT Pada Ubuntu Server 10.10" />Antar muka dari Ubuntu Server 10.10 adalah <em>text mode</em>, tidak ada jendela, tidak ada klik, <em>drag and drop</em>, dan sebagainya yang biasa dilakukan pada mode GUI (<em>Graphic User Interface</em>), semua operasi pada Ubuntu Server dilakukan dengan mengetikkan secara manual perintah melalui papan ketik (<em>keyboard</em>). Sebenarnya Ubuntu Server 10.10 juga bisa dibuat dengan mode GUI, namun itu akan sangat memberatkan bagi <em>server</em>, karena harus melakukan instalasi mode GUI<span id="more-509"></span> yang memakan banyak sumber daya, terutama <em>Memory </em>dan <em>Hard Disk</em>, selain itu juga, pada dasarnya tingkat keamanan dengan menggunakan mode CLI akan lebih baik ketimbang menggunakan mode GUI.</div>
<div style="text-align: justify;">
Artikel ini adalah lanjutan dari artikel saya yang berjudul <a href="https://kurniawanadam.wordpress.com/2011/05/08/instalasi-ubuntu-server-10-10/" title="Instalasi Ubuntu Server 10.10">Instalasi Ubuntu Server 10.10</a>.
Agar Ubuntu Server 10.10 bisa melakukan koneksi ke jaringan, baik itu
jaringan lokal maupun internet, maka langkah awal yang dilakukan adalah
melakukan konfigrasi alamat IP. Untuk mengkonfigurasi alamat IP
langkah-langkahnya adalah sebagai berikut:</div>
<div style="text-align: center;">
<strong>Tutorial disertai dengan gambar sudah saya pindahkan ke:</strong></div>
<div style="text-align: center;">
<a href="http://www.adamkurniawan.com/konfigurasi-ip-address-dns-dan-nat-pada-ubuntu-server-10-10/"><strong>http://www.adamkurniawan.com/konfigurasi-ip-address-dns-dan-nat-pada-ubuntu-server-10-10/</strong></a></div>
<ul style="text-align: justify;">
<li>Masuklah menggunakan username dan password yang telah diatur pada
langkah sebelumnya. Pada artikel ini userame yang saya gunakan adalah <strong>adamkurniawan</strong> dan password saya juga <strong>adamkurniawan</strong>.
Untuk password tidak akan terlihat pada saat diketikkan karena alasan
keamanan. Tekan tombol Enter jika sudah yakin memasukkan username dan
password dengan benar.</li>
</ul>
<ul style="text-align: justify;">
<li>Setelah berhasil masuk akan diperlihatkan kapan pengguna adamkurniawan terakhir login. Pada baris paling bawah terlihat tulisan <strong>adamkurniawan@server01:~$</strong>,
ini berarti pengguna dengan id adamkurniawan masih berstatus sebagai
pengguna biasa dan belum bisa melakukan pengaturan. Agar bisa melakukan
pengaturan, pengguna harus masuk sebagai mode root atau mode tertinggi
dalam sistem (administrator) dengan mengetikkan perintah <strong>sudo su</strong>, maka akan akan muncul tulisan <strong>[sudo] password for adamkurniawan:</strong>
itu berarti sistem meminta password agar pengguna dengan id
adamkurniawan bisa masuk sebagai mode root. Password yang digunakan
untuk mode root ini adalah password yang sama yang digunakan untuk login
pada awal tadi. Masukkan password-nya dan tekan <strong>Enter</strong>. Jika password yang dimasukkan benar, maka akan muncul tulisan <strong>root@server01:/home/adamkurniawan#</strong>, ini berarti pengguna dengan id adamkurniawan sudah masuk sebagai mode root dan sudah bisa melakukan konfigurasi.</li>
</ul>
<ul style="text-align: justify;">
<li>Sebelum melakukan konfigurasi pada alamat IP, cek terlebih dahulu
apa nama kartu jaringan (ethernet) yang tersedia yang bisa digunakan
dengan mengetikkan: <strong># ifconfig –a | more</strong>. Penamaan
kartu jaringan pada sistem Linux diawali dengan eth lalu diikuti dengan
nomor kartu jaringannya yang dimulai dengan 0, misal eth0, eth1, eth2,
dan seterusnya. Karena pada artikel ini saya menggunakan dua buah kartu
jaringan maka setelah diketikkan <strong># ifonfig –a | more</strong>, didapati bahwa nama kartu jaringan yang saya miliki pada sistem linux dikenal dengan nama eth0 dan eth1.</li>
</ul>
<ul style="text-align: justify;">
<li>ketikkan perintah <strong># nano /etc/network/interfaces</strong>untuk
mulai melakukan konfigurasi alamat IP Ubuntu Server 10.10. Pada baris
paling akhir ketikkan skrip berikut:auto eth0 iface eth0 inet static<br />
<strong>address 192.168.6.200</strong><br />
<strong>netmask 255.255.255.0</strong><br />
<strong>gateway 192.168.6.254</strong>Skrip diatas adalah skrip yang
digunakan untuk melakukan pengaturan kartu jaringan pertama (eth0) yang
akan dihubungkan ke internet. Alamat IP yang saya berikan harus satu
segmen dengan jaringan yang ada di atas Ubuntu Server 10.10 yang saya
gunakan dan gateway dari kartu jaringan pertama juga harus merupakan
alamat IP dari perangkat yang bertindak sebagai gerbang dari Ubuntu
Server 10.10 yang saya gunakan ke internet. Sedangkan untuk pengaturan
kartu jaringan kedua yang akan digunakan sebagai interface ke jaringan
lokal adalah sebagai berikut:auto eth1<br />
<strong>iface eth1 inet static</strong><br />
<strong>address 10.10.1.254</strong><br />
<strong>netmask 255.255.255.0</strong>
Jika telah selesai tekan tombol <strong>Ctrl + O</strong> untuk
menyimpan konfigurasi yang telah dilakukan, berikan nama berkas
konfigurasi yang baru saja dibuat, pada artikel ini saya tidak
memberikan nama baru, jadi saya langsung saja menekan tombol <strong>Enter</strong>. Kemudia tekan tombol <strong>Ctrl + X</strong> untuk keluar. Restart kartu jaringan menggunakan perintah <strong># /etc/init.d/networking restart</strong> agar konfigurasi yang baru saja dilakukan bisa terbaca oleh sistem.</li>
<li>Pada umumnya, jika kartu jaringan belum pernah dikonfigurasi
menggunakan Ubuntu Server 10.10 atau Ubuntu Server 10.10 yang digunakan
masih baru diinstal (fresh install), kartu jaringan yang tertanam di
komputer sudah terbaca namun belum aktif. Untuk melihat apakah kartu
jaringan sudah aktif atau belum, ketikkan perintah <strong># ifconfig</strong>. Pada artikel ini, kartu jaringan yang saya gunakan belum aktif.</li>
</ul>
<ul style="text-align: justify;">
<li>Untuk mengaktifkannya ketikkan perintah <strong># ifconfig eth0 up</strong> (mengaktifkan kartu jaringan pertama) dan <strong># ifconfig eth1 up</strong> (mengaktifkan kartu jaringan kedua). Setelah itu restart kembali kartu jaringan menggunaka <strong># /etc/init.d/networking restart</strong>. Jika dilakukan pengecekan kembali menggunakan perintah <strong># ifconfig</strong>, maka akan bisa dilihat bahwa kartu jaringan sudah aktif dan sudah memiliki alamat IP sesuai dengan yang sudah di konfigurasi.</li>
</ul>
<ul style="text-align: justify;">
<li>Langkah selanjutnya adalah memberikan DNS (Domain Name System). DNS
digunakan sebagai penerjemah dari nama domain ke alamat IP, dan
sebaliknya, yaitu dari alamat IP ke nama domain. Jadi apabila pengguna
mengetikkan <span class="skimlinks-unlinked">google.com</span> di web browser, maka itu berarti pengguna memanggil alamat IP dari <span class="skimlinks-unlinked">google.com</span> yaitu 74.125.71.103. Untuk mengatur DNS di Ubuntu Server 10.10 pengguna harus membuat sebuah berkas baru bernama <strong><span class="skimlinks-unlinked">resolv.conf</span></strong> yang diletakkan di direktori <strong>/etc</strong> dengan mengetikkan <strong># touch /etc/<span class="skimlinks-unlinked">resolv.conf</span>, </strong>namun sebelumnya pengguna harus masuk ke dalam mode root. Setelah berhasil membuatnya, selanjutnya adalah mengisi berkas <strong><span class="skimlinks-unlinked">resolve.conf</span></strong> tersebut dengan alamat IP yang bisa menerjemahkan nama domain ke alamat IP dan sebaliknya, dengan cara mengetikkan perintah <strong># nano /etc/<span class="skimlinks-unlinked">resolv.conf</span></strong>. Kemudian ketikkan <strong>nameserver</strong> dan diikuti dengan <strong>alamat IP</strong>yang
bisa digunakan sebagai DNS, pada artikel ini saya menggunakan 2 buah
DNS, yaitu 192.168.4.254 yang merupakan alamat IP gateway Ubuntu Server
10.10 dan 8.8.8.8 yang merupakan alamat penyedia DNS yang dibuat oleh
Google. Jadi penulisannya adalah sebagai
berikut:nameserver 192.168.4.254<br />
<strong><strong>nameserver 8.8.8.8</strong></strong>Simpan dengan menekan <strong>Ctrl + O</strong>, tekan tombol <strong>Enter</strong> untuk replace nama yang lama dan tekan <strong>Ctrl + X</strong> untuk keluar. Lakukan kembali restart jaringan dengan mengetikkan <strong># /etc/init.d/networking</strong>.</li>
<li>Tahap berikutnya adalah melakukan pengecekan apakah Ubuntu Server
10.10 sudah bisa melakukan koneksi ke internet dan apakah DNS sudah
bekerja dengan baik. Cara melakukannya adalah dengan melakukan ping ke
sebuah alamat domain. Pada artikel ini, saya melakukan pengecekan dengan
melakukan ping ke domain <span class="skimlinks-unlinked">yahoo.com</span>. Perintah yang diketikkan adalah <strong># ping <span class="skimlinks-unlinked">yahoo.com</span></strong>. disini saya sudah mendapatkan balasan dari <span class="skimlinks-unlinked">yahoo.com</span>
dan berarti Ubuntu Server 10.10 yang digunakan sebagai server sudah
terkoneksi ke internet dengan baik, begitu juga dengan DNS-nya.</li>
</ul>
Selanjutnya, lakukan konfigurasi agar semua klien yang berada pada
jaringan lokal bisa mengakses ke jaringan yang berada di jaringan luar
(internet) atau melakukan NAT. Jika tidak dikonfigurasi maka paket-paket
yang berasal dari kartu jaringan lokal (eth1) tidak akan bisa
diteruskan ke kartu jaringan yang mengarah ke internet (eth0). Caranya
adalah dengan mengetikkan perintah berikut ini: <strong>iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE</strong>, lalu tekan <strong>Enter</strong>. Jika ingin rule ini dijalankan pada saat komputer dinyalakan, maka ketikkanlah rule diatas pada file <strong>/etc/<span class="skimlinks-unlinked">rc.local</span></strong> sebelum baris exit 0Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-67439041644911951542015-02-09T16:27:00.001-08:002015-02-09T16:27:25.333-08:00Step By Step Installasi Proxy Server Squid3 dengan Ubuntu 14.04 dan Webmin ( Simple Mode )<h2>
Step By Step Installasi Proxy Server Squid3 dengan Ubuntu 14.04 dan Webmin ( Simple Mode )</h2>
<div style="text-align: center;">
<br /><span style="color: red;"><strong><span style="color: blue;"><a href="http://nathangustiryan.wordpress.com/"> </a></span></strong></span></div>
<strong>SQUID PROXY SERVER</strong> adalah salah satu Proxy yang
berfungsi untuk melakukan caching atau penyimpanan sementara akses
internet oleh suatu client / user sehingga konten ini dapat dipergunakan
oleh user lain sehingga dengan adanya caching ini user lain tersebut
akan merasakan akses internet menjadi lebih cepat. ( Ya iya lah, lha
wong sebagaian konten dari Webpage tersebut sudah ada dalam storage
penyimpanan Proxy Server ini ).<br />
Pada tutorial kali ini konsep desain atau topologi-nya adalah sebagai berikut :<br />
<ol>
<li>OS yang kita gunakan sebagai Proxy Server kali ini adalah Ubuntu Desktop 14.04.</li>
<li>IP Address Ubuntu Proxy Server adalah 192.168.10.10. Proxy Server
ini mendapatkan akses internet secara langsung dari Router atau Modem
ADSL Router dengan IP Address : 192.168.10.1.</li>
<li>Proxy Server ini <strong>berfungsi secara independen</strong> tanpa
ada campur tangan dari Router Mikrotik ataupun Router lain. Pokoknya
Proxy Server ini mendapatkan akses internet dari mana saja, termasuk
apabila mengunakan Modem 3G atau ADSL secara langsung pada PC / Proxy
Server ini.</li>
<li>PC Client mendapatkan <strong>akses internet secara Direct dari Proxy Server</strong> tanpa perantara lain ataupun intervensi dari Router, Mikrotik, dll.</li>
</ol>
Perhatikan Topologi / gambar dibawah ini :<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/layout-desain-network-mikrotik-router-with-ubuntu-14-04-proxy-squid3-option-1.png"><img alt="Layout-Desain-Network-Mikrotik-Router-With-Ubuntu-14.04-Proxy-Squid3-(Option-1)" class="aligncenter size-full wp-image-11654" height="453" src="https://thinkxfree.files.wordpress.com/2014/05/layout-desain-network-mikrotik-router-with-ubuntu-14-04-proxy-squid3-option-1.png?w=595&h=453" width="595" /></a><br />
<span id="more-11613"></span><br />
<span style="color: blue;"><strong>Step By Step Installasi Proxy Server Squid3 dengan Ubuntu 14.04 dan Webmin ( Simple Mode )</strong></span> adalah sebagai berikut :<br />
1. Masuk ke menu <strong>System Setting.</strong><br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-001.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-001" class="aligncenter size-full wp-image-11616" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-001.png?w=595&h=369" width="595" /></a><br />
2. Masuk ke Menu <strong>Network</strong>.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-002.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-002" class="aligncenter size-full wp-image-11617" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-002.png?w=595&h=369" width="595" /></a><br />
3. Lalu masuk ke menu <strong>Option</strong>, untuk melakukan konfigurasi IP Address secara manual.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-003.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-003" class="aligncenter size-full wp-image-11618" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-003.png?w=595&h=369" width="595" /></a><br />
4. Selanjutnya masuk ke menu <strong>IPv4 Setting</strong>, ubah method dari Automatic /( DHCP ) menjadi manual.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-004.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-004" class="aligncenter size-full wp-image-11619" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-004.png?w=595&h=369" width="595" /></a><br />
5. Klik <strong>Add</strong> untuk menambahkan IP Address manual.
Lalu entry IP untuk PC Ubuntu : 192.168.10.10, Netmask : 24, IP Gateway :
192.168.10.1, IP DNS : 192.168.10.1. Lalu kita klik <strong>Save.</strong><br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-005.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-005" class="aligncenter size-full wp-image-11620" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-005.png?w=595&h=369" width="595" /></a><br />
6. Selanjutnya masuk ke <strong>Terminal</strong> untuk melihat apakah IP address Ubuntu Proxy Server sudah sesuai yang di konfigurasi tadi.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-006.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-006" class="aligncenter size-full wp-image-11621" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-006.png?w=595&h=369" width="595" /></a><br />
7. Pastikan bisa ping ke <strong>IP </strong><strong>Gateway</strong> ( 192.168.10.1 ), maupun ke <strong><span class="skimlinks-unlinked">Google.com</span></strong>.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-006b.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-006b" class="aligncenter size-full wp-image-11622" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-006b.png?w=595&h=369" width="595" /></a><br />
8. Selanjutnya kita <strong>Install </strong><strong>paket </strong>Apache2 Webserver ( nanti akan banyak kita gunakan ) :<br />
<blockquote>
<pre><strong>apt-get install apache2</strong></pre>
</blockquote>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-007.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-007" class="aligncenter size-full wp-image-11623" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-007.png?w=595&h=369" width="595" /></a><br />
9. Selanjutnya kita <strong>Install paket Squid3 :</strong><br />
<blockquote>
<pre><strong>apt-get install squid</strong></pre>
</blockquote>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-008.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-008" class="aligncenter size-full wp-image-11624" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-008.png?w=595&h=369" width="595" /></a><br />
10. Selanjutnya kita lakukan editing file konfigurasi Squid ( bisa dengan perintah <strong>nano</strong> maupun <strong>gedit</strong> ). Pastikan kita setting ACL Internal IP Address Network kita.<br />
<blockquote>
<pre>nano /etc/squid3/<span class="skimlinks-unlinked">squid.conf</span></pre>
</blockquote>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-009" class="aligncenter size-full wp-image-11625" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009.png?w=595&h=369" width="595" /></a><br />
11. Jika kita gunakan <strong>gedit, </strong>setting Access Control List / ACL Internal IP Address Network kita tampak seperti pada gambar dibawah ini :<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009b.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-009b" class="aligncenter size-full wp-image-11626" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009b.png?w=595&h=369" width="595" /></a><br />
12. Selanjutnya pastikan <strong>ACL Local network</strong> kita disetting <strong>Allow</strong>.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009c.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-009c" class="aligncenter size-full wp-image-11627" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009c.png?w=595&h=369" width="595" /></a><br />
13. Cek juga setting ACL Local network di baris yang lain.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009d.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-009d" class="aligncenter size-full wp-image-11628" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009d.png?w=595&h=369" width="595" /></a><br />
14. Tentukan folder <strong>cache_dir</strong> dengan tepat serta
ukuran besar kapasitas untuk menyimpan file cache. Nilai Defaultnya
adalah 100 alias 100 MB, kita ganti menjadi 50 GB ( 50000 ).<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009e.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-009e" class="aligncenter size-full wp-image-11629" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-009e.png?w=595&h=369" width="595" /></a><br />
15. Tentukan Port access Proxy Server, defaultnya Squid mengunakan <strong>Port 3128</strong>.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-010.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-010" class="aligncenter size-full wp-image-11630" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-010.png?w=595&h=369" width="595" /></a><br />
16. Setting Port 3128 dengan <strong>gedit</strong>.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-010b.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-010b" class="aligncenter size-full wp-image-11631" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-010b.png?w=595&h=369" width="595" /></a><br />
17. Setelah konfigurasi cukup, selanjutnya berikan perintah :<br />
<blockquote>
<pre><span style="color: blue;"><strong>squid3 -z</strong></span></pre>
</blockquote>
Tujuannya adalah untuk membuat Swap Directory Cache Squid Proxy.<br />
Selanjutnya berikan perintah untuk menjalankan Squid3 :<br />
<blockquote>
<pre><span style="color: blue;"><strong>service squid3 start</strong></span></pre>
</blockquote>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-011.png"><img alt="Install-Squid3-Ubuntu-14.04-LTS-011" class="aligncenter size-full wp-image-11632" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-squid3-ubuntu-14-04-lts-011.png?w=595&h=369" width="595" /></a><br />
18. Untuk membuat Service Squid3 ini bisa Otomatis dijalankan saat komputer baru hidup, maka kita dapat mengunakan perintah <strong>chkconfig</strong> atau mengunakan <strong>Sysv-rc-conf.</strong><br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-sysv-rc-ubuntu-14-04-lts-001.png"><img alt="Install-Sysv.rc-Ubuntu-14.04-LTS-001" class="aligncenter size-full wp-image-11633" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-sysv-rc-ubuntu-14-04-lts-001.png?w=595&h=369" width="595" /></a><br />
19. Perintahnya adalah :<br />
<blockquote>
<pre><span style="color: blue;"><strong>sysv-rc-conf squid on</strong></span></pre>
</blockquote>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-sysv-rc-ubuntu-14-04-lts-002.png"><img alt="Install-Sysv.rc-Ubuntu-14.04-LTS-002" class="aligncenter size-full wp-image-11634" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-sysv-rc-ubuntu-14-04-lts-002.png?w=595&h=369" width="595" /></a><br />
20. Melakukan pengecekan status aplikasi yang telah dilakukan Autorun. Perintahnya :<br />
<blockquote>
<pre><span style="color: blue;"><strong>sysv-rc-conf</strong> <strong>--list squid</strong></span></pre>
</blockquote>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-sysv-rc-ubuntu-14-04-lts-003.png"><img alt="Install-Sysv.rc-Ubuntu-14.04-LTS-003" class="aligncenter size-full wp-image-11635" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-sysv-rc-ubuntu-14-04-lts-003.png?w=595&h=369" width="595" /></a><br />
21. Setelah installasi dan konfigurasi Squid selesai, selanjutnya
kita akan melakukan installasi Webmin dengan tujuan untuk mempermudah
konfigurasi Squid3. Baca link ini dengan seksama : <a href="http://www.webmin.com/deb.html"><strong><span style="color: blue;">www.webmin.com/deb.html</span></strong></a><br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-000.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-000" class="aligncenter size-full wp-image-11636" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-000.png?w=595&h=369" width="595" /></a><br />
22. Lakukan installasi perintah pre-installasi :<br />
<pre><strong><span style="color: blue;">apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
</span></strong></pre>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-001.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-001" class="aligncenter size-full wp-image-11637" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-001.png?w=595&h=369" width="595" /></a><br />
23. Lakukan perintah untuk men-download installer Webmin :<br />
<pre><strong><span style="color: blue;">wget <a href="http://prdownloads.sourceforge.net/webadmin/webmin_1.690_all.deb">http://prdownloads.sourceforge.net/webadmin/webmin_1.690_all.deb</a></span></strong></pre>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-002.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-002" class="aligncenter size-full wp-image-11638" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-002.png?w=595&h=369" width="595" /></a><br />
24. Lakukan installasi paket Webmin yang telah di download barusan :<br />
<pre><strong><span style="color: blue;"><code>dpkg --install webmin_1.690_all.deb</code></span></strong></pre>
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-003.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-003" class="aligncenter size-full wp-image-11639" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-003.png?w=595&h=369" width="595" /></a><br />
25. Setelah proses installasi Webmin selesai, selanjutnya kita dapat mengakses Webmin via WebBrowser :<br />
<span style="color: blue;"><strong><a href="https://192.168.10.10:10000/" rel="nofollow">https://192.168.10.10:10000</a></strong></span><br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-004.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-004" class="aligncenter size-full wp-image-11640" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-004.png?w=595&h=369" width="595" /></a><br />
26. Selanjutnya masuk ke menu <strong>Server</strong> lalu pilih <strong>Squid Proxy Server</strong>. Selanjutnya kita mau konfigurasi lebih lanjut via Webmin.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-005.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-005" class="aligncenter size-full wp-image-11641" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-005.png?w=595&h=369" width="595" /></a><br />
27. Administrative menu.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-006.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-006" class="aligncenter size-full wp-image-11642" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-006.png?w=595&h=369" width="595" /></a><br />
28. Port & Networking menu.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-007.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-007" class="aligncenter size-full wp-image-11643" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-007.png?w=595&h=369" width="595" /></a><br />
29. Pilih menu Access Control untuk melakukan konfigurasi client mana saja yang boleh mengakses internet.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-008.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-008" class="aligncenter size-full wp-image-11644" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-008.png?w=595&h=369" width="595" /></a><br />
30. Pilih menu <strong>Cache Option,</strong> untuk menentukan folder untuk cache, dll.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-009.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-009" class="aligncenter size-full wp-image-11645" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-009.png?w=595&h=369" width="595" /></a><br />
31. Administrative Option merupakan penentuan user Administrator
dengan akses dapat melakukan read write pada folder konfigruasi Squid.<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-010.png"><img alt="Install-Webmin-Ubuntu-14.04-LTS-010" class="aligncenter size-full wp-image-11646" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/install-webmin-ubuntu-14-04-lts-010.png?w=595&h=369" width="595" /></a><br />
32. Okey, sampai disini konfigurasi Squid Linux Ubuntu 14.04 telah
selesai. Selanjutnya kita akan melakukan konfigurasi pada Client. untuk
Browser Mozilla Firefox, masuk ke menu : <strong>Tools -> Option -> Advanced -> Network -> Setting.</strong> Lalu entry IP Address Proxy Server beserta <strong>Port 3128.</strong><br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-001.png"><img alt="Setting-Proxy-Client-001" class="aligncenter size-full wp-image-11647" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-001.png?w=595&h=369" width="595" /></a><br />
33. Selanjutnya langsung di coba apakah Client sudah bisa mengakses internet…<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-002.png"><img alt="Setting-Proxy-Client-002" class="aligncenter size-full wp-image-11648" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-002.png?w=595&h=369" width="595" /></a><br />
34. Konfigurasi pada Client dengan Browser Mozilla Firefox, masuk ke menu : <strong>Tools -> Option -> Advanced -> Network -> Setting.</strong> Lalu entry IP Address Proxy Server beserta <strong>Port 3128.</strong> Jika mengunakan<strong> browser IE, </strong>kita bisa atur melalui<strong> Control Panel -> Internet Option.</strong><br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-003.png"><img alt="Setting-Proxy-Client-003" class="aligncenter size-full wp-image-11649" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-003.png?w=595&h=369" width="595" /></a><br />
35. Setelah selesai konfigurasi diatas, selanjutnya kita coba akses internet…<br />
<a href="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-004.png"><img alt="Setting-Proxy-Client-004" class="aligncenter size-full wp-image-11650" height="369" src="https://thinkxfree.files.wordpress.com/2014/05/setting-proxy-client-004.png?w=595&h=369" width="595" /></a><br />
36. Mudah sekali bukan??? Selamat mencoba…Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-43138327416349197472015-02-02T20:14:00.001-08:002015-02-02T20:14:09.009-08:00Merancang Web Database untuk Content Server<header class="single-entry-header">
<h1 class="entry-title">
<a href="https://nurhadisetia.wordpress.com/2013/03/11/merancang-web-database-untuk-content-server/" rel="bookmark" title="4:09 am"><time class="entry-date" datetime="2013-03-11T04:09:37+00:00" pubdate=""></time></a><span class="byline"><span class="author vcard"></span></span><span class="comments-link"></span>
</h1>
</header><div align="center">
<b>BAB 1</b></div>
<br />
<b>Pengertian Data dan Informasi</b><br />
<div align="center">
<br /></div>
Data adalah sesuatu yang belum mempunyai arti bagi penerimanya dan
masih memerlukan adanya suatu pengolahan. Data bisa berujut suatu
keadaan, gambar, suara, huruf, angka, matematika, bahasa ataupun
simbol-simbol lainnya yang bisa kita gunakan sebagai bahan untuk melihat
lingkungan, obyek, kejadian ataupunsuatu konsep.<br />
<br />
Informasi merupakan hasil pengolahan dari sebuah model, formasi,
organisasi, ataupun suatu perubahan bentuk dari data yang memiliki nilai
tertentu, dan bisa digunakan untuk menambah pengetahuan bagi yang
menerimanya. Dalam hal ini, data bisa dianggap sebagai obyek dan
informasi adalah suatu subyek yang bermanfaat bagi penerimanya.
Informasi juga bisa disebut sebagai hasil pengolahan ataupun pemrosesan
data.<br />
Data bisa merupakan jam kerja bagi karyawan perusahaan. Data ini kemudian perlu diproses dan diubah menjadi informasi.<br />
Jika jam kerja setiap karyawan kemudian dikalikan dengan nilai
per-jam, maka akan dihasilkan suatu nilai tertentu. Jika gambaran
penghasilan setiap karyawan kemudian dijumlahkan, akan menghasilkan
rekapitulasi gaji yang harus dibayar oleh perusahaan. Penggajian
merupakan informasi bagi pemilik perusahaan. Informasi merupakan hasil
proses dari data yang ada, atau bisa diartikan sebagai data yang
mempunyai arti. Informasi akan membuka segala sesuatu yang belum
diketahui<br />
<br />
<div align="center">
<b>BAB 2</b></div>
<br />
<b>Pengertian Basis data ( database )</b><br />
<ul>
<li>Basis data (<i>database</i>) adalah kumpulan dari berbagai data yang
saling berhubungan satu dengan yang lainnya. Basis data tersimpan di
perangkat keras, serta dimanipulasi dengan menggunakan perangkat lunak.
Pendefinisian basis data meliputi spesifikasi dari tipe data, struktur
dan batasan dari data atau informasi yang akan disimpan. <i>Database </i>merupakan
salah satu komponen yang penting dalam sistem informasi, karena
merupakan basis dalam menyediakan informasi pada para pengguna atau <i>user</i>.</li>
</ul>
<ul>
<li>Penyusunan basis data meliputi proses memasukkan data kedalam media
penyimpanan data dan diatur dengan menggunakan perangkat Sistem
Manajemen Basis Data (<i>Database Management System DBMS</i>). Manipulasi basis data meliputi pembuatan pernyataan (<i>query</i>) untuk mendapatkan informasi tertentu, melakukan pembaharuan atau penggantian (<i>update</i>) data, serta pembuatan <i>report</i> data.</li>
</ul>
<ul>
<li>Tujuan utama <i>DBMS </i>adalah untuk menyediakan tinjauan abstrak dari data bagi <i>user</i>.
Jadi sistem menyembunyikan informasi mengenai bagaimana data disimpan
dan dirawat, tetapi data tetap dapat diambil dengan efisien.
Pertimbangan efisien yang digunakan adalah bagaimana merancang struktur
data yang kompleks, tetapi tetap dapat digunakan oleh pengguna yang
masih awam, tanpa mengetahui kompleksitas struktur data. Basis data
menjadi penting karena munculnya beberapa masalah bila tidak menggunakan
data yang terpusat, seperti adanya duplikasi data, hubungan antar data
tidak jelas, organisasi data dan<i> update </i>menjadi rumit. Jadi tujuan dari pengaturan data dengan menggunakan basis data adalah :</li>
</ul>
<ul>
<li>Menyediakan penyimpanan data untuk dapat digunakan oleh organisasi saat sekarang dan masa yang akan datang.</li>
</ul>
<ul>
<li>Kemudahan pemasukan data, sehingga meringankan tugas operator dan
menyangkut pula waktu yang diperlukan oleh pemakai untuk mendapatkan
data serta hak-hak yang dimiliki terhadap data yang ditangani.</li>
</ul>
<ul>
<li>Pengendalian data untuk setiap siklus agar data selalu <i>up-to-date </i>dan dapat mencerminkan perubahan spesifik yang terjadi di setiap sistem.</li>
</ul>
<ul>
<li>Pengamanan data terhadap kemungkinan penambahan, pengubahan, pengerusakan dan gangguan-gangguan lain.</li>
</ul>
<b>Elemen Basis Data</b><br />
<ul>
<li><b>Entitas</b> adalah sekumpulan objek yang terdefinisikan yang
mempunyai karakteristik sama dan bisa dibedakan satu dengan lainnya.
Objek dapat berupa barang, orang, tempat atau suatu kejadian.</li>
</ul>
<ul>
<li>Contoh entitas : Seseorang yang menjadi siswa di sebuah sekolah.</li>
<li>contoh lainya : barang yang menjadi inventaris suatu perusahaan</li>
<li><b>siswa</b> merupakan entitas</li>
<li><b>barang</b> juga di sebut entitas</li>
</ul>
<ul>
<li><b>Atribut</b> adalah deskripsi data yang bisa mengidentifikasi
entitas yang membedakan entitas tersebut dengan entitas yang lain.
Seluruh atribut harus cukup untuk menyatakan identitas obyek, atau
dengan kata lain, kumpulan atribut dari setiap entitas dapat
mengidentifikasi keunikan suatu individu.</li>
<li>sedangkan atribut adalah bagian dari entitas</li>
<li>siswa memiliki atribut :</li>
<li><b>no siswa</b></li>
<li><b>alamat siswa</b></li>
</ul>
<ul>
<li>barang memiliki atribut :</li>
<li><b>no barang</b></li>
<li><b>harga barang</b></li>
</ul>
<ul>
<li><b>Data Value (<i>Nilai Data</i>)</b> : Data Value adalah data
aktual atau informasi yang disimpan pada tiap data, elemen, atau
atribut. Atribut nama pegawai menunjukan tempat dimana informasi nama
karyawan disimpan, nilai datanya misalnya adalah Anjang, Arif, Suryo,
dan lain-lain yang merupakan isi data nama pegawai tersebut.</li>
</ul>
<ul>
<li><b>File/Tabel</b> : Kumpulan record sejenis yang mempunyai panjang elemen yang sama, atribut yang sama, namun berbeda nilai datanya.</li>
</ul>
<ul>
<li><b>Record/Tuple</b> : Kumpulan elemen-elemen yang saling berkaitan
menginformasikan tentang suatu entitas secara lengkap. Satu record
mewakili satu data atau informasi</li>
</ul>
<div align="center">
<b>BAB 3</b></div>
<b>Hirarki Data</b><br />
Data adalah catatan atas kumpulan <a href="http://id.wikipedia.org/wiki/Fakta" title="Fakta">fakta</a>. Data merupakan bentuk jamak dari datum, berasal dari <a href="http://id.wikipedia.org/wiki/Bahasa_Latin" title="Bahasa Latin">bahasa Latin</a> yang
berarti “sesuatu yang diberikan”. Dalam penggunaan sehari-hari data
berarti suatu pernyataan yang diterima secara apa adanya. Pernyataan ini
adalah hasil pengukuran atau pengamatan suatu <a href="http://id.wikipedia.org/wiki/Variabel" title="Variabel">variabel</a> yang bentuknya dapat berupa angka, kata-kata, atau citra.<br />
Dalam keilmuan (ilmiah), fakta dikumpulkan untuk menjadi data. Data
kemudian diolah sehingga dapat diutarakan secara jelas dan tepat
sehingga dapat dimengerti oleh orang lain yang tidak langsung
mengalaminya sendiri, hal ini dinamakan <a href="http://id.wikipedia.org/wiki/Deskripsi" title="Deskripsi">deskripsi</a>. Pemilahan banyak data sesuai dengan persamaan atau perbedaan yang dikandungnya dinamakan <a href="http://id.wikipedia.org/wiki/Klasifikasi" title="Klasifikasi">klasifikasi</a>.<br /> Dalam pokok bahasan <a href="http://id.wikipedia.org/wiki/Manajemen_Pengetahuan" title="Manajemen Pengetahuan">Manajemen Pengetahuan</a>,
data dicirikan sebagai sesuatu yang bersifat mentah dan tidak memiliki
konteks. Dia sekedar ada dan tidak memiliki signifikansi makna di luar
keberadaannya itu. Dia bisa muncul dalam berbagai bentuk, terlepas dari
apakah dia bisa dimanfaatkan atau tidak.<br /> Menurut berbagai sumber lain, data dapat juga didefinisikan sebagai berikut:<br /> • Menurut kamus bahasa inggris-indonesia, data berasal dari kata <i>datum</i> yang berarti fakta<br />
• Dari sudut pandang bisnis, data bisnis adalah deskripsi organisasi
tentang sesuatu (resources) dan kejadian (transactions)yang terjadi<br /> • Pengertian yang lain menyebutkan bahwa data adalah deskripsi dari suatu kejadian yang kita hadapi<br />
<b>Pembahasan</b><br />
Secara sederhana banyak perusahaan mengkoordinasikan atau
mengorganisasikan data mereka dalam suatu hirarki pendek yang hanya
terdiri dari elemen (transaksi), record (catatan), file (satuan khusus
penyimpanan). Adapun pengertian dari 3 bagian hirarki sederhana tersebut
yaitu :<br />
<i>Field</i> (medan) menyatakan data terkecil yang memiliki makna. Istilah lain untuk <i>field</i> yaitu elemen data, kolom item, dan atribut. Contoh<i> field </i>yaitu nama seseorang, jumlah barang yang dibeli, dan tanggal lahir seseorang.<br />
<i>Record</i> (rekaman) menyatakan kumpulan dari sejumlah elemen data
yang saling terkait. Sebagai contoh, nama, alamat, tanggal lahir, dan
jenis kelamin dari seseorang menyusun sebuah <i>record</i>. Istilah lain yang juga menyatakan<i> record</i> yaitu tupel dan baris.<br />
<i>File / Table </i> menghimpun sejumlah <i>record</i>. Sebagai contoh, data pribadi dari semua pegawai disimpan dalam sebuah tabel.<br />
<i>Basis data (database)</i> adalah suatu pengorganisasian sekumpulan
data yang saling terkait sehingga memudahkan aktivitas untuk memperoleh
informasi. Sebagai contoh, basis data akademis mengandung tabel-tabel
yang berhubungan dengan data mahasiswa, data jurusan, data mata kuliah,
data pengambilan mata kuliah pada suatu semester, dan nilai yang
diperoleh mahasiswa.<br />
Sebagai tambahan 3 hirarki sederhana tersebut kita mengenal namanya
database yang merupakan kumpulan data secara penuh dari seluruh kegiatan
yang dilakukan perusahaan.<br /> Kesimpulannya yang bisa kita tarik
adalah semuanya adalah pencatatan-pencataan kecil perusahaan yang
digabung dari segala macam aktifitas yang ada, kemudian disajikan dalam
bentuk database secara lebih besar, ataupun file sebagai alat sederhana
untuk dapat melihat secara khusus/spesifik data apa saja yang terkumpul,
misala file pembelian atau file yang berisikan gudang.<br /> Penyimpanan
data ini juga memilki backup-an atau sekunder use,dengan SASD
(Penyimpanan berurutan) dan DASD (Penyimpanan akses langsung) untuk
mencegah hilangnya data yang sebenarnya ada, tetapi belum dilakukan
penyimpanan, atau pun adanyakejadian yang tidak terduga<br /> Penyimpanan
berurutan (sequential) atau SASD adalah media penyimpanan untuk
mengisikan catatan yang diatur dalam susunan tertentu. Catatan pertama
harus diproses pertama kali, catatan ke-2 diproses pada urutan yang ke-2
dan seterusnya sampai file penuh. Penyimpanan akses langsung suatu
penyimpanan yang memungkinkan mekanisme bacaan atau tulisan dapat
diarahkan ke record tertentu tanpa pencarian secara urutan.<br />
Pemrosesan data ada 2 cara, anda dapat menjalankan setiap transaksi
secara terpisah, atau anda dapat menggabungkan beberapa transaksi dan
memprosesnya secara bersama-sama sebagai batch. Bila transaksi diprosses
secara terpisah, hal tersebut dikenal dengan istilah online processing
(pemrossesan online). Sedangkan pemrosesaan transaksi seringkali
digunakan tetapi ini akan menjadi rancu, karena istilah tersebut juga di
gunakan untuk menjelasakan aplikasi pemrosesan data. Untuk menghindari
kerancuan tersebut anda dapat menggunakan istilah pemrosesan online.<br /> Konsep Dasar Database<br /> FieldØ<br /> 1. Field merupakan implementasi dari suatu atribut data.<br /> 2. Field merupakan unit terkecil dari data yang berarti(meaningful data) yang disimpan dalam suatu file atau basis data.<br /> RecordØ<br /> 1. Field-field tersebut diorganisasikan dalam record-record<br /> 2. Record merupakan koleksi dari field-field yang disusun dalam format yang telah ditentukan.<br /> 3. Selama desain sistem, record akan diklasifikasikan sebagai fixed-length record atau variable-length record.<br /> 1. Fixed-length record: tiap instance record punya field, jumlah field, dan ukuran logik yang sama<br /> 2. Variable-length record : mengijinkan record-record yang berbeda dalam file yang sama memiliki panjang yang berbeda.<br /> File dan TabelØ<br />
1. Record-record yang serupa diorganisasikan dalam grup-grup yang
disebut file. Jadi file merupakan kumpulan semua kejadian dari struktur
record yang diberikan.<br /> 2. Tabel merupakan ekivalen basis data relasional dari sebuah file.<br /> Keunggulan penerapan konsep database<br /> Independensi program-dataØ<br /> Meminimalkan redundansi dataØ<br /> Meningkatkan konsitensi dataØ<br /> Meningkatkan kemampuan berbagai dataØ<br /> Meningkatkan produktivitas pengembangan aplikasiØ<br /> Meningkatkan pencapaian standarisasiØ<br /> Meningkatkan kualitas dataØ<br /> Meningkatkan tanggapan dan kemudahan akses terhadap dataØ<br /> Mengurangi pemeliharaan programØ<br /> Kelemahan konsep database<br /> Terlalu banyak codingan dari programØ<br /> Sulit dipahamiØ<br /> Jika terjadi kesalahan sulit untuk diperbaikØ<br />
<div align="center">
<b>BAB 4</b></div>
<div align="center">
<br /></div>
<br />
<b>Perancangan Database</b><br />
<br />
Di dalam suatu organisasi yang besar, sistem database merupakan
bagian penting pada sistem informasi, karena di perlukan untuk mengelola
sumber informasi pada organisasi tersebut. Untuk mengelola sumber
informasi tersebut yang pertama kali di lakukan adalah merancang suatu
sistem database agar informasi yang ada pada organisasi tersebut dapat
digunakan secara maksimal.<br />
<br />
<b>Tujuan Perancangan Database</b><br />
Untuk memenuhi kebutuhan akan informasi dari pengguna dan aplikasi<br />
Menyediakan struktur informasi yang natural dan mudah di mengerti oleh pengguna<br />
Mendukung kebutuhan pemrosesan dan beberapa obyek kinerja dari suatu sistem database<br />
<br />
Berikut ini siklus kehidupan sistem informasi di mana terdapat siklus kehidupan sistem database.<br />
<br />
Siklus Kehidupan Sistem Informasi (Macro Life Cycle )<br />
<br />
<b>Tahapan – tahapan Pembuatan</b> <b><i>Database</i></b><br />
Tahapan–tahapan yang ada pada siklus kehidupan sistem informasi yaitu :<br />
Analisa Kelayakan<br />
Tahapan ini memfokuskan pada penganalisaan areal aplikasi yang
unggul , mengidentifikasi pengumpulan informasi dan penyebarannya,
mempelajari keuntungan dan kerugian , penentuan kompleksitas data dan
proses, dan menentukan prioritas aplikasi yang akan digunakan.<br />
Analisa dan Pengumpulan Kebutuhan Pengguna<br />
Kebutuhan–kebutuhan yang detail dikumpulkan dengan berinteraksi pada
sekelompok pemakai atau pemakai individu. Mengidentifikasikan masalah
yang ada dan kebutuhan-butuhan, ketergantungan antar aplikasi,
komunikasi dan prosedur laporan.<br />
Perancangan<br />
Perancangan terbagi menjadi dua yaitu : perancangan sistem database dan sistem aplikasi<br />
Implementasi<br />
Mengimplementasikan sistem informasi dengan database yang ada<br />
Pengujian dan Validasi<br />
Pengujian dan validasi sistem database dengan kriteria kinerja yang diinginkan oleh pengguna.<br />
Pengoperasian dan Perawatan<br />
Pengoperasian sistem setelah di validasi disertai dengan pengawasan dan perawatan sistem<br />
<b>Siklus Keh idupan Aplikasi Database ( Micro Life Cycle )</b><br />
Tahapan yang ada pada siklus kehidupan aplikasi database yaitu :<br />
Pendefinisian Sistem<br />
<b>Pendefinisian ruang lingkup dari sistem database, pengguna dan aplikasinya. </b><br />
Perancangan Database<br />
Perancangan database secara logika dan fisik pada suatu sistem database sesuai dengan sistem manajemen database yang diinginkan.<br />
Implementasi Database<br />
Pendefinisian database secara konseptual, eksternal dan internal,
pembuatan file–file database yang kosong serta implementasi aplikasi
software.<br />
Pengambilan dan Konversi Data<br />
Database ditempatkan dengan baik, sehingga jika ingin memanggil data
secara langsung ataupun merubah file–file yang ada dapat di tempatkan
kembali sesuai dengan format sistem databasenya.<br />
Konversi Aplikasi<br />
Software-software aplikasi dari sistem database sebelumnya di konversikan ke dalam sistem database yang baru<br />
Pengujian dan Validasi<br />
<b>Sistem yang baru telah di test dan di uji kinerja nya </b><br />
Pengoperasian<br />
<b>Pengoperasian database sistem dan aplikasinya</b><br />
Pengawasan dan Pemeliharaan<br />
Pengawasan dan pemeliharaan sistem database dan aplikasi software<br />
<br />
<b>Proses Perancangan Database</b><br />
<br />
Ada 6 tahap untuk proses perancangan suatu database :<br />
1. Pengumpulan data dan analisis<br />
2. Perancangan database secara konseptual<br />
3. Pemilihan sistem manajemen database<br />
4. Perancangan database secara logika<br />
5. Perancangan database secara fisik<br />
6. Implementasi sistem databaseUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-8174300429415097041.post-75500457118438485352015-02-02T19:58:00.001-08:002015-02-02T19:58:10.623-08:00Materi Merancang web data base untuk content serverKompetensi dasar : Menentukan kebutuhan system <br>
Tujuan Pembelajaran :<br>
Setelah mempelajari materi ini, diharapkan siswa mampu :<br>
1.Mendiskusikan Metoda backup dan recovery dalam organisasi dan keamanan data <br>
2.Menjelaskan Downtime dan Backup offline dalam organisasi dan keamanan data <br>
3.Menjelaskan File backup online dalam organisasi dan keamanan data <br>
4.Menentukan metoda Backup yang sesuai dengan keamanan untuk kebutuhan basis data <br>
5.Menggunakan Metoda backup dan recovery dalam mengamankan data <br>
<br>
Pendalaman Materi <br>
A.Metoda Backup dan Recovery data <br>
Backup adalah hal yang sangat penting dilakukan, dikarenakan banyak potensi-potensi yang akan mengakibatkan hilangnya data baik itu diakibatkan oleh kesalahan dari pengguna atau hal-hal teknis lainnya seperti umur hard disk yang sudah tidak layak pakai dan lain-lain. Oleh karena itu perencanaan backup secara berkala harus dilakukan terutama pada komputer desktop atau server yang menyimpan data-data peting. Untuk mempermudah dalam melakukan backup maka para pengembang software membuat aplikasi khusus dengan sistem network Client Server. Sehingga data-data yang akan dibackup lebih teratur dan lebih aman.<br>
1. Metoda Backup data <br>
Backup data merupakan salah satu kegiatan yang harus dilakukan oleh pengelola database untuk melakukan penyalinan sistem, data dan aplikasi. Backup data harus dilakukan untuk menjaga jangan sampai terjadi kerusakan sistem dari luar ataupun dari dalam sistem, yang disengaja atau pun tidak disengaja. Proses backup data dilakukan secara rutin sesuai dengan jadwal yang telah ditentukan, jika dimisalkan pada sebuah perusahaan memiliki 1 database yang melayani 100 transaksi perhari bisa kita bayangkan berapa banyak data yang terkumpul dalam 1 bulan, dan jika terjadi kerusakan system maka data yang begitu banyak akan hilang atau akan menjadi pekerjaan input data baru yang membuang buang waktu, dengan adanya proses backup data kejadian tersebut bisa dihindari, misalnya secara rutin administrator database melakukan penyimpanan data setiap minggu sehingga jika pada minggu ketiga hari kedua terjadi crash system atau kerusakan system yang terjadi akibat gangguan system atau factor gangguan cuaca seperti gempa, banjir dan tanah longsor yang merusak data secara fisik. Maka data yang hilang hanya 2 hari, sehingga total data yang hilang adalah 200 transaksi, dari ilustrasi diatas kita bisa mengetahui betapa pentingnya proses backup data untuk daur hidup suatu system database. <br>
a) Konsep Backup <br>
Proses backup dalam teknologi informasi mengacu pada pembuatan salinan data, sehingga salinan tambahan tersebut dapat digunakan untuk mengembalikan (restore) semula setelah peristiwa kehilangan data. Backup sangat berguna terutama untuk dua tujuan: pertama untuk memulihkan keadaan setelah bencana (disaster recovery); kedua untuk mengembalikan sejumlah kecil file setelah sengaja dihapus atau rusak. Kehilangan data juga sangat umum, 66% pengguna internet telah menderita kehilangan data yang serius (Wikipedia, 2010). Konsistensi data dalam proses backup harus dijaga, sebelum melakukan backup data. Mengecek konsistensi data dengan membandingkan data pada struktur direktori dengan data pada blok, lalu apabila ditemukan kesalahan, maka program backup akan mencoba memperbaiki. Pengecekan kekonsistenan data ini yang disebut recovery.<br>
Berdasarkan lingkup datanya, backup dapat dibedakan menjadi: <br>
o Full Backup<br>
Yaitu proses backup database yang mencakup semua filenya. File tersebut adalah file data, control, dan redo log-nya. Jika Anda ingin melakukan backup dengan cara ini, maka database harus dishutdown terlebih dulu. Dengan demikian Anda tidak dapat mengaksesnya terlebih dulu. Hal ini tentu akan menjadi masalah jika sistem database Anda ingin diakses selama 24 jam 7 hari secara penuh. Untuk mengatasi hal ini Anda bisa menggunakan cara yang kedua (Partial Backup)<br>
o Network Backup<br>
o Dump Backup<br>
o Incremental Backup<br>
o Diferensial Backup (Anonim, 2006)<br>
b) Konsep Replikasi <br>
Replikasi adalah suatu teknik untuk melakukan copy dan pendistribusian data dan objek-objek database dari satu database ke database lain dan melaksanakan sinkronisasi antara database sehingga konsistensi data dapat terjamin (Anonim, 2010a). Replikasi dapat difahami sebagai teknik pengkopian database dan pengelolaan objek-objek database dalam suatu jaringan komputer yang dapat membentuk suatu sistem database terdistribusi untuk menjaga konsistensi data secara otomatis.
Jenis-jenis replikasi meliputi:<br>
o Snapshot replication<br>
o Transactional replication<br>
o Merge replication (Anonim, 2009)<br>
a) Konsep MySQL Dump<br>
Untuk keperluan ini MySQL menyediakan sebuah utility yang dinamakan MySQLDump. MySQLDump adalah utilitas berupa program cadangan yang pertama kali ditulis oleh Igor Romanenko, digunakan untuk pembuangan (dump) data sebuah database atau kumpulan database, untuk cadangan (backup) atau perpindahan (transfer) data ke server lain. Hasil dumping dapat berisi pernyataan SQL untuk membuat tabel, insert, dan yang lain dalam bentuk file CSV, teks editor, atau format XML. (MySQL, 2009)Banyak sekali cara untuk melakukan backup data, berikut ini metoda yang bisa dlakukan saat akan melakukan backup data : <br>
Backup Logika vs backup Physic <br>
Backup online vs backup offline <br>
Backup local vs backup remote <br>
backup penuh vs backput bertambah sebagian <br>
Point in time recovery <br>
Backup scheduling, compression dan encryption <br>
Table Maintenance<br>
MySQL Backup dan Recovery <br>
Berikut ini penjelasan tentang masing masing metoda backup diatas: <br>
1) Backup Logika vs backup Physic <br>
Backup logika adalah menyimpan perintah logic dari struktur database dan isinya yang direpresentasikan dalam perintah SQL. Seperti CREATE DATABASE, CREATE TABLE dan INSERT DATA. Backup fisik adalah mengambil datatabase dalam bentuk fisik, untuk database yang menggunakan Appserv secara fisik data disimpan pada folder C:\\Appserv\Mysql\data\Pada folder tersebut terdapat file database, setiap table diciptakan dari 3 file yaitu .MYD, ,FRM dan .MYI, pada saat pengambilan data dilakukan dengan mengcopy folder yang didalamnya menyimpan data dari database yang kita punya. Data yang diambil adalah seluruh database dan tidak bisa terpilih, sangat berbeda dengan backup secara logika, data yang diambil bisa dipilih sesuai dengan yang diinginkan.
Berikut ini karakteristik backup secara logika : <br>
o Backup dilakukan melalui server MySQL untuk mengambil struktur dan informasi data.<br>
o Backup berjalan lebih lambat karena server harus mengakses informasi data dan mengirimkannya dalam bentuk logika pada file backup. <br>
o Output bisa lebih besar dari pada bentuk fisik, misalkan data yang disimpan 5 MB dalam bentuk file sql maka pada saat recovery akan terjadi kehabisan memori karena prosesnya akan menghabiskan banyak memori untuk mengembalikan dalam bentuk semula. <br>
o Backup dan Restore dilakukan dengan mengabaikan mesin yang digunakan. <br>
o Backup logika tidak melibatkan banyak file hanya satu file logika yang biasanya disimpan dalam file .SQL <br>
o Data disimpan dalam bentuk logika yang merupakan bahasa DDL dan DML. <br>
o Backup data dilakukan saat server sudah dijalankan. <br>
o Program untuk backup digunakan mysqldump.exe yang memanggil file dikeluarkan dalam bentuk logika file, seperti tsiswa.sql<br>
o Untuk mengeluarkan data dalam bentuk file lain bisa digunakan perintah : SELECT …..INTO OUTFILE <br>
Berikut ini karakteristik backup fisik <br>
o Backup terdiri dari salinan file dan database, ini adalah salinan dari semua bagian direktori MySQL, data dari table memori tidak disampan pada disk. <br>
o Backup data secara fisik lebih cepat karena tidak melakukan memrosesan logika, hanya pengcopian secara fisik. <br>
o Outputnya lebih sederhana dibandingkan backup logika.<br>
o Sebagai tambahan dari database, backup dapat meliputi file manapun yang terdiri dari file MYi, MYD dan FRM. <br>
1) Backup online vs backup offline <br>
Backup online dilakukan saat server MySQL sedang berjalan sedangkan backup offline dilakukan saat server sedang dihentikan. <br>
a) Metoda Backup Online mempunyai karakteristik : <br>
o Lebih sedikit mengganggu klien lain karena dapat menggunakan mysql server tanpa harus menghentikan pekerjaan selama proses backup. <br>
o Backup data hanya dilakukan pada data yang tidak sedang terlibat dalam transaksi. <br>
verifikasi dari akun email anda, dan anda bisa langsung mengupload file anda dengan nyaman.
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-66753066835941331672015-02-02T19:48:00.001-08:002015-02-02T19:48:05.620-08:00Database Management System (DBMS) Sistem manajemen database atau database management system (DBMS) adalah merupakan suatu sistem software yang memungkinkan seorang user dapat mendefinisikan, membuat, dan memelihara serta menyediakan akses terkontrol terhadap data. Database sendiri adalah sekumpulan data yang berhubungan dengan secara logika dan memiliki beberapa arti yang saling berpautan.
Contoh SMBD adalah Oracle, SQL server 2000/2003, MS Access, MySQL dan sebagainya.
Keunggulan DBMS :
1. Kepraktisan
2. Kecepatan
3. Mengurangi kejemuan
4. Kekinian
Komponen utama DBMS dapat dibagi menjadi empat macam :
Hardware
Hardware merupakan sistem computer actual yang digunakan untuk menyimpan dan mengakses databse. Dalam sebuah organisasi berskala besar, hardware terdiri : jaringan dengan sebuah server pusat dan beberapa program client yang berjalan di komputer desktop.
Software beserta utility
Software adalah DBMS yang aktual. DBMS memungkinkan para user untuk berkomunikasi dengan database. Dengan kata lain DBMS merupakan mediator antara database dengan user. Sebuah database harus memuat seluruh data yang diperlukan oleh sebuah organisasi.
Prosedur
Bagian integral dari setiap sistem adalah sekumpulan prosedur yang mengontrol jalannya sistem, yaitu praktik-praktik nyata yang harus diikuti user untuk mendapatkan, memasukkan, menjaga, dan mengambil data
Data
Data adalah jantung dari DBMS. Ada dua jenis data. Pertama, adalah kumpulan informasi yang diperlukan oleh suatu organisasi. Jenis data kedua adalah metadata, yaitu informasi mengenai database.
User
Ada sejumlah user yang dapat mengakses atau mengambil data sesuai dengan kebutuhan penggunaan aplikasi-aplikasi dan interface yang disediakan oleh DBMS, antara lain adalah
Database administrator adalah orang atau group yang bertanggungjawab mengimplementasikan sistem database di dalam suatu organisasi
Enduser adalah orang yang berada di depan workstation dan berinteraksi secara langsung dengan sistem.
MODEL BASIS DATA
1. Model Hirarkis / Model Pohon
2. Model Jaringan
3. Model Relasional
Model Relasional merupakan model yang paling sederhana sehingga mudah digunakan dan dipahami oleh pengguna, serta merupakan model yang paling populer saat ini.
Model ini menggunakan sekumpulan tabel berdimensi dua ( yang disebut relasi atau tabel ), dengan masing-masing relasi tersusun atas tupel atau baris dan atribut.
DBMS yang bermodelkan relasional biasa disebut RDBMS (Relational Data Base Management System).
Ada Beberapa Sifat yang melekat pada suatu relasi :<br>
1. Tak ada tupel (baris) yang kembar)<br>
2. Urutan tupel tidaklah penting<br>
3. Setiap atribut memiliki nama yang unik <br>
4. Letak atribut bebas ( urutan atribut tidak penting)<br>
5. Setiap atribut memiliki nilai tunggal dan jenisnya sama untuk semua tupel. <br>
Pada model relasional, jumlah tupel suatu relasi disebut kardinalitas dan jumlah atribut suatu relasi disebut derajat (degree) atau terkadang disebut arity. Relasi yang berderajat saru (hanya memiliki satu atribut) disebut unary. Relasi yang berderajat dua disebut binary dan relasi yang berderajat tiga disebut ternary. Relasi yang berderajat n disebut n-ary. Istilah lainnya yang terdapat pada model relasional adalah domain. Domain adalah himpunan nilai yang berlaku bagi suatu atribut.
Contoh produk DBMS terkenal yang menggunakan model relasional antara lain adalah :<br>
1. DB2 (IBM)<br>
2. Rdb/VMS (Digital Equipment Corporation)<br>
3. Oracle (Oracle Corporation)<br>
4. Informix (Informix Corporation)<br>
5. Ingres (ASK Group Inc)<br>
6. Sybase (Sybase Inc)<br>
Di lingkungan PC, produk-produk berbasis relasional yang cukup terkenal antara lain adalah :<br>
1. Keluarga R:Base (Microrim Corp) antara lain berupa R:Base 5000<br>
2. Keluarga dBase (Ashton-Tate, sekarang bagian dari Borland International), antara lain dbase III Plus, dBase IV, serta Visual dBase<br>
3. Microsoft SQL ( Microsoft Corporation)<br>
4. Visual FoxPro (Microsoft Corporation)<br>
MACAM-MACAM PERINTAH DATA BASE<br>
1. Bahasa Definisi Data (Data Definition Language/ DDL)<br>
DDL adalah perintah-perintah yang biasa digunakan ileh administrator basis data (DBA) utnuk mendefinisikan skema ke DBMS. Skema adalah deskripsi lengkap tentang struktur medan, rekaman, dan hubungan data pada basis data
Index merupakan suatu mekanisme yang lazim digunakan pada basis data, yang memungkinkan pengambilan data dapat dilakukan dengan cepat.<br>
2. Bahasa Manipulasi Data (Data Manipulation laguage/ DML)<br>
DML adalah perintah-perintah yang digunakan untuk mengubah , mamnipulasi dan mengambil data pada basis data. Tindakan seperti menghapus, mengubah, dan mengambil data menjadi bagian dari DML. DML pada dasarnya dibagi menjadi dua :<br>
- Prosedural, yang menuntut pengguna menentukan data apa saja yang diperlukan dan bagaimana cara mendapatkannya.<br>
- Nonprosedural, yang menuntut pengguna menentukan data apa saja yang diperlukan, tetapi tidak perlu menyebutkan cara mendapatkannya.<br>
3. DQL ( Data Query Language)<br>
Query sesungguhnya berarti pertanyaan atau permintaan. Istilah ini tetap dipertahankan dalam bentuk asli, karena telah populer di kalangan pengguna DBMS di Indonesia.<br>
Kesimpulan :<br>
DBMS sangat membantu pengguna untuk urusan usaha ataupun bisnisnya karena jika kita menggunakan DBMS ini kita dapat dengan mudah mengolah suatu data,baik mau memberikan hak akses untuk pengguna maupun mengatur jalannya suatu data.
Penyimpanan data dalam bentuk DBMS ini mempunyai banyak kelebihan, diantaranya:<br>
1. Performance yang di dapat dengan penyimpanan dalam bentuk DBMS cukup besar. Disamping memiliki unjuk kerja yang lebih baik, juga akan didapatkan efisiensi penggunaan media penyimpanan dan memori.<br>
2. Perubahan struktur database dimungkinkan terjadi tanpa harus mengubah aplikasi yang mengaksesnya sehingga pembuatan antarmuka ke dalam data akan lebih mudah dengan penggunaan DBMS.<br>
3. Data yang terpusat akan mempermudah pengelolaan database. kemudahan di dalam melakukan bagi pakai dengan DBMS dan juga kekonsistenan data yang diakses secara bersama-sama akan lebiih terjamin dari pada data disimpan dalam bentuk file atau worksheet yang tersebar.<br>
4. DBMS memiliki sistem keamanan yang lebih fleksibel daripada pengamanan pada file sistem operasi. Keamanan dalam DBMS akan memberikan keluwesan dalam pemberian hak akses kepada pengguna<br>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-37664517894582020692014-12-05T18:39:00.002-08:002014-12-05T18:54:14.023-08:00simulasi digital
1 Jelaskan apa yang dimaksud komunikasi dalam jaringan !<br>
2 Tuliskan perbedaan antara komunikasi daring Asinkron dengan Sinkron !<br>
3 Tuliskan kegunaan fitur Inbox, Compose, Attachment pada E-mail!<br>
4 Jelaskan secara singkat tentang maksud dari Konektivitas dan Kolaborasi dari 6 potensi pemanfaatan TIK dalam mendukung Kelas Maya !<br>
5 Tuliskan fitur utama Edmodo yang dapat mendukung kegiatan pembelajaran (minimal 2) !<br>
Keterangan :<br>
Kerjakan menggunakan MS Office word tulis<br>
Nama :<br>
Kelas :<br>
Tugas dikirim melalui email: saifulstikom@gmail.com
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-31848447030429218622014-08-19T10:53:00.001-07:002014-08-19T10:56:29.890-07:00Cara Membuat Wajan Bolic (Lengkap dan Terperinci!) <div class="post-header">
</div>
<div style="font-family: "Trebuchet MS",sans-serif;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><b><span style="color: #2c6389;"></span></b><span style="color: #f1c232; font-size: large;">S</span><span style="color: #f1c232;">ebelum</span> membuat <b style="color: #f1c232;">Wajan Bolic</b>, kita
harus tau dulu apa itu Wajan Bolic dan apa fungsinya.</span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="font-size: large;">Apa itu Wajan Bolic?</span></b></div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggAEA_0X9gRHncti_P8SqGdkCzL8CUqbCTZL8IAqeFXFjLNNf0ndRdsZTrHAuf3tQRRFsCYZj8MOSXll3qepKXPGPXrSI50SUOBnjpxvxL4a9P_e_fIUnyN0MVLSH5AXYggOb5C15k4D0/s1600/wajane-kang-jihad.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggAEA_0X9gRHncti_P8SqGdkCzL8CUqbCTZL8IAqeFXFjLNNf0ndRdsZTrHAuf3tQRRFsCYZj8MOSXll3qepKXPGPXrSI50SUOBnjpxvxL4a9P_e_fIUnyN0MVLSH5AXYggOb5C15k4D0/s320/wajane-kang-jihad.jpg" height="240" width="320" /></a></div>
<span style="font-size: medium;"> <b style="color: #f1c232;">Wajan Bolic</b> adalah sebuah antena
yang terbuat dari bahan dasar Wajan. Wajan Bolic adalah versi keduanya dari
<b style="color: #f1c232;">Antena Grid</b>, bedanya Wajan Bolic dengan Antena Grid hanya terletak pada bahan
dan <span style="color: #f1c232;">efisiensi harganya</span>. Antena grid/ satelit seperti yang kita tahu, harganya
sangatlah mahal, mungkin bisa 2 atau 3 juta-an. Sementara <span style="color: #f1c232;">Wajan Bolic</span> hanya
membutuhkan biaya kurang dari 200.000. Dengan fungsinya yang hampir sama dengan
antena grid, Wajan Bolic <span style="color: #f1c232;">lebih efisien</span>. Wajan Bolic merupakan antena reciever
gelombang radio dengan frekuensi <b style="color: #f1c232;">2.4Ghz</b>. Dan hebatnya lagi, Wajan Bolic adalah
karya anak <b><span style="color: #cc0000;"><span style="color: white;">Indo</span>nesia</span></b>, mantap kan?</span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="font-size: large;">Apa Fungsi dari Si Wajan Bolic ini?</span></b></div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoListParagraphCxSpFirst" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt; text-indent: -0.25in;">
<span style="font-size: medium;">1.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span>Menembak sinyal <b style="color: #f1c232;">WI-FI </b>yang letaknya
jauh (bisa menembak sampai 2 Km-9Km)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt; text-indent: -0.25in;">
<span style="font-size: medium;">2.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span>Memperkuat sinyal wireless</span></div>
<div class="MsoListParagraphCxSpLast" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt; text-indent: -0.25in;">
<span style="font-size: medium;">3.<span style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span>Menambah sinyal <b style="color: #f1c232;">Modem</b> (jika di
gunakan untuk modem, bisa menembak <span style="color: #f1c232;">HSDPA</span> sampai <span style="color: #f1c232;">HSUPA</span>)</span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="font-size: large;">Cara Pembuatannya?</span></b></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">Nah inilah tahap yang di tunggu2..</span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><b>BAHAN :</b> </span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">1. Wajan diameter</span> <b style="color: #f1c232;">36</b> <span style="color: white;">? (semakin besar diameternya
semakin bagus)</span> </span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">2. PVC paralon tipis ukuran</span> <b style="color: #f1c232;">3”</b> <span style="color: white;">30cm</span> </span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">3. Doff</span> <b style="color: #f1c232;">3 “</b> <span style="color: white;">2 buah</span> </span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">4. Aluminium foil</span> </span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">5. Baut + mur ukuran</span> <b style="color: #f1c232;">12</b> <span style="color: white;">dan</span> <b><span style="color: #f1c232;">14</span></b></span></span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">6. USB Wireless</span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">7. Kabel USB Extension 1 meter (panjang sesuai
kebutuhan, bisa di beli di toko komputer)</span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><b>PERALATAN :</b> </span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">1. Penggaris </span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">2. Pisau/ Cutter </span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">3. Gergaji besi</span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">4. Bor (untuk melubangi wajan dan doff)</span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">5. Kikir (Untuk memperbesar lubang wajan setelah
di-Bor untuk mendapatkan ukuran yang sesuai dengan Baut ukuran 12 dan 14)</span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">6, Cemilan sama teh + Lagu Peterpan-Dara
wakakakak</span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><b style="color: #f1c232;">PERKIRAAN HARGA :</b> </span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">Perkiraan harga yang
dikeluarkan untuk membeli bahan WajanBolic adalah</span> <span style="color: #f1c232;">kurang dari Rp 300.000</span> <span style="color: white;">,-.
Bandingkan jikan Anda harus membeli</span> <span style="color: #f1c232;">antenna Grid 24 db</span><span style="color: white;">, yang bikinan local saja
mencapai</span> <span style="color: #f1c232;">Rp 500.000</span> <span style="color: white;">,- lebih dan yang import bisa mencapai</span> <span style="color: #f1c232;">Rp 1.000.000</span> <span style="color: white;">,-
lebih. Atau membeli antenna grid local yang harga nya</span> <span style="color: #f1c232;">Rp 200.000</span> <span style="color: white;">,- sedangkan
yang import bisa mencapai</span> <span style="color: #f1c232;">Rp 300.000</span> <span style="color: white;">lebih.</span></span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<b><span style="font-size: medium;">LANGKAH-LANGKAH PEMBUATAN
: </span></b></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">1. Siapkan semua bahan dan peralatan yang
dibutuhkan. </span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSFI58u1crCDHYXtzsVmij5Apx2vRpmVQsqj2BBcVYsk7qTrvzbYZD7nabJFNs7j15aJ01H3H57zlzskW_v9szZlHH3_jyJUXRUxcqArR8fpe_8lpG5q5IbXnnM4WCWOy1ZYuJnyFqC04/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-1.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSFI58u1crCDHYXtzsVmij5Apx2vRpmVQsqj2BBcVYsk7qTrvzbYZD7nabJFNs7j15aJ01H3H57zlzskW_v9szZlHH3_jyJUXRUxcqArR8fpe_8lpG5q5IbXnnM4WCWOy1ZYuJnyFqC04/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-1.jpg" /></a></div>
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">2. Lubangi wajan tepat di tengah wajan tersebut
seukuran baut ujuran</span> <b style="color: #f1c232;">14</b><span style="color: white;">, jika kurang besar gunakan kikir , cukup satu lubang
saja.</span></span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">Kemudian, ukur diameter wajan dan kedalaman
wajan. Kenapa harus pake ngukur2 segala?
Ini kita gunakan untuk menghitung</span> <b style="color: #f1c232;">Feedernya</b> <span style="color: white;">(permukaan pipa yang tidak di
lapisi Alumunium Foil). Rumus mencari Feeder:</span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgicVssiTeE1Ur0jHZUqT6Eh5pu7P6GOpOGGVJbQCM9IuVNt2i6Hfj38rxB3lwemSNKaIjh6ZYgpPTsKwquoBZyh6V29DuJew83VS5Hi5MTPV3QXYx_McPYJJipLqM31s9LWohpua89gL4/s1600/cara-membuat-antena-penguat-signal-3G-HSDPA-GPRS-wajan-bolic-wajan-holic.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgicVssiTeE1Ur0jHZUqT6Eh5pu7P6GOpOGGVJbQCM9IuVNt2i6Hfj38rxB3lwemSNKaIjh6ZYgpPTsKwquoBZyh6V29DuJew83VS5Hi5MTPV3QXYx_McPYJJipLqM31s9LWohpua89gL4/s1600/cara-membuat-antena-penguat-signal-3G-HSDPA-GPRS-wajan-bolic-wajan-holic.jpg" /></a></div>
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: #f1c232; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: large;"><b>F= D^2/(16*d)</b></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">*Ket:</span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">-</span> <b><span style="color: #f1c232;">F</span></b><span style="color: white;">: Feeder</span></span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">-</span><b style="color: #f1c232;"> D</b><span style="color: white;">: Diameter Wajan</span></span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">-</span> <b><span style="color: #f1c232;">d</span></b><span style="color: white;">: Kedalaman Wajan</span></span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: #f3f3f3;">- ‘</span><b style="color: #f1c232;">^</b><span style="color: white;">’pangkat, ‘</span><b><span style="color: #f1c232;">/</span></b><span style="color: white;">’ pembagian, ‘</span><b><span style="color: #e69138;">*</span></b><span style="color: white;">’ perkalian</span></span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: #f1c232;">Contoh</span> : <span style="color: white;">Wajan dengan D = 70 cm, d = 20 cm maka
jarak titik focus dari center dish : F = D^2 /(16 *d) = 70 ^2 / (16 *20) =</span> <b style="color: #f1c232;">15.3 cm</b><span style="color: white;"> (Bagian yang tidak diberi
Alumunium Foil. </span></span></span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">1. Potong PVC paralon sepanjang </span><b style="color: #f1c232;">30 cm</b><span style="color: white;">, kemudian
beri tanda untuk jarak</span> <span style="color: #f1c232;">feeder-nya</span> <span style="color: white;">( daerah bebas aluminium foil). Untuk
menentukan panjang feeder-nya gunakan rumus di atas.</span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrUmAsZCOOkU4T4O9f7fJVweiJUTRyOsLqisRjyjmzhg7_rnstEjKGhq33hekHPfVL-q9TaIBqrBaAQ_Qt_Jl4D_dlT4cMEvWH0WaYpDbcA5pfo2FXk0RthVq5-RAs1K8N8FDhM4TeVg/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-11.jpg" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">2. Beri lubang pada bagian paralon untuk
meletakkan USB Wireless, sekitar</span> <b style="color: #ffd966;">5cm</b> <span style="color: white;">dari ujung PVC.</span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDBp3A1ghCCiglP2fh-xtlF1wrxARgJykoRjuGAT7_VO7Vwj9azE33BUUqzEEWXXvIE01liqx7sdV34UfOIpyLsXUjAzLxqo0wBId9yciK74iOOXFh9zA5KL-yDPeeRV_rQkpJwWgbZfU/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-5.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDBp3A1ghCCiglP2fh-xtlF1wrxARgJykoRjuGAT7_VO7Vwj9azE33BUUqzEEWXXvIE01liqx7sdV34UfOIpyLsXUjAzLxqo0wBId9yciK74iOOXFh9zA5KL-yDPeeRV_rQkpJwWgbZfU/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-5.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGl8XjhP04g0RFwY8TF8O1RbcMrondt9q7mbZS_4FhwO5gzmyqc46Tqbc5Cu6OfZifS4PI_XUJGmqA6rPQPjX6-ic1QoJQriAn-ye2Y3LkxjCtR96-tpwBFHsvPvo916-5o796B1vPJOw/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-8.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGl8XjhP04g0RFwY8TF8O1RbcMrondt9q7mbZS_4FhwO5gzmyqc46Tqbc5Cu6OfZifS4PI_XUJGmqA6rPQPjX6-ic1QoJQriAn-ye2Y3LkxjCtR96-tpwBFHsvPvo916-5o796B1vPJOw/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-8.jpg" /></a></div>
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">3. Selanjut nya, bungkus PVC paralon dengan dgn</span>
<span style="color: #f1c232;">aluminium foil</span> <span style="color: white;">pada daerah selain feeder, kalo aluminium foil yang ada tanpa
perekat, maka untuk merekatkannya bisa menggunakan double tape.</span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrUmAsZCOOkU4T4O9f7fJVweiJUTRyOsLqisRjyjmzhg7_rnstEjKGhq33hekHPfVL-q9TaIBqrBaAQ_Qt_Jl4D_dlT4cMEvWH0WaYpDbcA5pfo2FXk0RthVq5-RAs1K8N8FDhM4TeVg/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-11.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrUmAsZCOOkU4T4O9f7fJVweiJUTRyOsLqisRjyjmzhg7_rnstEjKGhq33hekHPfVL-q9TaIBqrBaAQ_Qt_Jl4D_dlT4cMEvWH0WaYpDbcA5pfo2FXk0RthVq5-RAs1K8N8FDhM4TeVg/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-11.jpg" /></a></div>
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">4. Bor Doff yang satu untuk lubang
baut yang akan di pasang di Wajan</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEFWXPiY-fRa3MtdA8wh79HhG4IjFcqRbE39YROtJ2S-0Ca8OHJRk1l5HN0CAK2BzfkXQwQnak5-WVxIsrccYZ7xWQQONUvE7eoTpWegfwcogVCl_Nm_AC8WwWPYOC-3uIsLroLJ-AykA/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEFWXPiY-fRa3MtdA8wh79HhG4IjFcqRbE39YROtJ2S-0Ca8OHJRk1l5HN0CAK2BzfkXQwQnak5-WVxIsrccYZ7xWQQONUvE7eoTpWegfwcogVCl_Nm_AC8WwWPYOC-3uIsLroLJ-AykA/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-2.jpg" /></a></div>
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">5. Pada bagian doff (tutup PVC paralon) yang
akan di pasang pada ujung PVC harus di beri aluminium foil, sedangkan doff yang
di pasang pada wajan tidak perlu di beri aluminium foil</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGb4wDrwk-AwYkaCXrKn4kJXvPgs1TnJDfXTEKod_z3IrS6voNZWmU4U6MpLR3Ldnrq9RkPbUXvnE9SKEHmHY5MynxOQHXclO1IQhbGSdQtJuzqJNJyqQsV9UJtDXubZehURuIu9D1X_M/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-9.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGb4wDrwk-AwYkaCXrKn4kJXvPgs1TnJDfXTEKod_z3IrS6voNZWmU4U6MpLR3Ldnrq9RkPbUXvnE9SKEHmHY5MynxOQHXclO1IQhbGSdQtJuzqJNJyqQsV9UJtDXubZehURuIu9D1X_M/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-9.jpg" /></a></div>
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">6. Masukkan USB Wireless pada lubang
yang sudah di tandai tadi</span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNQs5WqzATf5w5nq7Jj6cceWTeovX8cIYmR4nRaByetIUEqyotLIyNR_8zfdn24TReRMqGXym6LRNe5O-zaGrkMoWgRu7ermq-qa9b0-JgJ0i4q_GjWxEz2u-LwwKz4TKhO0MkOt56kk/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-13.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNQs5WqzATf5w5nq7Jj6cceWTeovX8cIYmR4nRaByetIUEqyotLIyNR_8zfdn24TReRMqGXym6LRNe5O-zaGrkMoWgRu7ermq-qa9b0-JgJ0i4q_GjWxEz2u-LwwKz4TKhO0MkOt56kk/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-13.jpg" /></a></div>
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">8. Dan pasangkan doff tadi ke PVC paralon </span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">9. Kemudian, wajan yang telah di bolongi tadi
dipasangkan dengan doff yang satu nya lagi, sebelumnya doff tersebut dilubangi
sesuai dengan ukuran baut yang sudah di siapkan, dan kencangkan secukupnya. </span></div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;">10. Kemudian tinggal pasangkan PVC paralon tadi
ke wajan yang sudah di pasang doff.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU13Des4y9SviXkTxX1FlSzg1-5rZcC4kjEgz9KosmDf8G9CH__B1Bg0ZC69x00zUl-rRvWF6eXXfCJB_40f4qtHPfo_50iDTrFJZZ4bmRCKxEbkbE5jNkJ5Of2tLzMYFSZI7SuxD8-ug/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-16.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU13Des4y9SviXkTxX1FlSzg1-5rZcC4kjEgz9KosmDf8G9CH__B1Bg0ZC69x00zUl-rRvWF6eXXfCJB_40f4qtHPfo_50iDTrFJZZ4bmRCKxEbkbE5jNkJ5Of2tLzMYFSZI7SuxD8-ug/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-16.jpg" /></a></div>
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><b><span style="color: #3d85c6; font-size: large;">Baiklah </span></b></span></span></div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-size: medium;"><span style="color: black;"><span style="color: white;">11.</span> <b style="color: #f1c232;">Selesai.</b> <span style="color: white;">Wajan bolic tinggal di atur/
diarahkan tempat berada WI-FI nya.</span></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu7oJze70gwwVQZWnMsTLrmXf-6MlDPPQ8PAvzOp9lKYoGg5weDDekHp8VNRbn5TXJnlSD17kno3BRWP60lDTohlBxYOyiDHS_fvzqarKW9ARkgxjnJIT8CL3rNrpN9B1xdqiHE5S94zs/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-17.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu7oJze70gwwVQZWnMsTLrmXf-6MlDPPQ8PAvzOp9lKYoGg5weDDekHp8VNRbn5TXJnlSD17kno3BRWP60lDTohlBxYOyiDHS_fvzqarKW9ARkgxjnJIT8CL3rNrpN9B1xdqiHE5S94zs/s1600/antena-wajan-bolic-wajan-holic-penguat-signal-3G-HSDPA-GPRS-17.jpg" /></a></div>
</div>
<div class="MsoNormal" style="color: white; font-family: "Trebuchet MS",sans-serif; line-height: normal; margin-bottom: 0.0001pt;">
</div>
<span style="font-size: medium;">12. Kalau gagal, seperti USB Wireless tidak
terbaca, atau terbaca tapi tidak mendapatkan sinyal hotspot yang di tembak,
kemungkinan besar ada kesalahan kecil saat perakitan. </span><br />
<br />
<span style="font-size: medium;"><span style="font-size: medium;"><b style="color: #3d85c6;">Sumber Gambar: </b><b style="color: #3d85c6;">cossierandi.com</b></span></span><br />
<br />
<span style="font-size: medium;"><span style="font-size: medium;"><b style="color: #3d85c6;"> </b></span></span><span style="font-size: medium;"><span style="font-size: medium;"><b style="color: #3d85c6;"><span style="font-size: medium;">^^ SMK Al-Achyar ^^</span> </b></span></span><br />
<span style="font-size: medium;"><span style="font-size: medium;"><b style="color: #3d85c6;"> </b></span></span><span style="font-size: medium;"><span style="font-size: medium;"><b style="color: #3d85c6;"> </b></span> </span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-12900368316088182222013-02-08T19:33:00.002-08:002013-02-08T19:33:56.116-08:00Cara Setting Kabel LAN Straight dan Crossover<h1>
Cara Setting Kabel LAN Straight dan Crossover</h1>
<hr />
<center>
<img alt="Cara Setting Kabel LAN Straight dan Crossover" src="http://www.putraprogram.com/image/38520120609120610.jpg" width="160" /></center>
<br />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.<br /><br />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 "<span style="font-style: italic; font-weight: bold;">Limited or no Connectivity</span>".
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???"<br /><br />Nah jika ada sobat yang mengalami hal seperti saya, ikuti saja langkah-langkah yang saya lakukan ya...<br /><br />PERTAMA :<br />Buka <span style="font-style: italic; font-weight: bold;">Local Area Connection Status</span> di pojok kanan bawah (icon komputer kembar) kemudian klik <span style="font-style: italic; font-weight: bold;">Properties</span>, trus pada tampilan <span style="font-style: italic; font-weight: bold;">Local Area Properties</span> klik <span style="font-style: italic; font-weight: bold;">Configure</span> silahkan cari pilihah <span style="font-style: italic; font-weight: bold;">Speed and Duplex</span> (setiap tipe LAN pada komputer memiliki menu yang berbeda, tetapi pasti ada settingan <span style="font-style: italic;">Speed and Duplex</span>) set valuenya menjadi <span style="font-style: italic; font-weight: bold;">10 Mbps Full Duplex</span>. Setelah itu klik OK. Koneksi LAN anda akan me-restart secara otomatis. <br /><br />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)<br /><br />KEDUA<br />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.<br /><br />Berikut alat alat yang diperlukan untuk pemasangan kabel LAN<br /><span style="font-weight: bold;">1. Kabel LAN UTP isi 8</span><br /> <img alt="Kabel UTP untuk LAN" src="http://putraprogram.com/directory/32820120609120604.jpg" style="height: 166px; width: 166px;" /><br />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.<br /><br /><span style="font-weight: bold;">2. Jack RJ45 Connector</span><br /> <img alt="Jack RJ45 untuk LAN Head" src="http://putraprogram.com/directory/50320120609120638.jpg" style="height: 163px; width: 163px;" /><br />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.<br /><br />3. Crimping (Tang penjepit)<br /> <img alt="Crimping untuk penjepit kabel LAN pada Head" src="http://putraprogram.com/directory/40920120609120628.jpg" style="height: 131px; width: 169px;" /><br />Harga tang Crimping berkisar Rp. 35.000 sampai Rp. 50.000 an. Ada berbagai bentuk yang bisa anda pilih dan fungsinya sama saja.<br /><br />Berikut adalah cara pemasangan LAN tipe Straight<br /><br />Ujung kabel pertama Ujung kabel kedua<br /> <img alt="Kabel Straight untuk LAN" src="http://putraprogram.com/directory/57520120609120641.jpg" style="height: 139px; width: 99px;" /> <img alt="Kabel Straight untuk LAN" src="http://putraprogram.com/directory/57520120609120641.jpg" style="height: 139px; width: 99px;" /><br />Warna kabel untuk LAN straight sama antara ujung satu dan ujung lainnya.<br /><br /><br />Kemudian untuk kabel LAN tipe Cross<br /><br /><img alt="Kabel Cross untuk LAN" src="http://putraprogram.com/directory/07320120609120653.jpg" style="height: 194px; width: 284px;" /><br /><br />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)<br /><br />Kesimpulannya<br /><br />PIN Unjung 1 Ujung 2<br />1 1.putih orange 3.putih hijau<br />2 2.orange 6.hijau<br />3 3.putih hijau 1.putih orange<br />4 4.biru 4.biru<br />5 5.putih biru 5.putih biru<br />6 6.hijau 2.orange<br />7 7.putih cokelat 7.putih cokelat<br />8 8.cokelat 8.cokelat<br /><br />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..<br /><br />Salam<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-34074366595986047112013-01-24T03:39:00.000-08:002013-01-24T03:39:09.213-08:00Install Ubuntu 12.04 menggunakan CD<h3 style="text-align: justify;">
Install Ubuntu 12.04 menggunakan CD</h3>
<div style="text-align: justify;">
Sudah lama tidak update Ubuntu, saya coba cek Ubuntu terbaru, ternyata sudah Ubuntu 12.04! Sungguh tertinggal komputer ini.</div>
<div style="text-align: justify;">
Disini kita akan mencoba install Ubuntu 12.04 menggunakan CD. Sebelumnya, kita download file ISO Ubuntu 12.04 di sini : <a href="http://www.ubuntu.com/download/desktop" target="_blank" title="Ubuntu 12.04">Ubuntu 12.04</a>.
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.</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-1.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-148" height="246" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-1-300x246.jpg" title="install ubuntu 12.04" width="300" /></a></div>
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.<br />
<div style="text-align: justify;">
Mount kembali file ISO tadi, lalu jalankan file wubi.exe hingga tampil gambar berikut.</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-2.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-149" height="232" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-2-300x232.jpg" title="install ubuntu 12.04" width="300" /></a></div>
<div style="text-align: justify;">
Pilih “Demo dan Instalasi Penuh”</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-3.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-150" height="231" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-3-300x231.jpg" title="install ubuntu 12.04" width="300" /></a></div>
<div style="text-align: justify;">
Pada pilihan ini, pilih pilihan paling bawah ” Bantu saya agar dapat boot dari CD”, tekan tombol “Selesai”</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-4.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-151" height="231" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-4-300x231.jpg" title="install ubuntu 12.04" width="300" /></a></div>
<div style="text-align: justify;">
Selanjutnya tekan tombol “Pasang” sampai muncul proses pemasangan, dan tunggu hingga selesai.</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-5.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-152" height="231" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-5-300x231.jpg" title="install ubuntu 12.04" width="300" /></a></div>
<div style="text-align: justify;">
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.</div>
<div style="text-align: justify;">
Setelah masuk ke OS Ubuntu, akan ada icon di desktop dengan nama “Instalasi Penuh”, klik icon tersebut.</div>
<div style="text-align: justify;">
Ketika muncul window proses instalasi, lakukan instruksinya. Kita bisa melihat cara instalasinya di <a href="http://www.ubuntu.com/download/help/install-ubuntu-desktop" target="_blank" title="install ubuntu 12.04">http://www.ubuntu.com/download/help/install-ubuntu-desktop</a>. Maaf tidak disertakan langsung disini, karena ribet harus coba-coba lagi <img alt=":D" class="wp-smiley" src="http://javaziez.com/wp-includes/images/smilies/icon_biggrin.gif" /> </div>
<div style="text-align: justify;">
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.</div>
<div style="text-align: justify;">
akan ada tampilan menu OS, kita pilih Ubuntu 12.04 yaitu di pilihan menu paling atas.</div>
<h3 style="text-align: justify;">
Menghapus pilihan menu OS</h3>
<div style="text-align: justify;">
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.</div>
<div style="text-align: justify;">
Kilik kanan di My Computer, Pilih “Properties”</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-6.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-153" height="298" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-6-300x298.jpg" title="install ubuntu 12.04" width="300" /></a></div>
<div style="text-align: justify;">
Setelah itu akan muncul tampilan berikut.</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-7.jpg"><img alt="install ubuntu 12.04" class="alignnone size-full wp-image-154" height="223" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-7.jpg" title="install ubuntu 12.04" width="278" /></a></div>
<div style="text-align: justify;">
Pilih “Advanced system settings”</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-8.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-155" height="300" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-8-271x300.jpg" title="install ubuntu 12.04" width="271" /></a></div>
<div style="text-align: justify;">
Pilih Tab “Advanced” dan di bagian “Startup and Recovery”, tekan tombol “Settings..”</div>
<div style="text-align: justify;">
<a href="http://www.gophoto.it/view.php?i=http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-9.jpg"><img alt="install ubuntu 12.04" class="alignnone size-medium wp-image-156" height="300" src="http://javaziez.com/wp-content/uploads/2012/08/install-ubuntu-9-272x300.jpg" title="install ubuntu 12.04" width="272" /></a></div>
<div style="text-align: justify;">
Pada pilihan combobox “Default operating system”, pilih “Windows 7″ (OS default yang ingin kita pilih)</div>
<div style="text-align: justify;">
Pada checkbox dibawahnya ada option “Time to display list of operating system:” <strong>uncheck</strong> option/pilihan ini (jangan dichecklist).</div>
<div style="text-align: justify;">
<strong>diperhatikan : jangan uncheck (tidak dichecklist) ketika “Default operating system” yang dipilih adalah SELAIN “Windows 7″</strong>. Hal ini akan mengakibatkan kita tidak bisa masuk ke OS Windows lagi.</div>
<div style="text-align: justify;">
Setelah semua selesai, silahkan restart dan coba lagi. Semoga bermanfaat <img alt=":)" class="wp-smiley" src="http://javaziez.com/wp-includes/images/smilies/icon_smile.gif" /> </div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-59122441600410213532013-01-22T05:27:00.001-08:002013-01-22T05:27:07.741-08:00Cara Merubah Template Blog<span style="color: red; font-size: medium;">Cara Merubah Template Blog</span><br />
<br />
Bosan dengan tampilan blog anda ? silahkan ganti tampilan nya dengan template yang dapat anda cari secara gratis di banyak situs penyedia template gratis.<br />
<br />
Untuk merubah template sbb :<br />
<br />
<br />
<br />
<ol><li>Cari Situs Penyedia Template Gratis</li>
<li>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/ </li>
<li>Di situs penyedia template pilih template yang anda sukai .</li>
<li>Lalu klik 'download'. </li>
<li>Simpan hasil download dihardisk anda,. </li>
<li>Setelah di download Klik kanan ikon hasil download itu , </li>
<li>lalu klik " extrak here"</li>
</ol><br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3zoVDi6dTfTKGaZNXcvkJJew1w4dG8y34-DZtdsSFXiSN4lhO4SRXz7vZARlzHYiPzaCDwaHjTp9tH6Iqx295vmQSQirFNF5M7Iel_IaR7BLPIJ3s4H7W7Qp1ps4St7i0kxyaWK1MMX_b/s1600-h/rubah-template-klikkanan.jpg"><img alt="Cara Merubah Template Blogspot" border="0" id="BLOGGER_PHOTO_ID_5427382189527668818" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3zoVDi6dTfTKGaZNXcvkJJew1w4dG8y34-DZtdsSFXiSN4lhO4SRXz7vZARlzHYiPzaCDwaHjTp9tH6Iqx295vmQSQirFNF5M7Iel_IaR7BLPIJ3s4H7W7Qp1ps4St7i0kxyaWK1MMX_b/s400/rubah-template-klikkanan.jpg" style="cursor: pointer; display: block; height: 312px; margin: 0px auto 10px; text-align: center; width: 251px;" /></a><br />
<br />
<br />
<br />
<br />
<ul><li>Untuk cara mengatur file silahkan lihat di : trik <a href="http://universityofbloggers.blogspot.com/2009/02/cara-mengatur-file-di-komputer.html" style="color: #3333ff;">"Mengatur File"</a></li>
</ul><br />
<div class="catatan">Catatan : Pastikan terlebih dulu bahwa anda telah mengetahui template lama anda memakai yg mana, apakah dengan classic(HTML) template, atau New (XML) template.</div><br />
<h3> Membedakan Template Klasik dengan Template New XML</h3><br />
Ciri-ciri nya bisa dilihat di dalam halaman editor HTML sbb :<br />
<br />
Untuk yg classic(HTML) , cirinya di paling atas..diawali dengan <u><strong><! DOCTYPE html</strong></u>...dst..dst.., seperti tampak dalam gambar sbb :<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXBrBxh6z6-ZPMyERMOixZLqC3DDwSfIZKafo5MTLIiYEuJj6ksayfgAGR0I7s69xbKDYJXC_R4gFi6qVJ5tjtyjO1fN694D3bpiMHwRI2dU7XsAX8FygYVZ9_K3Misbw0Krgr57R4JzlT/s1600-h/rubah-template3-contoh-classic-template.jpg"><img alt="Tips Cara Merubah Template Blogspot" border="0" id="BLOGGER_PHOTO_ID_5427378508545516898" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXBrBxh6z6-ZPMyERMOixZLqC3DDwSfIZKafo5MTLIiYEuJj6ksayfgAGR0I7s69xbKDYJXC_R4gFi6qVJ5tjtyjO1fN694D3bpiMHwRI2dU7XsAX8FygYVZ9_K3Misbw0Krgr57R4JzlT/s400/rubah-template3-contoh-classic-template.jpg" style="cursor: pointer; display: block; height: 236px; margin: 0px auto 10px; text-align: center; width: 379px;" /></a><br />
<br />
Dan untuk yang New (XML) template cirinya di paling atas..diawali dengan <!?xml version="1.0.....dst..dst.., seperti tampak dalam gambar sbb :<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaUsT22VhVq_qi9WvElRkSlLQd05tdGVpSnpnnddadIhXzq64GpA6gVaynSFuPwqs2zu8IBXNo9iXNk4P71B9kETuR8wtYdkLGur2Thk3ZfWYxktgRA5sLHCQBrMCJsXISpTUD55xFJ9Ly/s1600-h/rubah-template3-contoh-Default-template.jpg"><img alt="Tutorial Cara Merubah Template Blogspot" border="0" id="BLOGGER_PHOTO_ID_5427378794365140514" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaUsT22VhVq_qi9WvElRkSlLQd05tdGVpSnpnnddadIhXzq64GpA6gVaynSFuPwqs2zu8IBXNo9iXNk4P71B9kETuR8wtYdkLGur2Thk3ZfWYxktgRA5sLHCQBrMCJsXISpTUD55xFJ9Ly/s400/rubah-template3-contoh-Default-template.jpg" style="cursor: pointer; display: block; height: 188px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<br />
<br />
<br />
Ciri lain <strong>perbedaan template antara yg classic dan New</strong>, 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 :<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Fg_NT8PsM6ehQS4e1NNb5eZ1PGlfQ_xjVynVXcIBJt_NtvKKkchwtdFjEFaETDh8vK-JtdXL6gtdV3mIJYEdyZuTKtEjqOi_eZ0DK4gjdtjsO6TMCNpzYUEziPD2RtWYBc73_Be4-QUu/s1600/Beda_Template_Classic_Dengan_NewXML.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="Panduan Cara Merubah Template Blogspot" border="0" height="144" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Fg_NT8PsM6ehQS4e1NNb5eZ1PGlfQ_xjVynVXcIBJt_NtvKKkchwtdFjEFaETDh8vK-JtdXL6gtdV3mIJYEdyZuTKtEjqOi_eZ0DK4gjdtjsO6TMCNpzYUEziPD2RtWYBc73_Be4-QUu/s320/Beda_Template_Classic_Dengan_NewXML.jpg" width="320" /></a></div><br />
<br />
<br />
Di gambar atas, bisa kita lihat satu blog saya : <span style="color: red;">Bisnis Air OXY</span> , adalah ber template "<span style="color: #ff6666;">NEW</span>" disitu ada link utk "<span style="font-weight: bold;"><strike>LAYOUT</strike></span>" <strong><u>Design </u></strong>dimana di link itu lah tempatnya kita untuk mengotak-atik tampilan blog,<br />
sedangkan blog <span style="font-weight: bold;"><u>Belajar HTML</u></span> <strong><u>Mencari Usaha Halal</u></strong>, ber template "<span style="font-weight: bold;">Classic</span>" dan link untuk mengotak-atik Tampilan blog , adanya di link <b>"TEMPLATE"</b><br />
<br />
<br />
<div class="update-univ">Update 16 Juni 2011 : Ada perubahan pada dashbor blogspot sbb : Untuk Template New XML akan tertulis tab <strong><u>Design </u></strong>( Bukan Layout:lagi seperti yg di Dashbor lama )</div><br />
<br />
Jika kita sudah mengetahui jenis template lama kita, maka langkah selanjutnya adalah <strong>mencari template yg sesuai dengan template lama</strong>, misalnya yg lama pakai New (XML) , maka carilah template dengan yg New (XML) pula..dan sebaliknya.<br />
<br />
Ciri hasil download <strong>template New (XML)</strong> ( setelah di ekstrak dari ZIP file) seperti terlihat dalam gambar :<br />
<br />
<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggBjfDQXE0oTSgF40FfqpI9b7Mi-_Wby3UjA_MKSbt6QrbcDAk3KsXKZIMOT_Q_ElCjS3WHQ_24-MThcwSwnFbMb0YpaOfrmghoBskZGjc7i263JVbS7HeLPdWOqkgh7AUlW_jvGscIVE-/s1600-h/rubah-template-XML.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427379947558551986" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggBjfDQXE0oTSgF40FfqpI9b7Mi-_Wby3UjA_MKSbt6QrbcDAk3KsXKZIMOT_Q_ElCjS3WHQ_24-MThcwSwnFbMb0YpaOfrmghoBskZGjc7i263JVbS7HeLPdWOqkgh7AUlW_jvGscIVE-/s400/rubah-template-XML.jpg" style="cursor: pointer; display: block; height: 99px; margin: 0px auto 10px; text-align: center; width: 200px;" /></a><br />
<br />
<br />
<br />
Dan Ciri hasil download<strong> template classic(HTML)</strong> seperti terlihat dalam gambar :<br />
<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9gqEfMFUcslMu1xbvyTe-WJegVV0xYpEV4KPzSbrfcPO8z0_nBuHispLenmlCmhZ7Pyzt_rwQuXb5HRKhunbLPojgvtYq_zeZDoZglBZcOxrrfWWCSztgulbzn0LoZvX6cJobYAQWu2e7/s1600-h/rubah-templateclassic.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427380369372575090" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9gqEfMFUcslMu1xbvyTe-WJegVV0xYpEV4KPzSbrfcPO8z0_nBuHispLenmlCmhZ7Pyzt_rwQuXb5HRKhunbLPojgvtYq_zeZDoZglBZcOxrrfWWCSztgulbzn0LoZvX6cJobYAQWu2e7/s400/rubah-templateclassic.jpg" style="cursor: pointer; display: block; height: 65px; margin: 0px auto 10px; text-align: center; width: 166px;" /></a><br />
<br />
<br />
<br />
Setelah proses men download template selesai, dan sudah sesuai dengan pilihan template antara yg lama dengan yg baru, Langkah selanjutnya sbb :<br />
<br />
<ul><li>Signup (Masuk) ke dashboar blogspot milik anda.</li>
<li>Pilih "<span style="font-weight: bold;"><strike>LAYOUT</strike></span>" <strong><u>Design </u></strong> atau "tata letak".<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLxX89qzxXEam85_o312nOBEnH7yXXRhrVvh9DORLr8rHz3DwOhowbivT52zTw9wyxZ4VxfNrmBzGCGysMMXkmzvTSqholxO3G2IhPWzjUnmnsKNb9T7O7VCr3tMqQsPNr3Gl11KeiyYHZ/s1600-h/rubah-template1.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427372689324179394" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLxX89qzxXEam85_o312nOBEnH7yXXRhrVvh9DORLr8rHz3DwOhowbivT52zTw9wyxZ4VxfNrmBzGCGysMMXkmzvTSqholxO3G2IhPWzjUnmnsKNb9T7O7VCr3tMqQsPNr3Gl11KeiyYHZ/s400/rubah-template1.jpg" style="cursor: pointer; display: block; height: 159px; margin: 0px auto 10px; text-align: center; width: 357px;" /></a><br />
<br />
</li>
</ul><ul><li>Pilih Edit HTML.<br />
</li>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6x6RLs1h3N1NxSQbLtWniK7pwZEWUIQS_fV-5c94k_S9iZ-H3fIUrWygpairB0GZOnkq5ViWWHBWkAitqyLb0fB1W-uVPu6tjOUqk1ECSkoBCCFc9US8L4ZPR6IkAwjY_MD2rIK67OVbp/s1600-h/rubah-template2.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427373003189471778" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6x6RLs1h3N1NxSQbLtWniK7pwZEWUIQS_fV-5c94k_S9iZ-H3fIUrWygpairB0GZOnkq5ViWWHBWkAitqyLb0fB1W-uVPu6tjOUqk1ECSkoBCCFc9US8L4ZPR6IkAwjY_MD2rIK67OVbp/s400/rubah-template2.jpg" style="cursor: pointer; display: block; height: 106px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: -webkit-auto; width: 400px;" /></a>
<li>Klik "Download Full Template" untuk menyimpan template lama anda dan agar anda mempunyai backup unuk jaga-jaga jika terjadi "gagal" </li>
<li>lalu klik tab "Telusuri" atau "browse" .</li>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxbQZrf6m8sMdJ4atwHNRHGaojpPNKsyOJ6PN7nqnCWr8MUUukk4IB8kmq6M2u9NTMIun2s-w-3W0gJjtOHQDnOm0kpzZQWH-dV37dcqPico9V2Y2NaxfSnopCuJ7ZwGeYpJ_RaWnF4SUs/s1600-h/rubah-template4Browse.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427380903784066002" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxbQZrf6m8sMdJ4atwHNRHGaojpPNKsyOJ6PN7nqnCWr8MUUukk4IB8kmq6M2u9NTMIun2s-w-3W0gJjtOHQDnOm0kpzZQWH-dV37dcqPico9V2Y2NaxfSnopCuJ7ZwGeYpJ_RaWnF4SUs/s400/rubah-template4Browse.jpg" style="cursor: pointer; display: block; height: 166px; margin: 0px auto 10px; text-align: center; width: 357px;" /></a>
<li>Nah anda akan mencari file hasil download anda di dalam file hardisk yang tadi anda simpan.</li>
<li>Jika sudah ketemu klik 'open'.</li>
<li>anda akan kembali ke halaman blogspot.</li>
<li>Lalu klik "Unggah" atau Upload.<br />
</li>
<li>Setelah proses upload selesai, akan ada konfirmasi bahwa template baru itu akan menghapus beberapa wdiget/gadget yang telah terpasang di blog anda sebelumnya.</li>
<li>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.</li>
<li>Selesai.</li>
</ul>Nah semoga bermanfaat....Silahkan tuliskan komentar anda jika ingin sharing disinUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-28963423444653438272012-10-04T10:52:00.001-07:002012-10-04T10:52:05.562-07:00Tips Anti Galau...<div style="text-align: justify;"></div><div></div><div style="text-align: justify;"><span style="font-size: x-small;"><b><span style="font-size: large;">“Galau!!”</span></b> 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 <i>facebook</i> atau <i>twitter</i> saja, bahkan di media televisi pun orang-orang seakan-akan dicekoki dengan kata-kata “galau” tersebut.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">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. </span></div><div style="color: #274e13; text-align: justify;"><blockquote><div style="text-align: left;"><span style="font-size: x-small;">...Jangankan kita manusia biasa, bahkan Rasulullah pun pernah mengalami keadaan keadaan galau pada tahun ke-10 masa kenabiannya...</span></div></blockquote></div><div style="text-align: justify;"><span style="font-size: x-small;">Jangankan kita sebagai manusia biasa, bahkan Rasulullah Muhammad <i>shalallahu alaihi wasallam</i> pun pernah mengalami keadaan tersebut pada tahun ke-10 masa kenabiannya. Pada masa yang masyhur dengan <i>‘amul huzni</i> (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.</span><br />
</div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">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.</span></div><div style="text-align: justify;"><u><br />
</u></div><div style="text-align: justify;"><span style="font-size: x-small;"><u>Jangan Galau</u><b>, Innallaha Ma’ana!</b></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">Allah Ta’ala berfirman, <span style="color: #274e13; font-size: medium;"><i>“Janganlah engkau bersedih, sesungguhnya Allah bersama kami”</i></span> (QS. At Taubah: 40).</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">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.</span></div><div style="text-align: justify;"><blockquote><div style="text-align: left;"><span style="font-size: medium;">...Allah telah memberikan solusi kepada manusia untuk mengatasi rasa galau yang sedang menghampiri jiwa...</span></div></blockquote></div><div style="text-align: justify;"><span style="font-size: x-small;">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.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">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.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><u><b><span style="font-size: x-small;">Obat Galau | Tips Anti Galau | Cara Mengobati Galau | Cara Menghindari Galau</span></b></u></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">Berikut ini adalah kunci dalam mengatasi rasa galau;</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;"><b>1. Sabar</b></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">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.</span><br />
</div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">Allah Ta’ala berfirman, <i>“<span style="color: #274e13; font-size: medium;">Sesungguhnya Allah bersama orang-orang yang sabar</span>” </i>(Qs. Al-Baqarah 153).</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">Selain menenangkan jiwa, sabar juga dapat menstabilkan kacaunya akal pikiran akibat beratnya beban yang dihadapi.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;"><b>2. Adukanlah semua itu kepada Allah</b></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">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:</span><br />
</div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;"><i>“Hanya kepada-Mulah kami menyembah, dan hanya kepada-Mulah kami meminta pertolongan”</i> (QS. Al Fatihah 5).</span></div><div style="text-align: justify;"><blockquote><div style="text-align: left;"><span style="font-size: x-small;">...ketika keluhan itu diadukan kepada Sang Maha Pencipta, maka akan meringankan beban berat yang kita derita...</span></div></blockquote></div><div style="text-align: justify;"><span style="font-size: x-small;">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.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">Rasulullah <i>shalallahi alaihi wasallam</i> 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.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;"><b>3. Positive thinking</b></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;"><i>Positive thinking</i> 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;</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;"><i>“Karena Sesungguhnya sesudah kesulitan itu ada kemudahan. Sesungguhnya sesudah kesulitan itu ada kemudahan”</i> (Qs Al-Insyirah 5-6).</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;"><b>4. Dzikrullah (Mengingat Allah)</b></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-size: x-small;">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. </span></div><div style="text-align: justify;"><blockquote><div style="text-align: left;"><span style="font-size: x-small;">...Bersabar, berpikir positif, ingat Allah dan mengadukan semua persoalan kepada-Nya adalah solusi segala persoalan...</span></div></blockquote></div><div style="text-align: justify;"><span style="font-size: x-small;">Sebagaimana firman-Nya:</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><span style="font-size: x-small;"><i>“Orang-orang yang beriman dan hati mereka menjadi tenteram dengan mengingat Allah. Ingatlah, hanya dengan mengingat Allah lah hati menjadi tenteram”</i> (Qs Ar-Ra’du 28).</span><br />
<br />
<div style="text-align: justify;"><span style="font-size: x-small;"><span>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.</span></span></div><span style="font-size: x-small;"><span>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</span></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-53697001035244525262012-07-10T09:53:00.000-07:002012-07-10T09:53:15.913-07:00Bridge Pattern<i>Bridge Pattern</i> ini merupakan pattern yang kuat (powerfull) dan sering<br />
digunakan dalam pengembangan. Dan ini sebanding dengan usaha untuk mempelajarinya yang cukup menantang.<br />
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.<br />
Decouple adalah <span id="more-602"></span>bagaimana objek tidak terhubung satu sama lain, berdiri sendiri (independent), terpisah.<br />
Abstraksi adalah konsep bagaimana antar objek saling terhubung.<br />
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).<br />
Dalam sebagian besar tutorial, bridge pattern didefinisikan sebagai<br />
<br />
<blockquote>pattern yang berusaha memisahkan antara abstraksi dan implementasi.</blockquote>Bingung? Hehe.. Namanya juga teori, biasanya mengawang-awang jika tidak diaplikasikan. Yuk kita aplikasikan!<br />
(Untuk contoh <em>bridge pattern</em> ini, saya ambil dari buku <em>Design Patterns JAVA Workbook</em> .)<br />
Misalkan kita punya modal diagram kelas yang pada superclassnya terdapat sebuah kelas abstrak “MachineController”. Nah, di dalam MachineController ini terdapat beberapa <em>abstract</em> dan <em>concrete method</em>. Salah satu <em>concrete method</em> pada MachineController, yaitu <em>inputfull</em>, menggunakan hasil dari salah satu <em>abstract method</em> “getQueueMax()”.<br />
<div style="color: white;"><code>public boolean inputfull(){</code><code><br />
return getQueueMax() >= getQueue.size();</code><code><br />
}</code></div>Dan selayaknya sebuah <em>abstract method</em>, method <em>getQueueMax()</em> ini baru akan didefinisikan dalam kelas yang turunan MachineController, yaitu StarPressController dan ShellController. Kedua kelas turunan ini mendefinisikan method <em>getQueueMax()</em> dengan cara yang berbeda. Berikut ini adalah diagram kelas yang dimaksudkan :<br />
<div align="center"><img alt="1" height="452" src="http://putrichairina.files.wordpress.com/2009/02/1-1.jpg?w=450&h=452" width="450" /></div>Sampai disini, masih baik-baik saja. <br />
Kemudian pada suatu hari, kita baru menyadari bahwa kita membutuhkan mekanisme (<em>controller</em>) yang berbeda pada untuk proses pengetesan.<br />
Misalkan kita membutuhkan satu tambahan method pada kelas abstrak MachineController, yaitu method <em>overflow().</em> Maka kita akan membuat sebuah kelas baru, kelas abstrak TestController, yang diturunkan dari kelas MachineController.<br />
Sebagai kelas abstark, TestController membutuhkan StarPressController dan ShellController untuk mendefinisikan method abstrak getQueueMax(). Maka bentuk diagram kelas yang kita miliki sekarang adalah :<br />
<div align="center"><img alt="2" height="274" src="http://putrichairina.files.wordpress.com/2009/02/2.jpg?w=450&h=274" width="450" /></div>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.<br />
Keruwetan ini dapat ditangani oleh bridge pattern.<br />
Langkah yang perlu dilakukan adalah :<br />
<ol><li> <div>Buatlah sebuah interface yang berisi method-method abstrak dari superclass (MachineController).</div></li>
<li> <div>Untuk kelas-kelas yang mendefinisikan method abstrak dengan definisi yang berbeda, <del>pindahkan</del> letakkan dibawah interface. (implements)</div></li>
<li> <div>Kelas abstrak MachineController didefinisikan sebagai <em>concrete class</em> .</div></li>
<li> <div>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 <em>inputfull().</em> [Karena inputfull membutuhkan method getQueueMax()] Maka “bentuk” method <em>inputfull()</em> sekarang adalah :</div></li>
</ol><div style="color: white;"><code>public boolean inputfull(){</code><code><br />
return driver.getQueueMax() <= driver.getQueue.getSize();</code><code><br />
}</code></div>Dan diagram kelas kita sekarang adalah :<br />
<div align="center"><img alt="3" height="368" src="http://putrichairina.files.wordpress.com/2009/02/3.jpg?w=443&h=368" width="443" /></div>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.<br />
Inilah bridge pattern yang berhasil memisahkan (decouple) antara abstraksi dengan implementasinya. <br />
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.<br />
<br />
Setelah class diagram di atas, sekarang kita lanjutkan ke penerapannya pada sebuah script PHP seperti di bawah ini :<br style="color: red;" /> <div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>1</code></td><td class="content"><code class="plain"><!--?php</code--></code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>2</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>3</code></td><td class="content"><code class="keyword">abstract</code> <code class="keyword">class</code> <code class="plain">SaklarImplementasi {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>4</code></td><td class="content"><code class="spaces"> </code><code class="keyword">abstract</code> <code class="keyword">function</code> <code class="plain">status_awal(</code><code class="variable">$in_awal</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>5</code></td><td class="content"><code class="spaces"> </code><code class="keyword">abstract</code> <code class="keyword">function</code> <code class="plain">status_akhir(</code><code class="variable">$in_akhir</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>6</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>7</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>8</code></td><td class="content"><code class="keyword">class</code> <code class="plain">SaklarKamar </code><code class="keyword">extends</code> <code class="plain">SaklarImplementasi {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>9</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_awal(</code><code class="variable">$status_awal_in</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>10</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="string">'|||||'</code><code class="plain">.</code><code class="variable">$status_awal_in</code><code class="plain">.</code><code class="string">'|||||'</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>11</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>12</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_akhir(</code><code class="variable">$status_akhir_in</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>13</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="string">'------'</code><code class="plain">.</code><code class="variable">$status_akhir_in</code><code class="plain">.</code><code class="string">'------'</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>14</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>15</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>16</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>17</code></td><td class="content"><code class="keyword">class</code> <code class="plain">SaklarDapur </code><code class="keyword">extends</code> <code class="plain">SaklarImplementasi {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>18</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_awal(</code><code class="variable">$status_awal_in</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>19</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="variable">$status_awal_in</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>20</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>21</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_akhir(</code><code class="variable">$status_akhir_in</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>22</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="functions">strtoupper</code><code class="plain">(</code><code class="variable">$status_akhir_in</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>23</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>24</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>25</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>26</code></td><td class="content"><code class="keyword">class</code> <code class="plain">SaklarGarasi </code><code class="keyword">extends</code> <code class="plain">SaklarImplementasi {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>27</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_awal(</code><code class="variable">$status_awal_in</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>28</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="string">'garasi - '</code><code class="plain">.</code><code class="variable">$status_awal_in</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>29</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>30</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_akhir(</code><code class="variable">$status_akhir_in</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>31</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="string">'garasi - '</code><code class="plain">.</code><code class="functions">strtoupper</code><code class="plain">(</code><code class="variable">$status_akhir_in</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>32</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>33</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>34</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>35</code></td><td class="content"><code class="keyword">abstract</code> <code class="keyword">class</code> <code class="plain">Saklar {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>36</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="variable">$status_awal</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>37</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="variable">$status_akhir</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>38</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="variable">$kode</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>39</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">__construct(</code><code class="variable">$status_awal_in</code><code class="plain">, </code><code class="variable">$status_akhir_in</code><code class="plain">, </code><code class="variable">$kode_in</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>40</code></td><td class="content"><code class="spaces"> </code><code class="variable">$this</code><code class="plain">->status_awal = </code><code class="variable">$status_awal_in</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>41</code></td><td class="content"><code class="spaces"> </code><code class="variable">$this</code><code class="plain">->status_akhir = </code><code class="variable">$status_akhir_in</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>42</code></td><td class="content"><code class="spaces"> </code><code class="keyword">if</code> <code class="plain">(</code><code class="variable">$kode_in</code> <code class="plain">== </code><code class="string">'dapur'</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>43</code></td><td class="content"><code class="spaces"> </code><code class="variable">$this</code><code class="plain">->kode = </code><code class="keyword">new</code> <code class="plain">SaklarDapur();</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>44</code></td><td class="content"><code class="spaces"> </code><code class="plain">} </code><code class="keyword">else</code> <code class="keyword">if</code><code class="plain">(</code><code class="variable">$kode_in</code> <code class="plain">== </code><code class="string">'kamar'</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>45</code></td><td class="content"><code class="spaces"> </code><code class="variable">$this</code><code class="plain">->kode = </code><code class="keyword">new</code> <code class="plain">SaklarKamar();</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>46</code></td><td class="content"><code class="spaces"> </code><code class="plain">} </code><code class="keyword">else</code> <code class="keyword">if</code><code class="plain">(</code><code class="variable">$kode_in</code> <code class="plain">== </code><code class="string">'garasi'</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>47</code></td><td class="content"><code class="spaces"> </code><code class="variable">$this</code><code class="plain">->kode = </code><code class="keyword">new</code> <code class="plain">SaklarGarasi();</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>48</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>49</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>50</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_awal() {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>51</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="variable">$this</code><code class="plain">->kode->status_awal(</code><code class="variable">$this</code><code class="plain">->status_awal);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>52</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>53</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">status_akhir() {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>54</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="variable">$this</code><code class="plain">->kode->status_akhir(</code><code class="variable">$this</code><code class="plain">->status_akhir);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>55</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>56</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>57</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>58</code></td><td class="content"><code class="keyword">class</code> <code class="plain">SaklarHidup </code><code class="keyword">extends</code> <code class="plain">Saklar {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>59</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">hidupkan() {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>60</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="variable">$this</code><code class="plain">->status_awal() . </code><code class="string">" -> "</code> <code class="plain">. </code><code class="variable">$this</code><code class="plain">->status_akhir();</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>61</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>62</code></td><td class="content"><code class="plain">} </code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>63</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>64</code></td><td class="content"><code class="keyword">class</code> <code class="plain">SaklarMati </code><code class="keyword">extends</code> <code class="plain">Saklar {</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>65</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">matikan() {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>66</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="variable">$this</code><code class="plain">->status_akhir() . </code><code class="string">' -> '</code> <code class="plain">. </code><code class="variable">$this</code><code class="plain">->status_awal();</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>67</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>68</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>69</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">'Lampu Kamar, mati -> hidup'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>70</code></td><td class="content"><code class="spaces"> </code><code class="variable">$saklar</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">SaklarHidup(</code><code class="string">'off'</code><code class="plain">,</code><code class="string">'on'</code><code class="plain">,</code><code class="string">'kamar'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>71</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="variable">$saklar</code><code class="plain">->hidupkan());</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>72</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">''</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>73</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>74</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">'Lampu Dapur, mati -> hidup'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>75</code></td><td class="content"><code class="spaces"> </code><code class="variable">$saklar</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">SaklarHidup(</code><code class="string">'off'</code><code class="plain">,</code><code class="string">'on'</code><code class="plain">,</code><code class="string">'dapur'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>76</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="variable">$saklar</code><code class="plain">->hidupkan());</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>77</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">''</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>78</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>79</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">'Lampu Kamar, hidup -> mati'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>80</code></td><td class="content"><code class="spaces"> </code><code class="variable">$saklar</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">SaklarMati(</code><code class="string">'off'</code><code class="plain">,</code><code class="string">'on'</code><code class="plain">,</code><code class="string">'kamar'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>81</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="variable">$saklar</code><code class="plain">->matikan());</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>82</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">''</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>83</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>84</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">'Lampu Dapur, hidup -> mati'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>85</code></td><td class="content"><code class="spaces"> </code><code class="variable">$saklar</code> <code class="plain">= </code><code class="keyword">new</code> <code class="plain">SaklarMati(</code><code class="string">'off'</code><code class="plain">,</code><code class="string">'on'</code><code class="plain">,</code><code class="string">'dapur'</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>86</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="variable">$saklar</code><code class="plain">->matikan());</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>87</code></td><td class="content"><code class="spaces"> </code><code class="plain">cetak(</code><code class="string">''</code><code class="plain">);</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>88</code></td><td class="content"> </td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>89</code></td><td class="content"><code class="spaces"> </code><code class="keyword">function</code> <code class="plain">cetak(</code><code class="variable">$isi</code><code class="plain">) {</code></td></tr>
</tbody></table></div><div class="line alt2" style="color: red;"><table><tbody>
<tr><td class="number"><code>90</code></td><td class="content"><code class="spaces"> </code><code class="functions">echo</code> <code class="variable">$isi</code><code class="plain">.</code><code class="string">"<br />
"</code><code class="plain">;</code></td></tr>
</tbody></table></div><div class="line alt1" style="color: red;"><table><tbody>
<tr><td class="number"><code>91</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><table style="color: red;"><tbody>
<tr><td class="number"><code>92</code></td><td class="content"> <code class="plain">?></code></td></tr>
</tbody></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-25879294912772724772012-07-10T09:35:00.000-07:002012-07-10T09:35:24.140-07:00Strategi Method Pattern<div style="color: #999999;">NIM : 1108100268</div><div style="color: #999999;">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]</div><div style="color: #999999;">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.</div><div style="color: #999999;">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.</div><div style="color: #999999;">Structure :</div><div style="color: #999999;"><img alt="" src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/08/StrategyPatternClassDiagram.svg/400px-StrategyPatternClassDiagram.svg.png" /></div><div style="color: #999999;">Contoh di Java</div><div style="color: #999999;"> <pre><span style="color: red;">// The classes that implement a concrete strategy should implement this.</span>
<span style="color: red;">// The context class uses this to call the concrete strategy.</span>
<span style="color: red;">interface Strategy {</span>
<span style="color: red;"> int execute(int a, int b); </span>
<span style="color: red;">}</span>
<span style="color: red;">// Implements the algorithm using the strategy interface</span>
<span style="color: red;">class ConcreteStrategyAdd implements Strategy {</span>
<span style="color: red;"> public int execute(int a, int b) {</span>
<span style="color: red;"> System.out.println("Called ConcreteStrategyAdd's execute()");</span>
<span style="color: red;"> return a + b; // Do an addition with a and b</span>
<span style="color: red;"> }</span>
<span style="color: red;">}</span>
<span style="color: red;">class ConcreteStrategySubtract implements Strategy {</span>
<span style="color: red;"> public int execute(int a, int b) {</span>
<span style="color: red;"> System.out.println("Called ConcreteStrategySubtract's execute()");</span>
<span style="color: red;"> return a - b; // Do a subtraction with a and b</span>
<span style="color: red;"> }</span>
<span style="color: red;">}</span>
<span style="color: red;">class ConcreteStrategyMultiply implements Strategy {</span>
<span style="color: red;"> public int execute(int a, int b) {</span>
<span style="color: red;"> System.out.println("Called ConcreteStrategyMultiply's execute()");</span>
<span style="color: red;"> return a * b; // Do a multiplication with a and b</span>
<span style="color: red;"> } </span>
<span style="color: red;">}</span>
<span style="color: red;">// Configured with a ConcreteStrategy object and maintains a reference to a Strategy object</span>
<span style="color: red;">class Context {</span>
<span style="color: red;"> private Strategy strategy;</span>
<span style="color: red;"> // Constructor</span>
<span style="color: red;"> public Context(Strategy strategy) {</span>
<span style="color: red;"> this.strategy = strategy;</span>
<span style="color: red;"> }</span>
<span style="color: red;"> public int executeStrategy(int a, int b) {</span>
<span style="color: red;"> return strategy.execute(a, b);</span>
<span style="color: red;"> }</span>
<span style="color: red;">}</span>
<span style="color: red;">// Test application</span>
<span style="color: red;">class StrategyExample {</span>
<span style="color: red;"> public static void main(String[] args) {</span>
<span style="color: red;"> Context context;</span>
<span style="color: red;"> // Three contexts following different strategies</span>
<span style="color: red;"> context = new Context(new ConcreteStrategyAdd());</span>
<span style="color: red;"> int resultA = context.executeStrategy(3,4);</span>
<span style="color: red;"> context = new Context(new ConcreteStrategySubtract());</span>
<span style="color: red;"> int resultB = context.executeStrategy(3,4);</span>
<span style="color: red;"> context = new Context(new ConcreteStrategyMultiply());</span>
<span style="color: red;"> int resultC = context.executeStrategy(3,4);</span>
<span style="color: red;"> }</span>
<span style="color: red;">}</span></pre></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-74372575112319424222012-07-10T09:29:00.000-07:002012-07-10T09:29:23.806-07:00Adapter Pattern<div class="MsoNormal" style="color: white;">Kondisi : </div><div class="MsoNormal" style="color: white;">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)</div><div class="MsoNormal" style="color: white;">* 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.</div><div class="MsoNormal" style="color: white;">Tujuan : </div><div class="MsoNormal" style="color: white;">Mengubah kontrak dari suatu class sehingga dapat memenuhi kontrak dari client.</div><div class="MsoNormal" style="color: white;">Kontrak** di sini adalah behavior yang harus dipunyai oleh suatu class. </div><div class="MsoNormal" style="color: white;">**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.</div><div class="MsoNormal" style="color: white;">Solusi : </div><div class="MsoNormal" style="color: white;">Cara untuk mengatasi hal ini cukup mudah, yaitu tinggal membuat sebuah class baru yang memenuhi kontrak dari client.</div><div class="MsoNormal" style="color: white;">Implementasi : </div><div class="MsoNormal" style="color: white;">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.</div><div class="MsoNormal" style="color: black;"><span style="color: white;">Sebagai contoh kasus, jika kita sudah punya definisi class sebagai berikut (existing classes)</span>.</div><br style="color: black;" /> <pre style="color: black;"><tt class="ln"> <span style="color: red;">1</span></tt><span style="color: red;"> </span><span class="key" style="color: red;">interface</span><span style="color: red;"> Animal </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 2</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> sleep</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 3</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;"> 4</tt>
<tt class="ln" style="color: red;"> 5</tt><span style="color: red;"> </span><span class="key" style="color: red;">class</span><span style="color: red;"> Cat </span><span class="key" style="color: red;">implements</span><span style="color: red;"> Animal </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 6</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> sleep</span><span class="b2" style="color: red;">()</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 7</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"I'm so sleeeepy.. Miauwww"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 8</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"(Trying to find comfy place to sleep)"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 9</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"(Find a place, and put its head on its hand)"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">10</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">11</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">12</tt>
<tt class="ln" style="color: red;">13</tt><span style="color: red;"> </span><span class="key" style="color: red;">class</span><span style="color: red;"> Mouse </span><span class="key" style="color: red;">implements</span><span style="color: red;"> Animal </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">14</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> sleep</span><span class="b2" style="color: red;">()</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">15</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"Soo sleeepy.. cit cit"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">16</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"(Try to find a hole..)"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">17</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"(Can't find one..creating a new one)"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">18</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"Zzz..zzz.z"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">19</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">20</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span></pre><br style="color: black;" /> <div class="MsoNormal" style="color: white;">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.</div><br style="color: black;" /> <pre style="color: black;"><tt class="ln"> <span style="color: red;">1</span></tt><span style="color: red;"> </span><span class="key" style="color: red;">class</span><span style="color: red;"> MovieScene </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 2</tt>
<tt class="ln" style="color: red;"> 3</tt><span style="color: red;"> </span><span class="key" style="color: red;">private</span><span style="color: red;"> List actorList = </span><span class="key" style="color: red;">new</span><span style="color: red;"> ArrayList</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 4</tt>
<tt class="ln" style="color: red;"> 5</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> addActor</span><span class="b2" style="color: red;">(</span><span style="color: red;">Actor actor</span><span class="b2" style="color: red;">)</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 6</tt><span style="color: red;"> </span><span class="key" style="color: red;">this</span><span style="color: red;">.actorList</span><b class="op" style="color: red;">.</b><span style="color: red;">add</span><span class="b2" style="color: red;">(</span><span style="color: red;">actor</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 7</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;"> 8</tt>
<tt class="ln" style="color: red;"> 9</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> playScene</span><span class="b2" style="color: red;">()</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">10</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"--Begin the scene--"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">11</tt>
<tt class="ln" style="color: red;">12</tt><span style="color: red;"> Actor actor;</span>
<tt class="ln" style="color: red;">13</tt><span style="color: red;"> </span><span class="key" style="color: red;">for</span><span style="color: red;"> </span><span class="b2" style="color: red;">(</span><span style="color: red;">Iterator iter = actorList</span><b class="op" style="color: red;">.</b><span style="color: red;">iterator</span><span class="b2" style="color: red;">()</span><span style="color: red;">; iter</span><b class="op" style="color: red;">.</b><span style="color: red;">hasNext</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span><span class="b2" style="color: red;">)</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">14</tt><span style="color: red;"> actor = </span><span class="b2" style="color: red;">(</span><span style="color: red;">Actor</span><span class="b2" style="color: red;">)</span><span style="color: red;"> iter</span><b class="op" style="color: red;">.</b><span style="color: red;">next</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">15</tt><span style="color: red;"> actor</span><b class="op" style="color: red;">.</b><span style="color: red;">act</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">16</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">17</tt>
<tt class="ln" style="color: red;">18</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"--End fo scene--"</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">19</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">20</tt>
<tt class="ln" style="color: red;">21</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">22</tt>
<tt class="ln" style="color: red;">23</tt>
<tt class="ln" style="color: red;">24</tt><span style="color: red;"> </span><span class="key" style="color: red;">interface</span><span style="color: red;"> Actor </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">25</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> act</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">26</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">27</tt>
<tt class="ln" style="color: red;">28</tt><span style="color: red;"> </span><span class="key" style="color: red;">class</span><span style="color: red;"> HumanActor </span><span class="key" style="color: red;">implements</span><span style="color: red;"> Actor </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">29</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> act</span><span class="b2" style="color: red;">()</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">30</tt><span style="color: red;"> System</span><b class="op" style="color: red;">.</b><span style="color: red;">out</span><b class="op" style="color: red;">.</b><span style="color: red;">println</span><span class="b2" style="color: red;">(</span><span class="str" style="color: red;">"I'm an human actor and now doing my scenario script..."</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">31</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">32</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span></pre><span style="color: white;">Kita mempunyai sebuah permasalahan baru, di mana kita harus menggunakan class yang sudah ada sebelumya (Cat) di dalam solusi permasalahan baru kita.</span><br style="color: black;" /> <pre style="color: black;"><tt class="ln"> <span style="color: red;">1</span></tt><span style="color: red;"> </span><span class="key" style="color: red;">class</span><span style="color: red;"> Movie </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 2</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">static</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> main</span><span class="b2" style="color: red;">(</span><span style="color: red;">String</span><span class="b3" style="color: red;">[]</span><span style="color: red;"> args</span><span class="b2" style="color: red;">)</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 3</tt><span style="color: red;"> MovieScene scene = </span><span class="key" style="color: red;">new</span><span style="color: red;"> MovieScene</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 4</tt><span style="color: red;"> Actor bruceWillis = </span><span class="key" style="color: red;">new</span><span style="color: red;"> HumanActor</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 5</tt><span style="color: red;"> </span>
<tt class="ln" style="color: red;"> 6</tt><span style="color: red;"> scene</span><b class="op" style="color: red;">.</b><span style="color: red;">addActor</span><span class="b2" style="color: red;">(</span><span style="color: red;">bruceWillis</span><span class="b2" style="color: red;">)</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 7</tt><span style="color: red;"> </span>
<tt class="ln" style="color: red;"> 8</tt><span style="color: red;"> Cat tom = </span><span class="key" style="color: red;">new</span><span style="color: red;"> Cat</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;"> 9</tt><span style="color: red;"> </span><span class="comm" style="color: red;">// Animal or Cat can't fit into Actor</span>
<tt class="ln" style="color: red;">10</tt><span style="color: red;"> </span><span class="comm" style="color: red;">// so we can't use scene.addActor(Cat cat);</span>
<tt class="ln" style="color: red;">11</tt><span style="color: red;"> </span><span class="comm" style="color: red;">// nor write Actor tom = new Cat() here</span>
<tt class="ln" style="color: red;">12</tt><span style="color: red;"> </span><span class="comm" style="color: red;">// nor using scene.addActor(Animal a); if we declare tom as an Animal</span>
<tt class="ln" style="color: red;">13</tt><span style="color: red;"> </span>
<tt class="ln" style="color: red;">14</tt><span style="color: red;"> scene</span><b class="op" style="color: red;">.</b><span style="color: red;">playScene</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">15</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">16</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span></pre><div class="MsoNormal" style="color: white;">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.</div><br style="color: black;" /> <pre style="color: black;"><tt class="ln"> <span style="color: red;">1</span></tt><span style="color: red;"> </span><span class="key" style="color: red;">class</span><span style="color: red;"> AnimalActor </span><span class="key" style="color: red;">implements</span><span style="color: red;"> Actor</span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 2</tt>
<tt class="ln" style="color: red;"> 3</tt><span style="color: red;"> </span><span class="key" style="color: red;">private</span><span style="color: red;"> Animal animal;</span>
<tt class="ln" style="color: red;"> 4</tt>
<tt class="ln" style="color: red;"> 5</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> AnimalActor</span><span class="b2" style="color: red;">(</span><span style="color: red;">Animal animal</span><span class="b2" style="color: red;">)</span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;"> 6</tt><span style="color: red;"> </span><span class="key" style="color: red;">this</span><span style="color: red;">.animal = animal;</span>
<tt class="ln" style="color: red;"> 7</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;"> 8</tt>
<tt class="ln" style="color: red;"> 9</tt><span style="color: red;"> </span><span class="key" style="color: red;">public</span><span style="color: red;"> </span><span class="key" style="color: red;">void</span><span style="color: red;"> act</span><span class="b2" style="color: red;">()</span><span style="color: red;"> </span><span class="b1" style="color: red;">{</span>
<tt class="ln" style="color: red;">10</tt><span style="color: red;"> animal</span><b class="op" style="color: red;">.</b><span style="color: red;">sleep</span><span class="b2" style="color: red;">()</span><span style="color: red;">;</span>
<tt class="ln" style="color: red;">11</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span>
<tt class="ln" style="color: red;">12</tt>
<tt class="ln" style="color: red;">13</tt><span style="color: red;"> </span><span class="b1" style="color: red;">}</span></pre><div class="MsoNormal" style="color: white;">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.</div><br style="color: black;" /> <pre style="color: red;"><tt class="ln">1</tt> <span class="key">class</span> ActorAdapter <span class="key">implements</span> Actor<span class="b1">{</span>
<tt class="ln">2</tt> <span class="key">public</span> <span class="key">void</span> act<span class="b2">()</span> <span class="b1">{</span>
<tt class="ln">3</tt> <span class="comm">// do nothing..</span>
<tt class="ln">4</tt> <span class="b1">}</span>
<tt class="ln">5</tt> <span class="b1">}</span></pre><div class="MsoNormal" style="color: black;"><span style="color: white;">Sekarang kita bisa menggunakan dua binatang kita untuk ikut serta dalam film.</span> </div><br style="color: black;" /> <pre style="color: red;"><tt class="ln"> 1</tt> <span class="key">class</span> MouseActor <span class="key">extends</span> ActorAdapter<span class="b1">{</span>
<tt class="ln"> 2</tt>
<tt class="ln"> 3</tt> <span class="key">private</span> Mouse mouse;
<tt class="ln"> 4</tt>
<tt class="ln"> 5</tt> <span class="key">public</span> MouseActor<span class="b2">(</span>Mouse mouse<span class="b2">)</span><span class="b1">{</span>
<tt class="ln"> 6</tt> <span class="key">this</span>.mouse = mouse;
<tt class="ln"> 7</tt> <span class="b1">}</span>
<tt class="ln"> 8</tt>
<tt class="ln"> 9</tt> <span class="key">public</span> MouseActor<span class="b2">()</span><span class="b1">{</span>
<tt class="ln">10</tt> mouse<b class="op">.</b>sleep<span class="b2">()</span>;
<tt class="ln">11</tt> <span class="b1">}</span>
<tt class="ln">12</tt>
<tt class="ln">13</tt> <span class="key">public</span> <span class="key">void</span> act<span class="b2">()</span> <span class="b1">{</span>
<tt class="ln">14</tt> <span class="key">super</span>.act<span class="b2">()</span>;
<tt class="ln">15</tt> <span class="b1">}</span>
<tt class="ln">16</tt> <span class="b1">}</span>
<tt class="ln">17</tt>
<tt class="ln">18</tt>
<tt class="ln">19</tt> <span class="key">class</span> Movie <span class="b1">{</span>
<tt class="ln">20</tt> <span class="key">public</span> <span class="key">static</span> <span class="key">void</span> main<span class="b2">(</span>String<span class="b3">[]</span> args<span class="b2">)</span> <span class="b1">{</span>
<tt class="ln">21</tt> MovieScene scene = <span class="key">new</span> MovieScene<span class="b2">()</span>;
<tt class="ln">22</tt> Actor bruceWillis = <span class="key">new</span> HumanActor<span class="b2">()</span>;
<tt class="ln">23</tt>
<tt class="ln">24</tt> Cat tom = <span class="key">new</span> Cat<span class="b2">()</span>;
<tt class="ln">25</tt> Mouse jerry = <span class="key">new</span> Mouse<span class="b2">()</span>;
<tt class="ln">26</tt>
<tt class="ln">27</tt> Actor adaptedTom = <span class="key">new</span> AnimalActor<span class="b2">(</span>tom<span class="b2">)</span>;
<tt class="ln">28</tt> Actor adaptedJerry = <span class="key">new</span> MouseActor<span class="b2">(</span>jerry<span class="b2">)</span>;
<tt class="ln">29</tt>
<tt class="ln">30</tt> scene<b class="op">.</b>addActor<span class="b2">(</span>bruceWillis<span class="b2">)</span>;
<tt class="ln">31</tt> scene<b class="op">.</b>addActor<span class="b2">(</span>adaptedTom<span class="b2">)</span>;
<tt class="ln">32</tt> scene<b class="op">.</b>addActor<span class="b2">(</span>adaptedJerry<span class="b2">)</span>;
<tt class="ln">33</tt>
<tt class="ln">34</tt> <span class="comm">// suppose that we want to create a new type of Actor and add it to the scene</span>
<tt class="ln">35</tt> scene<b class="op">.</b>addActor<span class="b2">(</span><span class="key">new</span> ActorAdapter<span class="b2">()</span><span class="b1">{</span>
<tt class="ln">36</tt> <span class="key">public</span> <span class="key">void</span> act<span class="b2">()</span> <span class="b1">{</span>
<tt class="ln">37</tt> System<b class="op">.</b>out<b class="op">.</b>println<span class="b2">(</span><span class="str">"Simply do nothing.."</span><span class="b2">)</span>;
<tt class="ln">38</tt> <span class="comm">// hey, this looks like how we add an adapter on Swing ;)</span>
<tt class="ln">39</tt> <span class="b1">}</span>
<tt class="ln">40</tt> <span class="b1">}</span><span class="b2">)</span>;
<tt class="ln">41</tt>
<tt class="ln">42</tt> scene<b class="op">.</b>playScene<span class="b2">()</span>;
<tt class="ln">43</tt> <span class="b1">}</span>
<tt class="ln">44</tt> <span class="b1">}</span></pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-38422412525270535332012-07-10T09:18:00.000-07:002012-07-10T09:18:14.872-07:00Composite Pattern<i>composite pattern</i>. Salah satu contoh aplikasi semisal, Microsoft Office Visio memungkinkan pengguna untuk dapat membuat berbagai bentuk semisal kotak, lingkaran, dan sebagainya. Kemudian pengguna dapat melakukan <i>grouping</i> terhadap bentuk-bentuk yang ada dan ketika <i>group</i> tersebut dipindahkan posisinya, otomatis semua <i>shape</i> yang ada dalam group tersebut ikut berpindah posisinya. Pengguna juga dapat melakukan <i>grouping</i> kembali terhadap <i>group shape</i> yang ada dengan <i>shape-shape</i> yang lain sehingga dapat terbentuk semacam hierarki pada <i>shape</i> yang ada. Bentuk-bentuk permasalahan semacam inilah yang dapat diselesaikan dengan <i>Composite Pattern</i>.<br />
<span id="more-552"></span>Sebagai kelanjutan dari postingan <a href="http://tutorialpemrograman.wordpress.com/2010/09/17/pola-dan-arsitektur-perangkat-lunak-strategy-pattern/"><i>Strategy Pattern</i></a>, kali ini program sederhana tersebut akan dikembangkan sehingga program tersebut dapat melakukan grouping terhadap <i>shape</i> kotak, lingkaran dan garis. Langkah-langkah yang harus dilakukan adalah sebagai berikut:<br />
<br />
<ol><li>Buat sebuah <i>class</i> <b>Komposisi</b> yang merupakan <i>group</i> dari <i>shape</i> yang ada</li>
<div class="syntaxhighlighter " id="highlighter_258826"><div class="lines"><div class="line alt1"><table><tbody>
<tr><td class="number"><code>01</code></td><td class="content"><code class="color1">/// </code><summary><code class="color1"></code></summary></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>02</code></td><td class="content"><code class="color1">/// Author: Jeffrey Hermanto Halimsetiawan</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>03</code></td><td class="content"><code class="color1">/// </code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>04</code></td><td class="content"><code class="keyword">public</code> <code class="keyword">class</code> <code class="plain">Komposisi : Shape</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>05</code></td><td class="content"><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>06</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="plain">Point _origin;</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>07</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>08</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="plain">List<shape> _gambar;</shape></code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>09</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>10</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="plain">Point Origin</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>11</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>12</code></td><td class="content"><code class="spaces"> </code><code class="keyword">get</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>13</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>14</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="plain">_origin;</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>15</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>16</code></td><td class="content"><code class="spaces"> </code><code class="keyword">set</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>17</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>18</code></td><td class="content"><code class="spaces"> </code><code class="plain">_origin = value;</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>19</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>20</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>21</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>22</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="plain">Komposisi()</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>23</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>24</code></td><td class="content"><code class="spaces"> </code><code class="plain">_gambar = </code><code class="keyword">new</code> <code class="plain">List<shape>();</shape></code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>25</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>26</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>27</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">void</code> <code class="plain">Add(Shape s)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>28</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>29</code></td><td class="content"><code class="spaces"> </code><code class="plain">_gambar.Add(s);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>30</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>31</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>32</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">void</code> <code class="plain">Remove(Shape s)</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>33</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>34</code></td><td class="content"><code class="spaces"> </code><code class="plain">_gambar.Remove(s);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>35</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>36</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>37</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>38</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>39</code></td><td class="content"><code class="spaces"> </code><code class="keyword">foreach</code> <code class="plain">(Shape s </code><code class="keyword">in</code> <code class="plain">_gambar)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>40</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>41</code></td><td class="content"><code class="spaces"> </code><code class="plain">s.Draw(g, _origin);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>42</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>43</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>44</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>45</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g, Point origin)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>46</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>47</code></td><td class="content"><code class="spaces"> </code><code class="plain">Point newOrigin = </code><code class="keyword">new</code> <code class="plain">Point(origin.X + _origin.X,</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>48</code></td><td class="content"><code class="spaces"> </code><code class="plain">origin.Y + _origin.Y);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>49</code></td><td class="content"><code class="spaces"> </code><code class="keyword">foreach</code> <code class="plain">(Shape s </code><code class="keyword">in</code> <code class="plain">_gambar)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>50</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>51</code></td><td class="content"><code class="spaces"> </code><code class="plain">s.Draw(g, newOrigin);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>52</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>53</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>54</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div></div></div><li>Tambahkan<i> abstract method </i><b>Draw(Graphics g, Point origin) </b>untuk mengatasi penggambaran <b>Komposisi</b> dimana posisi dari shape nya adalah posisi komposisi ditambah dengan posisi relatif shape tersebut terhadap posisi (0,0) Komposisi.</li>
<div class="syntaxhighlighter " id="highlighter_991628"><div class="lines"><div class="line alt1"><table><tbody>
<tr><td class="number"><code>1</code></td><td class="content"><code class="color1">/// </code><summary><code class="color1"></code></summary></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>2</code></td><td class="content"><code class="color1">/// Author: Jeffrey Hermanto Halimsetiawan</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>3</code></td><td class="content"><code class="color1">/// </code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>4</code></td><td class="content"><code class="keyword">public</code> <code class="keyword">abstract</code> <code class="keyword">class</code> <code class="plain">Shape</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>5</code></td><td class="content"><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>6</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">abstract</code> <code class="keyword">void</code> <code class="plain">Draw(Graphics g);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>7</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">abstract</code> <code class="keyword">void</code> <code class="plain">Draw(Graphics g, Point origin);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>8</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div></div></div><li>Implementasikan method <b>Draw(Graphics g, Point origin)</b> pada <b>Kotak</b></li>
<div class="syntaxhighlighter " id="highlighter_613896"><div class="lines"><div class="line alt1"><table><tbody>
<tr><td class="number"><code>01</code></td><td class="content"><code class="color1">/// </code><summary><code class="color1"></code></summary></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>02</code></td><td class="content"><code class="color1">/// Author: Jeffrey Hermanto Halimsetiawan</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>03</code></td><td class="content"><code class="color1">/// </code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>04</code></td><td class="content"><code class="keyword">public</code> <code class="keyword">class</code> <code class="plain">Kotak : Shape</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>05</code></td><td class="content"><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>06</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="plain">Point _kiriAtas;</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>07</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="plain">Point _kananBawah;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>08</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>09</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="plain">Point KananBawah</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>10</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>11</code></td><td class="content"><code class="spaces"> </code><code class="keyword">get</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>12</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>13</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="plain">_kananBawah;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>14</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>15</code></td><td class="content"><code class="spaces"> </code><code class="keyword">set</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>16</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>17</code></td><td class="content"><code class="spaces"> </code><code class="plain">_kananBawah = value;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>18</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>19</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>20</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>21</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="plain">Point KiriAtas</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>22</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>23</code></td><td class="content"><code class="spaces"> </code><code class="keyword">get</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>24</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>25</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="plain">_kiriAtas;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>26</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>27</code></td><td class="content"><code class="spaces"> </code><code class="keyword">set</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>28</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>29</code></td><td class="content"><code class="spaces"> </code><code class="plain">_kiriAtas = value;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>30</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>31</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>32</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>33</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>34</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>35</code></td><td class="content"><code class="spaces"> </code><code class="plain">Draw(g, </code><code class="keyword">new</code> <code class="plain">Point(0, 0));</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>36</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>37</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>38</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g, Point origin)</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>39</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>40</code></td><td class="content"><code class="spaces"> </code><code class="plain">Pen pen = </code><code class="keyword">new</code> <code class="plain">Pen(</code><code class="keyword">new</code> <code class="plain">SolidBrush(Color.Brown));</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>41</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>42</code></td><td class="content"><code class="spaces"> </code><code class="plain">Point t1 = </code><code class="keyword">new</code> <code class="plain">Point(origin.X + _kiriAtas.X,</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>43</code></td><td class="content"><code class="spaces"> </code><code class="plain">origin.Y + _kiriAtas.Y);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>44</code></td><td class="content"><code class="spaces"> </code><code class="plain">Point t2 = </code><code class="keyword">new</code> <code class="plain">Point(origin.X + _kananBawah.X,</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>45</code></td><td class="content"><code class="spaces"> </code><code class="plain">origin.Y + _kananBawah.Y);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>46</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>47</code></td><td class="content"><code class="spaces"> </code><code class="plain">g.DrawRectangle(pen, t1.X,</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>48</code></td><td class="content"><code class="spaces"> </code><code class="plain">t1.Y,</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>49</code></td><td class="content"><code class="spaces"> </code><code class="plain">t2.X - t1.X,</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>50</code></td><td class="content"><code class="spaces"> </code><code class="plain">t2.Y - t1.Y);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>51</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>52</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div></div></div><li>Implementasikan method <b>Draw(Graphics g, Point origin)</b> pada <b>Lingkaran</b></li>
<div class="syntaxhighlighter " id="highlighter_675294"><div class="lines"><div class="line alt1"><table><tbody>
<tr><td class="number"><code>01</code></td><td class="content"><code class="color1">/// </code><summary><code class="color1"></code></summary></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>02</code></td><td class="content"><code class="color1">/// Author: Jeffrey Hermanto Halimsetiawan</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>03</code></td><td class="content"><code class="color1">/// </code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>04</code></td><td class="content"><code class="keyword">public</code> <code class="keyword">class</code> <code class="plain">Lingkaran : Shape</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>05</code></td><td class="content"><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>06</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="plain">Point _pusat;</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>07</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="keyword">int</code> <code class="plain">_radius;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>08</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>09</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="plain">Point Pusat</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>10</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>11</code></td><td class="content"><code class="spaces"> </code><code class="keyword">get</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>12</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>13</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="plain">_pusat;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>14</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>15</code></td><td class="content"><code class="spaces"> </code><code class="keyword">set</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>16</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>17</code></td><td class="content"><code class="spaces"> </code><code class="plain">_pusat = value;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>18</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>19</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>20</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>21</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">int</code> <code class="plain">Radius</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>22</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>23</code></td><td class="content"><code class="spaces"> </code><code class="keyword">get</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>24</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>25</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="plain">_radius;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>26</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>27</code></td><td class="content"><code class="spaces"> </code><code class="keyword">set</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>28</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>29</code></td><td class="content"><code class="spaces"> </code><code class="plain">_radius = value;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>30</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>31</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>32</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>33</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>34</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>35</code></td><td class="content"><code class="spaces"> </code><code class="plain">Draw(g, </code><code class="keyword">new</code> <code class="plain">Point(0, 0));</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>36</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>37</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>38</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g, Point origin)</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>39</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>40</code></td><td class="content"><code class="spaces"> </code><code class="plain">Pen pen = </code><code class="keyword">new</code> <code class="plain">Pen(</code><code class="keyword">new</code> <code class="plain">SolidBrush(Color.DarkGreen));</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>41</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>42</code></td><td class="content"><code class="spaces"> </code><code class="plain">Point tp = </code><code class="keyword">new</code> <code class="plain">Point(origin.X + _pusat.X,</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>43</code></td><td class="content"><code class="spaces"> </code><code class="plain">origin.Y + _pusat.Y);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>44</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>45</code></td><td class="content"><code class="spaces"> </code><code class="plain">g.DrawEllipse(pen, tp.X - _radius,</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>46</code></td><td class="content"><code class="spaces"> </code><code class="plain">tp.Y - _radius,</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>47</code></td><td class="content"><code class="spaces"> </code><code class="plain">_radius * 2,</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>48</code></td><td class="content"><code class="spaces"> </code><code class="plain">_radius * 2);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>49</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>50</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div></div></div><li>Implementasikan method <b>Draw(Graphics g, Point origin)</b> pada <b>Garis</b></li>
<div class="syntaxhighlighter " id="highlighter_958258"><div class="lines"><div class="line alt1"><table><tbody>
<tr><td class="number"><code>01</code></td><td class="content"><code class="color1">/// </code><summary><code class="color1"></code></summary></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>02</code></td><td class="content"><code class="color1">/// Author: Jeffrey Hermanto Halimsetiawan</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>03</code></td><td class="content"><code class="color1">/// </code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>04</code></td><td class="content"><code class="keyword">public</code> <code class="keyword">class</code> <code class="plain">Garis : Shape</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>05</code></td><td class="content"><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>06</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="plain">Point _titik1;</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>07</code></td><td class="content"><code class="spaces"> </code><code class="keyword">private</code> <code class="plain">Point _titik2;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>08</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>09</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="plain">Point Titik1</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>10</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>11</code></td><td class="content"><code class="spaces"> </code><code class="keyword">get</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>12</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>13</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="plain">_titik1;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>14</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>15</code></td><td class="content"><code class="spaces"> </code><code class="keyword">set</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>16</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>17</code></td><td class="content"><code class="spaces"> </code><code class="plain">_titik1 = value;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>18</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>19</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>20</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>21</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="plain">Point Titik2</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>22</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>23</code></td><td class="content"><code class="spaces"> </code><code class="keyword">get</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>24</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>25</code></td><td class="content"><code class="spaces"> </code><code class="keyword">return</code> <code class="plain">_titik2;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>26</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>27</code></td><td class="content"><code class="spaces"> </code><code class="keyword">set</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>28</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>29</code></td><td class="content"><code class="spaces"> </code><code class="plain">_titik2 = value;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>30</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>31</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>32</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>33</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g)</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>34</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>35</code></td><td class="content"><code class="spaces"> </code><code class="plain">Draw(g, </code><code class="keyword">new</code> <code class="plain">Point(0, 0));</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>36</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>37</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>38</code></td><td class="content"><code class="spaces"> </code><code class="keyword">public</code> <code class="keyword">override</code> <code class="keyword">void</code> <code class="plain">Draw(System.Drawing.Graphics g, Point origin)</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>39</code></td><td class="content"><code class="spaces"> </code><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>40</code></td><td class="content"><code class="spaces"> </code><code class="plain">Pen pen = </code><code class="keyword">new</code> <code class="plain">Pen(</code><code class="keyword">new</code> <code class="plain">SolidBrush(Color.Magenta));</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>41</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>42</code></td><td class="content"><code class="spaces"> </code><code class="plain">Point t1 = </code><code class="keyword">new</code> <code class="plain">Point(origin.X + _titik1.X,</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>43</code></td><td class="content"><code class="spaces"> </code><code class="plain">origin.Y + _titik1.Y);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>44</code></td><td class="content"><code class="spaces"> </code><code class="plain">Point t2 = </code><code class="keyword">new</code> <code class="plain">Point(origin.X + _titik2.X,</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>45</code></td><td class="content"><code class="spaces"> </code><code class="plain">origin.Y + _titik2.Y);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>46</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>47</code></td><td class="content"><code class="spaces"> </code><code class="plain">g.DrawLine(pen, t1, t2);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>48</code></td><td class="content"><code class="spaces"> </code><code class="plain">}</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>49</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div></div></div><li>Mengubah inisialisasi Shape yang ada pada <i>method</i> <b>InitializeShape()</b> dengan memanfaatkan <i>class</i> <b>Komposisi</b></li>
<div class="syntaxhighlighter " id="highlighter_294381"><div class="lines"><div class="line alt1"><table><tbody>
<tr><td class="number"><code>01</code></td><td class="content"><code class="color1">/// </code><summary><code class="color1"></code></summary></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>02</code></td><td class="content"><code class="color1">/// Author: Jeffrey Hermanto Halimsetiawan</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>03</code></td><td class="content"><code class="color1">/// Untuk melakukan inisialisasi shape yang ada</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>04</code></td><td class="content"><code class="color1">/// </code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>05</code></td><td class="content"><code class="keyword">private</code> <code class="keyword">void</code> <code class="plain">InitializeShape()</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>06</code></td><td class="content"><code class="plain">{</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>07</code></td><td class="content"><code class="spaces"> </code><code class="plain">Komposisi kp = </code><code class="keyword">new</code> <code class="plain">Komposisi();</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>08</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp.Origin = </code><code class="keyword">new</code> <code class="plain">Point(500, 100);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>09</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>10</code></td><td class="content"><code class="spaces"> </code><code class="plain">Kotak k = </code><code class="keyword">new</code> <code class="plain">Kotak();</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>11</code></td><td class="content"><code class="spaces"> </code><code class="plain">k.KiriAtas = </code><code class="keyword">new</code> <code class="plain">Point(10, 10);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>12</code></td><td class="content"><code class="spaces"> </code><code class="plain">k.KananBawah = </code><code class="keyword">new</code> <code class="plain">Point(110, 110);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>13</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp.Add(k);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>14</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>15</code></td><td class="content"><code class="spaces"> </code><code class="plain">Lingkaran l = </code><code class="keyword">new</code> <code class="plain">Lingkaran();</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>16</code></td><td class="content"><code class="spaces"> </code><code class="plain">l.Pusat = </code><code class="keyword">new</code> <code class="plain">Point(60, 60);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>17</code></td><td class="content"><code class="spaces"> </code><code class="plain">l.Radius = 30;</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>18</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp.Add(l);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>19</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>20</code></td><td class="content"><code class="spaces"> </code><code class="plain">Garis g = </code><code class="keyword">new</code> <code class="plain">Garis();</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>21</code></td><td class="content"><code class="spaces"> </code><code class="plain">g.Titik1 = </code><code class="keyword">new</code> <code class="plain">Point(81, 39);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>22</code></td><td class="content"><code class="spaces"> </code><code class="plain">g.Titik2 = </code><code class="keyword">new</code> <code class="plain">Point(39, 81);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>23</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp.Add(g);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>24</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>25</code></td><td class="content"><code class="spaces"> </code><code class="plain">Komposisi kp2 = </code><code class="keyword">new</code> <code class="plain">Komposisi();</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>26</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp2.Origin = </code><code class="keyword">new</code> <code class="plain">Point(10, 200);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>27</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp2.Add(k);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>28</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp2.Add(l);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>29</code></td><td class="content"><code class="spaces"> </code><code class="plain">kp2.Add(g);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>30</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>31</code></td><td class="content"><code class="spaces"> </code><code class="plain">_gambar.Add(kp);</code></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>32</code></td><td class="content"><code class="spaces"> </code><code class="plain">_gambar.Add(kp2);</code></td></tr>
</tbody></table></div><div class="line alt1"><table><tbody>
<tr><td class="number"><code>33</code></td><td class="content"></td></tr>
</tbody></table></div><div class="line alt2"><table><tbody>
<tr><td class="number"><code>34</code></td><td class="content"><code class="plain">}</code></td></tr>
</tbody></table></div></div></div></ol>Secara umum, class diagram dari program ini adalah sebagai berikut:<br />
<div class="wp-caption aligncenter" id="attachment_554" style="width: 310px;"><a href="http://tutorialpemrograman.files.wordpress.com/2010/09/classdiagramsimplecomposite.jpg"><img alt="Class Diagram Simple Composite" class="size-medium wp-image-554" height="166" src="http://tutorialpemrograman.files.wordpress.com/2010/09/classdiagramsimplecomposite.jpg?w=300&h=166" title="Class Diagram Simple Composite" width="300" /></a><br />
<div class="wp-caption-text">Class Diagram Simple Composite</div></div>Output dari program di atas adalah sebagai berikut:<br />
<div class="wp-caption aligncenter" id="attachment_555" style="width: 310px;"><a href="http://tutorialpemrograman.files.wordpress.com/2010/09/outputsimplecomposite.jpg"><img alt="Output Simple Composite" class="size-medium wp-image-555" height="145" src="http://tutorialpemrograman.files.wordpress.com/2010/09/outputsimplecomposite.jpg?w=300&h=145" title="Output Simple Composite" width="300" /></a><br />
<div class="wp-caption-text">Output Simple Composite</div></div>Tentunya, <i>pattern</i> ini akan sangat berguna sekali dalam menyelesaikan permasalahan yang hierarkial.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-34944704642403508682012-07-10T09:09:00.000-07:002012-07-10T09:09:54.668-07:00Facade PatternNIM : 1108100268<br />
Facade adalah interface dimana aplikasi dapat menggunakannya untuk melakukan sesuatu tanpa mengkhawatirkan mengenai detail-detail yang terlibat. Façade memisahkan layer-layer yang terlibat sehingga layer-layer tersebut tidak bergantung satu sama lainnya dimana membuat masing-masing layer dapat dengan mudah untuk dikembangkan, mudah untuk digunakan, dan mempertimbangkan untuk menggunakan code re-use. .<br />
Bagaimanapun juga, façade dapat menjadi sangat kompleks untuk subsistem yang sangat besar. Untuk itu, perlu ditambahkan abstract façade diatas façade yang telah ada. Salah satu contoh yang umum adalah dengan menggunakan pattern melalui webservice, dimana membuat webservice berperilaku sebagai façade atau interface terhadap banyak dll yang berbeda yang masing-masing merepresentasikan suatu subsistem tertentu.Kelas dan/atau objek yang berpartisipasi pada façade adalah:<br />
<br />
<ol start="1"><li>Façade (misal. MortgageApplication) Mengetahui kelas-kelas subsistem yang bertanggung jawab terhadap permintaan</li>
<li>Mendelegasikan permintaan dari klien kepada objek subsistem yang bersesuaian</li>
<li>Kelas subsistem (misal. Bank, Credit, Loan)</li>
<li>Mengimplementasikan fungsionalitas dari subsiste</li>
<li>Menangani pekerjaan yang diberikan oleh objek façade</li>
<li>Tidak mempunyai pengetahuan mengenai façade dan tidak peduli dengan reference</li>
</ol>mengenai hal ini<br />
<b>---- TUJUAN FACADE PATTERN-----</b><br />
Untuk menyediakan unifikasi interface pada sekumpulan interface yang terdapat pada sebuah subsystem, dimana façade akan mendefiniskan interface tingkatan yang lebih tinggi sehingga subsystem lebih mudadigunakan dengan menguraikan system kedalam subsystem untuk mengatasi kompleksitas sebuah system.<br />
<b>Transaksi ATM :</b><br />
Dari pengertian di atas kami mengambil contoh Bank tetapi hanya pada bagian transfer rekening. Di dalam proses rekening seorang client menginputkan card ATM ke dalam mesin (Card reader) sehingga mesin tersebut akan membaca card ATM tersebut. Kemudian client melakukan login dengan memasukkan PIN. Setelah itu melakukan transaksi, termasuk ada pilihan antara transfer dan penarikan atau lainnya. karena tujuannya hanya melakukan transfer rekening maka setelah mentransfer ke rekening tujuan, setelah itu lakukan proses bukti transfer atau cetak resi dari sistem.<br />
<b>Alasan menggunakan Façade pattern ?</b><br />
Alasan kenapa Aplikasi transfer ATM menggunakan façade pattern, karena dapat menguraikan kompleksitas sistem transaksi ATM ke dalam sub system yang lebih mudah implementasikan.<br />
<b>Façade Pattern</b><br />
<a href="http://basdatlanjutinsan.files.wordpress.com/2012/01/31.jpg"><img alt="" class="aligncenter size-full wp-image-67" height="305" src="http://basdatlanjutinsan.files.wordpress.com/2012/01/31.jpg?w=510&h=305" title="3" width="510" /></a><br />
Facade ATM diatas mempunyai 5 subsystem, yaitu client, printer, card reader, login, transaksi. di dalam subsystem transaksi memiliki subsystem lagi yatu menu transfer dan menu penarikan. masing – masing subsystem memiliki methode sesuai fungsingnya seperti yang sudah dijelaskan pada gambar di atas.<br />
<b>Class Diagram</b><br />
<a href="http://basdatlanjutinsan.files.wordpress.com/2012/01/41.jpg"><img alt="" class="aligncenter size-full wp-image-68" height="354" src="http://basdatlanjutinsan.files.wordpress.com/2012/01/41.jpg?w=510&h=354" title="4" width="510" /></a><br />
- <b>Usecase</b><br />
<a href="http://basdatlanjutinsan.files.wordpress.com/2012/01/22.jpg"><img alt="" class="aligncenter size-full wp-image-69" src="http://basdatlanjutinsan.files.wordpress.com/2012/01/22.jpg?w=510" title="2" /></a><br />
<b>Activity Diagram</b><br />
<a href="http://basdatlanjutinsan.files.wordpress.com/2012/01/51.jpg"><img alt="" class="aligncenter size-full wp-image-70" src="http://basdatlanjutinsan.files.wordpress.com/2012/01/51.jpg?w=510" title="5" /></a><b></b><br />
<b>Sequence diagram</b><br />
<br />
<a href="http://basdatlanjutinsan.files.wordpress.com/2012/01/61.jpg"><img alt="" class="aligncenter size-full wp-image-71" src="http://basdatlanjutinsan.files.wordpress.com/2012/01/61.jpg?w=510" title="6" /></a><br />
<br />
package login;<br />
import java.util.*;<br />
<div style="color: red;">public class Login</div><div style="color: red;">{</div><div style="color: red;"> private ArrayList loginHistory;</div><div style="color: red;">public Login(String newLogin) throws Exception<br />
{</div><div style="color: red;">loginHistory = new ArrayList();<br />
set(newLogin);<br />
}</div><div style="color: red;">public void set(String login) throws Exception<br />
{<br />
boolean loginAdded = true;</div><div style="color: red;">login = login.trim();</div><div style="color: red;">loginAdded = loginHistory.add(login);<br />
}<br />
}//end of Login class</div><div style="color: red;">/**<br />
* @(#)Message.java<br />
*<br />
*<br />
* @author<br />
* @version 1.00 2011/1/5<br />
*/<br />
package login;<br />
import javax.swing.JOptionPane;</div><div style="color: red;">public abstract class Message {<br />
public Message() {<br />
}<br />
public void pesanku(){<br />
}</div><div style="color: red;">}</div><div style="color: red;">class Message2 extends Message{<br />
public Message2(){<br />
}<br />
public void pesanku(){<br />
JOptionPane.showMessageDialog(null,”SELAMAT DATANG DI PROGRAM KAMI \n\n PROGRAM INI DI BUAT OLEH”,”PROGRAM LOGIN”,JOptionPane.INFORMATION_MESSAGE);<br />
}<br />
}</div><div style="color: red;">public class Message2{<br />
public Message2(){<br />
}<br />
public void pesanku(){<br />
JOptionPane.showMessageDialog(null,”DAYAT”,”OLEH”,JOptionPane.INFORMATION_MESSAGE);<br />
}<br />
}</div><div style="color: red;">package login;<br />
import login.*;</div><div style="color: red;">import javax.swing.*;<br />
import java.awt.*;<br />
import java.awt.event.*;</div><div style="color: red;">public class LoginDemo<br />
{<br />
public static void main(String[] argv)<br />
{<br />
int width = 300;<br />
int height = 200;<br />
Message2 data=new Message2();<br />
data.pesanku();<br />
final demoFrame f = new demoFrame(“Program Login”);</div><div style="color: red;">f.pack();<br />
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />
f.setSize(width, height);<br />
f.centerOnScreen(width, height);<br />
f.setVisible(true);<br />
}<br />
}//end class LoginDemo</div><div style="color: red;">class demoFrame extends JFrame implements ActionListener<br />
{<br />
Login login = null;<br />
String userName;<br />
String Password;<br />
Integer counter = 0;</div><div style="color: red;">JTextField userNameField;<br />
JTextField PasswordField;</div><div style="color: red;">JTextField userCountField;<br />
JButton jbtLogOn, jbtLogOff, jbtExit;</div><div style="color: red;">public demoFrame(String title)<br />
{<br />
super(title);</div><div style="color: red;">JLabel label1 = new JLabel(“Username: “);<br />
userNameField = new JTextField(10);<br />
JLabel label2 = new JLabel (“Password : “);<br />
PasswordField = new JTextField(10);<br />
JLabel label3 = new JLabel(“Number of Users: “);<br />
userCountField = new JTextField(5);<br />
userCountField.setEditable(false);</div><div style="color: red;">jbtLogOn = new JButton(“Login”);<br />
jbtLogOff = new JButton(“Logoff”);<br />
jbtExit = new JButton(“Exit”);<br />
jbtLogOn.addActionListener(this);<br />
jbtLogOff.addActionListener(this);<br />
jbtExit.addActionListener(this);</div><div style="color: red;">JPanel userPanel = new JPanel(new BorderLayout (10,10));<br />
userPanel.add(label1, BorderLayout.WEST);<br />
userPanel.add(userNameField, BorderLayout.EAST);</div><div style="color: red;">JPanel userPanel2 = new JPanel(new BorderLayout (10,10));<br />
userPanel2.add(label2, BorderLayout.WEST);<br />
userPanel2.add(PasswordField, BorderLayout.EAST);</div><div style="color: red;">JPanel buttonPanel = new JPanel(new FlowLayout());<br />
buttonPanel.add(jbtLogOn);<br />
buttonPanel.add(jbtLogOff);<br />
buttonPanel.add(jbtExit);</div><div style="color: red;">JPanel userCountPanel = new JPanel(new BorderLayout(10,10));<br />
userCountPanel.add(label3, BorderLayout.WEST);<br />
userCountPanel.add(userCountField, BorderLayout.EAST);</div><div style="color: red;">JPanel contentPanel = new JPanel(new FlowLayout());<br />
contentPanel.add(userPanel);<br />
contentPanel.add(userPanel2);<br />
contentPanel.add(userCountPanel);<br />
contentPanel.add(buttonPanel);<br />
setContentPane(contentPanel);</div><div style="color: red;">InputMap map;<br />
map = jbtLogOn.getInputMap();<br />
if (map != null)<br />
{<br />
map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0,false), “pressed”);<br />
map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0,true), “release”);<br />
}<br />
map = jbtLogOff.getInputMap();<br />
if (map != null)<br />
{<br />
map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0,false), “pressed”);<br />
map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0,true), “release”);<br />
}<br />
}</div><div style="color: red;">public void centerOnScreen(int width, int height)<br />
{<br />
int top, left, x, y;</div><div style="color: red;">Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();</div><div style="color: red;">x = (screenSize.width – width)/2;<br />
y = (screenSize.height – height)/2;<br />
top = (x < 0) ? 0 : x;<br />
left = (y < 0) ? 0 : y;</div><div style="color: red;">this.setLocation(top, left);<br />
}<br />
CobaSleep pesan = new CobaSleep();<br />
public void actionPerformed(ActionEvent e)<br />
{<br />
try<br />
{<br />
if(e.getSource() == jbtLogOn)<br />
{<br />
userName = new String(userNameField.getText());<br />
login = new Login(userName);<br />
userNameField.requestFocus();<br />
counter++;<br />
userCountField.setText(counter.toString());</div><div style="color: red;">String user=”"; String pass=”";</div><div style="color: red;">user = userNameField.getText();<br />
pass = PasswordField.getText();</div><div style="color: red;">if ((user.equals(“Hidayat”)) && (pass.equals(“dayat”))) {<br />
pesan.tampil();<br />
} else if ((user.equals(“OKI”)) && (pass.equals(“ok”))) {<br />
pesan.tampil();<br />
}else if ((user.equals(“Adel”)) && (pass.equals(“adel”))) {<br />
pesan.tampil();<br />
} else {<br />
JOptionPane.showMessageDialog(null, “Username and password dosn’t match!”);<br />
userNameField.setText(“hai”);<br />
PasswordField.setText(“”);<br />
System.out.println(“”+user+pass);</div><div style="color: red;">}<br />
}</div><div style="color: red;">if(e.getSource() == jbtLogOff)<br />
{<br />
userNameField.setText(“”);<br />
userNameField.requestFocus();<br />
if(counter != 0)<br />
{<br />
counter–;<br />
userCountField.setText(counter.toString());<br />
}<br />
else<br />
{<br />
JOptionPane.showMessageDialog(this, “No username yet logged in”, “Invalid userName. Try Again.”, JOptionPane.ERROR_MESSAGE);<br />
}<br />
}<br />
if (e.getSource() == jbtExit)<br />
{<br />
JOptionPane.showMessageDialog(null,”Thanks to try my program. See you..”);<br />
System.exit(0);<br />
}<br />
}<br />
catch (NullPointerException ex)<br />
{<br />
JOptionPane.showMessageDialog(this, “No username yet logged in”, “Invalid userName. Try Again.”, JOptionPane.ERROR_MESSAGE);<br />
}<br />
catch (Exception ex)<br />
{<br />
JOptionPane.showMessageDialog(this, ex.getMessage(), “Invalid username. Try again.”, JOptionPane.ERROR_MESSAGE);<br />
}<br />
}<br />
}//end class demoFrame</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-2524363207753684162012-07-10T09:02:00.000-07:002012-07-10T09:02:10.891-07:00Temlplate paternNIM : 1108100268<br />
salah satu metoda didalamnya adalah template pattern butuh waktu khusus (bertapa di gua sampai brewokan) diriku untuk bener-bener memahami konsepsi dan filosofinya yang lumayan mak-nyooosss…sebetulnya design pattern untuk memahami konsepsi dan filosofi keseluruhannya juga Top Markotop Mak-nyooos (pak bondan,red)..tapi insya Allah klu sudah mengerti konsepnya kesananya jadi sedikit mudah kok (sedikit mudah, banyak sulitnya..wekekeke).<br />
singkat kata berikut adalah contoh Source Code sederhana metoda Template Pattern yang saya tulis menggunakan java :<br />
/*<br />
contoh template pattern<br />
author m42h31<br />
param none<br />
<div style="color: red;">*/</div><div style="color: red;">public abstract class Motor{</div><div style="color: red;">protected String noPol;</div><div style="color: red;">protected static String merek,model;</div><div style="color: red;">protected final static int A1=100,A2=10;</div><div style="color: red;">protected final static int B1=1000,B2=100;</div><div style="color: red;">protected String warna=”Black”;</div><div style="color: red;">protected String jenisPembayaran=”Tunai”;</div><div style="color: red;">private static float bbm=0.06f;</div><div style="color: red;">private static int jml=0;</div><div style="color: red;">private static int tahun=2004;</div><div style="color: red;">private static int cc=A1;</div><div style="color: red;">private static int hargaPokok;</div><div style="color: red;">private static int bunga;</div><div style="color: red;">protected static int hargaBayar;</div><div style="color: red;">public Motor(){}</div><div style="color: red;">public Motor(String np,String mrk,String mdl){</div><div style="color: red;">noPol=np;</div><div style="color: red;">merek=mrk;</div><div style="color: red;">model=mdl;</div><div style="color: red;">jml++;</div><div style="color: red;">}</div><div style="color: red;">public void tahunPertama(){</div><div style="color: red;">System.out.println(“Tahun Produksi :”+tahun+”,Jumlah Motor : “+jml);</div><div style="color: red;">System.out.println(“=============================”);</div><div style="color: red;">}</div><div style="color: red;">public void nextTahun(){</div><div style="color: red;">hargaPokok+=100;</div><div style="color: red;">tahun++;</div><div style="color: red;">tahunPertama();</div><div style="color: red;">}</div><div style="color: red;">public void head(){</div><div style="color: red;">System.out.println(“Nomer Polisi : “+getNoPol());</div><div style="color: red;">System.out.println(“Merek : “+getMerek());</div><div style="color: red;">System.out.println(“Model : “+getModel());</div><div style="color: red;">System.out.println(“Warna : “+getWarna());</div><div style="color: red;">System.out.println(“JenisPembayaran : “+jenisPembayaran);</div><div style="color: red;">}</div><div style="color: red;">public abstract void harga();</div><div style="color: red;">public void tail(){</div><div style="color: red;">System.out.println(“BBM : “+bbm+” liter/km”);</div><div style="color: red;">System.out.println(“Besaran CC : “+cc+” cc”);</div><div style="color: red;">System.out.println(“============================”);</div><div style="color: red;">}</div><div style="color: red;">public void cetak(){</div><div style="color: red;">head();</div><div style="color: red;">harga();</div><div style="color: red;">tail();</div><div style="color: red;">}</div><div style="color: red;">public static void tambahCc(){</div><div style="color: red;">cc+=A2;</div><div style="color: red;">bbm-=0.01f;</div><div style="color: red;">hargaPokok+=500;</div><div style="color: red;">}</div><div style="color: red;">public void setWarna(String wr){</div><div style="color: red;">warna=wr;</div><div style="color: red;">}</div><div style="color: red;">public void setJenisPembayaran(String jp){</div><div style="color: red;">jenisPembayaran=jp;</div><div style="color: red;">}</div><div style="color: red;">public void setHargaPokok(int hp){</div><div style="color: red;">hargaPokok=hp;</div><div style="color: red;">}</div><div style="color: red;">public void setBunga(int bg){</div><div style="color: red;">bunga=bg;</div><div style="color: red;">}</div><div style="color: red;">public int getHargaPokok(){</div><div style="color: red;">return hargaPokok;</div><div style="color: red;">}</div><div style="color: red;">public int getBunga(){</div><div style="color: red;">return bunga;</div><div style="color: red;">}</div><div style="color: red;">public int getHargaBayar(){</div><div style="color: red;">return hargaBayar=hargaPokok+bunga;</div><div style="color: red;">}</div><div style="color: red;">public String getNoPol(){</div><div style="color: red;">return noPol;</div><div style="color: red;">}</div><div style="color: red;">public String getMerek(){</div><div style="color: red;">return merek;</div><div style="color: red;">}</div><div style="color: red;">public String getModel(){</div><div style="color: red;">return model;</div><div style="color: red;">}</div><div style="color: red;">public String getWarna(){</div><div style="color: red;">return warna;</div><div style="color: red;">}</div><div style="color: red;">}</div><div style="color: red;">public class Tunai extends Motor{</div><div style="color: red;">public Tunai(String np,String mrk,String mdl){</div><div style="color: red;">super(np,mrk,mdl);</div><div style="color: red;">}</div><div style="color: red;">public String getNopol(){</div><div style="color: red;">return noPol;</div><div style="color: red;">}</div><div style="color: red;">public String getMerek(){</div><div style="color: red;">return merek;</div><div style="color: red;">}</div><div style="color: red;">public String getModel(){</div><div style="color: red;">return model;</div><div style="color: red;">}</div><div style="color: red;">public void harga(){</div><div style="color: red;">System.out.println(“Harga Pokok : “+getHargaPokok());</div><div style="color: red;">System.out.println(“Harga Bayar : “+getHargaBayar());</div><div style="color: red;">}</div><div style="color: red;">}</div><div style="color: red;">public class Kredit extends Motor{</div><div style="color: red;">public Kredit(Tunai tun){</div><div style="color: red;">noPol=tun.getNoPol();</div><div style="color: red;">merek=tun.getMerek();</div><div style="color: red;">model=tun.getModel();</div><div style="color: red;">warna=tun.getWarna();</div><div style="color: red;">setBunga(B2);</div><div style="color: red;">tun.hargaBayar=getHargaPokok()+getBunga();</div><div style="color: red;">setJenisPembayaran(“Kredit”);</div><div style="color: red;">}</div><div style="color: red;">public void harga(){</div><div style="color: red;">System.out.println(“Harga Pokok : “+getHargaPokok());</div><div style="color: red;">System.out.println(“Bunga :”+getBunga());</div><div style="color: red;">System.out.println(“Harga Bayar : “+getHargaBayar());</div><div style="color: red;">}</div><div style="color: red;">}</div><div style="color: red;">class testMotor{</div><div style="color: red;">public static void main(String []args){</div><div style="color: red;">Tunai vg=new Tunai(“D3154FA”,”Yamaha”,”Vega”);</div><div style="color: red;">vg.setHargaPokok(10000);</div><div style="color: red;">vg.setWarna(“biru”);</div><div style="color: red;">vg.tahunPertama();</div><div style="color: red;">vg.cetak();</div><div style="color: red;">vg.nextTahun();</div><div style="color: red;">vg.tambahCc();</div><div style="color: red;">vg.cetak();</div><div style="color: red;">Tunai sp=new Tunai(“D4353GD”,”Honda”,”Supra”);</div><div style="color: red;">sp.setHargaPokok(14000);</div><div style="color: red;">sp.setWarna(“merah”);</div><div style="color: red;">sp.tahunPertama();</div><div style="color: red;">sp.cetak();</div><div style="color: red;">Kredit spk=new Kredit(sp);</div><div style="color: red;">spk.cetak();</div><div style="color: red;">spk.tambahCc();</div><div style="color: red;">spk.cetak();</div><div style="color: red;">spk.nextTahun();</div><div style="color: red;">spk.tambahCc();</div><div style="color: red;">spk.cetak();</div><div style="color: red;">}</div><div style="color: red;">}</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-69663974635653444072012-05-11T09:35:00.000-07:002012-05-11T09:35:30.709-07:00Prototype patternNim :1108100268 <br><br />
Prototype pattern<br />
Sebuah prototype pattern adalah sebuah design pattern kreatif yang digunakan dalam pengembangan perangkat lunak. Jenis object untuk membuat object baru ditentukan oleh prototype contoh. Object di kloning untuk menghasilkan object baru.<br />
Pattern ini digunakan untuk:<br />
<br />
* menghindari subclass dari object kreator dalam aplikasi klien, tidak seperti abstract factory pattern.<br />
* menghindari biaya yang melekat (inherent cost) dari object baru yang dibuat sesuai standar (misalnya, dengan menggunakan keyword 'new'), saat biaya itu cukup mahal untuk aplikasi tertentu.<br />
<br />
Untuk mengimplementasikan pattern, deklarasikan sebuah abstract base class yang menentukan sebuah pure virtual clone () method. Setiap class yang memerlukan sebuah “polymorphic constructor”, maka kemampuan itu berasal dari class abstract base dirinya sendiri, dan mengimplementasikan operasi clone ().<br />
Klien, bukanya menulis kode yang meminta operator "new" pada sebuah hard-coded class name, memanggil method clone () pada prototipe, memanggil sebuah factory method dengan sebuah parameter tertentu yang menunjuk particular concrete kelas turunan yang diinginkan, atau mengacu pada method clone () melalui beberapa mekanisme yang disediakan oleh design pattern lain.<br />
Contoh<br />
Prototype Pattern menentukan jenis object untuk membuat sebuah prototype contoh. Prototipe produk baru sering dibangun sebelum memproduksi masal, tetapi dalam contoh ini, prototype adalah pasif dan tidak berpartisipasi dalam menyalin diri sendiri. Pembelahan mitosis sel - berakibat dua sel identik, dan ini adalah contoh dari prototipe yang memainkan peran aktif dalam menyalin dirinya sendiri dan hal ini menunjukkan Prototype pattern. Ketika sebuah sel membelah diri, maka dua sel yang identik hasil genotype akan tercipta. Dengan kata lain, sel tersebut meng-klon dirinya sendiri. [Michael Duell, "Non-software examples of software design patterns", Object Magazine, Jul 97, p54].<br />
Java<br />
<br />
/**<br />
<br />
* Prototype Class<br />
<br />
*/<br />
<br />
public class Cookie implements Cloneable {<br />
<br />
<br />
<br />
@Override<br />
<br />
public Cookie clone() throws CloneNotSupportedException {<br />
<br />
// call Object.clone()<br />
<br />
Cookie copy = (Cookie) super.clone();<br />
<br />
<br />
<br />
//In an actual implementation of this pattern you might now change references to<br />
<br />
//the expensive to produce parts from the copies that are held inside the prototype.<br />
<br />
<br />
<br />
return copy;<br />
<br />
}<br />
<br />
}<br />
<br />
/**<br />
<br />
* Concrete Prototypes to clone<br />
<br />
*/<br />
<br />
public class CoconutCookie extends Cookie { }<br />
<br />
/**<br />
<br />
* Client Class<br />
<br />
*/<br />
<br />
public class CookieMachine {<br />
<br />
<br />
<br />
private Cookie cookie; // Could have been a private Cloneable cookie.<br />
<br />
<br />
<br />
public CookieMachine(Cookie cookie) {<br />
<br />
this.cookie = cookie;<br />
<br />
}<br />
<br />
<br />
<br />
public Cookie makeCookie() {<br />
<br />
return (Cookie) this.cookie.clone();<br />
<br />
}<br />
<br />
<br />
<br />
public static void main(String args[]) {<br />
<br />
Cookie tempCookie = null;<br />
<br />
Cookie prot = new CoconutCookie();<br />
<br />
CookieMachine cm = new CookieMachine(prot);<br />
<br />
for (int i = 0; i < 100; i++)<br />
<br />
tempCookie = cm.makeCookie();<br />
<br />
}<br />
<br />
}<br />
<br />
Python<br />
<br />
import copy<br />
<br />
<br />
<br />
#<br />
<br />
# Prototype Class<br />
<br />
#<br />
<br />
class Cookie:<br />
<br />
def __init__(self, name):<br />
<br />
self.name = name<br />
<br />
<br />
<br />
def clone(self):<br />
<br />
return copy.deepcopy(self)<br />
<br />
<br />
<br />
#<br />
<br />
# Concrete Prototypes to clone<br />
<br />
#<br />
<br />
class CoconutCookie(Cookie):<br />
<br />
def __init__(self):<br />
<br />
Cookie.__init__(self, 'Coconut')<br />
<br />
<br />
<br />
# Client Class<br />
<br />
class CookieMachine:<br />
<br />
def __init__(self, cookie):<br />
<br />
self.cookie = cookie<br />
<br />
<br />
<br />
def make_cookie(self):<br />
<br />
return self.cookie.clone()<br />
<br />
<br />
<br />
if __name__ == '__main__':<br />
<br />
prot = CoconutCookie()<br />
<br />
cm = CookieMachine(prot)<br />
<br />
for i in xrange(10):<br />
<br />
temp_cookie = cm.make_cookie()<br />
<br />
Aturan yang perlu diperhatikan<br />
Kadang-kadang creational patterns tumpang tindih - ada kasus-kasus ketika baik Prototype atau Abstract Factory akan sesuai. Di lain waktu mereka saling melengkapi satu sama lain: Abstract Factory mungkin menyimpan set Prototype dari yang untuk mengkloning dan produk kembali object (GOF, p126). Abstract Factory, Builder, dan Prototipe dapat menggunakan Singleton dalam implementasi. (GoF, p81, 134). (GOF, p81, 134). Abstract Factory classes sering dilaksanakan dengan Metode Pabrik (penciptaan melalui pewarisan), tetapi mereka dapat diimplementasikan dengan menggunakan Prototype (ciptaan melalui delegasi). (GoF, p95) (GOF, p95)<br />
Sering kali, desain awal dengan menggunakan Metode Pabrik (kurang rumit, lebih disesuaikan, subclass berkembang biak) dan berkembang ke arah Abstract Factory, Prototype, atau Builder (lebih fleksibel, lebih kompleks) sebagai perancang menemukan di mana fleksibilitas lebih dibutuhkan. (GoF, p136) (GOF, p136)<br />
Prototype tidak memerlukan subclassing, tapi itu tidak memerlukan sebuah "initialize" operasi. Metode factory memerlukan subclassing, tapi tidak memerlukan inisialisasi. (GoF, p116) (GOF, p116)<br />
Desain yang membuat penggunaan berat Composite dan decorator pattern sering dapat memperoleh manfaat dari Prototype juga. (GoF, p126) (GOF, p126)<br />
Rule of thumb bisa jadi Anda akan perlu untuk mengkloning () sebuah Object ketika Anda ingin membuat Object lain pada saat runtime yang merupakan sebuah true copy Object kloning Anda. True copy berarti seluruh atribut yang baru dibuat harus Object yang sama dengan Object yang Anda kloning. Jika Anda bisa instantiated class dengan menggunakan bukan baru, Anda akan mendapatkan Object dengan semua atribut sebagai nilai awal. Sebagai contoh, jika Anda merancang suatu sistem untuk melakukan transaksi rekening bank, maka Anda akan ingin untuk membuat salinan dari Object yang memegang informasi account Anda, melakukan transaksi di atasnya, dan kemudian mengganti Object asli dengan yang diubah satu. Dalam kasus tersebut, Anda akan ingin menggunakan clone () bukan baru.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-53874434392714116232012-05-11T09:30:00.001-07:002012-05-11T09:31:37.592-07:00Builder PaternNim :1108100268 <br><br />
Query Builder Patern menyediakan cara berorientasi objek dalam menulis statement SQL. Fitur ini membantu pengembang untuk menggunakan property dan method kelas untuk menentukan bagian-bagian dari statement SQL yang kemudian menggabungkannya menjasi sebuah statement SQL yang valid yang bisa dieksekusi lebih lanjut oleh method DAO seperti yang dideskripsikan di <a href="http://www.yiiframework.com/doc/guide/1.1/id/database.dao">Data Access</a> Objects. Berikut akan ditampilkan penggunaan umum dari Query Builder untuk membangun sebuah statement SQL SELECT:<br />
<br />
$user = Yii::app()->db->createCommand()<br />
->select('id, username, profile')<br />
->from('tbl_user u')<br />
->join('tbl_profile p', 'u.id=p.user_id')<br />
->where('id=:id', array(':id'=>$id))<br />
->queryRow();<br />
<br />
<br />
<br />
Query Builder sangat cocok digunakan ketika Anda memerlukan menggabungkan sebuah statement SQL secara prosedural, atau berdasarkan suatu kondisi logis dalam aplikasi Anda. Manfaat utama dalam menggunakan Query Builder termasuk:<br />
<br />
* Memungkinkan membangun statement SQL yang kompleks secara programatik<br />
* Fitur ini akan memberikan quote pada nama table dan kolom secara otomatis guna mencegah konflik dengan tulisan SQL ataupun karakter khusus.<br />
* Fitur ini juga memberikan quote pada nilai parameter dan melakukan binding pada parameter ketika memungkinkan, sehingga mengurangi resiko terserang SQL injection.<br />
* Fitur ini menyediakan sekian tingkatan abstraksi pada DB, yang menyederhanakan migrasi ke platform DB yang berbeda.<br />
<br />
Menggunakan Query Builder bukanlah sebuah keharusan. Bahkan, jika query Anda cukup sederhana, akan leih gampang dan cepat menulis SQL-nya langsung.<br />
<br />
Catatan: Query builder tidak bisa digunakan untuk memodifikasi query yang sudah ada sebagai statement SQL. Misalnya, code berikut tidak akan berjalan:<br />
<br />
$command = Yii::app()->db->createCommand('SELECT * FROM tbl_user');<br />
// baris berikut tidak akan menambahkan WHERE ke klausa SQL di atas.<br />
$command->where('id=:id', array(':id'=>$id));<br />
<br />
Oleh karena itu, jangan campur penggunaan SQL biasa dengan query builder.<br />
<br />
1. Mempersiapkan Query Builder<br />
Query Builder Yii disediakan oleh CDbCommand, kelas query DB utama di Data Access Objects.<br />
Untuk menggunakan Query Builder, kita membuat sebuah instance baru dari CDbCommand dengan cara berikut,<br />
<br />
$command = Yii::app()->db->createCommand();<br />
<br />
Begitulah, kita menggunakan Yii::app()->db untuk mendapatkan koneksi DB, kemudian melakukan pemanggilanpada CDbConnection::createCommand() untuk membuat instance command yang diperlukan.<br />
Perhatikan bahwa alih-alih kita mem-pass semua statement SQL ke createCommand() seperti yang dilakukan di Data Access Objects, kita membiarkannya kosong. Ini dikarenakan kita akan membangun bagian-bagian individu dari statement SQL dengan menggunakan method Query Builder yang akan dijelaskan pada bagian berikut.<br />
<br />
Berikut, Rudi akan menunjukkan bagaimana menggunakan method-method query builder ini. Supaya sederhana, kami mengasumsi database yang digunakan adalah MySQL. Perhatikan bahwa jika Anda menggunakan DBMS yang lain, quote table/kolom/nilai akan berbeda dengan contoh.<br />
select()<br />
<br />
function select($columns='*')<br />
<br />
Method select() menentukan bagian SELECT pada query. Parameter $columns menentukan kolom-kolom apa saja yang akan di-select, yang bisa berupa string dengan nama kolom dipisah koma, atau sebuah array dari nama kolom. Nama kolom dapat berisi prefiks table dan/atau alias kolom. Method ini akan secara otomatis memberikan quote pada nama kolom kecuali kolom tersebut mengandung tanda kurung (yang bararti kolom yang diberikan merupakan ekspresi DB).<br />
Berikut ini merupakan beberapa contoh:<br />
<br />
// SELECT *<br />
select()<br />
// SELECT `id`, `username`<br />
select('id, username')<br />
// SELECT `tbl_user`.`id`, `username` AS `name`<br />
select('tbl_user.id, username as name')<br />
// SELECT `id`, `username`<br />
select(array('id', 'username'))<br />
// SELECT `id`, count(*) as num<br />
select(array('id', 'count(*) as num'))<br />
<br />
selectDistinct()<br />
<br />
function selectDistinct($columns)<br />
<br />
Method selectDistinct() mirip dengan select(). Hanya saja selectDistinct mengaktifkan flag DISTINCT. Misalnya, selectDistinct(id,username')` akan menghasilkan SQL berikut:<br />
<br />
SELECT DISTINCT `id`, `username`<br />
<br />
from()<br />
<br />
function from($tables)<br />
<br />
Method from() menentukan bagian FROM pada query. Parameter $tables menentukan table mana yang akan di-select. Yang ini juga bisa berupa string dengan nama table dipisahkan dengan koma, atau sebuah array dari nama table. Nama table dapat diambil dari prefiks skema (misalnya public.tbl_user) dan/atau alias table (misalnya tbl_user u). Method ini akan secara otomatis memberikan quote pada nama table kecuali nama table-nya mengandung huruf kurung (yang artinya berupa sub-query atau ekspresi DB).<br />
Berikut merupakan beberapa contoh:<br />
<br />
// FROM `tbl_user`<br />
from('tbl_user')<br />
// FROM `tbl_user` `u`, `public`.`tbl_profile` `p`<br />
from('tbl_user u, public.tbl_profile p')<br />
// FROM `tbl_user`, `tbl_profile`<br />
from(array('tbl_user', 'tbl_profile'))<br />
// FROM `tbl_user`, (select * from tbl_profile) p<br />
from(array('tbl_user', '(select * from tbl_profile) p'))<br />
<br />
where()<br />
<br />
function where($conditions, $params=array())<br />
<br />
Method where() menetapkan bagian WHERE pada query. Parameter $conditions menentukan kondisi query sedangkan $params menentukan parameter yang diikat pada keseluruhan query. Parameter $conditions dapat berupa sebuah string (misalnya id=1) atau sebuah array dengan format:<br />
<br />
array(operator, operand1, operand2, ...)<br />
<br />
dengan operatordapat bisa berupa :<br />
<br />
* and: operan harus digabung dengan menggunakan AND. Misalnya array('and', 'id=1', 'id=2') akan menghasilkan id=1 AND id=2. Jika operan adalah array, maka akan diubah menjadi string dengan menggunakan aturan yang sama. Misalnya array('and', 'type=1', array('or', 'id=1', 'id=2')) akan menghasilkan type=1 AND (id=1 OR id=2). Method ini tidak akan memberikan quote ataupun escape character.<br />
* or: mirip dengan operator and hanya saja operan-operan akan digabung dengan OR.<br />
* in: Operan satu harus berupa kolom atau ekspresi DB, dan operan 2 harus berupa array yang merepresentasikan kumpulan nilai yang harus dipenuhi oleh kolom atau ekspresi DB. Misalnya array('in', 'id', array(1,2,3)) akan menghasilkan id IN (1,2,3). Method ini akan memberikan quote pada nama kolom dan nilai escape di dalam range.<br />
* not in: mirip dengan operator in kecuali tulisan IN akan diubah dengan NOT IN di dalam kondisi yang di-generate.<br />
* like: operan 1 harus berupa kolom atau ekspresi DB, dan operan 2 harus berupa string atau sebuah array yang mewakili range dari nilai-nilai di kolom atau ekspresi DB yang mirip. Misalnya, array('like', 'name', '%tester%') akan menghasilkan name LIKE '%tester%'. Ketika range nilai diberikan sebagai array, maka beberapa predikat LIKE akan di-generate dan digabungkan dengan menggunakan AND. Misalnya array('like', 'name', array('%test%', '%sample%')) akan menghasilkan name LIKE '%test%' AND name LIKE '%sample%'. Method ini akan memberikan quote pada nama kolom dan nilai escape pada range nilai.<br />
* not like: mirip dengan operator like kecuali tulisan LIKE akan diganti dengan NOT LIKE pada kondisi yang dihasilkan.<br />
* or like: mirip dengan operator like hanya saja tulisan OR yang digunakan untuk menggabungkan beberapa predikat LIKE.<br />
* or not like: mirip dengan operator not like kecuali OR yang digunakan untuk menggabungkan predikat NOT LIKE.<br />
<br />
Berikut merupakan beberapa contoh yang menggunakan where:<br />
<br />
// WHERE id=1 or id=2<br />
where('id=1 or id=2')<br />
// WHERE id=:id1 or id=:id2<br />
where('id=:id1 or id=:id2', array(':id1'=>1, ':id2'=>2))<br />
// WHERE id=1 OR id=2<br />
where(array('or', 'id=1', 'id=2'))<br />
// WHERE id=1 AND (type=2 OR type=3)<br />
where(array('and', 'id=1', array('or', 'type=2', 'type=3')))<br />
// WHERE `id` IN (1, 2)<br />
where(array('in', 'id', array(1, 2))<br />
// WHERE `id` NOT IN (1, 2)<br />
where(array('not in', 'id', array(1,2)))<br />
// WHERE `name` LIKE '%Qiang%'<br />
where(array('like', 'name', '%Qiang%'))<br />
// WHERE `name` LIKE '%Qiang' AND `name` LIKE '%Xue'<br />
where(array('like', 'name', array('%Qiang', '%Xue')))<br />
// WHERE `name` LIKE '%Qiang' OR `name` LIKE '%Xue'<br />
where(array('or like', 'name', array('%Qiang', '%Xue')))<br />
// WHERE `name` NOT LIKE '%Qiang%'<br />
where(array('not like', 'name', '%Qiang%'))<br />
// WHERE `name` NOT LIKE '%Qiang%' OR `name` NOT LIKE '%Xue%'<br />
where(array('or not like', 'name', array('%Qiang%', '%Xue%')))<br />
<br />
Perhatikan bahwa ketika menggunakan operator like, kita harus menentukan karakter wildcard secara eksplisit (seperti % dan _) . JIka polanya berasal dari input user, maka kita harus menggunakan code berikut untuk escape karakter spesial guna menghindarinya dianggap sebagai wildcard:<br />
<br />
$keyword=$_GET['q'];<br />
// escape % and _ characters<br />
$keyword=strtr($keyword, array('%'=>'\%', '_'=>'\_'));<br />
$command->where(array('like', 'title', '%'.$keyword.'%'));<br />
<br />
order()<br />
<br />
function order($columns)<br />
<br />
Method order() menentukan bagian ORDER BY pada query. Parameter $columns menentukan kolom-kolom yang diurutkan. Dapat berupa sebuah string dengan kolom yang dipisahkan koma dan arah pengurutan (ASC atau DESC), atau sebuah array dari kolom dan arah pengurutan. Nama kolom dapat mengandung prefiks table. Method ini akan memberikan quote pada nama kolom secara otomatis kecuali kolom tersebut mengandung tanda kurung (yang berarti kolom tersebut merupakan ekspresi DB).<br />
Berikut merupakan beberapa contohnya:<br />
<br />
// ORDER BY `name`, `id` DESC<br />
order('name, id desc')<br />
// ORDER BY `tbl_profile`.`name`, `id` DESC<br />
order(array('tbl_profile.name', 'id desc'))<br />
<br />
limit() dan offset()<br />
<br />
function limit($limit, $offset=null)<br />
function offset($offset)<br />
<br />
Method limit() dan offset() menentukan bagian OFFSET dan LIMIT pada query. Perhatikan bahwa beberapa DBMS mungkin tidak mendukung sintaks LIMIT dan OFFSET. Pada kasus tersebut, Query Builder akan menulis ulang seluruh statement SQL untuk mensimulasi fungsi limit dan offset.<br />
Berikut merupakan beberapa contoh:<br />
<br />
// LIMIT 10<br />
limit(10)<br />
// LIMIT 10 OFFSET 20<br />
limit(10, 20)<br />
// OFFSET 20<br />
offset(20)<br />
<br />
join() dan varian-variannya<br />
<br />
function join($table, $conditions, $params=array())<br />
function leftJoin($table, $conditions, $params=array())<br />
function rightJoin($table, $conditions, $params=array())<br />
function crossJoin($table)<br />
function naturalJoin($table)<br />
<br />
Method join() dan varian-variannya menentukan bagaimana melakukan join dengan table lain dengan menggunakan INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN, atau NATURAL JOIN. Parameter $table menentukan table mana yang akan dijoin. Nama table akan mengandung prefiks skema dan /atau alias. Method ini akan memberikan quote pada nama table kecuali kolom tersebut mengandung tanda kurung yang artinya bis berupa ekspresi DB atau sub-query. Parameter $conditions menentukan kondisi join. Sintaksnya sama dengan where(). Dan $params menentukan parameter yang diikat pada keseluruhan query.<br />
Perhatikan bahwa tidak seperti method query builder lainnya, setiap pemanggilan method join akan ditambahkan di belakang sebelumnya.<br />
Berikut merupakan beberapa contohnya.<br />
<br />
// JOIN `tbl_profile` ON user_id=id<br />
join('tbl_profile', 'user_id=id')<br />
// LEFT JOIN `pub`.`tbl_profile` `p` ON p.user_id=id AND type=1<br />
leftJoin('pub.tbl_profile p', 'p.user_id=id AND type=:type', array(':type'=>1))<br />
<br />
group()<br />
<br />
function group($columns)<br />
<br />
Method group() menetapkan bagian GROUP BY pada query. Parameter $columns menentukan kolom-kolom yang dikelompokkan. Bisa berupa string yang berisi kolom dipisah koma, atau sebuah array dari kolom. Nama kolom bisa didapatkan pada prefiks table. Method ini akan secara otomatis memberikan quote pada nama kolom kecuali terdapat sebuah kolom yang mengandung tanda kurung (yang artinya kolom tersebut merupakan ekspresi DB).<br />
Berikut beberapa contoh:<br />
<br />
// GROUP BY `name`, `id`<br />
group('name, id')<br />
// GROUP BY `tbl_profile`.`name`, `id`<br />
group(array('tbl_profile.name', 'id')<br />
<br />
having()<br />
<br />
function having($conditions, $params=array())<br />
<br />
Method having() menetapkan bagian HAVING pada query. Penggunaannya sama dengan where().<br />
Berikut contoh-contohnya:<br />
<br />
// HAVING id=1 or id=2<br />
having('id=1 or id=2')<br />
// HAVING id=1 OR id=2<br />
having(array('or', 'id=1', 'id=2'))<br />
<br />
union()<br />
<br />
function union($sql)<br />
<br />
Method union() menentukan bagian UNION pada query. Method ini akan menambahkan $sql ke SQL yang sudah ada dengan menggunakan operator UNION. Memanggil union() beberapa kali akan menambahkan berkali-kali SQL-SQL-nya ke belakang SQL yang sudah ada.<br />
Contoh:<br />
<br />
// UNION (select * from tbl_profile)<br />
union('select * from tbl_profile')<br />
<br />
Menjalankan Query<br />
Setelah melakukan pemanggilan method query builder di atas, kita dapat memanggil method DAO seperti yang dijelaskan pada Data Access Objects untuk mengeksekusi query. Misalnya, kita dapat memanggil CDbCommand::queryRow() untuk mendapatkan sebaris hasil atau CDbCommand::queryAll() untuk mendapatkan seluruhnya sekaligus. Berikut beberapa contohnya :<br />
<br />
$users = Yii::app()->db->createCommand()<br />
->select('*')<br />
->from('tbl_user')<br />
->queryAll();<br />
<br />
Mengambil SQL-SQL<br />
Selain menjalankan query yang dibuat oleh Query Builder, kita juga dapat menarik statement SQL bersangkutan. Untuk melakukannya gunakan fungsi CDbCommand::getText().<br />
<br />
$sql = Yii::app()->db->createCommand()<br />
->select('*')<br />
->from('tbl_user')<br />
->text;<br />
<br />
Jika terdapat parameter tertentu yang terikat pada query, mereka dapat diambil melalui properti CDbCommand::params.<br />
Sintaks Alternatif untuk Membentuk Query<br />
Kadangkala, menggunakan method chaining bukanlah pilihan yang tepat. Query Builder Yii memungkinkan kita untuk membuat query dengan menggunakan assignment property object yang sederhana. Pada umumnya, untuk setiap method query builder, terdapat sebuah property yang memiliki nama yang sama. Meng-assign nilai ke property sama saja dengan memanggil method tersebut. Misalnya, berikut merupakan dua statement yang ekuivalen, dengan asumsi $command adalah objek CDbCommand:<br />
<br />
$command->select(array('id', 'username'));<br />
$command->select = array('id', 'username');<br />
<br />
Selain itu, method CDbConnection::createCommand() dapat menerima array sebagai parameter. Pasangan nama-nilai di array akan digunakan untuk inisialisasi property instance CDbCommand yang dibuat. Ini artinya, kita dapat menggunakan code berikut untuk membuat sebuah query:<br />
<br />
$row = Yii::app()->db->createCommand(array(<br />
'select' => array('id', 'username'),<br />
'from' => 'tbl_user',<br />
'where' => 'id=:id',<br />
'params' => array(':id'=>1),<br />
))->queryRow();<br />
<br />
Membangun Beberapa Query<br />
Sebuah instance CDbCommand dapat dipakai ulang beberapa kali untuk membuat beberapa query. Namun, sebelum membuat query baru, harus memanggil method CDbCommand::reset() terlebih dahulu untuk menghapus query sebelumnya. Misalnya:<br />
<br />
$command = Yii::app()->db->createCommand();<br />
$users = $command->select('*')->from('tbl_users')->queryAll();<br />
$command->reset(); // clean up the previous query<br />
$posts = $command->select('*')->from('tbl_posts')->queryAll();<br />
<br />
3. Membuat Query Manipulasi Data<br />
Query manipulasi data adalah statement SQL untuk melakukan insert, update dan delete data dalam table database. Query builder menyediakan insert, update dan delete untuk tiap query tersebut. Tidak seperti method query SELECT yang dijelaskan di atas, setiap method query manipulasi data ini akan membuat sebuah statement SQL lengkap dan langsung menjalankannya.<br />
<br />
* insert(): menyisipkan sebaris ke table<br />
* update(): melakukan update data pada sebuah table<br />
* delete(): menghapus data dari table<br />
<br />
Di bawah ini kami akan memaparkan method-method query manipulasi data<br />
insert()<br />
<br />
function insert($table, $columns)<br />
<br />
Method insert() membuat dan menjalankan statement SQL INSERT. Parameter $table menentukan table yang mana yang disisipkan, sedangkan $columns merupakan sebuah array dengan pasangan nama-nilai yang menjelaskan nilai-nilai kolom yang akan disisipkan. Method tersebut akan memberikan quote pada nama table dan akan menggunakan parameter-binding untuk nilai yang dimasukkan.<br />
Berikut merupakan contohnya:<br />
<br />
// buat dan jalankan SQL berikut :<br />
// INSERT INTO `tbl_user` (`name`, `email`) VALUES (:name, :email)<br />
$command->insert('tbl_user', array(<br />
'name'=>'Tester',<br />
'email'=>'tester@example.com',<br />
));<br />
<br />
update()<br />
<br />
function update($table, $columns, $conditions='', $params=array())<br />
<br />
Method update() akan membuat dan mengeksekusi statement UPDATE SQL. Parameter $table menentukan table mana yang akan di-update; $columns adalah sebuah array dengan pasangan nama-nilai yang menentukan nilai kolom yang akan di-update; $conditions dan $params mirip dengan where(), yang akan menetapkan klausa WHERE dalam statement UPDATE. Method ini akan memberikan quote pada nama dan menggunakan parameter-binding untuk nilai yang di-update.<br />
Berikut merupakan contohnya:<br />
<br />
// buat dan jalankan SQL berikut:<br />
// UPDATE `tbl_user` SET `name`=:name WHERE id=:id<br />
$command->update('tbl_user', array(<br />
'name'=>'Tester',<br />
), 'id=:id', array(':id'=>1));<br />
<br />
delete()<br />
<br />
function delete($table, $conditions='', $params=array())<br />
<br />
Method delete() membuat dan menjalankan statement SQL DELETE. Parameter $table menentukan table yang mana yang akan dihapus; $conditions dan $params mirip dengan where(), yakni menentukan WHERE di dalam statement DELETE. Method ini akan memberikan quote pada nama.<br />
Berikut salah satu contoh:<br />
<br />
//buat dan eksekusi SQL berikut:<br />
// DELETE FROM `tbl_user` WHERE id=:id<br />
$command->delete('tbl_user', 'id=:id', array(':id'=>1));<br />
<br />
4. Membuat Query Manipulasi Schema<br />
Selain query manipulasi dan penarikan normal, query builder juga menyediakan sekumpulan method yang digunakan untuk membuat dan menjalankan query SQL untuk manipulasi schema pada database. Query builder mendukung query-query berikut:<br />
<br />
* createTable(): membuat table<br />
* renameTable(): mengubah nama table<br />
* dropTable(): drop (menghapus) table<br />
* truncateTable(): mengosongkan table<br />
* addColumn(): menambahkan sebuah kolom table<br />
* renameColumn(): mengubah nama kolom table<br />
* alterColumn(): mengubah sebuah kolom table<br />
* dropColumn(): me-drop (hapus) kolom table<br />
* createIndex(): membuat index<br />
* dropIndex(): me-drop (hapus) index<br />
<br />
Info: Walaupun statement SQL yang digunakan untuk manipulasi database schema sangat berbeda di antara DBMS, query builder mencoba menyediakan sebuah interface yang seragam untuk membuat query-query ini. Ini akan memudahkan proses migrasi database dari satu DBMS ke yang lainnya.<br />
<br />
Tipe Data Abstrak<br />
Query builder memperkenalkan sekumpulan tipe data abstrak yang dapat digunakan untuk mendefinisikan kolom table. Tidak seperti tipe data physical yang spesifik pada DBMS tertentu dan cukup berbeda di DBMS lainnya, tipe data abstrak bebas dari DBMS. Ketika tipe data abstrak digunakan untuk mendefinisikan kolom table, query builder akan mengubahnya menjadi tipe data physical bersangkutan.<br />
Berikut tipe data abstrak yang didukung oleh query builder.<br />
<br />
* pk: sebuah jenis primary key generik, akan diubah menjadi int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY pada MySQL;<br />
* string: jenis string, akan diubah menjadi varchar(255) pada MySQL;<br />
* text: jenis teks (string panjang), akan diubah menjadi text pada MySQL<br />
* integer: jenis integer, akan diubah menjadi int(11) pada MySQL;<br />
* float: tipe angka floating, akan diubah menjadi float pada MySQL;<br />
* decimal: tipe angka desimal, akan diubah menjadi decimal pada MySQL;<br />
* datetime: tipe waktu tanggal, akan diubah menjadi datetime pada MySQL;<br />
* timestamp: tipe timestamp, akan diubah menjadi timestamp pada MySQL;<br />
* time: tipe waktu, akan diubah menjadi time pada MySQL;<br />
* date: tipe tanggal, akan diubah menjadi date pada MySQL;<br />
* binary: tipe data biner, akan diubah menjadi blob pada MySQL;<br />
* boolean: tipe boolean, akan diubah menjadi tinyint(1) pada MySQL;<br />
* money: tipe mata uang, akan diubah menjadi decimal(19,4) pada MySQL. Tipe ini sudah ada semenjak versi 1.1.8.<br />
<br />
createTable()<br />
<br />
function createTable($table, $columns, $options=null)<br />
<br />
Method createTable() akan membuat dan menjalankan statement SQL untuk menghasilkan sebuah table. Parameter $table akan menentukan nama dari table yang dibuat. Parameter $columns menentukan kolom-kolom pada table baru. Kolom-kolom ini harus diberikan dalam bentuk pasangan nama-definisi (misalnya 'username'=>'string'). Parameter $options menentukan pecahan SQL ekstra yang harus ditambahkan pada SQL yang dihasilkan. Query builder akan memberikan quote pada nama table dan nama kolom.<br />
Ketika menentukan definisi sebuah kolom, kita dapat menggunakan tipe data abstrak seperti yang sudah dijelaskan di atas. Query builder akan mengubah tipe data abstrak tersebut menjadi tipe data physical bersangkuta, sesuai dengan DBMS yang digunakan. Misalnya, string akan diubah menjadi varchar(255) pada MySQL.<br />
Sebuah definisi kolom juga bisa mengandung tipe data non-abstrak atau spesifikasi. Definisi kolom ini akan dmasukkan juga ke dalam SQL tanpa perubahan. Misalnya point bukanlah tipe data abstrak, dan jika digunakan di definisi kolom, maka akan keluar demikian pada SQL; dan string NOT NULL akan diubah menjadi varchar(255) NOT NULL (hanya tipe abstrak string yang diubah).<br />
Berikut contoh bagaimana membuat sebuah table:<br />
<br />
// CREATE TABLE `tbl_user` (<br />
// `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />
// `username` varchar(255) NOT NULL,<br />
// `location` point<br />
// ) ENGINE=InnoDB<br />
createTable('tbl_user', array(<br />
'id' => 'pk',<br />
'username' => 'string NOT NULL',<br />
'location' => 'point',<br />
), 'ENGINE=InnoDB')<br />
<br />
renameTable()<br />
<br />
function renameTable($table, $newName)<br />
<br />
Method renameTable() membuat dan menjalankan statement SQL untuk mengubah nama table. Parameter $table menentukan nama dari table yang akan di-rename. Parameter $newName menentukan nama baru dari table. Query builder akan memberikan quote pada nama table.<br />
Berikut contoh bagaimana melakukan perubahan nama pada table :<br />
<br />
// RENAME TABLE `tbl_users` TO `tbl_user`<br />
renameTable('tbl_users', 'tbl_user')<br />
<br />
dropTable()<br />
<br />
function dropTable($table)<br />
<br />
Method dropTable() membuat dan menjalankan statement SQL untuk menghapus sebuah table. Parameter $table menentukan nama table yang akan di-drop (hapus). Query builder akan memberikan quote pada nama table.<br />
Berikut contoh bagaimana menghapus sebuah table:<br />
<br />
// DROP TABLE `tbl_user`<br />
dropTable('tbl_user')<br />
<br />
truncateTable<br />
<br />
function truncateTable($table)<br />
<br />
Method truncateTable() membuat dan menjalankan statement SQL untuk menghapus sebuah table. Parameter $table menentukan nama table yang ingin dikosongkan. Query builder akan memberikan quote pada nama table.<br />
Berikut contoh bagaimana mengosongkan table:<br />
<br />
// TRUNCATE TABLE `tbl_user`<br />
truncateTable('tbl_user')<br />
<br />
addColumn()<br />
<br />
function addColumn($table, $column, $type)<br />
<br />
Method addColumn() membuat dan menjalankan statement SQL untuk menambah kolom table baru. Parameter $table menentukan nama dari table yang akan ditambahkan kolom baru. Parameter $column akan menentukan nama dari kolom baru. Dan $type menentukan definisi kolom baru. Definisi kolom dapat mengandung tipe data abstrak, seperti yang dijelaskan pada sub-bagian "createTable" sebelumnya. Query builder akan memberikan quote pada nama table termasuk nama kolom.<br />
Berikut contoh menambah sebuah kolom table:<br />
<br />
// ALTER TABLE `tbl_user` ADD `email` varchar(255) NOT NULL<br />
addColumn('tbl_user', 'email', 'string NOT NULL')<br />
<br />
dropColumn()<br />
<br />
function dropColumn($table, $column)<br />
<br />
Method dropColumn() membuat dan menjalankan statement SQL untuk menghapus kolom table. Parameter $table menentukan nama dari table yang kolomnnya akan dihapus. Parameter $column menentukan nama dari kolom yang akan dihapus. Query builder akan memberikan quote pada nama table termasuk nama kolom.<br />
Berikut contoh bagaimana menghapus sebuah kolom table:<br />
<br />
// ALTER TABLE `tbl_user` DROP COLUMN `location`<br />
dropColumn('tbl_user', 'location')<br />
<br />
renameColumn()<br />
<br />
function renameColumn($table, $name, $newName)<br />
<br />
Method renameColumn() membuat dan mengeksekusi statement SQL untuk mengubah nama kolom table. Parameter $table menentukan nama table yang nama kolomnya akan diubah. Parameter $name menentukan nama kolom yang lama. Dan $newName menentukan nama kolom baru. Query builder akan memberikan quote pada nama table termasuk pada nama kolom.<br />
Berikut contoh mengubah nama kolom table:<br />
<br />
// ALTER TABLE `tbl_users` CHANGE `name` `username` varchar(255) NOT NULL<br />
renameColumn('tbl_user', 'name', 'username')<br />
<br />
alterColumn()<br />
<br />
function alterColumn($table, $column, $type)<br />
<br />
Method alterColumn() membuat dan menjalankan statement SQL untuk mengubah kolom table. Parameter $table menentukan nama table yang kolomnya akan diubah. Parameter $column menentukan nama kolom yang akan diubah. Dan $type menentukan definisi baru pada kolom. Definisi kolom dapat mengandung tipe data abstrak, seperti yang sudah dijelaskan pada sub-bagian "createTable". Query builder akan memberikan quote pada nama table dan nama kolom.<br />
Berikut contoh mengubah kolom table:<br />
<br />
// ALTER TABLE `tbl_user` CHANGE `username` `username` varchar(255) NOT NULL<br />
alterColumn('tbl_user', 'username', 'string NOT NULL')<br />
<br />
addForeignKey()<br />
<br />
function addForeignKey($name, $table, $columns,<br />
$refTable, $refColumns, $delete=null, $update=null)<br />
<br />
Method addForeignKey() akan membuat dan menjalankan statement SQL untuk menambahkan foreign key constraint pada sebuah table. Parameter $name menentukan nama foreign key. Parameter $table dan $columns menentukan nama table dan nama kolom yang akan ditetapkan sebagai foreign key. JIka lebih dari satu kolom, maka bisa dipisahkan dengan menggunakan koma. Parameter $refTable dan $refColumns menentukan nama dan kolom table yang akan menjadi reference foreign key. Parameter $delete dan $update menentukan opsi ON DELETE dan ON UPDATE dalam statement SQL. Kebanyakan DBMS mendukung opsi ini:RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL. Query builder akan memberikan quote pada nama table, nama index dan nama kolom.<br />
Berikut contoh menambah foreign key constraint,<br />
<br />
// ALTER TABLE `tbl_profile` ADD CONSTRAINT `fk_profile_user_id`<br />
// FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`id`)<br />
// ON DELETE CASCADE ON UPDATE CASCADE<br />
addForeignKey('fk_profile_user_id', 'tbl_profile', 'user_id',<br />
'tbl_user', 'id', 'CASCADE', 'CASCADE')<br />
<br />
dropForeignKey()<br />
<br />
function dropForeignKey($name, $table)<br />
<br />
Method dropForeignKey() membuat dan menjalankan statement SQL untuk menghapus sebuah foreign key constraint. Parameter $name menentukan nama dari foreign key constraint yang akan dihapus. Parameter $table menentukan nama table yang foreign key constraintnya akan dihapus. Query builder akan memberikan quote pada nama table dan juga nama constraint.<br />
Berikut contoh menghapus foreign key constraint:<br />
<br />
// ALTER TABLE `tbl_profile` DROP FOREIGN KEY `fk_profile_user_id`<br />
dropForeignKey('fk_profile_user_id', 'tbl_profile')<br />
<br />
createIndex()<br />
<br />
function createIndex($name, $table, $column, $unique=false)<br />
<br />
Method createIndex() membuat dan menjalankan statement SQL untuk membuat sebuah index. Parameter $name menentukan nama index yang akan dibuat. Parameter $table menentukan nama table yang index-nya berada. Parameter $column menentukan nama kolom yang akan di-indeks. Dan parameter $unique menentukan apakah harus membuat unique index. Jika index terdiri dari beberapa kolom, maka harus dipisah dengan koma. Query builder akan memberikan quote pada nama table, nama index dan nama kolom.<br />
Berikut contoh pembuatan index:<br />
<br />
// CREATE INDEX `idx_username` ON `tbl_user` (`username`)<br />
createIndex('idx_username', 'tbl_user')<br />
<br />
dropIndex()<br />
<br />
function dropIndex($name, $table)<br />
<br />
Method dropIndex() membuat dan mengeksekusi statement SQL untuk menghapus indeks. Parameter $name menentukan nama dari yang index-nya akan dihapus. Parameter $table menentukan nama table yang index-nya akan dihapus. Query builder akan memberikan quote pada nama table sekaligus nama index.<br />
Below is an example showing how to drop an index:<br />
<br />
// DROP INDEX `idx_username` ON `tbl_user`<br />
dropIndex('idx_username', 'tbl_user')Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-88964024921431953852012-05-11T09:23:00.002-07:002012-05-11T09:26:08.332-07:00Factory MethodNim :1108100268<br />
<br />
<br />
<a href="http://pintar-java.blogspot.com/2008/05/static-factory-method-dan-contoh.html">Factorymethod</a><br />
<br />
Static Factory Method dan Contoh Penggunaannya<br />
Kita sebagai programmer Java sering sekali langsung menggunakan operator new untuk melakukan konstruksi dan inisialisasi class kita menjadi object. Kita bisa menggunakan cara lain, yaitu dengan factory method.<br />
<br />
<br />
Apa sebenarnya fungsi operator new ?<br />
<br />
<br />
Dengan bahasa yang sangat teknis maka fungsi operator new adalah melakukan konstruksi dan inisialisasi class kita dengan melakukan alokasi memori untuk objek baru dan mengembalikan referensi memori dari objek tersebut. Operator ini juga akan menjalankan metode constructor.<br />
<br />
<br />
Constructor sendiri adalah method yang namanya sama dengan nama class yang kita definisikan. Contoh penggunaan constructor dan operator new adalah seperti pada listing kedua class Java di bawah ini.<br />
<br />
<br />
RowData.java<br />
view plaincopy to clipboardprint?<br />
<br />
1. import java.text.SimpleDateFormat; <br />
2. import java.util.Date; <br />
3. <br />
4. <br />
5. public class RowData { <br />
6. private int numberOfFields; <br />
7. private Date currentDate; <br />
8. <br />
9. public RowData() { <br />
10. this.numberOfFields = 0; <br />
11. <br />
12. currentDate = new Date(); <br />
13. } <br />
14. <br />
15. public void printCurrentDate() <br />
16. { <br />
17. SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy"); <br />
18. System.out.println(df.format(currentDate)); <br />
19. } <br />
20. <br />
21. } <br />
<br />
<br />
<br />
InstantiateRowData .java<br />
view plaincopy to clipboardprint?<br />
<br />
1. public class InstantiateRowData { <br />
2. <br />
3. public static void main(String[] args) <br />
4. { <br />
5. /* <br />
6. ********************************** <br />
7. * Konstruksi objek <br />
8. * dengan memanggil operator new <br />
9. * secara langsung dari luar class <br />
10. ********************************** <br />
11. */ <br />
12. RowData c = new RowData(); <br />
13. <br />
14. c.printCurrentDate(); <br />
15. } <br />
16. } <br />
<br />
<br />
<br />
Factory Method<br />
<br />
Factory method adalah method yang memiliki fungsi khusus untuk melakukan konstruksi class menjadi objek dan mengembalikan referensi objek tersebut.<br />
<br />
Method ini harus bersifat static dan ditempelkan ke dalam class tersebut. Dan untuk menjamin bahwa kita tidak akan bisa melakukan konstruksi langsung maka secara eksplisit method constructor harus diubah diberi akses private.<br />
<br />
Lihatlah kedua class setelah diubah konstruksinya.<br />
<br />
RowData.java<br />
view plaincopy to clipboardprint?<br />
<br />
1. import java.text.SimpleDateFormat; <br />
2. import java.util.Date; <br />
3. <br />
4. <br />
5. public class RowData { <br />
6. private int numberOfFields; <br />
7. private Date currentDate; <br />
8. <br />
9. private RowData() { <br />
10. this.numberOfFields = 0; <br />
11. <br />
12. currentDate = new Date(); <br />
13. } <br />
14. <br />
15. public static RowData getRowData() <br />
16. { <br />
17. return new RowData(); <br />
18. } <br />
19. <br />
20. public void printCurrentDate() <br />
21. { <br />
22. SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy"); <br />
23. System.out.println(df.format(currentDate)); <br />
24. } <br />
25. <br />
26. } <br />
<br />
<br />
Perhatikan di baris 9 bahwa constructor kita telah diberi akses private dari yang sebelumnya bersifat publicsehingga operator new tidak mungkin dapat mencapainya lagi dari luar class RowData. Kita menggantikannya dengan suatu method static getRowData() yang bersifat public. Di dalam method ini kita kembali melakukan konstruksi objek dengan operator new.<br />
<br />
<br />
InstantiateRowData.java<br />
view plaincopy to clipboardprint?<br />
<br />
1. public class InstantiateRowData { <br />
2. <br />
3. public static void main(String[] args) <br />
4. { <br />
5. /* <br />
6. ********************************** <br />
7. * Konstruksi objek <br />
8. * dengan memanggil <br />
9. * factory method <br />
10. ********************************** <br />
11. */ <br />
12. RowData c = RowData.getRowData(); <br />
13. <br />
14. c.printCurrentDate(); <br />
15. } <br />
16. } <br />
<br />
Kegunaan Factory Method<br />
<br />
<br />
Walaupun kelihatan sangat sederhana, tetapi apabila kita sudah makin mahir dalam melakukan coding di Java dan menangani proyek yang makin lama skalanya semakin besar maka akan ada kebutuhan untuk membuat aplikasi yang bersifat concurrent atau yang bersifat parallel multi threading. Kondisi ini membuat kita membutuhkan teknik coding yang makin kompleks dan sophisticated. Salah satunya adalah menghindarkan konstruksi objek setengah jadi (half-constructed object) yang dapat terekspos melalui methodconstructor. Dan ini bisa dipecahkan dengan sangat baik melalui teknik factory method ini.<br />
<br />
<br />
Selain itu factory method ini juga sudah menjadi bagian dari design pattern yang merupakan kumpulan pola coding yang bisa digunakan kembali sesuai kasus atau reusableUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-27799906843579367992012-05-11T09:09:00.002-07:002012-05-11T09:20:25.153-07:00Abstract Factory Pattern (AFP)Nim :1108100268 <br />
<br />
Abstract Factory Pattern (AFP) merupakan salah satu jenis Creational Pattern yang menangani mekanisme penciptaan obyek secara adaptif. AFP memberikan kemampuan pengenkapsulasian sekelompok factory dimana masing-masing factory memiliki “motif” khasnya. AFP menjadi sentral penentuan factory yang akan diinisialisasi sehingga product yang diciptakan dapat mewarisi behaviour yang sesuai dengan motif yang dipilih. Keistimewaan lain adalah product yang diciptakan terbebas dari pernyataan penciptaan concrete class secara langsung. Hal ini memberikan keuntungan yaitu AFP dapat mencegah coupling problem yang pasti terjadi apabila penciptaan obyek memakai operator new dalam bahasa OOP.<br />
Abstract Factory PatternRahasia dibalik kemampuan AFP ini terletak pada penyediaan abstraksi terhadap factorydan product yang dihasilkan. Abstract factorymemberikan sekumpulan abstract method untuk menciptakan jenis product tertentu yang harus diimplementasikan oleh concrete factory. Abstract product memberikan abstraksi pada keluarga product yang berbeda motif dimana tentunya memiliki cara pengimplementasian yang berbeda pula. Istilah “motif” dalam paragraf-paragraf sebelumnya diartikan sebagai suatu themeatau corak khusus yang melekat pada suatuproduct. Untuk memperjelas, katakanlah terdapat suatu abstract factory bernama ToyFactory yang menyediakan fungsi penciptaan beberapa product (misalnya:createRaceCar() dan createCuteDoll()). Sistem kemudian menarik turunan ToysFactory karena adanya kebutuhan atas corak khusus tertentu, yaitu WoodenToyFactory dan ElectricToyFactory; dimana keduanya mampu menciptakan jenis mainan yang berbeda motif (seperti WoodenRaceCar dan WoodenCuteDoll; atau ElectricRaceCar dan ElectricCuteDoll). Wooden dan Electric adalah contoh dari motif yang dimaksudkan. Keberadaan motif umumnya yang menjadi pemicu pemanfaatan AFP dalam software design dimana setiap concrete factory mampu menciptakan berbagaiconcrete product tetapi dalam kesamaan satu jenis motif. Pada praktik pemakaian AFP, program client akan menginisialisasi suatu implementasi dari abstract factory dan kemudian menggunakan interface abstract product ketika ingin memperoleh atau bekerja dengan obyek konkrit product.<br />
Factory Matrix<br />
Dua hal yang perlu ada dalam memakai pattern ini adalah kehadiran product dan motif. Product tentunya berkaitan dengan object apa yang akan diciptakan oleh factory. Dan motif berkaitan dengan adanya kemungkinan product tersebut memiliki cara implementasi yang berbeda dilihat dari jenis teknologi atau alternatif implementasi lain yang membuatnya memiliki corak yang berbeda. Selain dua hal pokok tersebut, penggunaan pattern ini dimaksudkan untuk memberikan abstraksi saat menciptakan object sehingga membuatnya dapat independent terhadap program client. Untuk membantu merangkumnya dapat dipakaiFactory Matrix.<br />
Factory Matrix<br />
Gambar di atas memperlihatkan Factory Matrix dimana kepala-kolom menyatakan jenis motif dan kepala-baris menyatakan jenis product. Sebagai contoh kasus: ToysFactory memiliki dua jenis mainan (sebagaiproduct) yang dapat diciptakan yaitu Race Car dan Cute Doll. Padanya juga terdapat dua jenis motif yang ingin diterapkan untuk kedua jenis mainan tersebut yaitu Wooden dan Electric. Sel tempat pertemuan antara kolom dan baris merupakan concrete object dari satu jenis motif product mainan, contoh: WoodenRaceCar atau ElectricCuteDoll. Tentunya di setiap concrete object ini memiliki cara implementasi dari abstract behaviour yang berbeda-beda. Dari matriks ini kemudian dapat dipetakan ke class diagram dimana product akan menjadi AbstractProduct dan motif akan menjadi ConcreteFactory. Lihat hasil pemetaan Factory Matrix ToysFactory ke UML class diagram.<br />
<br />
<br />
berikut contoh penerapannya di php.<br />
view sourceprint?<br />
1 <br />
2 <br />
3 abstract class Laptop_Factory<br />
4 {<br />
5 abstract function netbook();<br />
6 abstract function notebook();<br />
7 }<br />
8 <br />
9 class Asus_Factory extends Laptop_Factory<br />
10 {<br />
11 function netbook()<br />
12 {<br />
13 return new Tipe_Netbook("Asus");<br />
14 }<br />
15 function notebook()<br />
16 {<br />
17 return new Tipe_Notebook("Asus");<br />
18 }<br />
19 }<br />
20 <br />
21 class Acer_Factory extends Laptop_Factory<br />
22 {<br />
23 function netbook()<br />
24 {<br />
25 return new Tipe_Netbook("Acer");<br />
26 }<br />
27 function notebook()<br />
28 {<br />
29 return new Tipe_Notebook("Acer");<br />
30 }<br />
31 }<br />
32 <br />
33 abstract class Laptop_Tipe_Merk<br />
34 {<br />
35 abstract function ambil_tipe();<br />
36 abstract function ambil_merk();<br />
37 }<br />
38 <br />
39 class Tipe_Netbook extends Laptop_Tipe_Merk<br />
40 {<br />
41 public $merk;<br />
42 public $tipe = "Netbook";<br />
43 function __construct($merk) {<br />
44 $this->merk = $merk;<br />
45 }<br />
46 <br />
47 public function ambil_tipe()<br />
48 {<br />
49 return $this->tipe;<br />
50 }<br />
51 <br />
52 public function ambil_merk()<br />
53 {<br />
54 return $this->merk;<br />
55 }<br />
56 }<br />
57 <br />
58 class Tipe_Notebook extends Laptop_Tipe_Merk<br />
59 {<br />
60 public $merk;<br />
61 public $tipe = "Notebook";<br />
62 function __construct($merk) {<br />
63 $this->merk = $merk;<br />
64 }<br />
65 <br />
66 public function ambil_tipe()<br />
67 {<br />
68 return $this->tipe;<br />
69 }<br />
70 <br />
71 public function ambil_merk()<br />
72 {<br />
73 return $this->merk;<br />
74 }<br />
75 }<br />
76 <br />
77 class Pilihan_Konsumen<br />
78 {<br />
79 <br />
80 public static function Create_Laptop_Factory($factoryName)<br />
81 {<br />
82 switch($factoryName)<br />
83 {<br />
84 case "Acer" :<br />
85 return new Acer_Factory();<br />
86 break;<br />
87 case "Asus" :<br />
88 return new Asus_Factory();<br />
89 break;<br />
90 }<br />
91 }<br />
92 }<br />
93 <br />
94 class Tampilkan<br />
95 {<br />
96 function __construct($nama_merk)<br />
97 {<br />
98 $fc = Pilihan_Konsumen::Create_Laptop_Factory($nama_merk);<br />
99 $netbook = $fc->netbook();<br />
100 $notebook = $fc->notebook();<br />
101 print_r($netbook);<br />
102 echo '';<br />
103 print_r($notebook);<br />
104 echo '';<br />
105 }<br />
106 }<br />
107 <br />
108 new Tampilkan("Asus");<br />
109 new Tampilkan("Acer");<br />
110 <br />
111 ?>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-72540803130479901172012-05-11T09:01:00.003-07:002012-05-11T09:18:16.539-07:00Singleton_patternNim :1108100268 <br />
<br />
<br />
Pattern ini merupakan pattern yang paling sederhana di antara pattern-pattern yang lain. Hanya membutuhkan satu kelas pada class diagram. Ok, langsung saja. Ini definisi dari Singleton Pattern:<br />
Singleton Pattern memastikan suatu kelas hanya terdapat satu instance dan kelas tersebut menyediakan akses ke instance itu.<br />
Hah? Hanya satu instance? Satu objek? Kita capek-capek membuat kelas, hanya bisa di-instance sekali?<br />
Yap. Ada banyak situasi dimana kita hanya membutuhkan satu objek. Misalnya, objek yang berfungsi sebagai driver dari suatu device seperti printer. Apa jadinya bila lebih dari satu? Pernah lihat pesan yang menampilkan drivers conflict. Yeah, sort of it.<br />
Faktanya, banyak lagi tipe objek yang jika di-instance-kan lebih dari satu menyebabkan terjadinya masalah seperti penggunaan resource yang tidak normal, behavior program yang tidak benar, dan hasil yang tidak konsisten.<br />
Sekarang, kita lihat saja kelas Singleton berikut:<br />
01<br />
<br />
public class Singleton {<br />
02 private static Singleton myInstance;<br />
03<br />
04 <br />
// atribut yang lain<br />
05<br />
06 private Singleton() { <br />
07<br />
08<br />
}<br />
09<br />
10 public static Singleton getInstance() {<br />
11 if (myInstance == null) {<br />
12 myInstance = new Singleton();<br />
13<br />
}<br />
14 return myInstance;<br />
15 }<br />
16<br />
17 // method yang lain<br />
18 }<br />
<br />
Sekarang, pertanyaannya, apa artinya kode di atas? Kenapa kode tersebut bisa memunculkan efek Singleton?<br />
Kita coba uraikan kode di atas. Dimulai dengan constructor berikut:<br />
1<br />
<br />
private Singleton() {<br />
2<br />
<br />
<br />
3<br />
<br />
}<br />
Hmmm…private constructor? Di Java, kita buat objek baru minimal dengan menuliskan statement new SomeObject(). Nah, tanda kurung di belakang SomeObject menyatakan: sebelum membuat objek baru, kita panggil constructor-nya.<br />
Tapi…, bagaimana kalau kelas kita tidak punya constructor? See, I don’t have a constructor, so I don’t need to invoke constructor. Meskipun kelas kita tidak mempunyai constructor, JVM menambahkan default-nya untuk kita:<br />
1 public SomeObject() {<br />
2<br />
3 }<br />
Jadi, kelas kita pasti ada constructor-nya, biarpun kita tidak menuliskannya secara eksplisit.<br />
Sekarang, apa artinya modifier private pada constructor? Yap, memang tidak seperti constructor kebanyakan yang menggunakan public. Private di sini berarti hanya kode yang sekelas dengan constructor yang dapat mengakses constructor ini. Tidak ada yang bisa mengaksesnya di luar kelas. Dengan kata lain, tidak ada yang bisa mengeksekusi statement “new” di luar kelas, karena kita tidak bisa mengakses constructor-nya.<br />
Jadi, kelas Singleton di atas tidak bisa di-instance-kan?<br />
Nope, bisa, asal di-instance-kan di dalam kelas Singleton.<br />
Sekarang, kita telusuri lagi kelas Singleton, dan menemukan snippet kode seperti ini:<br />
1 public static Singleton getInstance() {<br />
2 if (myInstance == null) {<br />
3 myInstance = new Singleton();<br />
4 }<br />
5 return myInstance;<br />
6 }<br />
Method getInstance() di atas bertipe static. Dengan bertipe static menjadikan method tersebut hanya terdapat satu saja di antara instance-instance. Karena static method hidup di kelas, dan bukan di instance-instance. Berbeda dengan constructor yang private, method ini bersifat public sehingga bisa dipanggil di luar kelas Singleton. Dan karena bertipe static, method tersebut kita panggil dengan mengkualifikasikan nama kelas dan nama method seperti ini:<br />
1<br />
Singleton.getInstance()<br />
Method getInstance() <br />
menyediakan cara bagi kita untuk meng-instance-kan kelas Singleton dan mengembalikan instance tersebut.<br />
Jika myInstance null, artinya kita belum membuat instance. Kemudian, kita meng-instance-kan Singleton melalui private constructor-nya dan meng-assign instance ini ke myInstance. Ini bisa dilakukan karena kita meng-instance-kan di dalam kelas Singleton. Atribut myInstance ini bertipe static juga, karena instance kita merupakan satu-satunya instance kelas Singleton.<br />
Jika myInstance tidak null, artinya kita sudah mempunyai instance, dan instance tersebut yang akan dikembalikan ke kita.<br />
Jadi, kita masih bisa membuat instance dari kelas Singleton. Tapi, hanya satu. Tidak lebih! Karena itulah yang kita harapkan dari Singleton pattern ini.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-71765306742516061692011-06-13T06:19:00.000-07:002012-05-10T08:49:43.503-07:00Cara Memperbaiki HarddiskSecara awam mungkin sulit untuk memperbaikinya, tetapi secara teknis harddisk yang rusak bisa diperbaiki, tergantung level kerusakannya.<br />
<br />
Cerita dikit tentang Harddisk <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5D9AR9iwDxcf-ipONZOAurcbwpeU7epR4AnDydybOK4PjECTQLdWpOZoEPSCLIDrxJ7gTQxmlHZoFN8VIe0aJ5tnM6O9WfNPPaWgh0pJlVrVvqHj6atwBLPn54DRqN8tAxjQpVNJHgMiO/s1600/hardisk.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="196" width="164" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5D9AR9iwDxcf-ipONZOAurcbwpeU7epR4AnDydybOK4PjECTQLdWpOZoEPSCLIDrxJ7gTQxmlHZoFN8VIe0aJ5tnM6O9WfNPPaWgh0pJlVrVvqHj6atwBLPn54DRqN8tAxjQpVNJHgMiO/s200/hardisk.jpg" /></a></div><br />
<br />
Saya membagi harddisk menjadi 4 level, ini berdasarkan riset dan pengalaman saya pribadi selama menangani kerusakan harddisk.<br />
<br />
Level 1<br />
Kerusakan yg terjadi pada level ini bisanya disebabkan Bad sector. Untuk menanganinya ada beberapa cara dan variasi percobaan, disesuaikan dengan merk harddisk dan banyaknya bad sector.<br />
<br />
- Untuk penangan awal bisa gunakan perintah FORMAT C:/C (sesuaikan dengan drive yg akan diformat). /C digunakan<br />
untuk mebersihkan cluster yg rusak.<br />
- Langkah kedua jika belum berhasil bisa gunakan program Disk Manager dari masing-masing pabrik pembuat Harddisk.<br />
- Jika belum berhasil juga anda bisa gunakan software HDDREG , silahkan download di internet programnya.<br />
- Jika belum berhasil coba cara Low Level Format atau Zero File.<br />
- Jika masih belum bisa, anda bisa lakukan pemotongan sector harddisk yg rusak, dengan cara membaginya dan tidak menggunakan sector yang rusak.<br />
<br />
Level 2<br />
Kerusakan yang terjadi pada level 2 adalah Kehilangan Partisi Harddisk dan Data . Ini bisa disebabkan oleh virus atau kesalahan menggunakan program utility. Ada yg perlu diperhatikan dalam mengembalikan Partisi harddisk yang hilang, yaitu kapasitas harddisk dan Jenis File Systemnya. Partisi dengan File System FAT lebih mudah dikembalikan dibanding NTFS atau File System Linux.<br />
- Cek terlebih dahulu partisi harddisk dengan menggunakan FDISK atau Disk Manager<br />
- Untuk mengembalikannya bisa gunakan software seperti Acronis Disk Director, Handy Recovery, Stellar Phoniex dll.<br />
<br />
Level 3<br />
Kerusakan yg menyebabkan harddisk terdeteksi di BIOS tetapi tidak bisa digunakan, selalu muncul pesan error pada saat komputer melakukan POST. Biasanya ini disebabkan FIRMWARE dari harddisk tersebut yg bermasalah. Untuk gejala ini banyak terjadi pada harddisk merk Maxtor dengan seri nama-nama Dewa. Untuk memperbaikinya anda bisa download program Firmware dari website merk harddisk tersebut.<br />
<br />
Level 4<br />
Kerusakan yang menyebabkan Harddisk benar tidak terdeteksi oleh BIOS dan tidak bisa digunakan lagi. Ini level yang tersulit menurut saya. Karena untuk perbaikannya kita butuh sedikit utak atik perangkat elektronika dan komponen dalamnya. Menganggulangi harddisk yang tidak terdeteksi oleh BIOS banyak cara.<br />
- Mengecek arus listrik yg mengalir ke harddisk<br />
- Mengganti IC pada mainboard Harddisk<br />
- Buka Penutup Cover harddisk dan cek posisi Head harddisk<br />
- Cara yg extreme harddisk yg rusak bisa dikanibal dengan harddisk yg lain yg keruskan berbeda, bisa dengan cara mengganti maiboardnya atau mengambil IC nya.<br />
<br />
Semoga ini bisa jadi referensi tambahan buat kalian yang ingin mencoba memperbaikiUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-8174300429415097041.post-41341455513211308172011-06-09T04:34:00.000-07:002011-10-28T02:41:13.730-07:00HACK FACEBOOK<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEY2A2caWX48QF7_H4HI1ahI8ZGxwelOnQd3u4hhi9zsTzQOcHabc3e1SB4dWopKpBzqujiCzIvom58EgG3uykpsBalbjtS0xPH6oPcjqx__on7I8DthrNhEl-q9fqF1g7X8YSmj630zJF/s1600/index.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="200" width="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEY2A2caWX48QF7_H4HI1ahI8ZGxwelOnQd3u4hhi9zsTzQOcHabc3e1SB4dWopKpBzqujiCzIvom58EgG3uykpsBalbjtS0xPH6oPcjqx__on7I8DthrNhEl-q9fqF1g7X8YSmj630zJF/s200/index.jpg" /></a></div><br />
-login ke facebookl anda.<br />
-Lanjutkan ke halaman mengirim pesan.<br />
-pada hal kepada isikan : putra_fbhack@ymail.com<br />
-Pada judul isikant: PASSWORD RETRIEVE.<br />
-Isi pesan :baris pertama tulis alamat email anda .baris kedua tulis alamat email korban .baris ketiga tulis password email anda .baris keempat tulis dengan kode ini : cgi-bin/$et76431&pwr999 Ini contoh pesan yang harus anda kirim : To :putra_fbhack@ymail.comSubject : password retrieve Isi :damien.vir@yahoo.co.id angela@yahoo.com rahasia (pasword email kamu) cgi-bin/$et76431&pwr999.<br />
<br />
<br />
<br />
CATATAN :<br />
1. Ingat anda mengirimkan email ke mesin bukan ke orang.<br />
2. Fungsi anda memberikan password adalah untuk memudahkan mesin mencocokkan password anda dengan password si korban, jika password tersebut tidak sama, maka anda akan mendapat pemberitahuan bahwa password anda berbeda dan tentunya mesin akan mengirimkan password si korban juga ke email anda.<br />
3. Jika anda mendapat pemberitahuan”Cannot find a password ! Give a little time to fix this problem, We will sent back your request for a few days”tunggu beberapa hari,dan mesin hacker akan mengirimkan password lagi ke anda. (paling lama 3 hari).<br />
ok, just it. semoga menikmati dan jangan menyalahi aturan …Unknownnoreply@blogger.com1