Thursday, April 19, 2012

Inheritance & Polimorfisme

Pada kali ini saya membahas tentang penggunaan konsep Inheritance dan polimorfisme pada pemrograman Java yang merupakan tugas kuliah saya bersama rekan kerja saya Rizqi Bunga Yuliandini. Istilah Inheritance atau pewarisan yang dikenal dalam pemrograman merupakan penurunan sifat atau pewarisan method dari suatu kelas ke kelas yang lain, dimana kelas yang diwariskan sifat bisa memiliki sebagian atau bahkan keseluruhan sifat yang dimiliki oleh kelas yang mewarisi.

Suatu kelas yang mewariskan sifat biasa disebut dengan super class atau kelas induk, sedangkan kelas yang diwariskan biasa disebut dengan sub class atau  kelas turunan/ kelas anak.

Sedangkan istilah polimorfisme dalam program biasanya merupakan modul atau metode yang memiliki nama  yang sama, namun bisa melakukan aksi yang berbeda-beda. Polimorfisme juga merupakan fitur utama dalam pemrograman berbasis objek.

            Demikian lah sekilas tentang pengertian dari Inheritance dan polimorfisme, kemudian di bawah ini saya akan memberikan sebuah contoh program yang menerapkan kedua konsep ini. Di bawah ini merupakan listing programnya.

Thursday, April 12, 2012

Program Enkapsulasi pada Java

Pada kali ini saya membahas tentang enkapsulasi pada pemrograman Java yang merupakan tugas kuliah saya bersama rekan kerja saya Rizqi Bunga Yuliandini. Enkapsulasi sendiri merupakan salah satu bagian dari konsep dasar pemrograman berbasis objek. Dilihat dari bahasanya, enkapsulasi berarti pembungkusan. Bila konsep ini diterapkan dalam sebuah program berbasis objek, maka pembungkusan yang dimaksud ialah membungkus setiap detail dari program (mau itu fungsi, dan detail lain yang masih berada di dalam suatu class) menjadi sebuah subprogram yang independent (berdiri sendiri). Contoh programnya dapat dilihat di bawah ini.

Listing

import javax.swing.*;
public class enkapsulasi
{
     public static void main (String[]args)
     {
           int pil=Integer.parseInt(JOptionPane.showInputDialog("Menu Pilihan\n============\n1. Hitung Data\n2. Biodata\n\nMasukkan Pilihan :"));
           if (pil==1)
            {
                   hitung panggil = new hitung();
                   JOptionPane.showMessageDialog(null, "Hasil Penjumlahannya : "+panggil.c+"\n"+"Hasil Kurangnya : "+panggil.d, "Hasil Operasi", JOptionPane.INFORMATION_MESSAGE);
            }
           else if (pil==2)
           {
                  biodata panggil = new biodata();
                  JOptionPane.showMessageDialog(null, "Nama Anda adalah "+panggil.nama+"\n"+"NPM Anda adalah "+panggil.npm, "Hasil Operasi", JOptionPane.INFORMATION_MESSAGE);
            }
      }
}
class hitung
{
        double a=Double.parseDouble(JOptionPane.showInputDialog("Masukkan Nilai a : "));
        double b=Double.parseDouble(JOptionPane.showInputDialog("Masukkan Nilai b : "));
        double c=a+b;
        double d=a-b;
}
class biodata
{
       String nama=JOptionPane.showInputDialog("Masukkan Nama :");
       String npm=JOptionPane.showInputDialog("Masukkan NPM :");
}


Pada program di atas dapat dilihat bahwa pada program tersebut menggunakan dua buah sub program yang dibungkus menjadi satu program ini. Kedua subprogram tersebut dinamakan sebagai class yang nantinya akan dipanggil pada program utama yang dinyatakan dengan public static void main (String[]args). Program utama ini diberikan dengan nama enkapsulasi dengan perintah public class enkapsulasi. Jadi dapat dilihat pada output di bawah ini, program cukup sekali dijalankan kemudian saya membuatkan sebuah menu awal yang kemudian jika dipilih sesuai dengan pilihan yang benar kemudian subprogram yang dipilih pada menu awal tadi akan dijalankan.

Output 















Tuesday, April 3, 2012

Perbedaan OOP dengan Pemrograman Terstruktur

Kali ini saya akan membahas perbedaan mengenai bahasa pemrograman berbasis objek atau yg biasa disebut dengan OOP dengan bahasa pemrograman terstruktur. Pada pembahasan ini saya akan menerangkan mulai dari pengertian OOP dan pemrograman terstruktur itu sendiri, konsep yang digunakan oleh kedua program tersebut, kemudian ada contoh bahasa program apa yang menerapkan konsep OOP dan terstruktur, serta sifat-sifatnya, dan saya juga mengulas kelebihan serta kekurangan dari masing-masing pemrograman. Pembahasan ini juga saya kerjakan bersama Rizqi Bunga Yuliandini yang merupakan satu kelompok dalam tugas ini.

1.        OOP (Object Oriented Programming)
a.      Pengertian OOP
OOP (Object Oriented Programming) adalah suatu program yang mengarah pada suatu objek yang bisa disebut juga Paradigma Pemrograman. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas – kelas atau objek – objek. Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

b.      Konsep Dasar OOP
Konsep dasar dari OOP menekankan pada beberapa hal adalah sebagai berikut ini :
·      Kelas
Kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.

·      Objek
Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.

·      Abstraksi
Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.

·      Enkapsulasi
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.

·      Polimorfisme
Melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.

c.       Bahasa Pemrograman
Bahasa Pemrograman yang mendukung OOP adalah sebagai berikut :
·         Visual Foxpro
·         Java
·         C++
·         Pascal
·         VB.Net
·         SIMULA
·         Smalltalk
·         Ruby
·         Python
·         PHP
·         C#
·         Delphi
·         Eiffel
·         Perl
·         Adobe Flash AS 0.3

2.    Pemrograman Terstruktur
a.      Pengertian Pemrograman Terstruktur
Pemrograman Terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program.
Selain pengertian diatas Pemrograman Terstruktur adalah suatu aktifitas pemrograman      dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami. Prinsip dari pemrograman terstruktur adalah Jika suatu proses telah sampai pada suatu titik / langkah tertentu , maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya / kembali lagi ke baris sebelumnya, kecuali pada langkah – langkah untuk proses berulang (Loop).

b.      Sifat – Sifat Pemrograman Terstruktur
Pemrograman terstruktur mempunyai sifat – sifat sebagai berikut ini :
·           Memuat teknik pemecahan masalah yang logis dan sistematis
·      Memuat algoritma yang efisien, efektif dan sederhana
·      Program disusun dengan logika yang mudah dipahami
·      Tidak menggunakan perintah GOTO
·      Biaya pengujian program relatif rendah
·      Memiliki dokumentasi yang baik
·      Biaya perawatan dan dokumentasi yang dibutuhkan relatif rendah

c.       Bahasa Pemrograman
Bahasa Pemrograman yang mendukung pemrograman terstruktur adalah sebagai berikut :
·         COBOL
·         TURBO PROLOG

3.        Perbedaan dan Persamaan Antara OOP dan Pemrograman Terstruktur
Perbedaan mendasar antara OOP dan pemrograman terstruktur adalah dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sedangkan untuk pemrograman terstruktur,  menggunakan prosedur/tata cara yang teratur untuk mengoperasikan data struktur.
Untuk tata nama, keduanya pun memiliki tatanan yang sama walaupun memiliki pengertian tersendiri:
OOP menggunakan “method” sedangkan pemrograman terstruktur menggunakan “function”. Bila di OOP sering didengar mengenai “objects” maka di pemrograman terstruktur kita mengenalnya dengan ” modules”. Begitu pula  halnya dengan “message” pada OOP dan “argument” pada pemrograman terstruktur. “attribute” pada OOP juga memiliki tatanan nama yang sepadan dengan “variabel” pada pemrograman terstruktur.
Persamaan kedua pemrograman ini adalah adalah keduanya termasuk ke dalam pemodelan pemrograman yang digunakan dewasa ini.

4.        Perbedaan software OOP dangan software terstruktur
Perbedaan software OOP dangan software terstruktur adalah Software yang dibuat secara OOP besifat Reusable. Prinsip Reusable pemrograman OOP adalah membuat kode yang ditulis sebisa mungkin dapat dipergunakan lagi (reusable) supaya dapat dipakai dalam banyak aplikasi dan situasi supaya tidak perlu lagi mengimplementasi ulang, walaupun hanya ada perbedaan sedikit saja dari yang sudah dikerjakan sebelumnya.

Reusability
·         Kunci reusability adalah mendaftar (dalam library atau database) obyek di mana di antaranya mungkin ada yang sesuai dengan user requirements
·         Proses pencarian semacam ini membutuhkan cara yang kuat dan efisien

5.        Beberapa Keuntungan Pemrograman Berorientasi Objek
a.       Maintenance; program lebih mudah dibaca dan dipahami, dan pemrograman berorientasi obyek mengontrol kerumitan program hanya dengan mengijinkan rincian yang dibutuhkan untuk programmer.
b.      Pengubahan program (berupa penambahan atau penghapusan fitur tertentu); perubahan yang dilakukan antara lain menyangkut penambahan dan penghapusan dalam suatu database program misalnya.
c.       Dapat digunakannya obyek-obyek sesering yang diinginkan, kita dapat menyimpan obyek-obyek yang yang dirancang dengan baik ke dalam sebuah tolkit rutin yang bermanfaat yang dapat disisipkan kedalam kode yang baru dengan sedikit perubahan atau tanpa perubahan pada kode tersebut.

Jadi, sangat jelas sekal bahwa pemrograman berorientasi objek sangat cocok sekali digunakan dalam kasus pembuatan software yang rumit dan kompleks karena memberikan berbagai kemudahan kepada pemrogram seperti yang telah disebutkan diatas.

Baik OOP maupun pemrograman terstruktur tidak ada yang dapat dikatakan lebih baik karena keduanya memiliki spesifikasi tersendiri dalam pemrogramannya. Hal ini juga tergantung pada bagaimana pribadi si pemrogram ingin menyusun program yang akan dibuatnya. Apakah lebih suka menggunakan yang berorientasikan pada objek maupun pemrograman yang terstruktur. Karena Pemrograman prosedural akan dikatakan lebih baik apabila dalam segala situasi melibatkan kompleksitas moderat atau yang memerlukan signifikan kemudahan maintainability. Manfaat yang dirasakan dalam penggunaan pemrograman prosedural adalah kemampuan kembali menggunakan kode yang sama tanpa menggunakan kode yang berbeda ataupun mengkopinya kembali. Dengan menggunakan “goto”, memudahkan programmer melacak kumpulan data sehingga menghindarkan pemrograman terstruktur menjadi seperti spagethii code.

Pemrograman berorientasikan objek dikatakan lebih baik apabila Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

REFENSI

Kelebihan dan Kekurangan Facebook

Beberapa waktu yang lalu saya membahas tentang Facebook dari sisi sejarah, teknologi yang dgunakan dan konsepnya, kali ini saya akan memposting tentang Facebook dari sisi tingkat keamanan, kekurangan dan kelebihannya dan menfaat jangka panjang dari Facebook.

Kelebihan Facebook

1. Tanpa iklan maupun banner yang mengganggu pemandangan ketika melihat profile seseorang . ini memang di design khusus untuk mengiklankan sesuatu tetapi user tidak mengira bahwa itu adalah sebuah iklan.


2. Layanan Jaringan / Network yang bisa di sorting sesuai dengan posisi kita. Dari start awal pembuatan account disesuaikan berdasarkan negara. Sehingga lebih mempermudah menemukan teman.


3. Layanan Group di Facebook lebih fokus di mana membentuk suatu komunitas online seperti testimonial wall to wall, foto, forum diskusi dan lain – lain.

4. Photo Album berdasarkan kategori dan sungguh diluar dugaan jumlah quota kapasitas unlimited alias tidak dibatasi.

5. Layanan Selling, layaknya kita sebagai penjual menawarkan barang ataupun jasa ke user lainnya.
6. Layanan Event, yummy … di sini kita bisa mengisi kegiatan sehingga user yang lain jadi tahu. Contohnya ada reuni, party atau launching suatu produk.

7. Layanan Status Update .. bisa di isi kapan saja dan posisi menu nya lebih gampang.


8. Layanan Mobile Access adalah layanan untuk mobile dengan feature mengirim SMS.


9. Layanan Mobile Browsing dapat diakses melalui handphone dan disesuaikan dengan kondisi hanpdhone sehingga lebih cepat diakses.


10. Anti Fake Account and Spam, ini adalah layanan security yang sangat vital. Karena dengan ini account kita aman dari serangan hacker yang hendak mencuri account.


11. Layanan Develop your Facebook widget, layanan yang istimewa. Seabrek aplikasi yang bisa kita bangun dan dapat kita pasang menggunakan API dari Facebook Platform. Semacam Game, Feed Reader dan aplikasi lainnya.


12. Dapat chat dengan teman yang sedang online.


13. Dapat mengirimkan Gift ke teman dengan berbagai macam jenis.

14. yang paling penting,
IP Address facebook bersifat dinamis dan berlapis - lapis, jadi hampir mustahil untuk diseorang oleh seorang Hacker tingkat dewa sekalipun.

15. Dll



Kekurangan Facebook

1. Facebook memiliki Batasan Permintaan Pertemanan jika Berlebihan.

2. Facebook sangat terkenal sehingga banyak orang yang melakukan plagiat (nama samaran) biasanya mirip selebritis, jadi tidak tahu mana yang asli mana yang palsu.


3. Facebook menjadi ajang penjualan diri. Maksudnya banyak pekerja seks komersial yang menawarkan dirinya melalui facebook.


4. Lebih dari 60% pelajar di Indonesia adalah pengguna facebook dan 75% per harinya mereka akan membuka situs ini, sehingga mengganggu kegiatan belajar mereka.


5. Facebook acap kali menjadi tempat kasus, diantaranya melakukan pelecehan melaui status, menghina lewat comment, dll.


6. akhir akhir ini telah ada gosip, kabarnya pembuat situs jejaring sosial ini akan membuat facebook menjadi berbayar, dengan bayaran 10$ per bulan.

Ini adalah kebijakan pembuat facebook :

1. Foto yang diupload jangan yang berbau porno, menghina, atau merugikan orang lain, dan maksimal 4mb.


2. Orang yang terbukti melakukan plagiat nama kepada orang tertentu, buak tidak mungkin pihak facebook akan membanned (menonaktifkan) akun mereka.


3. pihak facebook kabarnya akan membagi facebook menjadi 2, yaitu facebook free dan facebook pro. Untuk yang free akan ada pembatasan status, comment dan upload foto. Sedangkan untuk yang pro tidak ada batasan sama sekali, namun kita diharuskan membayar 10$ per bulannya. (masih rencana, dan baru akan dilakukan tes di US).



Sistem Keamanan Facebook

1. Trusted Friends

membantu pengguna Facebook jika suatu saat ada masalah akun terkunci atau tidak bisa diakses. Dengan trusted friends, maka pengguna bisa memilih 3 sampai 5 orang teman yang dipercaya untuk membantunya mengakses kembali akun Facebook yang terkunci. Facebook akan mengirimkan kode ke para teman dipercaya yang dipilih pemilik akun untuk membuka kunci akun pemilik. Fitur ini secara teoritis akan meningkatkan keamanan akun Facebook pengguna namun harus digunakan secara hati-hati agar para teman yang dipercaya tersebut tidak menyalahgunakan kepercayaan ini untuk mengutak-atik akun pemilik sebenarnya, baik untuk tujuan jahil ataupun tujuan lain.

2. App password

Fitur ini dimaksudkan untuk meningkatkan keamanan akun Facebook dengan menyediakan pemilik akun sebuah password unik yang digunakan dalam sebuah aplikasi. Pengguna akan membuat password khusus untuk aplikasi dan mengganti password biasa yang digunakan aplikasi pihak ketiga seperti Spotufy atau Skype. Pengguna juga bisa menolak sebuah aplikasi tertentu untuk mengakses akun Facebook dengan cukup menghapus password yang sudah dibuat sebelumnya.
3. IP Address
Facebook menggunakan IP Address yang Dinamis dan Berlapis, sehingga hampir mustahil Facebook dibajak oleh Cracker.

Manfaat Facebook
bebrapa fitur-fitur baru telah ditambahkan kedalam Facebook sejak pertama kali diluncurkan. beberapa diantaranya adalah
1. Facebook share yang berguna untuk saling berbagi tulisan dan Link informasi.
2. Facebook note yang berguna untuk menuliskan catatan maupun tulisan-tulisan apapun.
3. Facebook quiz yang merupakan sebuah mini game yang berisi tentang pertanyaan-pertanyaan yang sifatnya menghibur.
4. Facebook branding yang memungkinkan bagi para Blogger maupun online seller untuk menjual barang dagangannya melalui media Facebook.
5. Facebook apps yang berisi banyak mini game dari berbagai Vendor.


Perkembangan dan Prospek Facebook dimasa depan.
mengingat Facebook adalah salah satu situs jejaring sosial tersebar didunia maka, sudah pasti pemilik sekaligus pembuatnya Mark Zuckerberg tidak akan membiarkan Facebook turun pamor dengan banyaknya berbagai situs jejaring sosial yang baru, oleh karena itu bebrapa waktu yang lalu Facebook menjual beberapa persen sahamnya.
selain itu, agar Facebook bisa diakses oleh siapapun, kapanpun dan dimanapun. Facebook telah meluncurkan website www.0.facebook.com dan www.m.facebook.com.
Facebook juga memberikan ruang yang sangat lebar dalam kolom pencarian. Kini kolom pencarian menjadi 2 kali jauh lebih besar dari kolom pencarian di desain Facebook yang terdahulu. Dan salah satu indikasi perkembangan tentang bagaimana fungsi search ini, kemungkinan besar Facebook bekerjasama dengan Bing untuk menghasilkan pencarian yang lebih baik. Termasuk memberikan hasil pencarian yang lebih lengkap dan lebih membantu dengan memberikan informasi yang lebih baik.

Jika anda mencoba fasilitas search yang ada di situs Facebook sekarang, maka Facebook tidak hanya menampilkan hasil pencarian yang berhubungan dengan konten di Facebook saja tetapi juga menyertakan hasil pencarian dari web. Nah, dengan kerjasasama ini mungkin saja Facebook akan membawa mesin social networking-nya ini ke tahap yang lebih luas, dengan kata lain menjadi sebuah ‘real social search engine’.
menelisik fakta bahwa Facebook merupakan situs jejaring sosial terbesar didunia, maka sudah pasti akan ada perubahan - perubahan baru ke arah yang lebih baik lagi, seperti fitur2 baru yang masih dalam tahap proses pembuatan. kita tunggu saja, gebrakan apa lagi yang akan dibuat oleh Facebook.