Selasa, 17 April 2012

Pengertian Inherintance dan Contoh Programnya

Nama : Ledy Sri Rejeki
NPM : 53410989
Kelas : 2ia07
Tugas : PBO
Teman Sekelompok : Irfan Maulana
Link : http://ipanmydreams.blogspot.com


Inherentance

Setelah membahas mengenai Enskapsulasi di pertemuan sebelumnya, kali ini saya ingin membahas mengenai pengertian dan contoh program dari pemograman Inherentance. Mudah-mudah berguna bagi para pembaca ya, cekidotlah .
Salah satu konsep dasar dari pemrograman berbasis objek pada java adalah Inheritance, berikut ini saya akan memberikan sedikit gambaran tentang inheritance.
Pada dasarnya, kita melakukan inheritance(pewarisan) untuk membuat suatu class baru(class turunan/subclass) yang masih memiliki sifat atau spesifikasi dari superclass.

Di dalam Java untuk mendeklarasikan suatu class sebagai subclass dilakukan dengan cara menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.
Dan pengertian dari Inheritance itu sendiri adalah salah satu bentuk penggunaan kembali perangkat lunak dimana suatu kelas baru dibuat dari kelas yang sudah ada dengan memakai variabel data fungsi (method) dari kelas yang sudah ada tersebut serta menambah atribut/pelaku yang baru, kelas baru otomatis memiliki variabel atau fungsi yang dimiliki kelas asal yang merupakan pewarisan pada pemrograman berorientasi objek yang merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi turunannya. Sebagai contoh, misalkan ada sebuah kelas Titik yang mempunyai kelas turunan Titik3D:
class Titik
private integer x
private integer y
Titik()
x < 0 y < 0 {end Titik} public getX() -> integer
-> x
{end getX}

public getY() -> integer
-> y
{end getY}
{end class}
class Titik3D: Titik
private integer z

Titik3D()
z <- 0 {end Titik3D} public getZ() -> integer
-> z
{end getZ}

{end class}
Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass.
Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada pada kelas Titik walau pada kode programnya metode itu tidak dituliskan, misalkan sebagai berikut:
Titik3D p <- new Titik3D()
integer x <- p.getX()
integer y <- p.getY()
integer z <- p.getZ()

Beberapa aturan tentang pewarisan(inheritance) yang perlu diperhatikan :
1. Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class. Dengan konsep single inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.

2. Subclass juga merupakan class biasa, maka kita tetap dapat melakukan pewarisan pada subclass ini. Misal : class B merupakan subclass dari class A, kita dapat membuat class baru yang diturunkan dari class B sehingga class baru tersebut akan memiliki apa yang dimiliki oleh class A dan class B.

3. Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan). Di dalam java, kontrol pengaksesan dapat digambarkan dalam tabel berikut ini:


Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru kemudian destruktor kelas dasar dijalankan.

Contoh Program Inheritance :
import java.io.*;
import java.util.Scanner;
class daftarmenu
{
public int porsi;
public double harga;
}
class makanan extends daftarmenu
{
public void setharga()
{
harga = 8000;
}
}
class minuman extends daftarmenu
{
public void setharga()
{
harga = 15000;
}
}
class cucimulut extends daftarmenu
{
public void setharga(double h) //set harga melalui inputan si pengguna
{
harga = h;
}
public double getharga() //mengambil info harga dari setiap class
{
return(harga);
}
}
public class daftarmenu //untuk menjalankan program utama
{
public static void main(String[] args)
{
double h;
cucimulut s = new cucimulut (); //create object untuk setiap class
minuman l = new minuman();
makanan n = new makanan ();
Scanner sc = new Scanner(System.in);

System.out.print(“Harga : “);
h = sc.nextDouble();
s.setharga(h);
System.out.println(“Harga cucimulut :”+s.getharga());
n.harga = 8000; //akses langsung ke atribut
n.porsi = 2;
biaya = n.harga * n.porsi;
System.out.println(“Biaya :”+biaya);

//menu program dan manipulasi object yg lain
//bisa diletakkan di sini
}
}


Sumber : http://nur-arianto.blogspot.com/2009/11/inheritance-pada-java.html

Pengertian Polymorphism dan Contoh Programnya

Nama : Ledy Sri Rejeki
NPM : 53410989
Kelas : 2ia07
Tugas : PBO
Teman Sekelompok : Irfan Maulana
Link : http://ipanmydreams.blogspot.com


Salah satu Pemrograman Berorientasi Objek yang lain adalah polymorphism yaitu kemampuan objek bertipe sama beraksi berbeda terhadap “pesan” yang sama.

Polymorphism merupakan suatu aksi yang memungkinkan pemogram menyampaikan suatu pesan tertentu keluar dari hierarki obyeknya, dimana suatu obyek tersebut yang berbeda memberikan tanggapan ataupun respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek. Itu berarti, Polymorphism “mempunyai banyak bentuk” yang juga merupakan salah satu sifat class yang memungkinkan sebuah method mempunyai nama yang sama, namun memiliki aksi yang berbeda.
Polymorphism adalah pemikiran bahwa objek dinamis suatu class dasar dapat berperilaku seperti class turunan. Jika objek menunjuk class dasar maka ia perilaku seperti class dasar, dan jika ia menunjuk class turunan ia akan berperilaku seperti class turunan.

Dalam hal ini obkjek memiliki beberapa bentuk, tergantung ia menunjuk kemana. Dalam hal ini suatu objek atau class dan perubahan perilakunya adalah dari kelas dasar ke kelas turunan, tidak bisa objek kelas turunan menunjuk ke kelas dasar. Polimorfisme dimungkinkan karena adanya mekanisme ikatan dinamis, ikatan ini adalah ikatan yang terjadi ketika program dijalankan (run-time), ikatan yang terjadi pada saat compiling disebut ikatan dinamis. Ikatan dinamis hanya akan terjadi antara suatu objek dinamis dengan metode yang dinamis juga, dalam hal ini metode virtual (maya)

Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda.
Keuntungan Pemograman dengan menggunakan Polymorphism adalah :
• Kita dapat menggunakan kelas-kelas yang kita buat (sebagai super kelas) dan membuat kelas kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas.

• kita dapat membuat super kelas yang hanya mendefinisikan behaviuor namun tidak memberikan implementasidari metode-metode yang ada.Hal ini berguna jika kita ingin membuat semacam template kelas,kelas semacam ini disebut kelas abstrak karena behaviournya masih abstrak dan belum diimplementasikan.subkelas-subkelas dari kelas semacam ini yang disebut kelas konkret,mengimplementasikan behaviuor abstrak tersebut sesuai dengan kebutuhan masing-masing.

• Menghindari duplikasi object,kita dapat menciptakan class baru dari class yang sudah ada,sehingga tidak perlu menuliskan code dari nol ataupun mengulangnya, namun tetap bisa menambahkan attribute dan atau method unik dari class itu sendiri. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi.

Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Pada dasarnya ada 2 tipe polymorphism, yaitu:

1. Static atau trivial merupakan, function overloading (penggunaan kembali nama fungi yang sama tapi dgn argumen yang berbeda) yang terbagi dalam 3 signature yaitu:

- Jenis Array
- Letak Array
- Type Array

Contoh function overloading :
void tambah (int a, int b);
void tambah(float d, float c);

2. Dynamic atau true
Merupakan function overriding (sebuah fungsi dalam class turunan yang memiliki nama, return type argumen function yang sama dengan fungsi dalam class induk). Menggunakan virtual method.

Pure Virtual Method (tanpa function body)
contoh : virtual void jalan() = 0;

Squasi Virtual Method (ada function body)
contoh : virtual void info() {;}

Contoh Program Polymorphism :
class mencetakdata {

// membuat method dengan nama sama tapi berbeda tipe data
public void cobacetak(String Mencetak) {
System.out.println(Mencetak);
}
public void cobacetak(int Mencetak) {
System.out.println(Mencetak);
}
public void cobacetak(double Mencetak) {
System.out.println(Mencetak);
}
public void cobacetak(char Mencetak) {
System.out.println(Mencetak);
}
}

public class cobapolymor {

public static void main(String[] args) {
mencetakdata data = new mencetakdata();

System.out.print("Cetak Data Tipe String : ");
data.cobacetak("DKI Jakarta");

System.out.print("Cetak Data Tipe Integer : ");
data.cobacetak(1992);

System.out.print("Cetak Data Tipe Double : ");
data.cobacetak(16.5 / 2);

System.out.print("Cetak Data Tipe Char : ");
data.cobacetak('N');
}
}


Sumber : http://johari.e-nixsoft.com/?p=3
http://putriayuwulansari03pot.blogspot.com/2010/01/polymorphism.html

Kamis, 12 April 2012

Pengertian Enkapsulasi dan Contoh Programnya

Nama : Ledy Sri Rejeki
NPM : 53410989
Kelas : 2ia07
Tugas : PBO
Teman Sekelompok : Irfan Maulana
Link : http://ipanmydreams.blogspot.com

pada kesempatan minggu ini, saya mendapat tugas untuk menyelesaikan pengertian dan memberi contoh dari pengertian Enkapsulasi. Berikut merupakan sebagian kecil ilmu yang dapat saya beberkan, mudah-mudahan dapat bermanfaat ya teman-teman, cekidotlah :

Enkapsulasi/ Pembungkusan (Encapsulation)
Enkapsulasi merupakan suatu cara pembungkusan data dan method yang menyusun suatu kelas sehingga kelas dapat dipandang sebagai suatu modul dan cara bagaimana menyembunyikan informasi detail dari suatu class (information hiding). Dalam OOP, enkapsulasi sangat penting untuk keamanan serta menghindari kesalahan permrograman, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.
Dua hal yang mendasar dalam enkapsulasi yakni :
• Information hiding.
• Interface to access data.
Information hiding
Sebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah 'public'. Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol 'private' ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.
Interface to access data
Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.
Manfaat utama teknik encapsulation adalah kita mampu memodifikasi kode tanpa merusak kode yang telah digunakan pada class lain.
Enkapsulasi memiliki manfaat sebagai berikut:
> Modularitas
Source code dari sebuah class dapat dikelola secara independen dari source code class yang lain. Perubahan internal pada sebuah class tidak akan berpengaruh bagi class yang menggunakannya.
> Information Hiding
Penyembunyian informasi yang tidak perlu diketahui objek lain.

Contoh program :
Buatlah sebuah kelas baru dan simpanlah dengan nama mahasiswa.java, berikut contoh syntaxnya :
class mahasiswa {
public String sevenbelle;
public mahasiswa(String n){
this.sevenbelle = n;
}
public String tampilkansevenbelle(){
return sevenbelle;
}
public void fakultas(){
System.out.println("teknik industri ");
}
public void jurusan(){
System.out.println("teknik informatika ");
}
private void tingkat(){
System.out.println("dua");
}
}

Kemudian, buatlah satu kelas baru lagi dengan nama sevenbelle, berikut merupakan syntaxnya:

class sevenbelle {
public static void main(String arg[]){
mahasiswa kelas= new mahasiswa("sevenbelle");
System.out.println("Kelas saya : "+ kelas.tampilkansevenbelle());
kelas.fakultas();
kelas.jurusan();
}
}

Outputnya:

Gambar 1.1

Gambar 1.2

Gambar 1.3

SUMBER : http://hanakirei91.wordpress.com/2010/04/14/pengertian-polymorphisme-inheritance-dan-enkapsulasi/
http://darkvader27.blogspot.com/2010/04/pengertian-inheritancepolymorphismeenka.html
http://chasewhcrunc17.wordpress.com/2010/04/14/pengertian-polymorphisme-inherentance-enkapsulasi/

Kamis, 05 April 2012

Perbedaan Pemrograman Terstruktur dan Berorientasi Objek

Nama : Ledy Sri Rejeki
NPM : 53410989
Kelas : 2ia07
Tugas : PBO
Teman Sekelompok : Irfan Maulana
Link : http://ipanmydreams.blogspot.com



Di kesempatan kali ini, kita akan membahas mengenai pengertian masing-masing dari pemograman terstruktur dan pemograman berbasis objek serta perbedaan dari kedua pengertian tersebut. Mari kita baca pengulasan selengkapnya.
Pengertian Pemrograman Terstruktur
Pemrograman Terstruktur merupakan suatu proses untuk mengimplementasikan urutan langkah penyelesaian suatu masalah dalam bentuk program dan merupakan suatu aktifitas pemrograman yang dilakukan dengan memperhatikan setiap urutan dari setiap langkah perintah yang dikerjakan secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan dapat dengan mudah dipahami. Prinsip dari pemrograman terstruktur adalah Jika suatu proses telah sampai pada suatu titik ataupun langkah tertentu , maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya ataupun kembali ke baris sebelumnya, kecuali pada langkah – langkah untuk proses pengulangan atau berulang (Loop). Selain itu, pemrograman terstruktur memiliki sifat-sifat seperti berikut ini :
a. Memuat teknik pemecahan masalah yang logis dan sistematis
b. Memuat algoritma yang efisien, efektif dan sederhana
c. Program disusun dengan logika yang mudah dipahami
d. Tidak menggunakan perintah GOTO
e. Biaya pengujian program relatif rendah
f. Memiliki dokumentasi yang baik
g. Pemrograman tersktruktur unggul dalam melakukan pemrograman sederhana karena lebih efisien dan lebih murah dalam hal perawatannya tetapi permodelan ini lebih susah untuk dipahami oleh orang – orang selain pembuat program itu sendiri (contohnya ketika dilakukan tracing program ).
Bahasa pemrograman yang mendukung pemrograman terstruktur:
1. Cobol Turbo Prolog
2. C
3. Pascal
4. Delphi
5. Borland Delphi

Perancangan Terstruktur (Structured Analisys and Design / SSAD)
Merupakan hasil turunan dari pemrograman terstruktur. Perancangan ini bertujuan untuk membuat model SOLUSI terhadap PROBLEM yang sudah dimodelkan secara lengkap pada tahap analisis terstruktur.
Kelebihan
• Milestone diperlihatkan dengan jelas yang memudahkan dalam manajemen proyek
• SSAD merupakan pendekatan visual, yang berguna untuk lebih mudah dimengerti oleh pengguna atau programmer.
• Penggunaan analisis grafis dan tool seperti DFD menjadikan SSAD menjadi lebih bagus untuk digunakan.
• SSAD merupakan metode yang diketahui secara umum pada berbagai bidang industry.
• SSAD sudah diterapkan begitu lama sehingga metode ini sudah matang dan layak untuk digunakan.
• SSAD memungkinkan untuk melakukan validasi antara berbagai kebutuhan
• SSAD relatif simpel dan mudah dimengerti.
Kekurangan
• SSAD berorientasi utama pada proses, sehingga mengabaikan kebutuhan non-fungsional.
• Sedikit sekali manajemen langsung terkait dengan SSAD
• Prinsip dasar SSAD merupakan pengembangan non-iterative (waterfall), akan tetapi kebutuhan akan berubah pada setiap proses.
• Interaksi antara analisis atau pengguna tidak komprehensif, karena sistem telah didefinisikan dari awal, sehingga tidak adaptif terhadap perubahan (kebutuhan-kebutuhan baru).
• Selain dengan menggunakan desain logic dan DFD, tidak cukup tool yang digunakan untuk mengkomunikasikan dengan pengguna, sehingga sangat sliit bagi pengguna untuk melakukan evaluasi.
• Pada SAAD sliit sekali untuk memutuskan ketika ingin menghentikan dekomposisi dan mliai membuat sistem.
• SSAD tidak selalu memenuhi kebutuhan pengguna.
• SSAD tidak dapat memenuhi kebutuhan terkait bahasa pemrograman berorientasi obyek, karena metode ini memang didesain untuk mendukung bahasa pemrograman terstruktur, tidak berorientasi pada obyek (Jadalowen, 2002).
Untuk program yang simpel/sederhana biasanya menggunakan pemrograman terstruktur karena masih mudah dan tidak banyak dilakukan perubahan yang berarti, sedangkan untuk line lebih dari 100 atau bisa dikatakan rumit, maka digunakan pemrograman berorientasi objek. Pemrograman Terstruktur terdiri dari pemecahan masalah yang besar menjadi masalah yang lebih kecil dan seterusnya, sedangkan untuk pemrograman berorientasi objek terdiri dari pengkelompokan kode dengan data yang mana setiap objek berfungsi secara independen sehingga untuk setiap perubahan kode tidak tergantung pada kode yang lainnya, atau lebih dikenal dengan modular. Terdapat juga perbedaan secara spesifik antara Pemrograman Berorientasi Objek dengan Pemrograman Terstruktur, yaitu pada kelas dan objek. Pada Pemrograman Terstruktur tidak terdapat kelas dan objek.

Pengertian Pemrograman Berorientasi Objek



Pemrograman berorientasi objek atau yang lebih dikenal oleh telinga kita dalam dunia pemograman adalah OOP ( Object Oriented Programming) merupakan sebuah paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalamnya dibungkus dalam suatu kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya. Konsep utama dari OOP terletak pada kondisi kode atau line pemogramannya, dimana merupakan sebuah modular.
Sementara itu pemrograman berorientasi objek memliki beberapa keuntungan seperti :
1.Maintenance; program lebih mudah dibaca dan dipahami, dan pemrograman berorientasi obyek mengontrol kerumitan program hanya dengan mengijinkan rincian yang dibutuhkan untuk programmer.
2.Pengubahan program (berupa penambahan atau penghapusan fitur tertentu); perubahan yang dilakukan antara lain menyangkut penambahan dan penghapusan dalam suatu database.
3.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.
Berbeda dengan Pemograman Terstruktur, Suatu program berorientasi Objek atau yang disebut dengan pemrograman berbasis obyek (OOP) memiliki sifat seperti berikut ini :

– Encapsulation (pembungkusan)

Encapsulation adalah mekanisme pemrograman yang membungkus kode dan data yang dimanipulasi dan menjaganya supaya terhindar dari interferensi dan penggunaan yang tidak perlu. Salah satu caranya dengan membentuk objek.

– Inheritance (pewarisan)

Inheritance memungkinkan programer meletakkan member yang sama dalam satu class dan class-class lain dapat mewarisi member tersebut. Class yang mengandung member yang sama dari beberapa class lain dinamakan superclass atau parent class. Class yang mewarisi dinamakan subclass atau child class. Inheritance menghasilkan class hierarchy.

– Polymorphism (polimorfisme –perbedaan bentuk)

Polymorphisme artinya mempunyai banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic, bila objek-objek itu mempunyai antar muka yang identik namun mempunyai perilaku-perilaku yang berbeda.
Bahasa pemrograman yang mendukung OOP antara lain:
1. Visual Foxpro
2. Java
3. C++
4. Pascal (bahasa pemrograman)
5. Visual Basic.NET
6. SIMULA
7. Smalltalk
8. Ruby
9. Python
10. PHP
11. C#
12. Delphi
13. Eiffel
14. Perl
15. Adobe Flash AS 3.0

Perancangan Berbasis Objek (Object-oriented Analysis and Design / OOAD)
Metode OOAD merupakan proses pendekatan terhadap suatu masalah dari perspektif obyek, tidak pada perspektif fungsional seperti pada pemrograman terstruktur. Sebagai metode baru dan sophisticated bahasa pemrograman berorientasi obyek diciptakan, hal tersebut untuk memenuhi peningkatan kebutuhan akan pendekatan berorientasi obyek pada aplikasi bisnis
Kelebihan
• Lebih mudah digunakan dalam pembangunan sistem dibandingkan dengan SSAD.
• Waktu pengembangan OOAD , level organisasi, ketangguhan,dan penggunaan kembali (reuse) kode program lebih tinggi Dibandingkan dengan SSAD.
• Tidak ada pemisahan antara fase desain dan analisis, sehingga meningkatkan komunikasi antara user dan developer dari awal hingga akhir pembangunan sistem.
• Analis dan programmer tidak dibatasi dengan batasan implementasi sistem, jadi desain dapat diformliasikan yang dapat dikonfirmasi dengan berbagai lingkungan eksekusi.
• Relasi obyek dengan entitas (thing) umumnya dapat di mapping dengan baik seperti kondisi pada dunia nyata dan keterkaitan dalam sistem.
• Memungkinkan adanya perubahan dan kepercayaan diri yang tinggi terhadap kebernaran software yang membantu untuk mengurangi resiko pada pembangunan sistem yang kompleks (Booch, 2007).
• Encapsliation data dan method, memungkinkan penggunaan kembali pada proyek lain, hal ini akan memperingan proses desain, pemrograman dan reduksi harga.
• Memungkinkan adanya standarisasi obyek yang akan memudahkan memahami desain dan mengurangi resiko pelaksanaan proyek.
• Dekomposisi obyek, memungkinkan seorang analis untuk memecahkan masalah menjadi pecahan-pecahan masalah dan bagian-bagian yang dimanage secara terpisah.

Kekurangan
• Pada awal desain OOAD, sistem mungkin akan sangat simple.
• Pada OOAD lebih fockus pada coding dibandingkan dengan SSAD.
• Pada OOAD tidak menekankan pada kinerja team seperti pada SSAD.
• Pada OOAD tidak mudah untuk mendefinisikan class dan obyek yang dibutuhkan sistem.
• Sering kali pemrogramam berorientasi obyek digunakan untuk melakukan anlisisis terhadap fungsional siste, sementara metode OOAD tidak berbasis pada fungsional sistem.
• OOAD merupakan jenis manajemen proyek yang tergolong baru, yang berbeda dengan metode analisis dengan metode terstruktur. Konsekuensinya adalah, team developer butuh waktu yang lebih lama untuk berpindah ke OOAD, karena mereka sudah menggunakan SSAD dalam waktu yang lama ( Hantos, 2005).
• Metodologi pengembangan sistem dengan OOAD menggunakan konsep reuse. Reuse merupakan salah satu keuntungan utama yang menjadi alasan digunakannya OOAD. Namun demikian, tanpa prosedur yang emplisit terhadap reuse, akan sangat sliit untuk menerapkan konsep ini pada skala besar (Hantos, 2005).

Dari beberapa keuntungan di atas, jadi, jelas sekali bahwa pemrograman berorientasi objek sangat cocok digunakan dalam kasus pembuatan software yang rumit dan kompleks karena memberikan berbagai kemudahan kepada pemrogram seperti yang telah disebutkan diatas. Sedangkan untuk pemilihan pemograman mana yang lebih tepat dan bagus?, semua tergantung dari kebutuhan dan dari sudut pandang mana anda melihatnya. Karena tujuan dari pemodelan itu sendiri pada akhir proyek sistem dapat diperoleh sistem informasi yang memenuhi kebutuhan pemakai, tepat waktu dan sesuai anggaran, serta mudahdigunakan,dimengerti dan dipelihara.

Sumber :
http://wikipeda.co.id/
http://darkdevil4bloodyvenus.wordpress.com/
http://hikaru92.blogspot.com/