Senin, 19 September 2011

PBO Pertemuan 2



Creating class adalah suatu proses pembentukan class. Secara umum sebuah class Java didefinisikan dengan format sebagai berikut:


class NamaClass
{
   definisi_data_member;

   definisi_member_function;
}

Blok program ini merupakan bentuk dasar pembentukan class di Java. Pada bagian selanjutnya kita akan mengimplementasikan bentuk tersebut dengan kasus yang lebih real.

Sebuah class (atau objek nantinya) memiliki dua komponen:
1.     Data member (anggota data), yaitu variabel-variabel yang menyatakan karakteristik suatu objek. Sebuah objek lingkaran memiliki karakteristik yang dinyatakan dengan nilai jari-jari.
2.     Member function (fungsi anggota), yaitu fungsi-fungsi yang bertugas memanipulasi nilai pada data-member. Fungsi yang paling sering ada pada sebuah objek adalah fungsi untuk mengubah dan menginformasikan nilai dari data-member objek.

Constructor

      metode OOP hadir dengan adanya sebuah method khusus yang disebut constructor yang akan dipanggil secara otomatis pada saat sebuah objek diciptakan. Kita tidak usah melakukan pemanggilan terhadap constructor ini; Java-lah yang akan melakukannya. Keunikan ini bisa kita manfaatkan untuk melakukan proses inisialisasi seluruh data objek. Dengan kata lain proses pemberian nilai awal seluruh data objek dilakukan melalui constructor. Isi constructor itu sendiri bisa berupa pemanggilan method internal atau instruksi lain.

Sebagaimana fungsi atau method pada umumnya, constructor juga bisa memiliki variasi parameter. Kita bisa menerapkan konsep function-overloading pada constructor. Secara umum ada tiga variasi constructor:
1.     Single constructor, yaitu hanya ada satu constructor pada class.
2.     Constructor dengan parameter, yaitu constructor dengan data yang bisa kita kirim pada saat penciptaan objek.
3.     Multiple constructor, yaitu terdapat beberapa constructor yang bisa kita pilih pada saat penciptaan objek.



 Relasi antar kelas

Pewarisan (genspec)

Pewarisan merupakan hubungan antar class dimana ciri-ciri dan sifat dari class induknya diturunkan ke 
class anaknya.

contoh:



class Pegawai {
private String nama;
private String alamat;
private int jumAnak;
private int noInduk;
private static int no = 0;
public Pegawai(String n, String a, int x)  {
this.nama = n;
this.alamat = a;
this.jumAnak = x;
this.noInduk = ++no; 
}

public void lihatData()  {
System.out.print("nomor: " + this.noInduk);
System.out.print("\tnama: " + this.nama);
System.out.print("\t\talamat: " + this.alamat);
System.out.print("\t\tanak: " + this.jumAnak + "\n\n");
System.out.flush();
}
public void lihatNama()   {
System.out.println("\t\tnama: " + this.nama + "\n\n");
}

class PegawaiHarian extends Pegawai {
int gajiHarian;
int hariKerja;
public PegawaiHarian(String n, String a, int x, int gaji, int hari)  {
super(n, a, x);
this.gajiHarian = gaji;
this.hariKerja = hari;
}
public void lihatData()  {
super.lihatData();
System.out.print("gaji: " + this.gajiHarian);
System.out.print("\thari: " + this.hariKerja + "\n\n");
}

public class DataPegawai {
public static void main(String[] args) {
Pegawai emp1 = 
new Pegawai("Dini", "Jl.Markisa 26", 2);
Pegawai emp2 = 
new Pegawai("Dono", "Jl.Solo 345",6);
PegawaiHarian emp3 =
new PegawaiHarian ("Dana", "Jl.Bulan 44", 8, 50000, 40); 
emp1.lihatData();     
emp2.lihatData();     
emp3.lihatData();    
emp3.lihatNama();
}


Agregasi

Suatu class dikatakan memiliki hubungan agregasi (aggregation) apabila kelas tersebut berisi sebuah obyek 
dari kelas lain. Agregasi secara umum menunjukkan suatu hubungan one-to-many atau dikenal dengan istilah 
Whole-Part

contoh:

import java.util.*;
import java.util.Date;
public class SerikatPegawai {
private String NamaOrganisasi; 
private String AlamatSkretariat; 
public Pegawai pegawai; 
public class Pegawai {
private String nama; 
private String alamat; 
private int noInduk; 


Ketergantungan

Hubungan ketergantungan (dependency) menunjukkan bahwa suatu class membutuhkan class yang lain dalam 
melaksanakan operasinya. Jika dipahami secara logika hubungan ketergantungan memang sedikit berbeda 
dengan hubungan agregasi

PBO Pertemuan 1

PBO atau Pemrograman Berbasis Objek adalah pemrograman prosedural, yang membagi sebuah aplikasi berdasarkan berbagai macam fungsi yang ada didalamnya.

Fitur Pemrograman Berorientasi Obyek
Didalam pemrograman berorientasi obyek terdapat beberapa fitur berikut:
~>Enkapsulasi (Encapsulation): Suatu cara untuk menyembunyikan detail implementasi detail dari sebuah kelas.
~>Abstraksi (Abstraction): Arti abstraksi mengacu kepada atribut dari sebuah obyek yang membedakan antara satu obyek dengan obyek yang lain
~>Pewarisan (Inheritance): Salah satu fitur yang paling kuat dalam pemrograman berorientasi obyek adalah penggunaan kode kembali (code reuse), sekali sebuah prosedur dibuat, maka kita bisa menggunakannya berulang kali.
~>Polimorfisme (Polymorphism): Berarti sesuatu yang memiliki banyak bentuk.

*Class adalah cetak biru yang mendifinisi variable dan method yang mendukung object.

*Object merupakan instead dari class.

*Acces modifier adalah penanda didepan variable/ method/ class

>Private : hanya boleh diakses class itu sendiri tapi tidak dapat oleh turunan namun turunannya memiliki private tersebut.
>Protected : private tetapi masih bisa diakses oleh turunannya.
>Packed : boleh diakses kelas lain tetapi didalam 1 packed / folder.
>Public : dapat diakses oleh class manapun.

PSIBO pertemuan 2



The Unified Modeling Language (UML) adalah bahasa standart untuk melakukan spesifikasi, visualisasi, konstruksi, dan dokumentasi dari komponen-komponen perangkat lunak, dan digunakan untuk pemodelan bisnis.
• UML menggunakan notasi grafis untuk menyatakan suatu desain
• Pemodelan dengan UML berarti menggambarkan yang ada dalam dunia nyata ke dalam bentuk yang dapat dipahami dengan menggunakan notasi standart UML

UML menyediakan 10 macam diagram untuk memodelkan aplikasi berorientasi objek, yaitu :
·         Use Case Diagram untuk memodelkan proses bisnis.
·         Conceptual Diagram untuk memodelkan konsep-konsep yang ada di dalam aplikasi.
·         Sequence Diagram untuk memodelkan pengiriman pesan (message) antar objects.
·         Collaboration Diagram untuk memodelkan interaksi antar objects.
·         State Diagram untuk memodelkan perilaku objects di dalam sistem.
·         Activity Diagram untuk memodelkan perilaku Use Cases dan objects di dalam system.
·         Class Diagram untuk memodelkan struktur kelas.
·         Object Diagram untuk memodelkan struktur object.
·         Component Diagram untuk memodelkan komponen object.
·         Deployment Diagram untuk memodelkan distribusi aplikasi.
Berikut akan dijelaskan 4 macam diagram yang paling sering digunakan dalam pembangunan aplikasi berorientasi object, yaitu use case diagram, sequence diagram, collaboration diagram, dan class diagram.

Use Case Diagram


usecase diagram


Use case diagram digunakan untuk memodelkan bisnis proses berdasarkan perspektif pengguna sistem. Use case diagram terdiri atas diagram untuk use case dan actor. Actormerepresentasikan orang yang akan mengoperasikan atau orang yang berinteraksi dengan sistem aplikasi.
Use case merepresentasikan operasi-operasi yang dilakukan oleh actor. Use case digambarkan berbentuk elips dengan nama operasi dituliskan di dalamnya. Actor yang melakukan operasi dihubungkan dengan garis lurus ke use case.

Sequence Diagram



Sequence diagram menjelaskan secara detil urutan proses yang dilakukan dalam sistem untuk mencapai tujuan dari use case: interaksi yang terjadi antar class, operasi apa saja yang terlibat, urutan antar operasi, dan informasi yang diperlukan oleh masing-masing operasi.
Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait).
Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan
Collaboration Diagram



Collaboration diagram dipakai untuk memodelkan interaksi antar object di dalam sistem. Berbeda dengan sequence diagram yang lebih menonjolkan kronologis dari operasi-operasi yang dilakukan, collaboration diagram lebih fokus pada pemahaman atas keseluruhan operasi yang dilakukan oleh object.
Collaboration diagram juga menggambarkan interaksi antar objek seperti sequence diagram, tetapi lebih menekankan pada peran masing-masing objek dan bukan pada waktu penyampaian message.
Setiap message memiliki sequence number, di mana message dari level tertinggi memiliki nomor 1. Messages dari level yang sama memiliki prefiks yang sama.

Class Diagram


Class diagram merupakan diagram yang selalu ada di permodelan sistem berorientasi objek. Class diagram menunjukkan hubungan antar class dalam sistem yang sedang dibangun dan bagaimana mereka saling berkolaborasi untuk mencapai suatu tujuan.
Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi).
Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.
Class memiliki tiga area pokok :
1.Nama  (dan stereotype)
2. Atribut
3. Metoda
Atribut dan metoda dapat memiliki salah satu sifat berikut :
-          Private, tidak dapat dipanggil dari luar class yang bersangkutan
-          Protected, hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak yang mewarisinya
-          Public, dapat dipanggil oleh siapa saja
Statechart diagram



Statechart diagram menggambarkan transisi dan perubahan keadaan (dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat dari stimuli yang diterima. Pada umumnya statechart diagram menggambarkan class tertentu (satu class dapat memiliki lebih dari satu statechart diagram).
Activity diagrams


Activity diagrams menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi.
Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum.
Component diagram


Component diagram menggambarkan struktur dan hubungan antar komponen piranti lunak, termasuk ketergantungan (dependency) di antaranya.
Komponen piranti lunak adalah modul berisi code, baik berisi source code maupun binary code, baik library maupun executable, baik yang muncul pada compile time, link time, maupun run time. Umumnya komponen terbentuk dari beberapa class dan/atau package, tapi dapat juga dari komponen-komponen yang lebih kecil.
Komponen dapat juga berupa interface, yaitu kumpulan layanan yang disediakan sebuah komponen untuk komponen lain.
Deployment/physical diagram menggambarkan detail bagaimana komponen di-deploy dalam infrastruktur sistem, di mana komponen akan terletak (pada mesin, server atau piranti keras apa), bagaimana kemampuan jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikal
Sebuah node adalah server, workstation, atau piranti keras lain yang digunakan untuk men-deploy komponen dalam lingkungan sebenarnya. Hubungan antar node (misalnya TCP/IP) dan requirement dapat juga didefinisikan dalam diagram ini.
deployment diagram

Deployment/physical diagram menggambarkan detail bagaimana komponen di-deploy dalam infrastruktur sistem, di mana komponen akan terletak (pada mesin, server atau piranti keras apa), bagaimana kemampuan jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikalSebuah node adalah server, workstation, atau piranti keras lain yang digunakan untuk men-deploy komponen dalam lingkungan sebenarnya. Hubungan antar node (misalnya TCP/IP) dan requirement dapat juga didefinisikan dalam diagram ini.

PSIBO pertemuan 1



A.Perancangan berorientasi objek
Analisis dan disain berorientasi objek adalah 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.
Pengertian "berorientasi objek" berarti bahwa kita mengorganisasi perangkat lunak sebagai kumpulan dari objek tertentu yang memiliki struktur data dan perilakunya.

-Beberapa kemampuan utama dari pemrograman OOP antara lain :
·         Pemrograman OOP menekankan pada data daripada prosedur karena data diperlakukan sebagai elemen yang penting dan tidak boleh mengalir secara bebas dalam program.
·         Data  disembunyikan dari akses program oleh fungsi-fungsi (function) eksternal
·         Program dapat dibagi-bagi ke dalam obyek-obyek yang lebih kecil
·         Obyek dapat berkomunikasi antara satu dengan yang lain melalui function
·         Konsep pemrogramannya mengikuti pendekatan button up

-Obyek
Obyek merupakan dasar dari entitas run-time dalam suatu sistem berorientasi obyek. Ketika suatu program dijalankan obyek berinteraksi satu dengan yang lain dengan saling mengirimkan pesan.

-Class
Class merupakan cetak biru (Blue Print) atau template atau spesifikasi dari obyek. Dengan kata lain class adalah representasi abstrak dari obyek, sedangkan obyek adalah representasi nyata dari class atau perwujudan (instance) dari suatu class.




                                
Gambar 1. Class dan objek



Metodologi pengembangan sistem berorientasi objek mempunyai karakteristik  :
- Encapsulation
- Inheritance
- Polymorphism
-  Message parsing
-  Asosiasi
-  Agregasi

ENCAPSULATION (PENGKAPSULAN)

- 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.

INHERITANCE (PEWARISAN)

 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.
- 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.
- Inheritance menggambarkan generalisasi sebuah kelas
Contoh :
 Sedan dan Sepeda Motor adalah subkelas dari Kendaraan Bermotor.
- Kedua subkelas mewarisi sifat yang dimiliki oleh Kendaraan Bermotor, yaitu mempunyai mesin dan dapat berjalan.
- Kedua subkelas mempunyai sifat masing-masing yang berbeda, misalnya jumlah roda, dan kemampuan untuk berjalan mundur yang tidak dimiliki oleh sepeda motor.


POLYMORPHISM (POLIMORFISME)
- Polimorfisme yaitu konsep yang menyatakan bahwa seuatu yang sama dapat mempunyai bentuk dan perilaku berbeda.
- Polimorfisme 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.               

Message Parsing
Obyek dalam system bekerja sama dengan cara pengiriman pesan dari suatu obyek ke obyek yang lain.

Asosiasi
-Asosiasi, yaitu hubungan statis antar class. Umumnya menggambarkan class yang memiliki atribut berupa class lain, atau class yang harus mengetahui eksistensi class lain. Panah navigability menunjukkan arah query antar class.

Agregasi
Adalah bentuk khusus dari asosiasi yang menggambarkan seluruh bagian pada satu objek merupakan bagian dari objek lain.