rpl-2.4.1. pemrograman berorientasi objek (1)
TRANSCRIPT
Rekayasa Perangkat Lunak 2 Pemrograman Berorientasi Objek
OOP
Overview
• Modul ini berisi mengenai pengenalan, konsep dasar
pemrograman berorientasi objek, dan perbedaan antara
pemrograman terstruktur dan pemrograman berorientasi
objek.
Agenda Perkuliahan
1. Objek dan Kelas
2. Keuntungan Pemrograman Berorientasi Objek
3. Konsep Dasar Berorientasi Objek
4. Perbandingan Pendekatan Berorientasi Objek dan
Terstruktur.
Objek dan Kelas
Objek
1. Objek adalah konsepsi atau benda di dunia nyata yang
bisa dibedakan satu dengan yang lainnya.
2. Objek dapat dibentuk dari domain permasalahan yang
diambil.
3. Objek mempunyai identitas, properti, dan tingkah laku.
4. Merupakan hasil instansiasi dari kelas.
Objek
Kelas
1. Sekumpulan objek yang memiliki kemiripan dalam
hal properti, atribut, prilaku, dan semantik.
2. Proses klasifikasi dilakukan untuk membentuk
kelompok dari beberapa objek yang memiliki
kemiripan.
Kelas
Kendaraan
- Kode_Kendaraan : integer - Jenis_Kendaraan : string - Akselerasi : string - Waktu_Tempuh : integer
+ munculkanKendaraan() : string + akselerasiKendarran () : string + waktuTempuhKendaraan () : integer
Atribut : Data item yang menegaskan Kelas
Method / Behaviour : Pelaksanaan prosedur (badan dari kode yang mengeksekusi respon terhadap permintaan objek lain di dalam sistem).
Nama Kelas : Nama dari suatu kelas
Kelas
Kelas
1st Instansiasi Objek
2nd Instansiasi Objek
nst Instansiasi Objek
Kelas di Java
• Kelas dituliskan dengan keyword class, dengan
isi kelas menyatu dengan deklarasinya.
• Di C++ deklarasi dan definisi boleh dipisah
boleh disatukan.
• Access modifier harus ditulis untuk setiap
member (baik data maupun method)
Kelas sederhana
Contoh Kasus
Class Method
Class Method
Kelas (Class)
Konstruktor
Konstruktor
Konstruktor
• Di Java hanya ada konstruktor
• Tidak ada Copy Constructor
• Tidak ada destruktor
• Otomatis ada garbage collection (pemberesan Memori secara otomatis)
• Ada finalizer finalize()
• Tidak ada operator =, tapi ada method clone()
• Baca dokumentasi clone di API Java
Deklarasi Konstruktor
• Nama konstruktor sama dengan nama kelas dan tidak memiliki nilai kembalian (sama seperti C++)
• Boleh ada banyak konstruktor (sama seperti C++)
• Contoh konstruktor Point(int x, int y) {
this.x = x;
this.y = y;
}
Mekanisme Enkapsulasi
Method & Atribut Access modifier
Contoh Public
Contoh Private
Reference This
Static dan Alokasi Memori
Contoh
Contoh Static
Kelas Sederhana
• Kelas paling sederhana merepresentasi type (atribut) dan prototype (method).
• Paket ADT dalam bahasa C dapat ditranslasi menjadi sebuah kelas dengan konvensi sbb. • File adt.h tidak perlu ditulis
• File adt.c langsung menjadi sebuah kelas
• File madt.c menjadi sebuah kelas terpisah
• Setiap atribut dan method harus diberi
• “access modifier” secara eksplisit
Penempatan Access Modifier
• Akses modifier dilakukan dengan menempatkannya langsung
di depan nama setiap property atau method
• Di C++ ada tanda ':' setelah access modifier dan akses method
berlaku untuk semua method/property sampai akses modifier
berikutnya
class Point3D {
private int x, y;
public int z;
}
Kelas Point
• Perhatikan kelas berikut class Point {
private int x, y;
public int getX() { return x;}
public int getY() { return y;}
};
• Kelas di atas dapat dicompile sebagai C++ ataupun Java
Method di Java
• Hanya ada sedikit perbedaan antara method di C++ dengan Java
• Java tidak memiliki parameter default
• method tidak bisa ditandai const
• Tidak ada pointer/reference untuk tipe dasar
• Konsekuensi paling sederhana: tidak bisa membuat method untuk menukar dua tipe dasar
Keuntungan Pemrograman Berorientasi Objek
Keuntungan Pemrograman Berorientasi Objek
1. Meningkatkan Produktivitas
2. Kecepatan Pengembangan
3. Kemudahan Pemeliharaan
4. Adanya Konsistensi
5. Meningkatkan Kualitas Perangkat Lunak
Konsep Dasar Berorientasi Objek
Konsep Dasar Berorientasi Objek
1. Abstraksi (abstraction)
2. Enkapsulasi (encapsulation)
3. Pewarisan (inheritance)
4. Polimorfisme (polymorphism)
Abstraksi (abstraction)
Menjelaskan makna sebuah entitas secara cepat dan mudah.
1. Fokus terhadap esensi.
2. Menghilangkan sejumlah detail.
3. Fokus terhadap “is and does” dari sebuah objek.
Enkapsulasi (encapsulation)
1. Dikenal sebagai information hiding.
2. Pembungkusan pada objek:
a. Property
b. Behaviour.
Ilustrasi Abstraksi dan Enkapsulasi
Class Car
Attributes
Model
Location
#Wheels = 4
Operations
Start
Accelerate
<<instanceOf>>
<<instanceOf>>
<<instanceOf>>
Pewarisan (inheritance)
1. Menyatakan pewarisan atribut atau method dari super
class ke sub class.
2. Digunakan untuk mendukung konsep reusable code.
3. Hak akses dari suatu atribut dan method memberikan
pengaruh terhadap pewarisanya.
Ilustrasi Pewarisan
Kendaraan
# Kode_Kendaraan : integer # Jenis_Kendaraan : string # Akselerasi : string # Waktu_Tempuh : integer
+ munculkanKendaraan() : string + akselerasiKendarran () : string + waktuTempuhKendaraan () : integer
Mobil
- Akselerasi : string - Waktu_Tempuh : integer
+ akselerasiKendarran () : string + waktuTempuhKendaraan () : integer
Polimorfisme (polymorphism)
1. Perbedaan konten method yang ada pada dua buah objek
atau lebih pada esensi method yang sama.
2. Konsep overloading dan overriding digunakan sebagai
implementasi polimorphisme.
3. Sub class diizinkan mempunyai isi method yang berbeda
dari method super classnya.
Ilustrasi Polimorfisme
Perbandingan Pendekatan Berorientasi Objek dan Terstruktur.
Perbandingan Pendekatan Berorientasi Objek dan Terstruktur.
1. Dari Segi Dekomposisi Permasalahan
– Pendekatan Terstruktur Dekomposisi Permasalahan
berdasarkan fungsi atau proses.
– Pendekatan Berorientasi Objek Dekomposisi
Permasalahan berdasarkan objek atau konsep.
Perbandingan Pendekatan Berorientasi Objek dan Terstruktur.
2. Dari Segi Kelebihan
– Pendekatan Terstruktur kelebihan dalam kemudahan dalam
memahami sistem khususnya bagi user yang memiliki
pemahaman sistem yang rendah.
– Pendekatan Berorientasi Objek kelebihan dalam peningkatan
produktivitas karena mempunyai reusability yang cukup tinggi
dibanding dengan pendekatan lain.
Ilustrasi Perbandingan Berorientasi Objek dan Terstruktur
Sistem Akademik
Dosen Jadwal Kuliah
Kontrak Kuliah
Mahasiswa
Konteks
Penjadwalan Pengambilan
Kuliah Peniliaan
Dekomposisis berdasarkan objek atau konsep Dekomposisis berdasarkan fungsi atau proses
Metodologi Berorientasi Objek Metodologi Terstruktur
Assignment
• Buat Rangkuman OOP :
• Mengenai Object, Class, Method (dalam bahasa Java, C++, dan C#).
• Mengenai Abstraksi (abstraction), Enkapsulasi (encapsulation), Pewarisan
(inheritance), dan Polimorfisme (polymorphism) (dalam bahasa Java, C++, dan C#).
• Dikumpulkan dalam bentuk soft copy (.pdf) dikirim ke email :
[email protected], “tidak ada respon penerimaan email”.
• Subjek : Tugas Rangkuman OOP RPL 2 (Kelas, Nama, NIM).
• Batasan pengumpulan 6 April 2014, keterlambatan Nilai minus 50%.
• Abstraksi (abstraction), Enkapsulasi (encapsulation), Pewarisan (inheritance), dan
Polimorfisme (polymorphism) dibahas secara detail minggu depan.
Materi Kuliah dapat di download di :
“http://www.mediafire.com/?l6zxix76297bu”
SELESAI ......