Minggu, 29 Desember 2013

OBJEK DAN CLASS PADA PBO

�� A thing you can interact with (Pooley R)
�� A person or thing to which action, thought or feeling is
directed. (Webster Dictionary)
�� Suatu produk materi atau substansi yang kelihatan
(visible) dan dapat diukur (tangible)
Object Type adalah suatu kategori obyek
• concrete
• intangible
• Roles
• judgments
• relational
• events
• displayable
Object Type dapat berupa:
��manusia, pensil, mobil, mesin
��waktu, kualitas, ide, account
��dokter, pasien, pemilik, administrator data
��gaji tinggi, pekerjaan produktif
��pernikahan, partnership, ownership
��penjualan, system crash
��string, integer, icon, image
 


  TEORI KLASIFIKASI
Dalam usahanya memahami dunia yang ada
disekitarnya, manusia menggunakan 3 macam
metode pengorganisasian dalam berpikir
(Encyclopaedia Britannica, 1986):
• pembedaan suatu obyek tertentu berdasarkan
atributnya
• pembagian suatu obyek dengan bagian-bagiannya
• pengelompokan obyek-obyek yang memiliki
Kesamaan
TEORI KLASIFIKASI
Pengelompokan obyek dapat dilihat dari sifat-sifat
obyek tersebut / behaviour categories, yang dapat
digolongkan berdasarkan (Britannica, “Animal
Behaviour” 1986):
• on the basis of immediate causation
• on similarity of evolutionary history (change over
time) and
• on the similarity of function.
TERMINOLOGI
Object.
�� Suatu abstraksi dari sesuatu yang terdapat dalam
batasan permasalahan, yang menunjukkan
kemampuan sistem untuk menyimpan informasi
mengenai obyek tersebut dan bagaimana
berinteraksi dengan obyek tersebut.
�� Pembungkusan nilai-nilai atribut dengan sifatsifatnya
(services) yang ekslusif.
TERMINOLOGI
Class
�� Suatu kumpulan object yang dapat dijelaskan
dengan attribute dan services yang sama.
Class & Object
�� Suatu istilah yang berarti sebuah class dan obyek
dalam class tersebut .
Restyandito PBO – Konsep Dasar Obyek
Class-&-Object
WHY?
�� Membuat suatu representasi teknis sedekat
mungkin dengan pandangan konseptual dari
dunia nyata.
------------------ Subject layer
------------------ Class-&-Object layer
------------------ Structure layer
------------------ Attribute layer
------------------ Service layer


Class-&-Object
HOW
Where
�� Observasi
�� Lihat sistem yang sudah ada (hasil object oriented
analysis)
�� prototype
Restyandito PBO – Konsep Dasar Obyek
Bagaimana
�� struktur
�� sistem lain
�� devices
�� peran yang dimainkan
�� tempat (sites)
�� unit-unit organisasi
What
�� prosedur-prosedur operasional
�� sesuatu/hal-hal yang diingat
Hal-Hal Yang Diperhatikan
�� perlu diingat
�� memiliki suatu sifat-sifat tertentu
�� (biasanya) memiliki banyak atribut
�� (biasanya) terdapat lebih dari satu obyek dalam
suatu class
�� terdapat atribut dan servis yang selalu dapat
diaplikasikan
�� domain based requirement
�� tidak sekedar hasil perolehan
Referensi
�� Yourdon, Edward; Coad, Peter, Object Oriented Analysis 2nd
Edition, Prenctice Hall, Inc., 1990. hal 52-78
�� Martin, James, Principles of Object Oriented Analysis and
Design, Prentice Hall, Inc., hal 17-30 , 69-80

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.