Teknik Informatika S1
Disusun Oleh:
Egia Rosi Subhiyakto, M.Kom, M.CS
Teknik Informatika UDINUS
egia@dsn.dinus.ac.id
+6281329571612
Pengenalan OOAD
SILABUS MATA KULIAH
1. Introduction to OOAD
2. Introduction to UML
3. Requirement and Use Case
4. Analysis
5. Software Architecture
6. Software Architecture Modeling
7. Design Patterns
8. Design
9. Implementation
10. Testing
Sejarah OOAD
✓ Metode beorientasi objek mulai berkembang ketika Grady Booch pada tahun 80-an mempublikasikan suatu paper bagaimana melakukan perancangan untuk bahasa ADA namun memberi judul paper tersebut dengan : Object-Oriented Design.
✓ Selanjutnya ide tersebut terus ia kembangkan sampai tahun 90 an.
Sejarah OOAD
✓ Pada tahun 1991 Peter Coad dan Yourdon memperkenalkan metode berorientasi objek yang lebih sederhana dibandingkan Booch.
✓ Metode ini menjadi cepat populer karena mendukung layanan-layanan yang terdapat pada C++.
✓ Pada waktu itu C++ merupakan bahasa pemrograman berorientasi objek yang paling populer .
Sejarah OOAD
✓ Pada tahun 1994 Ivar Jacobson memperkenalkan konsep use case dan object oriented software engineering.
✓ Pada tahun 1994 itu juga yaitu bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, mempelopori usaha untuk penyatuan notasi pendekatan berorientasi objek.
✓ Pada tahun 1995 dihasilkan draft pertama dari UML (versi 0.8). ✓ Sejak tahun 1996 pengembangan tersebut dikoordinasikan oleh
Sejarah OOAD
✓ Tahun 1997 UML versi 1.1 muncul, dan saat ini versi terbaru adalah versi 1.5 yang dirilis bulan Maret 2003.
✓ Booch, Rumbaugh dan Jacobson menyusun tiga buku serial tentang UML pada tahun 1999.
✓ Sejak saat itulah UML telah menjelma menjadi standar bahasa pemodelan untuk aplikasi berorientasi objek [DHA03]
Mengapa OOAD?
Mengapa OOAD?
•
Memudahkan pemanfaatan ulang code dan arsitektur
•
Lebih mencerminkan dunia nyata
o
lebih
tepat
dalam
menggambarkan
entitas,
dekomposisi berdasarkan pembagian yang natural,
lebih mudah untuk dipahami dan dirawat
Mengapa OOAD?
•
Kestabilan
o
perubahan kecil dalam requirement tidak berarti
perubahan yang signifikan dalam sistem yang
sedang dikembangkan
Kapan kita menggunakan OO?
•
Jika perangkat lunak (PL) yang dibangun cukup kompleks
•
Jika PL yang dibangun diperkirakan akan tumbuh makin
kompleks di masa mendatang
•
Jika kita ingin membangun PL yang dapat dipergunakan
kembali di masa mendatang (reusable)
Konsep Kunci Perancangan
Berorientasi Object
1. Peran Sentral dari Object (Central role of object)
•
Object sebagai inti dari desain perangkat lunak bukan
proses
o Proses rentan terhadap perubahan dan sebagian sistem lama tidak dapat digunakan kembali (re-usable)
•
Object berpusat pada struktur data dan method yang
dapat dimodifikasi/disesuaikan dengan kebutuhan
Konsep Kunci Perancangan
Berorientasi Object
2. Gagasan Kelas/ the notion of a class
•
Kelas-kelas mengijinkan perancang software untuk
melihat object sebagai jenis entitas yang berbeda
•
Melihat
sebagai
object
memungkinkan
untuk
menggunakan
mekanisme
klasifikasi
untuk
mengkategorikan jenis, mendefinisikan hirarki, dan
terlibat pada ide-ide spesialisasi dan generalisasi
Konsep Kunci Perancangan
Berorientasi Object
3. Suatu bahasa untuk mendefinisikan sistem/ a language to
define the system
•
Unified Modelling Language (UML) telah terpilih sebagai
alat standar untuk menggambarkan produk akhir dari
kegiatan desain
•
Dokumen-dokumen yang dihasilkan dalam bahasa ini dapat
dipahami secara universal, dengan demikian dapat
digunakan sebagai blueprint oleh enginer teknik lainnya
Konsep Kunci Perancangan
Berorientasi Object
4. Extendability dan kemampuan beradaptasi/ The
notions of extendibility and adaptability
• Software memiliki fleksibilitas yang tidak biasanya ditemukan dalam perangkat keras dan ini memungkinkan kita untuk memodifikasi entitas yang ada
• Inheritance: memungkinkan menciptakan kelas baru dari keturunan kelas yang ada (parent)
Cohesion & Coupling
•
Selain konsep sebelumnya, salah satu konsep OOP yang
cukup penting adalah
low coupling and high cohesion
•
Cohesion berhubungan dengan responsibility sebuah class
•
Coupling
berhubungan
dengan
seberapa
besar
ketergantungn class dengan class yang lain
Cohesion & Coupling (lanj)
•
Semakin spesifik sebuah responsibility class, maka
akan semakin rendah tingkat ketergantungannya,
begitu juga sebaliknya
•
Tujuan utama dari konsep ini adalah, fleksibilitas
sebuah class, artinya class yang didesain dengan low
Berorientasi Objek?
Attribute:
Topi, Baju, Jaket,
Tas Punggung,
Tangan, Kaki, Mata
Behavior:
Cara
Jalan ke Depan
Cara
Jalan Mundur
Cara
Belok ke Kiri
Cara
Memanjat
Berorientasi Objek?
Attribute (State):
Ban, Stir, Pedal Rem, Pedal Gas, Warna, Tahun Produksi
Behavior:
Cara Menghidupkan Mesin Cara Manjalankan Mobil Cara Memundurkan Mobil
Attribute Variable (Member)
Behavior Method (Fungsi)
Object
•
Sebuah object adalah representasi dari sebuah
entitas, baik fisik, konseptual maupun software
•
Obyek memiliki status (state) dan tingkah laku
(behavior), Status (state) disebut juga dengan atribut
•
Pada OOP : status disimpan dalam variabel, dan
Object
Example of object:
o
Physical entity
o
Conceptual entity
o
Software entity
Truck Chemical Process Linked ListClass
• Sebuah Class merupakan definisi abstract dari sebuah object
• Class mendefinisikan struktur dan behaviour dari masing-masing object di dalam sebuah class
• Class bertugas sebagai template untuk pembuatan obyek
• Jadi obyek merupakan hasil instansiasi dari class Obyek disebut juga dengan instance
Perbedaan Class dan Object
• Class: konsep dan deskripsi dari sesuatu
o
Class mendeklarasikan
method
yang dapat digunakan
(dipanggil) oleh object
• Object: instance dari class, bentuk (contoh) nyata dari class
o
Object memiliki sifat
independen
dan dapat digunakan
untuk memanggil method
• Contoh Class dan Object:
o
Class:
mobil
o
Object:
mobilnya pak Joko, mobilku, mobil berwarna
Perbedaan Class dan Object
•
Class seperti
cetakan kue
, dimana kue yg dihasilkan
dari cetakan kue itu adalah
object
•
Warna kue bisa bermacam-macam meskipun berasal
dari cetakan yang sama (
object memiliki sifat
independen
)
Attribute
• Variable yang mengitari class, dengan nilai datanya bisa ditentukan di object
• Variable digunakan untuk menyimpan nilai yang nantinya akan digunakan pada program
• Variable memiliki jenis (tipe), nama dan nilai
• Name, age, dan weight adalah atribute (variabel) dari class Person
Method
•
Method merupakan hal-hal yang bisa dilakukan oleh obyek
dari suatu class
•
Yang bisa dilakukan oleh method :
–Merubah nilai atribut suatu obyek
–Menerima informasi dari obyek lain
Karakteritik Metodologi Berorientasi Objek
Metodologi pengembangan sistem berorientasi objek
mempunyai tiga karakteristik utama :
1. Encapsulation
2. Inheritance
3. Polymorphism
Karakteritik Metodologi Berorientasi Objek
1. Encapsulation
✓
Encapsulation merupakan dasar untuk pembatasan ruang
lingkup program terhadap data yang diproses.
✓
Data dan prosedur atau fungsi dikemas bersama sama
dalam suatu objek, sehingga prosedur atau fungsi lain dari
luar tidak dapat mengaksesnya.
✓
Data terlindung dari prosedur atau objek lain, kecuali
prosedur yang berada dalam objek itu sendiri.
Karakteritik Metodologi Berorientasi Objek
2. Inheritance
✓ Inheritance adalah teknik yang menyatakan bahwa anak dari objek akan mewarisi data/atribut dan metode dari induknya langsung.
✓ Atribut dan metode dari objek dari objek induk diturunkan kepada anak objek, demikian seterusnya.
✓ Inheritance mempunyai arti bahwa atribut dan operasi yang dimiliki bersama di anatara kelas yang mempunyai hubungan secara hirarki.
Karakteritik Metodologi Berorientasi Objek
2. Inheritance
✓ Suatu kelas dapat ditentukan secara umum, kemudian ditentukan spesifik menjadi subkelas. Setiap subkelas mempunyai hubungan atau mewarisi semua sifat yang dimiliki oleh kelas induknya, dan ditambah dengan sifat unik yang dimilikinya.
✓ Kelas Objek dapat didefinisikan atribut dan service dari kelas Objek lainnya.
Karakteritik Metodologi Berorientasi Objek
2. Inheritance
Contoh:
Karakteritik Metodologi Berorientasi Objek
3. Polymorphism
✓ Polimorphism yaitu konsep yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku berbeda.
✓ Polimorphism mempunyai arti bahwa operasi yang sama mungkin mempunyai perbedaan dalam kelas yang berbeda.
✓ Kemampuan objek-objek yang berbeda untuk melakukan metode yang pantas dalam merespon message yang sama.
✓ Seleksi dari metode yang sesuai bergantung pada kelas yang seharusnya menciptakan Objek.