Rabu, 04 Juli 2012

OOAD (Object Oriented Analysis and Desain)


Pengertian OOAD
OOAD adalah metode analisis yang memerikasa requirements dari sudut pandang kelas kelas dan objek yang ditemui dalam ruang lingkup permasalahan yang mengarahkan arsitektur software yang didasarkan pada manipulasi objek-objek system atau subsistem.. OOAD merupakan cara baru dalam memikirkan suatu masalah dengan menggunakan model yang dibuat menurut konsep sekitar dunia nyata. Dasar pembuatan adalah objek,yang merupakan kombinasi antara struktur data dan perilaku dalam satu entitas.

Konsep Dasar OOAD
OOAD mencakup analisis dan desain sebuah sistem dengan pendekatan objek, yaiut analisis berorientasi objek (OOA) dan desain berorientasi objek (OOD).
OOA (object oriented analysis)
OOA (object oriented analysis) adalah Metode analisis yang memeriksa requirement (syarat/keperluan  yang harus dipenuhi sebuah sistem) dari sudut pandang kelas-kelas dan objek-objek yang ditemui dalam ruang lingkup perusahaan.
Tahapan OOA (object oriented analysis) adalah:
1.               Menentukan Kebutuhan Pemakai untuk Sistem Berorientasi Objek.
·            Mengidentifikasikan proses-proses bisnis dan kebutuhan pemakai dan mengekspresikan dengan ‘use-case”.
·            Sebenarnya bukan merupakan aktivitas analisis berorientasi objek, karena tidak membicarakan pembahasan tentang objek.
·            Diperlukan karena dapat menjelaskan aktivitas-aktivitas apa saja yang harus dikerjakan oleh sistem, dan menjelaskan juga perilaku dari komponen-komponen sistem.
·            Ada diagram tertentu yang dapat merepresentasikan model kebutuhan dari “use-case” yang diperoleh.
2.               Identifikasi Kelas dan Objek
·            Mengidentifikasi kelas-kelas dan objek-objek yang ada dalam lingkup aplikasi:
- eksplisit pada pernyataan masalah
- implisit pada lingkup aplikasi atau pengetahuan atas lingkup aplikasi
·             Kelas dan objek dapat diidentifikasi dari:
- entitas eksternal yang memproduksi dan memakai informasi yang akan digunakan oleh sistem berbasis komputer
- sesuatu yang merupakan bagian dari wilayah informasi dari permasalahan
- kejadian, misalnya prosedur operasional, yang muncul dalam lingkup operasional sistem
- peran yang dimainkan oleh orang-orang yang berinteraksi dengan sistem
- unit organisasi yang relevan dengan aplikasi
- tempat yang menentukan ruang lingkup masalah dan seluruh fungsi dari sitem
- struktur yang mendefinisikan kelas dari objek atau yang menghubungkan kelas-kelas objek.
·            Abaikan kelas dan objek yang tidak tepat karena:
- redunden
- tidak relevan
- lebih tepat berupa atribut
3.               Identifikasi Atribut dan Layanan
·      Mengidentifikasi atribut dan layanan yang terkait untuk setiap atribut tersebut.
·      Atribut diidentifikasi dari elemen-elemen data yang dapat menggambarkan (mencirikan) sebuah objek secara utuh.
·      Layanan diidentifikasi dari perilaku spesifik yang dapat menunjukkan peran dan tanggung jawab suatu objek.
·      Abaikan atribut yang tidak tepat karena:
- berupa objek
- berupa qualifier
- berupa nama
- berupa identifier pada implementasi
- menyatakan status internal objek
- merupakan atribut yang sangat kecil (minor)
- bertentangan dengan atribut lain
4.               Definisi Struktur dan Hirarki
·       Mendefinisikan struktur dan hirarki dari objek yang akan mengorganisasikan kelas objek.
·      Mengatur dan menyederhanakan objek-objek menjadi kelas-kelas objek melalui konsep agregasi dan pewarisan.
·      Struktur dan hirarki yang mungkin didefinisikan:
- Struktur “generalization-specification”
Contoh:


- Struktur “whole-part” atau “a-part-of”
Contoh:

5.               Buat Model Hubungan Objek
·       Mendefinisikan hubungan (asosiasi atau koneksi) antar kelas, yaitu ketergantungan antar satu kelas atau lebih dengan kelas lainnya.
·       Asosiasi dapat berbentuk:
- lokasi fisik atau penempatan (next, to, part, of contained in)
- aksi terarah (drive)
- komunikasi (transmit to, acquires from)
- kepemilikan (incorporated by, is composed of)
- pemenuhan kondisi (manages, coordinates, controls)


·      Jenis-jenis asosiasi:
- Asosiasi 1 – 1 (one-to-one association)
Contoh:


- Asosiasi 1 – n (one-to-many association)
Contoh:

- Asosiasi n – n (many-to-many association)
Contoh:

- Ternary Association
Contoh:



- Kualifikasi
Hubungan asosiatif berkualifikasi antara 2 kelas objek.
Contoh:

- Ordering
Hubungan berdasarkan urutan kejadian.
Contoh:


·                  Nama hubungan dan garis atau anak panah digunakan untuk menyatakan hubungan antar kelas-kelas tersebut.
·                  Abaikan asosiasi yang tidak tepat karena:
- asosiasi antara kelas yang diabaikan
- asosiasi implementatif atau tidak relevan
- asosiasi yang berupa aksi
- asosiasi ternary
- asosiasi turunan
6.               Buat Model Perilaku Objek
·      Menyatakan bagaimana sistem berorientasi objek akan menanggapi kejadian atau stimuli eksternal (memunculkan sifat dinamis objek).
·                  Tahap-tahap untuk membuat model perilaku objek:
- evaluasi semua “use-case” untuk memahami urutan interaksi yang ada dalam sistem
- identifikasi kejadian yang menggerakkan urutan interaksi, dan pahami bagaimana   kejadian-kejadian tersebut berhubungan dengan objek tertentu
- buat penelusuran kejadian untuk setiap “use-case”
- buat diagram transisi keadaan untuk sistem
- tinjau ulang model perilaku objek untuk verifikasi keakuratan dan konsistensi

OOD (Object Oriented Design)
OOD (Object Oriented Design) adalah metode mendesain yang mencakup proses pendekompoisisan objek dan digambarkan dalam notasi sehingga bisa menggambarkan static dan dynamic model sistem baik secara logical dan/atau physical.
OOD memungkinkan software engineer untuk mengetahui object-object yang dihasilkan oleh tiap class dan hubungan antar object. Selain itu, OOD menggambarkan bagaimana hubungan antar object bisa dilakukan, bagaimana behavior dari object diimplementasikan dan bagaimana komunikasi antar object diimplementasikan.
2.3            Konsep pemodelan OOAD
·         Obyek ® segala sesuatu yang ada atau dapat dilihat bisa berupa benda, proses, aktifitas dan lain-lain. Hasil pengamatan tersebut tidak otomatis menjadi obyek dalam sistem yang akan dibuat.
·         Class ® kumpulan dari beberapa obyek yang mempunyai karakteristik (atribut daan operasi) yang sama.
·         Atribut®Data yang mewakili karakteristik interes tentang sebuah obyek/class.
·         Pewarisan (inheritence) ® Konsep dimana metode dan atau atribut yang ditentukan di dalam sebuah obyek dalam class dapat diwariskan atau digunakan lagi oleh obyek class lainnya
·         Generalisasi ®Teknik dimana atribut dan behavior yang umum pada beberapa tipe class obyek dikelompokkan kedalam class sendiri disebut supertype.
·         Supertype ® Entity yang berisi atribut dan behavior yang umum bagi satu atau lebih subtype kelas.
·         Behavior = implementasi layanan/operasi dari class/obyek yg mempengaruhi atribut
·         Pengkapsulan (encapsulation)
Dasar untuk pembatasan ruang lingkup program terhadap data yang diproses. Data dan prosedur (fungsi) dikemas dalam suatu obyek shg prosedur dari luar tidak dapat mengaksesnya


·         Polimorfisme (Polymorphism)
Konsep yang menunjukkan bahwa sesuatu yang sama mempunyai bentuk dan perilaku yang berbeda.
Operasi/method yang sama mungkin mempunyai perbedaan dalam kelas yang berbeda.
Metode= implementasi spesifik dari operasi suatu class

Pemodelan OOAD dengan Konsep Pemodelan Unified Modelling Languange (UML)
UML (Unified Modeling Language) adalah sebuah bahasa yang berdasarkan grafik/gambar untuk memvisualisasi, menspesifikasikan, membangun, dan pendokumentasian dari sebuah sistem pengembangan software berbasis OO (Object-Oriented). UML sendiri juga memberikan standar penulisan sebuah sistem blue print, yang meliputi konsep bisnis proses, penulisan kelas-kelas dalam bahasa program yang spesifik, skema database, dan komponen-komponen yang diperlukan dalam sistem software.
Contoh  Kasus Pada Sistem Perpustakaan
Use Case Pada Sistem Perpustakaan

Class Diagram Pada Sistem Perpustakaan

Sequence Diagram Pada Sistem Perpustakaan

Pemodelan OOAD dengan Blue J
BlueJ merupakan salah satu alat pengembangan bahasa Java yang secara khusus di-design untuk proses pembelajaran java di level perkenalan. Di dalam BlueJ terdapat suatu fitur yang sangat membantu dalam proses pembelajaran yaitu adanya otomatisasi dalam penggambaran class diagram, sehingga pengguna dapat mendapat esensi dari berpikir dalam OO menggunakan bahasa Java.
Contoh  Inheritance dengan Blue J
Berikut ini adalah contoh inheritance yaitu anggota. Anggota dapat terdiri dari dosen dan mahasiswa.
Berikut ini adalah screenshoot programnya :

Dan berikut ini adalah source code dari masing-masing kelasnya :
1.     Kelas Anggota (sebagai Parent Class)

2.    Kelas Dosen (sebagai Child Class)



3.    Kelas Mahasiswa (sebagai Child Class)

Pemodelan OOAD dengan JAVA (NetBeans IDE 6.9.1)
Java adalah bahasa pemrograman berorientasi objek murni yang dibuat berdasarkan kemampuan-kemampuan terbaik bahasa pemrograman objek sebelumnya (C++, Ada, Simula).
Contoh  Asosiasi dengan JAVA
Berikut ini adalah penerapaan asosiasi pada JAVA, yaitu hubungan antara anggota dengan buku, yaitu hubungan asosiasi one to many.
Kelas yang dibutuhkan antara lain :
1.        Kelas Anggota
2.      Kelas Buku
3.      Kelas Pinjam
Berikut ini adalah source code dari masing-masing kelas:
1.     Kelas Anggota
package pinjambuku;

public class anggota {
private String KdAnggota;
protected String[] KodeBuku=new String[2];
protected String[] JudulBuku=new String[2];
private int jmlBuku=0;

public anggota(String kode){
    this.KdAnggota=kode;
}

public void setKdAnggota (String KdAnggota) {
    this.KdAnggota = KdAnggota;
}

public void setKodeBuku (String KdBuku) {
    KodeBuku[jmlBuku]=KdBuku;
    jmlBuku++;
}

public void setJudulBuku (String JdlBuku) {
    KodeBuku[jmlBuku]=JdlBuku;
    jmlBuku++;
}

public int getJmlBuku () {
    return this.jmlBuku;
}

public String getKdAnggota () {
    return this.KdAnggota;
}

public void daftarBuku() {
    System.out.println("Kode Anggota : " +KdAnggota);
    System.out.println("Daftar Buku Yang Dipinjam : ");
        for (int i=0;i<jmlBuku;i++){
                        System.out.println(KodeBuku[i]);
            }

}

}


2.    Kelas Buku
package pinjambuku;

public class buku {

    private String KdBuku;
    private String JdlBuku;

    public buku (String KdBuku , String JdlBuku){
        this.KdBuku=KdBuku;
        this.JdlBuku=JdlBuku;
    }
    public void setKdBuku (String KdBuku){
        this.KdBuku=KdBuku;
    }
   
    public void setJdlBuku (String JdlBuku){
        this.JdlBuku=JdlBuku;
    }

    public String getKdBuku() {
            return this.KdBuku;
    }

    public String getJdlBuku() {
            return this.JdlBuku;
    }
}


3.    Kelas Pinjam
package pinjambuku;


public class pinjam {

 
    public static void main(String[] args) {


            buku buku1 = new buku("B001","Pengantar Teknologi Informasi");
            buku buku2 = new buku("B005","Pemrograman Berorientasi Objek");

            anggota anggota1 = new anggota("2009-51-100");

            anggota1.setKodeBuku(buku1.getKdBuku());
            anggota1.setKodeBuku(buku2.getKdBuku());
            anggota1.daftarBuku();
    }

}



Berikut ini adalah hasil programnya ketika di running :



Dari hasil di atas, dapat dilihat bahwa Kode Anggota : 2009-51-108, dapat meminjam buku lebih dari satu, yaitu : buku dengan kode B001 Dan kode B005

Nama Kelompok :
Anna Ayu Safitri 2009 51 108
Dwi Harjaningrum 2009 51 125