PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman
- Adalah proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun sebuah program komputer. Kode ini ditulis dalam berbagai bahasa pemrograman. Tujuan dari pemrograman adalah untuk memuat suatu program yang dapat melakukan suatu perhitungan atau ‘pekerjaan’ sesuai dengan keinginan si pemrogram. Untuk dapat melakukan pemrograman, diperlukan keterampilan dalam algoritma, logika, bahasa pemrograman, dan di banyak kasus, pengetahuan-pengetahuan lain seperti matematika.
Bahasa Pemrograman
- (programming language). apa itu? bahasa pemrograman adalah perintah yang dibuat manusia untuk membuat komputer menjadi memiliki fungsi tertentu. bahasa pemrograman ini adalah suatu susunan aturan penulisan (sintaks) yang membentuk kode kode yang kemudian akan diterjemahkan oleh program kompiler menjadi bahasa rakitan (assembly) dan terus diolah hingga dimengerti oleh mesin.
TINGKAT BAHASA PEMROGRAMAN
- Bahasa Pemrograman Tingkat Rendah (Assembler)
- Bahasa Pemrograman Tingkat Sedang (C, Fortran dll)
- Bahasa Pemrograman Tingkat Tinggi (Java, C++, C#, Vb.Net, PHP, Dll)
Perkembangan Metode Analisis dan Desain Sistem
- Metode Tradisional
- Metode Terstruktur
- Metode berorientasi objek (Object Oriented)
Metode Tradisional
- Berkembang dari pemrograman tradisional
- Kontrol Alur (urutan, keputusan, loop)
- Sistem Flow Chart
- Hampir selalu dimulai dengan pemikiran tentang file secara fisik
Metode Terstruktur
- Dimulai pada tahun 1977
- Dimulai dengan mencoba melihat sistem dari sudut pandang logical
- Melihat data sebagai sumber proses
Metode
DFD (control flow, State Transistion diagram)
Normalisasi
E-R Diagram
DFD (control flow, State Transistion diagram)
Normalisasi
E-R Diagram
Sejarah OOP
- Object Oriented Programming (OOP) Konsep OOP dimulai pertengahan 1960-an dengan sebuah bahasa program SIMULA SMALLTALK. Meskipun developer software tidak secara intensif mengembangkan OOP, tetapi metodologi object-oriented tetap digunakan sampai sekarang.kemudian dilanjutkan di era 70-an dengan Pada pertengahan 80-an, bahasa OOP seperti C++ dan Eifle menjadi popular diantara programmer komputer. Popularitas OOP berlanjut pada tahun 90-an, banyak pengembang perangkat lunak menggunakan konsep OOP seperti yang dilakukan pada Java dan kemudian PHP yang menjadi popular sekarang. Di tahun 2002, versi terakhir dari Visual Studio, Microsoft-pun ikut memperkenalkan bahasa OOP baru yaitu C# (dibaca C-sharp) serta penyempurnaan Visual Basic 6.0 yang tidak mendukung OOP menjadi VB.NET sebagaibahasa pemrograman berorientasi objek.
OOP (Object Oriented Programming)
- Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek.
- Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek.
- Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.
- Metode berbasis objek juga menawarkan konsep penggunaan-ulang komponen (reusable-components) yang tidak ditawarkan pada metode perancangan struktural. Dengan konsep penggunaan-ulang komponen, ukuran pada program dapat di tekan karena developer program hanya tinggal menggunakan komponen yang telah dibuat dan menambahkan sedikit properti agar membuatnya unik selama konteks fungsi yang akan dikerjakan komponen baru hampir sama dengan fungsi dasar dari komponen dasar
Konsep Dasar Pemrograman Berorientasi Objek
- Dalam dunia pemrograman, biasanya kita dihadapkan pada dua jenis metode pemrograman, yaitu pemrograman prosedural (procedural) dan pemrograman berorientasi objek (object oriented). Apa perbedaan kedua metode tersebut? Bagaimana pemrograman berorientasi objek itu dilakukan? Apa saja konsep-konsep OOP yang harus dikuasai?
- Pemrograman prosedural merupakan suatu metode menulis program yang didasarkan pada "serangkaian tugas yang diselesaikan dalam bentuk fungsi atau prosedur". Cara pandang pemrograman prosedural yaitu sebuah program adalah suatu urutan instruksi. Programmer harus mem-break down suatu problem/masalah menjadi sub problem yang lebih sederhana. Fokus utama metode prosedural ini adalah fungsi dan prosedur, dimana keduanya digunakan untuk memanipulasi data. Dalam hal ini data bersifat pasif.
- Pemrograman berorientasi objek atau yang lebih umum disebut OOP merupakan paradigma pemrograman yang menggunakan pendekatan “object” untuk membangun sebuah aplikasi. Dalam OOP, data dan fungsi dibungkus dalam class atau object.
Dalam konsep Pemrograman Berorientasi Objek dikenal beberapa istilah umum, yaitu:
Attribute atau yang biasa juga disebut state / properties / field merupakan bagian yang dimiliki oleh sebuah class yang tidak melakukan operasi tetapi kepadanya dilakukan operasi sehingga dapat merubah nilai dari attribute tersebut.
Method atau yang biasa juga disebut behaviour merupakan bagian yang dimiliki oleh sebuah class yang dapat melakukan operasi, bertindak atau mengerjakan sesuatu.
Dalam konsep pemrogramam berorientasi objek ada 4 hal yang utama yaitu :- Abstraksi (Abstraction).
- Pewarisan (Inheritance).
- Pembungkusan (Encapsulation).
- BanyakBentuk(Polymorphism).
- Lain halnya dengan pemrograman berorientasi objek (OOP), fungsi dan data bukan menjadi dua hal yang terpisah. Fungsi dan data menjadi satu kesatuan yang disebut sebagai objek aktif. Cara pandang OOP ini yaitu sebuah program merupakan serangkaian objek yang bekerjasama untuk menyelesaikan suatu problem.
- Dengan kata lain, metode prosedural berfokus pada cara komputer menangani tugas, sedangkan metode OOP berfokus pada tugas yang kita kembangkan untuk dieksekusi komputer. Kedua jenis metode pemrograman tersebut dapat digunakan untuk menangani masalah yang sama, asalkan bahasa pemrograman yang digunakan mendukung metode-metode tersebut. Contoh bahasa pemrograman yang mendukung OOP diantaranya : Java, C++, Pascal, Visual Basic .NET, Ruby, Python, PHP, C#, Delphi, Perl, dsb. Selain itu masih banyak bahasa lain yang termasuk ke dalam bahasa prosedural, atau bahkan bisa mendukung kedua metode pemrograman tersebut. Untuk lebih lengkapnya, dapat dilihat daftar bahasa pemrograman berdasarkan tipenya.
Class
- Di dalam OOP, komponen pembangun aplikasi adalah class dapat digambarkan sebagai template, dan object adalah sesuatu yang dihasilkan dari template tersebut. Class merupakan prototipe yang mende-finisikan variabel-variabel dan methode-methode secara umum. Sedang kan objek pada sisi lain merupakan instansi dari suatu kelasContohnya, bila kita mempunyai class Mobil, maka kita bisa membuat object mobil sebanyak yang kita mau.
public class Mobil {
private String model;
private int kecepatan;
private int bahanBakar;
public Mobil(String model) {
this.model = model;
}
public void maju() {
kecepatan = 5;
}
public void berhenti() {
kecepatan = 0;
}
public static void main(String[] args) {
Mobil myCivic = new Mobil("Civic");
Mobil myCamry = new Mobil("Camry");
}
}
- Pada contoh di atas, class Mobil memiliki property model dengan tipe data String dan property kecepatan dengan tipe datainteger. Property-property ini yang akan menentukan karakteristik atau sifat dari object tersebut, apa modelnya, berapa kecepatannya, dan berapa bahanBakarnya saat ini. Selain itu, class mobil juga mempunyai method untuk menyuruh mobil tersebut maju dan menyuruhnya berhenti.
- Satu blok kode yang spesial dari sebuah class adalah constructor. Constructor dideklarasikan dengan tanpa return value, dan namanya harus sama persis dengan nama classnya. Kita akan memanggil constructor ini ketika akan membuat sebuah object baru dari class tersebut. Di Java, bila kita tidak mendeklarasikan satupun constructor, compiler akan secara otomatis menambahkandefault constructor.
- Method public static void main (String[] args) adalah entry point aplikasi Java. Di dalam method tersebut kita membuat 2 buah object dari class Mobil. Satu object kita beri nama myCivic yang kedua kita beri nama myCamry. Dua object tersebut adalah object yang berbeda, tidak terkait satu sama lain. Kita dapat menyuruh myCivic untuk maju, sementara myCamry masih diam di tempat.
- Object berinteraksi dengan object lainnya dengan mengakses property nya atau memanggil method yang telah didefinisikan di class tersebut.
Objek
- Pada dasarnya semua benda yang ada di dunia nyata dapat dianggap sebagai sebuah objek. Sebenarnya ada dua ciri utama pada sebuah objek, yaitu :
- Setap objek memiliki atribut sebagai status yang kemudian akan disebut sebagai state.
- Setiap objek memiliki tingkah laku yang kemudian akan disebut sebagai behaviour.
- Contoh : objek MOBIL
- Mobil memiliki atribut/state/Property : Roda, Pintu, Jenis dan Warna.
- Mobil memiliki kebiasaan (behaviour) : kecepatan dapat menaik atau menurun, perpindahan perseneleng.
- Dalam pengembangan perangkat lunak berorientasi objek, perangkat lunak tersebut akan menyimpan state dari objek dalam variabel-variabel dan akan menyimpan behaviour dari objek dalam methode-methode atau fungsi-fungsi atau prosedur.
- merupakan perwujudan dari class, setiap object akan mempunyai attribute dan method yang dimiliki oleh class-nya, contohnya: amir, ahmad, yani merupakan object dari class manusia. Setiap objectdapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda. Jadi objek adalah pendefinisian suatu benda yang merujuk kepada suatu class.
Contoh-Contoh Objek
Abstraksi (Abstraction)
- Abstraksi adalah 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.
package abstraction;
public interface Televisi {
public void nyalakan();
public void matikan();
}
public class TelevisiA implements Televisi {
public void nyalakan() {
System.out.println("1");
System.out.println("2");
System.out.println("3");
System.out.println("Televisi A menyala");
}
public void matikan() {
System.out.println("3");
System.out.println("2");
System.out.println("1");
System.out.println("Televisi A mati");
}
}
public class TelevisiB implements Televisi {
public void nyalakan() {
System.out.println("Televisi B langsungmenyala");
}
public void matikan() {
System.out.println("Televisi B langsungmati");
}
}
public class RemoteControl {
public static void main(String[] args) {
TelevisimyTV = null;
// kendalikanTelevisi A
myTV = new TelevisiA();
myTV.nyalakan();
myTV.matikan();
// kendalikanTelevisi B
myTV = new TelevisiB();
myTV.nyalakan();
myTV.matikan();
}
}
- Di atas telah dibuat sebuah interface Televisi yang mendefinisikan bahwa sebuah televisi bisa dinyalakan dan dimatikan. Interface hanya menentukan spesifikasi tanpa menyebutkan implementasinya. Class TelevisiA dan TelevisiB merupakan implementasi dari spesifikasi tersebut. Kedua class ini mengimplementasikan method nyalakan dan matikan dengan cara yang berbeda. TelevisiA menghitung 1,2,3 terlebih dahulu sebelum menyala dan sebelum mati, sementara TelevisiB langsung menyala dan langsung mati. Class RemoteControl mencoba mengendalikan kedua televisi ini dengan mengandalkan spesifikasi yang ada. Tentunya TelevisiA dan TelevisiB berhasil dikendalikan dari remote control, meskipun implementasinya bisa berbeda.
(Inheritance) Penurunan
- Adalah konsep yang menyatakan bahwa metode atau atribut dalam kelas dapat diturunkan atau digunakan kembali oleh kelas lain.
- Mengatur polimorfisme dan enskapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada.
- objek-objek ini dapat membagi dan memperluas perilaku mereka tanpa harus mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas).
- Inheritance merupakan pewarisan veriabel dan metho-de pada sebuah class yang diperoleh dari class yang telah terdefinisi sebelumnya. Sebuah subclass akan mewarisi state (variabel-variable) dan behaviour (methode-methode) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula dimodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya. Keuntungan dari inheritance adalah :
- Subclass menyediakan state/ behaviour yang spesifik yang mem-bedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
- Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisi-kan class dengan state dan behaviour secara umum.
- Istilah dalam inheritance yang perlu diperhatikan :
- Extends, keyword ini harus ditambahkan pada definisi class yang menjadi subclass.
- Superclass, digunakan untuk menunjukkan hirarki class yang ber-arti class dasar dari subclass.
- Subclass, adalah class anak atau turunan secara hirarki dari superclass.
KEUNTUNGAN INHERITANCE
- Subclass bisa menyediakan behaviornya sendiri.
- Memungkinkan mempergunakan ulang souce code dari superclass.
- Bisa mendeklarasikan superclass yang bersifat generik =>Abstact Class.
package .oop;
class Orang {
protected String nama;
protected String umur;
public void makan() {
System.out.println("Saya sedang makan");
}
public void minum() {
System.out.println("Saya sedang minum");
}
public void tidur() {
System.out.println("Saya sedang tidur");
}
}
class Bayi extends Orang {
public void menangis() {
System.out.println("Huahuahua");
}
}
class Karyawan extends Orang {
public void bekerja() {
System.out.println("Sibuk nih");
}
}
- Class Bayi dan class Karyawan dideklarasikan dengan meng-extend class Orang, dimana class Orang tersebut sudah memiliki beberapa property dan method. Dengan demikian, class Bayi mewarisi mewarisi semua property dan method yang dideklarasikan di class Orang, kemudian menambahkan satu method menangis. Begitu juga dengan class Karyawan yang menambahkan method bekerja
public static void main(String[] args) {
Bayi bayi = new Bayi();
bayi.makan();
bayi.menangis();
Karyawan karyawan = new Karyawan();
karyawan.minum();
karyawan.bekerja();
}
- Jadi, karena Bayi dan Karyawan mewarisi method-method yang udah kita declare di class Orang, kita tidak perlu menulis ulang method-method tersebut, secara otomatis Bayi dan Karyawan juga bisa makan, minum, dan tidur. Tujuannya adalah supaya kita tidak perlu rewrite apa yang bisa di reuse. Apa keuntungan reuse dibanding rewrite ? Kalau rewrite, kita harus copy paste ke semua class. Kemudian kalau suatu saat kita harus mengubah isi method itu, maka harus mengubah di tiga tempat (Orang, Bayi, dan Karyawan). Kalau reuse, cukup deklarasikan satu kali, kemudian jika ingin mengubah cukup ubah di satu tempat.
Polimorfisme / BanyakBentuk
Kata polimorfisme berarti satu objek dengan banyak bentuk yang ber-beda, merupakan konsep sederhana dalam bahasa pemrograman ber-orientasi objek yang berarti kemampuan dari suatu variabel referensi objek memiliki aksi berbeda bila methode yang sama dipanggil, dimana aksi methode tergantung dari tipe objeknya. Kondisi yang harus dipe-nuhi supaya polimorfisme dapat diimplementasikan adalah :
Methode yang dipanggil harus melalui variabel dari basis class atau superclass.
Methode yang dipanggil juga harus menjadi methode dari basis class.
Polymorphism dapat diterjemahkan secara bebas mejadi”banyak bentuk”. Dalam OOP, kita bisa mendefinisikan sebuah class yang meng-extend class lain dan meng-override atau mengimplementasi ulang isi sebuah method.
Pemanggilan orang makan() pada object bayi dan karyawan akan menghasilkan output yang berbeda karena pada saat runtime, Java akan mengeksekusi implementasi aktual dari masing-masing object.
Enkapsulasi (Encapsulation) / Pembungkusan
- Encapsulation berarti membungkus informasi atau data ke dalam sebuah object. Di dalam OOP, kita akan selalu mengakses data melalui object. Tidak ada data yang tersebar disana-sini diluar object. Konsep ini dipertegas dengan adanya penentu akses (access modifier) pada deklarasi property dan method. Pada contoh di atas, property model dan kecepatan dideklarasikan dengan akses private, yang berarti property ini tidak dapat diakses secara langsung oleh object lain. Selain private, Java menyediakan penentu akses lainnya (dengan urutan yang semakin “terbuka”) yaitu default (tanpa modifier), protected dan public. Penentu akses public membuat property akan dapat diakses secara langsung dari semua object yang lain. Hal ini sangat tidak dianjurkan karena object lain dapat mengubah isi dari property tersebut, dan membuat object target menjadi tidak konsisten. Bayangkan bila property bahanBakar bisa langsung diubah dari class lain menjadi -10 (minus sepuluh), keadaan object mobil tersebut tentunya menjadi tidak logis.
Kesimpulan
- 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. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
EmoticonEmoticon