Minggu, 29 Desember 2013

ANALISIS DAN PENERAPAN OO

METODE ANALISIS
�� The study of a problem, prior to taking some action
[De Marco, 1978]
�� The study of a problem domain, leading to a specification of
externally observable behavior; a complete, consistent, and
feasible statement of what is needed; a coverage of both
functional and quantified operational characteristics
[Edward Yourdon, 1990]
Biasanya analisa sistem dimulai dengan adanya
dokumen permintaan (requirement) yang diperoleh
dari semua pihak yang berkepentingan. (Mis: klien,
developer, pakar, dll)
Dokumen permintaan memiliki 2 fungsi:
�� memformulasikan kebutuhan klien
�� membuat suatu daftar tugas
Ada beberapa pendekatan yang biasa digunakan
dalam menganalisa suatu sistem, yaitu:
�� Functional Decomposition
�� Data Flow Approach
�� Object Oriented
Functional Decomposition
Functional Dec










omposition = function
+ sub-functions
+ functions interfaces
Functional decomposition hanya menghasilkan suatu
spesifikasi fungsional yang memetakan subyek
secara tidak langsung.
Functional decomposition sulit dilakukan karena sifat
sistem yang mudah berubah. Oleh sebab itu sistem
analist harus dapat menentukan fungsi-fungsi yang
memiliki potensi untuk berubah.
Data Flow Approach
Data Flow Approach = data (& control) flows
+ data (& control) transformation










+ data (& control) stores
+ terminators
+ process specs (mini-specs)
+ data dictionary

Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 8
Data Flow Approach
1. mendefinisikan suatu even (even adalah semua kejadian yang harus
direspon oleh sistem)
2. menenetukan alir data input/output ke/dari tiap-tiap even (bubble)
3. memasukkan data yang harus disimpan pada data store.
4. mengelompokkan bubble-bubble yang saling berhubungan dan
menganggap sebagai satu bubble yang baru.
5. mengulang langkah ke-4 hingga diperoleh 1 bubble yang
merupakan gambaran sistem secara umum.
Strategi: (ModernStructure Analysis)
Mengikuti alir data yang terjadi dalam sistem.
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 9
Data Flow Approach
Yang menjadi masalah adalah, manusia tidak terbiasa
berpikir dengan cara tersebut dalam memecahkan
permasalahan.
(Metode pengorganisasian).
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 10
Object Oriented
Object Oriented = classes and objects

+ inheritance
+ communication with messages
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 11
Object OrientedModel
�� Representasi obyek dan strukturnya
�� Representasi apa yang terjadi pada obyek tersebut.
�� Object Structure Analysis ( OSA )
�� Object Behavior Analysis ( OBA )
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 12
Object OrientedModel
Object Structure Object Behavior
Analysis
Design
Bagaimana kita mengkategorikan lingkungan ke bentuk object types dan subtypes ?
Bagaimana hubungan antar object types ?
Bagaimana komposisi dari obyek yang kompleks ?Restyandito PBO – Analisa Dan
Perancangan Berorientasi Obyek 13
Object OrientedModel
Analysis
Design
Obyek dapat berada dalam kondisi apa saja?
Kejadian dan perubahan apa yang mungkin terjadi?
Apa yang menyebabkan terjadinya perubahan tersebut? Aturan?
Object Structure Object Behavior
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 14
Object OrientedModel
Analysis
Design
Konsep dasar perancangan berorientasi obyek
Classes, tanggung jawabnya, dan hubungan antar class
Pembuatan method
Object Structure Object Behavior
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 15
Metode Tradisional vs
Object-Oriented
Tahap – tahap pengembangan perangkat lunak
�� Analysis Sistem
�� Perancangan Sistem
�� Implementasi ( pengkodean program )
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 16
Metode Tradisional vs
Object-Oriented
ER diagram
Functional
Decomposition
Process-Dependency
Diagrams
Data Flow
Diagrams
Structure
Chart
Action
Diagrams
COBOL
PL/I
FORTRAN
C
Analysis Design Programming
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 17
Metode Tradisional vs
Object-Oriented
Analysis Design Programming
Object model
Object declaration
Object manipulation
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 18
Kenapa OO?
�� Reusability
�� Stability
�� Reliability
�� Parallel computing
�� Interoperability
�� Design independence
�� Faster design
�� Integrity
�� Easier maintenance
�� Machine performance
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 19
Faktor Pendorong OO
�� Konsep pendekatan OO yang sudah cukup matang.
�� Fokus:
pengkodean �� desain �� analysis
�� Dekomposisi:
pemrograman terstruktur �� desain terstrukur ��
analysis terstruktur
�� Kemajuan teknologi yang memungkinkan pembuatan
sistem berorientasi obyek
Assembler,Fortran �� Pascal, ALGOL, PL/1
�� C++, Smalltalk
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 20
Faktor Pendorong OO
�� Sifat dari sistem / program yang dibuat banyak berubah
�� Sistem sekarang yang domain-oriented.
�� abstraksi prosedural vs. abstraksi data
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 21
Kualitas Perangkat Lunak
�� Architecture
�� Modularity
�� Abstraction
�� Information hiding
�� High Cohesion
�� Low Coupling
(Software Engineering: A Practicioner’s Approach, Roger Pressman, 1982)
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 22
Terminologi
Problem Domain (Lingkup Permasalahan)
�� Problem:
suatu isu, masalah, pertanyaan yang membutuhkan suatu
penyelesaian, jawaban atau perhatian
(Webster Dictionary, 1977)
�� Domain:
ruang lingkup suatu kegiatan atau pengaruh.
(Webster Dictionary, 1977)
�� Problem Domain:
ruang lingkup usaha penyelesaian masalah yang
diperhatikan.
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 23
Terminologi
System Responsibility (Tanggung Jawab Sistem)
�� System:
A set or arrangement of things so related or connected as to
form a unity or organic whole (Webster Dictionary, 1977)
�� Responsibility:
The conditon, quality, fact, or instance of being responsible,
answerable, accountablef or liable (Webster Dictionary, 1977)
�� System Responsibity:
An arrangement of things accountable for, related
together as a whole.
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 24
Terminologi
Abstraction (Abstraksi)
�� The principle of ignoring those aspects of a subject that are
not relevant to the current purpose in order to concentrate
more fully on those that are. (Oxford, 1986)
Restyandito
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 25
Terminologi
Encapsulation (Penyembunyian Informasi)
�� A principle, used when developing an overall program
structure, that each component of a program should
encapsulate or hide a single design decision.
�� The interface to each module is defined in such a way as to
reveal as little as possible about its inner workings (Oxford,
1986)
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 26
Terminologi
Inheritance (Pewarisan)
�� A mechanism for expressing similarity among Classes,
simplifying definition of Classes similar to one(s) previously
defined. (Edward Yourdon, 1991)
Association (Hubungan)
�� The union or connection of ideas (Webster Dictionary,
1977)
Message (Pesan)
�� Any communication, written or oral, sent
between persons. (Webster Dictionary, 1977)
Restyandito PBO – Analisa Dan Perancangan Berorientasi Obyek 27
Referensi
�� Yourdon, Edward; Coad, Peter, Object Oriented Analysis 2nd
Edition, Prenctice Hall, Inc., 1990. hal 1-4
�� Martin, James, Principles of Object Oriented Analysis and
Design, Prentice Hall, Inc., hal 31-47 , 61-64
Restyandito

Package dan Abstract Class

Instance dari class tabung.

Tabung merupakan turunan dari class lingkaran yang merupakan turunan dari class point.Tampilkan koordinat, jari-jari, luas dan isi silinder!
Review
class point {
private int X;
private int Y;
public point(int x, int y) { X = x; Y = y; }
public void setX(int x) { X = x; }
public void setY(int y) { Y = Y; }
public int getX() { return X; }
public int getY() { return Y; }
}
Review
class lingkaran extends point {
private double radius;
public lingkaran(int x, int y, double r) { super(x,y); setRadius(r); }
public void setRadius(double r) { radius = (r < 0.0 ? 0.0 : r); }
public double getRadius() { return radius; }
public double hitungDiameter() { return 2*radius; }
public double hitungKeliling() { return 3.14*hitungDiameter(); }
public double hitungLuas() { return 3.14*getRadius()*getRadius(); }
}
Review
class tabung extends lingkaran {
private int tinggi;
public tabung(int x, int y, double r, int t) { super(x,y,r); tinggi = t; }
public void setTinggi(int t) { tinggi = t; }
public int getTinggi() { return tinggi; }
public double hitungLuas() 
{ return 2*super.hitungLuas() + hitungKeliling()*getTinggi(); }
public double hitungIsi()
{ return super.hitungLuas()*getTinggi(); }
}
Review
public class Contoh {
public static void main(String args[]) {
tabung silinder = new tabung(4,5,2,3);
System.out.println("Koordinat silinder: X = " + silinder.getX());
System.out.println("Koordinat silinder: Y = " + silinder.getY());
System.out.println("Jari-jari silinder = " + silinder.getRadius());
System.out.println("Tinggi silinder = " + silinder.getTinggi());
System.out.println("Luas silinder = " + silinder.hitungLuas());
System.out.println("Isi silinder = " + silinder.hitungIsi());
}
}
Abstrak

Abstract class adalah suatu class yang merupakan suatu  kerangka yang dibuat untuk digunakan oleh class yang  lain (yang merupakan turunannya).Karena hanya merupakan kerangka, maka tidak ada 
operasi yang diimplementasikan pada class tersebut.
abstract class Pesan {
private String pengirim
public Pesan(String dari) { pengirim = dari; }
public String getPengirim() { return pengirim; 
public void Penyampaian();  
}
Keyword abstract mengindikasikan bahwa method yang dibuat tidak dapat dispesifikasikan di class tersebut. Suatu method abstract memastikan bahwa semua turunan (non-abstract) dari class tersebut akan mengaplikasikan method tersebut.Suatu abstract class tidak dapat dibuat obyeknya. Kita masih dapat membuat object variable dari abstract class tapi  referensinya harus menunjuk ke obyek non-abstract dari 
subclassnya.
Pesan psn = new PesanSuara(“salam.wav”);

Contoh:
class PesanTertulis(String dari, String t) extends Pesan{
super(dari);
teks = t;
public void Penyampaian() {
System.out.println(teks);
}
private String teks;
}
Interface

JAVA menyediakan interface untuk mendukung  multiple inheritance. Interface hanya mendefinisikan 
spesifikasi method, tanpa menyediakan kode program  yang menjelaskan apa yang dilakukan method-method  yang didefinisikan.
File bentuk.java
public interface bentuk {
public double getLuas();
public double getIsi();
public String getNama();
}
File point.java
public class Point extends Objects implements bentuk {
private int x; private int y;
public Point() { }
public Point (int nilaiX, int nilaiY) {
x = nilaiX; y = nilaiY;
public void setX(int nilaiX) { x = nilaiX; }
public void setY(int nilaiY) { y = nilaiY; }
public int getX() { return x; }
public int getY() { return y; }
public double getLuas() { return 0.0; }  
public double getIsi() { return 0.0; }  
public String getNama() { return "titik"; } 
}
Package

Package adalah pengelompokan beberapa buah class  yang saling berhubungan. Untuk membuat agar suatu
source file class masuk dalam suatu kelompok class, digunakan statement package dengan sintaks 
deklarasi:
package  nama_package;
Package bersifat hirarkis, dipisahkan dengan titik. (contoh, abc.bagKeuangan.Karyawan)
Package bermanfaat jika kita akan mendistribusikan suatu aplikasi. Package memungkinkan kita menyembunyikan class dan method tanpa membuatnya private. JAVA code yang ada pada suatu package memiliki akses ke semua class dan method yang tidak private.
File Pegawai.java
package civitasAkademika;
public class Pegawai {
private String nama;
private String nip;
public Pegawai(String Nama, String Nip) {
this.nama = Nama;
this.nip = Nip;
}
protected void setNama(String Nama) { this.nama = Nama; }
protected void setNip(String Nip) { this.nip = Nip; }
protected String lihatData() {
return "Nama\t: “ + nama + "\nNIP\t: “ + nip;
}  
}
File PegEdukatif.java
package civitasAkademika;
public class PegEdukatif extends Pegawai {
private String fakultas;
public PegEdukatif(String Nama, String Nip, String Fakul
super(Nama,Nip);
this.fakultas = Fakultas;
}
public void setFakultas(String Fakultas) { this.fakultas =
public String lihatData() {
return super.lihatData() + "\nFakultas\t: “ + fakultas;
}    
}
File PegNonEdukatif.java
package civitasAkademika;
public class PegNonEdukatif extends Pegawai {
private String unit;
public PegNonEdukatif(String Nama, String Nip, String Unit) {
super(Nama,Nip);
this.unit = Unit;
}
public void setUnit(String Unit) { this.unit = unit; }
public String lihatData() {
return super.lihatData() + "\nUnit\t: “ + unit;
}    
}
Jika dibutuhkan akses ke suatu class atau method yang tidak private dari suatu package, maka class tersebut harus disediakan dengan statement import. Statement ini digunakan untuk “membawa” class dari suatu package ke address space yang aktif saat itu.
Catatan: 
1. Semua class harus diletakkan dalam directory yang bernama sama dengan nama package
2. Package dicompile di luar directory package C:\javac dirPackage/*.java
File PegNonEdukatif.java
import civitasAkademika.*;
public class DataKaryawan {
public static void main(String[] args) {
PegEdukatif a = new PegEdukatif("Budi","98E1234","Teknik");
PegNonEdukatif b = new PegNonEdukatif("Ari","95NE1000","BIRO2");
System.out.println(a.lihatData());
System.out.println(b.lihatData());
}
}
Platform JAVATM2, telah menyediakan beberapa standard package class (disebut class library) yang 
mengimplemen-tasikan operasi-operasi dasar yang dibutuhkan oleh program JAVA.
  • java.util berisi class-class utility seperti membuat bialangan random, mendefinisikan property system, dan fungsi yang berhubungan dengan tanggal.
  •  java.io berisi class-class yang menangani file I/O. 
  • java.net berisi class-class yang berkaitan dengan operasi jaringan, socket dan URL. 
  • java.applet berisi class-class yang menyediakan aplikasi applet. java.awtberisi class-class untuk membuat Abstract Window Toolkit, yang digunakan untuk membuat interface berbasis grafis (GUI). 
  • java.lang berisi class-class seperti String, Math, Integer dan Thread.

TERMINOLOGI

·         Sifat, karakteristik, kualitas, yang menjelaskan suatu benda.
·         Dalam OOA (Object Oriented Analysis), attribute adalah data mengenai keadaan/kondisi suatu
obyek (state information), dimana setiap obyek memiliki nilainya sendiri-sendiri.
·         Attribute menjelaskan nilai-nilai yang tersimpan dalam suatu obyek.
·         Sifat attribute lebih mudah berubah dibandingkan dengan problem domain.
NOTASI
Attribute
HOW
·         identifikasi attribute
·         perhatikan letak attribute
·         identifikasi instance connection
·         cek kasus-kasus khusus
·         menentukan/menetapkan attribute
Identifikasi Attribute
·         Apa yang perlu diketahui oleh sistem mengenai suatu obyek, hal-hal apa yang harus dilakukan oleh obyek.
·         Bagaimana suatu obyek dapat dijelaskan secara umum?
·         Bagaimana obyek tersebut dijelaskan dalam hubungannya dengan permasalahan dan tanggung jawab sistem?
·         Apa yang perlu diketahui dari obyek tersebut?
·         Informasi apa yang harus diingat?
·         Kondisi apa saja yang mungkin terjadi?
·         Cek hasil OOA dari sistem lain.
·         Atomic concept
·         single value
·         pengelompokan nilai-nilai yang berhubungan
·         Deferred to design
·         normalisasi
·         mekanisme identifikasi
·         recalculable attribute
Instance Connection
                Instance connections menunjukkan hubungan antar obyek.
·         Batas bawah  ->  = 0 (opsional)
                                                > 1 (harus ada)
·         Batas atas ->         = 1 (single)
                                                > 1 (multiple)
Cek instance connections yang
·           memiliki hubungan many to many
·           menghubungan antar obyek dalam sebuah class
·           lebih dari satu pada obyek/class yang sama
·           masih perlu ditambahkan
Letak Attribute
·         Obyek apa yang dijelaskan oleh suatu attribute ?
·         Dalam struktur inheritance, attribute selalu terletak pada class-&-object teratas.
Kasus Khusus
·         Attribute dengan nilai kosong (not applicable)
·         Class-&-Object yang hanya memiliki 1 buah attribute
·         Attribute untuk nilai yang berulang
Menetapkan Attribute
·         Gunakan kosa kata standard
·         Gunakan nama yang mudah dibaca
·         Jangan memakai nilai attribute