Kamis, 24 September 2009

Destructor & Overloading

DESTRUCTOR
Destructor merupakan salah satu jenis khusus anggota kelas fungsi yang dijalankan ketika sebuah objek dari kelas yang hancur.
Mereka adalah mitra untuk konstruktor. Ketika suatu variabel pergi ke luar lingkup, atau variabel yang dialokasikan secara dinamis dihapus secara eksplisit menggunakan kata kunci menghapus, kelas destructor disebut (jika ada) untuk membantu membersihkan kelas sebelum tersebut akan dihapus dari memori. Untuk kelas sederhana, sebuah destructor tidak diperlukan karena C + + akan secara otomatis membersihkan memori untuk Anda. Namun, jika Anda memiliki memori yang dialokasikan secara dinamis, atau jika Anda perlu melakukan semacam kelas pemeliharaan sebelum dihancurkan (misalnya menutup file), yang destructor adalah tempat yang tepat untuk melakukannya.
Penulisan fungsi destructor hampir sama dengan constructor hanya saja di awalnya dituliskan karakter cacing (~). Yang beda dari destructor adalah tidak adanya parameter / argument di dalam header fungsinya.

Contoh :

class alpha
{ public:
alpha()
{ count++;
cout << “\nno. of object created“ << count;
}
~alpha()
{ cout << “\nno. of object destroyed” << count;
count--;
}};
void main()
{ cout << “\nEnter MAIN\n\n”;
alpha a1, a2, a3, a4;
{ cout << “\nEnter Blok 1\n”;
alpha a5;
}
{ cout << “\nEnter Blok 2\n”;
alpha a6;
}}ya.

OVERLOADING
Overloading merupakan salah satu sifat dari Polimorphism yang mempunyai ciri memiliki nama yang sama tetapi berbeda fungsi. Dalam hal ini bila suatu class mempunyai suatu method tertentu, kemudian kita bisa mendefinisikan method tersebut dengan menambahkan suatu parameter lain tetapi tetap memiliki nama yang sama, itu yang disebut dengan Overloading.

Kita lihat contohnya saja yuk,

public class Mobil extends Kendaraan{

//melakukan overloading
void jenisKendaraan(String JK, String Tipe){
System.out.println(”Jenis Kendaraan: “+JK+” dengan tipe “+Tipe);
}
}

class Kendaraan{
String jenisKendaraan;
int tahunBuat;

//method jenisKendaraan
void jenisKendaraan(String JK){
jenisKendaraan = JK;
System.out.println(”Jenis Kendaraan: “+jenisKendaraan);
}

//method tahunBuat
void tahunBuat(int TB){
tahunBuat = TB;
System.out.println(”Tahun Buat: “+tahunBuat);
}
}

Kemudian kita gunakan class berikut:

class MobilAksi{
public static void main(String[] args){

//buat object
Mobil mobilku = new Mobil();

//panggil method
mobilku.jenisKendaraan(”Kijang Inova”);
mobilku.jenisKendaraan(”Ferari”, “Sport”);
}
}

Jalankan tuh file MobilAksi.java untuk melihat dimana Overloadingnya :)

Coba lihat tuh di class Mobil, kita lihat overloadingnya kita kan tadi menambahkan satu parameter lagi untuk tipe, kita tahu di class Kendaraan hanya ada 1 parameter pada method jenisKendaraan bukan? coba cek lagi lebih teliti. Sedangkan pada class Mobil, kita buat lagi method yang sama jenisKendaraan tapi dengan menambahkan 1 parameter lagi sehingga pada method jenisKendaraan di class Mobil sudah menggunakan 2 parameter pada method jenisKendaraan.

Kalo sudah menjalankan class MobilAksi kan terlihat tuh.

Sekian dulu dari saya...ane mau cao dulu...wassalam....

Rabu, 09 September 2009

Konsep dasar dari Pemrograman Berorientasi Objek

Pemrograman orientasi-objek menekankan konsep berikut:
  • 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.
  • 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 ijin 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.
  • Inheritas- Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada - objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
  • 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.

Selasa, 08 September 2009

OOP C++

OOP (Object Oriented Programming)


OOP adalah paradigma pemrograman yang cukup dominan saat ini, karena mampu memberikan solusi kaidah pemrograman modern. Meskipun demikian, bukan berarti bahwa pemrograman prosedural sudah tidak layak lagi .

OOP diciptakan karena dirasakan masih adanya keterbatasan pada bahasa pemrograman tradisional. Konsep dari OOP sendiri adalah, semua pemecahan masalah dibagi ke dalam objek. Dalam OOP data dan fungsi-fungsi yang akan mengoperasikannya digabungkan menjadi satu kesatuan yang dapat disebut sebagai objek. Proses perancangan atau desain dalam suatu pemrograman merupakan proses yang tidak terpisah dari proses yang mendahului, yaitu analisis dan proses yang mengikutinya. Pembahasan mengenai orientasi objek tidak akan terlepas dari konsep objek seperti inheritance atau penurunan, encapsulation atau pembungkusan,

dan polymorphism atau kebanyakrupaan. Konsep-konsep ini merupakan fundamental dalam orientasi objek yang perlu sekali dipahami serta digunakan dengan baik, dan menghindari penggunaannya yang tidak tepat.

Class dan Objek
Dalam lingkungan program berorientasi objek, pemrogram mendefinisikan class secara statik. Pada saat run-time, class akan diinstantiasi menjadi objek. Ada pun objek yang merupakan instantiasi dari suatu class selalu dapat diacu melalui current objek, apa pun nama instant-nya.

Dapat didefinisikan bahwa class merupakan struktur data dari suatu objek, lebih jelasnya adalah sebuah bentuk dasar atau blueprint yang mendefinisikan variabel method umum pada semua objek dari beberapa macam. Objek sendiri adalah kumpulan variabel dan fungsi yang dihasilkan dari template khusus atau disebut class. objek adalah elemen pada saat run-time yang akan diciptakan, dimanipulasi, dan dihancurkan ketika eksekusi. Ada pun class merupakan definisi statik dari himpunan objek yang mungkin diciptakan sebagai instantiasi dari class. Sederhananya adalah kumpulan objek yang mempunyai atribut sama. Dengan demikian, pada saat run-time maka yang kita miliki adalah objek.
Class biasany dibuat seperti ini
Class nama_classnya{
//berisi sekumpulan fungsi,variabel dan
//statement-statement lainnya
}

Agar class tersebut dpt digunakan maka perlu memiliki atribut-atribut contonya dalam php/c++

//di php
class NamaClass {
var $atribut1;
var $atribut2;
function operasi(){}

}

//di c++
class NamaClass {
public:
int atribut1;
int atribut2;
int operasi(){retun nilai_int}
};

Pada bahasa pemerograman web lain ex. Java file harus disimpan dengan nama class berbeda dengan PHP kita dapat memberikan nama yang tidak mesti sama dengan nama classnya

Inheritance
Inheritance atau pewarisan adalah kalimat yang pasti ada di dalam pemerograman berorientasi objek disebut juga dengan istilah reusable.

Ketika kita menggunakan kembali atau mengganti method dari class yang sudah ada, serta ketika menambahkan field instant dan method baru, maka pada saat itulah Anda bekerja dengan inheritance. Konsep ini merupakan konsep yang fundamental dalam orientasi objek dan harus digunakan dengan baik, ada beberapa macam Inheritance atau pewarisan yang ada di dalam OOP Single Inheritance dan Multple Inheritance

- Single Inheritance

- Multiple Inheritance

dalam penggunaan inheritance class Induk akan mewariskan semua atribut yang ia miliki sehingga class bawahnya akan memilki atribut yang sama dengan class induk, bahkan dapat memilki kebabasan untuk memilki atribut berbeda dengan class induknya berikut ilustrasi dalam php

catatan :
sampai sekarang PHP belum mendukung multiple inheritance seperti C++ walapun PHP dan c/c++ begitu banyak kemiripannya, dan perubahan PHP versi 5 ditekankan pada OOP salah satunya adalah beberapa tambahan untuk kemampuan inheritance

/* inheritance.php */

class Bapak {
var $nama =”Bapak”;
function Bapak($n) {
$this->nama = $n;
}

function Hallo() {echo “Halo, saya $this->nama
”;}
}

class Anak extends Bapak {}
$test = new Anak(”Anak dari Bapak”);
$test->Hallo();
?>

Hasil tampilan dari listing program di atas adalah “Halo, saya Anak dari Bapak” dan bukannya “Halo, saya Bapak”. Mengapa demikian? Memang di dalam class Bapak didefinisikan variabel nama dengan nilai Bapak, selanjutnya kita membuat objek dari class Anak yang merupakan turunan dari class Bapak. Lihat bahwa instantiasi sekaligus mengisikan parameter baru “Anak dari Bapak”, sehingga ketika dipanggil maka mengisikan $this->nama dengan parameter tersebut. Ada pun di dalam implementasi pemrograman, kebanyakan pemrogram merasakan beberapa manfaat dari inheritance atau pewarisan, diantaranya:
Subclass mampu menyediakan perilaku khusus dari elemen dasar yang disediakan oleh superclass.

Pemrogram dapat mengimplementasikan superclass untuk memanggil class abstrak yang menyatakan perilaku umum.