di OBJECT ORIENTED PROGRAMMING [OOP] Oleh H. SUMIJAN, Ir, M.Sc UPI CONVENTION CENTER [UPI-CC] UNIVERSITAS PUTRA INDONESIA “ YPTK “ H. SUMIJAN, Ir, M.Sc PADANG, 08 Agustus 2012
KARAKTERISTIK OBJECT ORIENTED Objek Kelas Abstract Data Type / Tipe Data Abstrak Instantiation / Instansiasi Inheritance / Inheritas / Pewarisan Encapsulation / Enkapsulasi Abstraction / Abstraksi Polymorphism / Polimorfisme
KARAKTERISTIK OBJECT ORIENTED Abstraksi, prinsip untuk merepresentasikan dunia nyata yang komplek menjadi satu bentuk model yang sederhana dengan mengabaikan aspek-aspek lain yang tidak sesuai dengan permasalahan. Enkapsulasi, pembungkusan atribut data dan layanan (operasi-operasi) yang dipunyai obyek, untuk menyembunyikan implementasi dari obyek sehingga obyek lain tidak mengetahui cara kerjanya Pewarisan (inheritance), mekanisme yang memungkinkan suatu obyek (kelas) mewarisi sebagian atau seluruh definisi dari obyek lain sebagai bagian dari dirinya.
KARAKTERISTIK OBJECT ORIENTED Reusability, pemanfaatan kembali obyek yang sudah didefinisikan untuk suatu permasalahan pada permasalahan lainnya yang melibatkan obyek tersebut. Generalisasi dan spesialisasi, menunjukan hubungan antara kelas dan obyek yang umum dengan kelas dan obyek yang khusus. Komunikasi antar obyek, dapat dilakukan lewat pesan (message) yang dikirim dari satu obyek ke obyek lainnya. Polymorphism, kemampuan suatu obyek untuk digunakan dibanyak tujuan yang berbeda dengan nama yang sama sehingga dapat menghemat pemakaian baris program.
TENTANG OBJECT Segala sesuatu yang ada. Objek terdiri dari attribute / state dan behaviour / event. Attribute adalah segala ciri atau sifat yang melekat pada objek. Behaviour adalah perilaku / perbuatan / aksi / kejadian yang dapat dilakukan / diterima oleh objek. Contoh: anjing, kucing, manusia, meja, dsb. Attr & behav dari contoh tsb adalah???
TENTANG CLASS Cetakan / template / blue print dari objek. Kelas mendefinisikan attribute (diwujudkan dalam bentuk field / variable global [variable yang melekat pada kelas, bukan pada sebuah method / fungsi / prosedur]) dan behaviour (diwujudkan dalam bentuk method / prosedur / fungsi) dari objek 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.
TENTANG CLASS 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.
ABSTRACT DATA TYPE Adalah tipe data tertentu yang didefinisikan oleh pemrogram untuk kemudahan pemrograman serta untuk mengakomodasi tipe-tipe data yang tidak secara spesifik diakomodasi oleh bahasa pemrograman yang digunakan. Dalam OOP kita dapat mendefinisikan tipe data baru. Dapat berisi attribute saja, behaviour saja maupun keduanya. ADT diwujudkan dalam kelas – kelas buatan programmer sesuai dengan kebutuhan / keinginan programmer. Singgung tipe data primitive!
ABSTRACT DATA TYPE
INSTANTIATION Adalah proses penciptaan objek berdasarkan kelas yang ada. Sama dengan pembuatan variable berdasar kelas tertentu. Biasanya ditandai dengan penggunaan kata kunci “new”. Contoh: A a = new A();
INHERITANCE Pewarisan attribute dan behaviour sebuah kelas kepada kelas yang lain. Contoh real: seorang anak memiliki anggota tubuh (mata, rambut) yang sama / mirip (bentuk, warna, etc) dengan orang tuanya, pewarisan DNA, etc.
INHERITANCE
INHERITANCE
INHERITANCE
INHERITANCE
INCAPSULATION Pembungkusan attribute atau behaviour sehingga tidak dapat diganti secara sembarangan dengan cara yang tidak seharusnya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
INCAPSULATION Manfaat dari proses enkapsulasi adalah : Modularitas: Kode sumber dari sebuah objek dapat dikelola secara independen dari kode sumber objek yang lain. Information Hiding: Karena kita dapat menentukan hak akses(public, private, protected, default) sebuah variabel/method dari objek, dengan demikian kita bisa menyembunyikan informasi yang tidak perlu diketahui objek lain.
ABSTRACTION Berbagai objek yang sejenis dapat memiliki behaviour yang sama namun berbeda implementasinya. Sebagai contoh, objek anjing sama – sama memiliki behaviour menggonggong namun suara gonggongan anjing berbeda – beda. Inilah yang mendasari abstraksi pada OOP. Pada OOP sebuah kelas dapat mendefinisikan behaviour yang sama secara abstract yang kemudian dapat diimplementasikan secara berbeda pada saat digunakan.
POLYMORPHISM Kata polimorfisme berarti satu objek dengan banyak bentuk yang berbeda Adalah konsep sederhana dalam pemrograman berorientasi objek yang berarti kemampuan dari suatu variabel referensi objek untuk memiliki aksi berbeda bila method yang sama dipanggil, dimana aksi method tergantung dari tipe objeknya. Menciptakan berbagai macam bentuk yang berbeda dari sebuah kelas yang sama. Proses ini dilakukan melalui proses pewarisan.
POLYMORPHISM
POLYMORPHISM public class Time1 { private: int hour, int minute, int second; public: void Time1() { settime(0,0,0); } void Time1(h) { settime(h,0,0); } void Time1(h,m) { settime(h,m,0); } void Time1(h,m,s) { settime(h,m,s); } };
CLASS DAN OBJECT Class Creation: Object Creation / Instantiation: class <name> { } Object Creation / Instantiation: <Class Name> <object name> = new <Class Constructor>;
CONSTRUCTOR Adalah sebuah method yang otomatis akan dipanggil setiap kali melakukan instansiasi terhadap suatu kelas dan digunakan untuk melakukan inisialisasi nilai dari data – data yang terdapat di dalam kelas yang bersangkutan. Namanya == nama kelas. Tidak ada return type sama sekali. Jika tidak dideklarasikan == use default
class Manager: public Pegawai { char KodeJabatan[10]; class Pegawai { private : char NIP[13]; char Nama[100]; char Gol[15]; double GaPok; public: void Input_Data() { cout << "Input Data Pegawai"<<endl; cout << "NIP :";cin>>NIP; fflush(stdin); cout << "Nama :";cin>>Nama; cout << "Golongan [II/A] :";cin>>Gol; cout << "Gaji Pokok Rp:";cin>>GaPok; GP=GaPok; } void Cetak_Data() cout << "Informasi Data Pegawai"<<endl; cout << "NIP :" << NIP << endl; cout << "Nama :" << Nama << endl; cout << "Golongan [II/A] :" << Gol << endl; cout << "Gaji Pokok Rp:" << GaPok << endl; }; class Manager: public Pegawai { char KodeJabatan[10]; char NamaJabatan[45]; double Tunjangan; public: void Input_Data() { Pegawai::Input_Data(); cout << "Kode Jabatan :";cin>>KodeJabatan; cout << "Nama Jabatan :";cin>>NamaJabatan; cout << "Besar Tunjangan Rp:";cin>>Tunjangan; } void Cetak_Data() Pegawai::Cetak_Data(); cout << "Kode Jabatan :" << KodeJabatan << endl; cout << "Nama Jabatan :" << NamaJabatan << endl; cout << "Besar Tunjangan Rp:" << Tunjangan << endl; cout << "Gaji Total Rp:" << Tunjangan+GP << endl; };
cout << "Menu Pilihan "<<endl; { case '1': P1.Input_Data(); break; case '2': M1.Input_Data(); case '3': P1.Cetak_Data(); case '4': M1.Cetak_Data(); case '5': exit(1); default: cout << endl << "Anda Salah Pilih [1..5]"<<endl; } void main() { char pil='0'; Pegawai P1; Manager M1; clrscr(); cout << "Menu Pilihan "<<endl; cout << "[1].Input Data Pegawai"<<endl; cout << "[2].Input Data Manager"<<endl; cout << "[3].Tampil Data Pegawai"<<endl; cout << "[4].Tampil Data Manager"<<endl; cout << "[5].Exit (Kalua)"<<endl; while (pil!='5') cout << "Pilahan Anda [1..5]";cin>>pil; switch (pil)
OVERLOADING Adalah mendefinisikan method yang memiliki nama yang sama, tetapi dengan signature (data type parameter & parameter number) yang berbeda dalam definisi class yang sama. Constructor == method bisa dioverload (see previous sample)
OVERLOADING
NEXT DASAR-DASAR MYSQL PEMROGRAMAN BERORIENTASI OBYEK (PBO)