Kamis, 13 Juni 2013

Pengetahuan tentang UML

Pada perkembangan teknik pemrograman berorientasi objek, muncullah sebuah standarisasi bahasa pemodelan untuk pembangunan perangkat lunak yang dibangun dengan menggunakan teknik pemrograman berorientasi objek, yaitu Unified Modeling Language (UML). UML muncul karena adanya kebutuhan pemodelan visual untuk menspesifikasikan, menggambarkan, membangun, dan dokumentasi dari sistem perangkat lunak. UML merupakan bahasa visual untuk pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram.
UML terdiri dari bermacam-macam diagram yg digunakan untuk  permodelan pada saat pengembangan sistem mulai dari tahap analisi sampai implementasi.  Pada saat melakukan  desain sistem, tidak harus semua diagram pada UML diimplementasikan  akan tetapi UML merupakan diagram yang saling terkait oleh karena itu perlu adanya kekonsistenan rancangan diagram yang satu dengan lainnya.
Diagram dlm UML  dikelompokan menjadi 2 :
1.  Diagram Struktur /statis diagram .
2. Diagram prilaku system/behaviour diagram.

Diagram-diagram  dlm UML
Penjelesan singkat diagram tsb antara lain
Nama Diagram Digunakan untuk Digunakan pd tahapan:
 Diagram Class Menggambarkan hubungan antara model class dlm  system.  Analysis, Design
Diagram status Diagram status menjelaskan aliran kontrol dari satu status ke status lain. Status didefenisikan sebagai suatu kondisi dari suatu obyek yang ada dan perubahan yang terjadi sekiranya ada event yang terpicu.. Analysis, Design
 Diagram Aktivitas Menggambarkan hubungan  aliran kerja business  terlepas dari  classes, aliran  activitas dlm sebuah use case, atau  detail design dari method.  Analysis, Design
 Diagram Use Case Mendapatkan persyaratan/kebutuhan  system dan menggambarkan hubungan antara system dgn lingkungan.  Analysis
 Diagram sequence Memodelkan prilaku objects dlm sebuah use case.
Focus pd urutan berdasar  waktu  dari sebuah activity.
 Analysis, Design
Diagram yang akan dibahas pada blog ini hanya 4 diagram UML yg efektif biasa dipakai antara lain diagram use case , diagram sekuen, diagram class dan diagram aktifitas
Case (Computer-aided software engineering) Tools
Case tool adalah sejenis software untuk membuat  secara otomatis/wizard sebagian atau keseluruan proses depelopment sistem.
Untuk membuat berbagai diagram  UML  baik pada tahap analisis maupun design  digunakan  Case To0ls  diataranya   adalah ArgoUML, StartUML dan Astah Comunity.  Selain itu anda juga bisa menggunakan Ms Visio . Berikut ini gambar tampilan  salah satu case tool yaitu Astah Comunity :
UML Tools
UML tools
Diagram Use Case
Diagram use case merupakan pemodelan untuk menggambarkan kelakuan (behavior) sistem  secara keseluran yang akan dibuat. Diagram use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem yang akan dibuat. Dengan pengertian yang cepat, diagram use case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem dan siapa saja yang berhak menggunakan fungsi-fungsi tersebut.
Diagram Kelas
Diagram kelas atau class diagram menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang akan dibuat untuk membangun sistem.
Diagram Sequence
Diagram sekuen menggambarkan kelakuan/perilaku objek pada use case
dengan mendeskripsikan waktu hidup objek dan message yang dikirimkan dan
diterima antar objek. Oleh karena itu untuk menggambar diagram sekuen
maka harus diketahui objek-objek yang terlibat dalam sebuah use case beserta
metode-metode yang dimiliki kelas yang diinstansiasi menjadi objek itu.
Diagram Aktivitas
Diagram aktivitas atau activity diagram menggambarkan workflow (aliran kerja) atau aktivitas dari sebuah sistem atau proses bisnis. Yang perlu diperhatikan disini adalah bahwa diagram aktivitas menggambarkan aktivitas sistem bukan apa yang dilakukan aktor, jadi aktivitas yang dapat dilakukan oleh sistem.
sumber
http://www.uml-diagrams.org/
contoh lengkap  analisis-design OOP :
- sistem  AddressBook : http://www.cs.gordon.edu/courses/cs211/AddressBookExample/index.html
- sistem ATM:
http://www.math-cs.gordon.edu/courses/cs211/ATMExample/
http://www.uml-diagrams.org/use-case-diagrams-examples.html

Cara Bikin class diagram

Membuat Class Diagram pada StarUML


saya akan membuat sebuah diagram yang menggunakan program apilkasi Star UML. Diagram yang saya buat ini merupakan diagram yang akan menjelaskan perhitungan gaji pada sebuah perusahaan. Langkah pertama yang harus dilakukan adalah dengan membuka aplikasi Star UML, kemudian akan muncul jendela seperti di bawah ini. Pilih Empty Project, klik OK.

Setelah itu, klik kanan pada Untitled yang berada di sebelah kanan window. Pilih Add Model, maka akan muncul model. Kemudian klik kanan pada Model, pilih Add Diagram lalu klik Class Diagram.

  

Maka akan muncul jendela seperti ini.

Jika sudah selesai, maka kita dapat memulai untuk merancang diagramnya. Untuk memulai membuat sebuah class diagram, kita harus mengetahui persoalan apa yang sedang dihadapi untuk merancang tabelnya.  Langkah pertama adalah membuat sebuah class. Yaitu dengan mengklik Class yang berada pada toolbox di sebelah kiri layar.

Kemudian ketikkan nama class tersebut, misalnya Pegawai.
Buat juga class – class yang lainnya. Yaitu Departemen, Pelanggan, Transaksi, Produk, Makanan, Minuman, Perlengkapan Mandi.



Kemudian berikan atribut – atribut pada class dengan cara mengklik kanan class, lalu pilih Add, Attribute. Seperti gambar dibawah ini :

Untuk class pegawai, memiliki atribut Nama, Alamat, Jabatan, NIP. Class Departemen mempunyai atribut Nama Departemen dan Alamat. Class Pelanggan memiliki atribut Nama Pelanggan, Jenis Transaksi, dan  ID Pelanggan. Untuk class Transaksi memiliki atribut No.Tansaksi, Jumlah Transaksi, dan Tgl Transaksi. Class Produk memiliki atribut Nama Produk, Harga Produk, dan Stok. Class Makanan memiliki atribut Nama Makanan, Tanggal Produksi, Tanggal Kadaluarsa, Harga dan Stok. Untuk class Minuman memiliki atribut Nama Minuman, Tgl Produksi, Tgl Kadaluarsa, Harga dan Stok. Dan yang terakhir adalah class Perlengkapan mandi, class ini memiliki atribut Tgl Produksi, Harga, dan Stok. Lihat gambar dibawah ini :

Selanjutnya adalah membuat relasi dari class – class tersebut. Ada beberapa macam relasi, yaitu,
1.      Association : Sebuah asosiasi merupakan sebuah relationship paling umum antara 2 class dan dilambangkan oleh sebuah garis yang menghubungkan antara 2 class. Garis ini bisa melambangkan tipe-tipe relationship  dan juga dapat menampilkan hukum-hukum multiplisitas pada sebuah relationship.(Contoh:  One-to-one, one-to-many,many-to-many).

2.      Composition: Jika sebuah class tidak bisa berdiri sendiri dan harus merupakan bagian dari class yang lain, maka class tersebut memiliki relasi Composition terhadap class tempat dia bergantung tersebut. Sebuah relationship composition  digambarkan sebagai garis dengan ujung berbentuk jajaran genjang berisi/solid.

3.      Dependency : Kadangkala sebuah class menggunakan class yang lain. Hal ini disebut dependency. Umumnya penggunaan dependency digunakan untuk menunjukkan operasi pada suatu class yang menggunakan class yang lain. Sebuah dependency dilambangkan sebagai sebuah panah bertitik-titik.

4.      Aggregation : Aggregation mengindikasikan keseluruhan bagian relationship dan biasanya disebut sebagai relasi.


Untuk class Pegai dan Departemen terdapat relasi Agregation, karena antara Pegawai dan Departemen saling berketergantungan dan mereka dapat berdiri sendiri. Class Departemen dan Produk diberikan relasi Composition karena class – class ini saling berketergantungan dan tidak dapat berdiri sendiri, jika tidak ada Departemen, maka tidak akan ada Produk. Kemudian untuk class Pelanggan dan Transaksi, terdapat relasi asosiation, yaitu dimana class Pelanggan tidak langsung berhubungan dengan Class transaksi, dan mereka tidak saling berketergantungan. Sedangkan pada class Produk dan Makanan, Minuman, Perlengkapan mandi terdapat relasi Generalization. Karena Makanan, Minuman, dan Perlengkapan mandi merupakan bagian dari produk yang lebih spesifik atau bisa disebut juga kata khusus dari Produk.
            Jika sudah, berikan sebuah text yang berisi simbol dari relasi tersebut, yaitu one to one, one to many, many to one, atau many to many.



OUTPUT

contoh inheritance

Pewarisan (Inheritance) merupakan sifat dalam bahasa berorientasi objek yang memungkinkan sifat-sifat dari suatu kelas diturunkan ke kelas lain. Sistem OOP memungkinkan kita untuk mendefinisikan suatu kelas baru dengan mewarisi sifat dari kelas lain yang sudah ada. Penurunan sifat ini bisa dilakukan dilakukan secara bertingkat-tingkat, sehingga semakin ke bawah maka kelas tersebut semakin spesifik.
pewarisan memberikan atau mewariskan sesuatu kepada keturunan berikutnya. misalnya, seorang anak pasti akan mewarisi beberapa sifat atau perilaku yang dimiliki oleh ibu/bapaknya. dalam konteks ini, suatu kelas dalam program dapat diturunkan menjadi kelas-kelas baru lainnya yang akan mewarisi beberapa sifat atau perilaku dari kelas induknya. sebagai contoh, apabila anda memiliki kelas A dalam program yang anda buat maka anda dapat membentuk kelas-kelas turunan dari kelas A tersebut(Misalnya, kelas B) yang mewarisi sifat-sifat yang terkandung dalam kelas A. dalam proses pembuatan kelas turunan tersebut, Anda dapat menambahkan sifat dan perilaku baru ke dalam kelas B, yang sebelumnya tidak dimiliki dalam kelas A. Dalam terminologi java, kelas induk dinamakan dengan superclass dankelas turunan dinamakan dengan subclass. untuk membuat kelas anak atau kelas turunan berdasarkan class yang ada, anda dapat menggunakan kata kunci extends.
keterangan : extends artinya diturunkan.








contoh program:
program induk kakek.java
public class kakek
{
    protected String namekakek;
    protected String address;
    public kakek()
    {
        System.out.println(“\n Program Demo Inheritance”);
        System.out.println(“============================”);
        System.out.println(“   Masukan construktor kakek  “);
        System.out.println(“–Dijalankan oleh class Bapak–”);
        namekakek=”Doni wijaya”;
        address=”Merauke”;
    }
    public kakek(String name,String address)
    {
        this.namekakek=namekakek;
        this.address=address;
    }    
    public String getName()
    {
        return namekakek;
    }
    public String getAddress()
    {
        return address;
    }
}
program anak/turunan:
program bapak.java
public class bapak extends kakek
{
    protected String namebapak;
    protected String addressbapak;
    public bapak()
    {
        System.out.println(“Nama Kakek :”+namekakek);
        System.out.println(“Address kakek :”+address);
        System.out.println(“\n”);
        System.out.println(” Masukan Construktor Bapak “);
        System.out.println(“—-dijalankan class cucu—-”);
        namebapak=”Ridho Saputra”;
        addressbapak=”Yogyakarta”;
        }
        public bapak(String namebapak,String addressbapak)
        {
            this.namebapak=namebapak;
            this.addressbapak=addressbapak;
        }
        public String getNama()
        {
            return namebapak;
        }
        public String getAddress()
        {
            return addressbapak;
        }
        public static void main(String []args)
        {
            bapak sari=new bapak();
        }
}
program cucu.java
public class cucu extends bapak
{
    public cucu()
    {
        System.out.println(“Nama Bapak  :”+namebapak);
        System.out.println(“Address Bapak :”+addressbapak);
    }
    public static void main(String []args)
    {
        String namacucu;
        cucu lagan=new cucu();
        System.out.println(“\nSaya adalah CUCU”);
        System.out.println(“Nama Saya : Samuel”);
        System.out.println(“”);
    }
}
jika ingin menjalankan program datas makan kita perlu mengkompile terlebih dahulu class kakek.java, jangan di run karena main programnya terdapat dalam class bapak.java dan cucu.java.
jika kita menjalankan class bapak maka akan seperti berikut tampilannya:





jika kita menjalankan program cucu maka akan seperti berikut tampilannya:

A 

Contoh Array dalam java


Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.

VARIABEL ARRAY
nama_variabel[indeks]

ketentuan nama variabel arrray sama dengan nama variabel biasa.
indeks menunjukkan nomor dari variabel .

DEKLARASI VARIABEL ARRAY

BU : tipe nama_variabel[indeks];

Contoh : float bil[10];
deklarasi variabel array dengan nama bil yang akan menampung 10 data yang bertipe float. Indeks 10 menunjukkan variabel bil terdiri dari 10 elemen, dimana setiap elemen akan menampung sebuah data.

Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :
float bil[11]

INISIALISASI ARRAY 1 DIMENSI
Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.
int bil[2] = {4,1,8}

bil[0] = 4
bil[1] = 1
bil[2] = 8

AUTOMATIC ARRAY adalah Inisialisasi array dilakukan di dalam fungsi tertentu. Hanya compiler C yang berstandar ANSI C yang dapat menginisialisasikan automatic array.
Cara menginisialisasikan array dari compiler yg tidak mengikuti standar ANSI C:
1. Diinisialisasikan di luar fungsi sebagai variabel GLOBAL/EXTERNAL ARRAY.
int bil[2]={0,0,0};
main()

2. Diinisialisasikan didlm fungsi sebagai variabel LOKAL/STATIC ARRAY.
main()
{
static int bil[2]={0,0,0};
.........

Pada automatic array yang tidak diinisialisasikan , elemen array akan memiliki nilai yang tidak beraturan. Bila global & static array tidak diinisialisasi maka semua elemen array secara otomatis akan diberi nilai nol(0).

Contoh :
main()
{
int y;
int hitung=0;
int x[0];
for(y=0;y<5;y++)
{
hitung+=y;
x[y]=hitung;
printf("%3d - %3d\n",y,x[y]);
}
}

OUTPUT:
0- 0
1- 1
2- 3
3- 6
4- 10

MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL
Besarnya variabel indeks dapat ditentukan dengan menggunakan
preprocessor directives #define
#define N 40
main()
{
int no[N],gaji[N],gol[N],status[N],juman[N];

Bila besari indeks akan diubah menjadi 50, cukup diganti dengan
#define N 50

ARRAY 2 DIMENSI
nama_variabel [indeks1][indeks2]

indeks1 : jumlah/nomor baris
indeks2 : jumlah/nomor kolom
Jumlah elemen yang dimiliki array 2 dimensi dapat ditentukan dari hasil perkalian indeks1 * indeks2

misal : array A[2][3] akan memiliki 2*3 = 6 elemen.

main()
{
float bil [5] [5]
.......

dapat dituliskan dengan #define
#define N 5
main()
{
float bil [N] [N]
.......

INISIALISASI ARRAY 2 DIMENSI
main()
{
float bil[2] [3] =
{ { 1,2,3}, /*baris 0*/
{ 4,5,6}, /*baris 1*/
}

elemen bil [0] [0] = 1
elemen bil [0] [1] = 2
elemen bil [0] [2] = 3
elemen bil [1] [0] = 4
elemen bil [1] [1] = 5
elemen bil [1] [2] = 6

Contoh :
main()
{
int x[3][5];
int y,z;
int hitung=0;
for(y=0;y<3;y++)


{
printf("y = %d\n",y);
for(z=0;z<5;z++)
{
hitung+=z;
x[y][z] = hitung;
printf("%/t%3d - %3d\n",z,x[y][z]);
}
}
}

OUTPUT:
y = 0
0- 0
1- 1
2- 2
3- 6
4- 10
y = 1
0- 10
1- 11
2- 13
3- 16
4- 20
y = 2
0- 20
1- 21
2- 23
3- 26
4- 30

STRING dan ARRAY
1. Pada string terdapat karakter null(\0) di akhir string
2. String sudah pasti array, array belum tentu string

CONTOH - CONTOH :
1. array dengan pengisian input melalui keyboard
baca_input()
{
float nilai[10];
for(i=0;i<10;i++)
scanf("%d",&nilai[i]);
}

2. Fungsi yang mencetak isi array dari akhir ke awal
cetak_array()
{
float nilai[10];
for(i=9;i>=0;i--)
scanf("%3f",nilai[i]);
}
3. Menghitung rata - rata isi array nilai
rata_rata()
{
float nilai[10],jum*rata;
for(i=0,jum=0;i<=9;i++)
jum+=nilai[i];
rata=jum/i;
}

4. Mencari nilai terbesar
besar()
float temp,nilai[10];
{
for(temp=nilai[0],i=1;i<=9;i++)
if(nilai[i] > temp)
temp=nilai[i];
}
return(temp)