pola pola perancangan

15
TUGAS POLA-POLA PERANCANGAN SISTEM DISTRIBUSI BARANG GUDANG Dengan Kombinasi Design Pattern (Observer dan Template) Disusun Oleh : BAGUS AJI PAMUNGKAS 1251502071110 FENDY YULIANTO 125150207111019 JANUAR ANAS FAUZI S 125150207111020 M FATONI ANGGRIS 125150207111021 PROGRAM STUDI INFORMATIKA PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

Upload: aanggrez-tony

Post on 07-Nov-2015

230 views

Category:

Documents


9 download

DESCRIPTION

aaa

TRANSCRIPT

TUGAS POLA-POLA PERANCANGANSISTEM DISTRIBUSI BARANG GUDANGDengan Kombinasi Design Pattern (Observer dan Template)

Disusun Oleh : BAGUS AJI PAMUNGKAS 1251502071110 FENDY YULIANTO 125150207111019 JANUAR ANAS FAUZI S125150207111020M FATONI ANGGRIS125150207111021

PROGRAM STUDI INFORMATIKAPROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTERUNIVERSITAS BRAWIJAYAMALANG

BAB IPENDAHULUAN1. Latar BelakangPada era komputerisasi sekarang ini, hampir semua bidang usaha menggunakan teknologi berbasis komputer dan salah satu contohnya ialah penggunaan teknologi internet yang dewasa ini telah berkembang dengan pesat. Melalui internet banyak hal-hal yang bisa dilakukan secara cepat dan efisien sehingga menghemat waktu, biaya dan tenaga. Faktor-faktor yang menguntungkan tersebut membuat banyak perusahaan menggunakan teknologi internet untuk memasarkan produknya.Alasan pentingnya gudang yaitu sebagai bufferstock antara supply dan demand, untuk mendukung stock terhadap panjangnya waktu produksi, safety stock untuk melindungi interupsi yang tidak direncanakan dalam supply, sebagai pelindung permintaan musiman yang berfluktuasi, sebagai strategi pengaman selama produksi istirahat, pengurangan biaya transportasi dan produksi, untuk memenuhi kebutuhan proses produksi. Dimana dalam manajemen pergudangan diperlukan saluran distribusi yang baik dari proses produksi sampai barang disimpan di dalam gudang. Untuk dapat menyimpan barang di dalam gudang perusahaan harus dapat memilih tipe gudang yang digunakan, peralatan yang digunakan dalam gudang, tata letak dan lokasi yang tepat dan sistem persediaan.dan dimana sistem gudang tersebut dapat terintegrasi dengan gudang 1 dengan gudang lainya sehingga membutuhkan system yang dapat terintegrasi antar gudang 1 dengan gudang lainya untuk mendapatakan data/ informasi yang sama tapi berbeda tampilan, Dan bagaimana cara memanajemen rule dalam pengoperasian gudang yang terdapat berbagai user terlibat didalam sistem tersebutOleh karena itu dengan menggunakan pattern Observer yang dikombinasi dengan pattern Template dapat di selesaikan dalam kasus ini, sehingga dengan multiuser dan integrasi multi gudang dapat berjalan sesuai kebutuhan2.TujuanTujuan dari pembuatan system yang terintegrasi ini adalah :1. Untuk membuat sistem informasi berbasiskan desktop yang sesuai dengan kebutuhan divisi dan sesuai kebutuhan informasi tiap gudang .2. Untuk menerapkan mata kuliah Pola Pola Perancangan tentang kombinasi pattern.3. Untuk menyelesaikan kasus dan mendapatkan solusi dari permasalahan tersebut.

BAB IIDASAR TEORIA. UMLUML (Unified Modeling Language) adalah sebuah bahasa untuk menentukan, visualisasi, kontruksi, dan mendokumentasikan artifact (bagian dari informasi yang digunakan atau dihasilkan dalam suatu proses pembuatan perangkat lunak. Artifact dapat berupa model, deskripsi atau perangkat lunak) dari system perangkat lunak, seperti pada pemodelan bisnis dan system non perangkat lunak lainnya (Cernosek dan Naiburg, 2004).UML merupakan suatu kumpulan teknik terbaik yang telah terbukti sukses dalam memodelkan sistem yang besar dan kompleks. UML tidak hanya digunakan dalam proses pemodelan perangkat lunak, namun hampir dalam semua bidang yang membutuhkan pemodelan. Bagian-bagian diagram utama dari UML adalah :1. Class Diagramadalah diagram yang menunjukan class-class yang ada dari sebuah sistem dan hubungannya secara logika. Class diagram menggambarkan struktur statis dari sebuah sistem. Karena itu class diagram merupakan tulang punggung atau kekuatan dasar dari hampir setiap metode berorientasi objek termasuk UML (Henderi, 2008). Sementara menurut (Whitten L. Jeffery et al 2004:432) class diagram adalah gambar grafis mengenai struktur objek statis dari suatu sistem, menunjukan class-class objek yang menyusun sebuah sistem dan juga hubungan antara class objek tersebut. Komponen diagram kelas diantaranya yaitu:1. Class: Class adalah blok - blok pembangun pada pemrograman berorientasi obyek.Sebuah class digambarkan sebagai sebuah kotak yang terbagi atas 3 bagian. Bagian atas adalah bagian nama dari class. Bagian tengah mendefinisikan property/atribut class. Bagian akhir mendefinisikan methodmethod dari sebuah class.

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

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

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

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

B. Template PatternSebuah metode template yang mendefinisikan kerangka program algoritma, satu atau lebih dari langkah-langkah algoritma dapat diganti oleh subclass yang berbeda untuk memungkinkan perilaku sambil memastikan bahwa algoritma menyeluruh masih diikuti.Dalam pemrograman berorientasi obyek, kelas pertama yang dibuat yang menyediakan langkah-langkah dasar dari desain algoritma. Langkah-langkah ini diimplementasikan dengan menggunakan metode abstrak yang kemudian subclass mengubah metode abstrak untuk melaksanakan tindakan nyata. Dengan demikian, algoritma umum disimpan di satu tempat namun langkah-langkah konkret dapat diubah oleh subclass.

Kelas Template adalah kelas induk abstrak yang berisi logika umum yang memiliki metode Operation1 Operation2, dan Operation3, yaitu metode bertopik untuk anak kelas. Dalam diagram, ini menunjukkan bahwa logika umum panggilan Operation1, diikuti oleh Operation2, dan akhirnya Operation3.Kelas Implementasi adalah anak kelas dari kelas Template yang terdiri dari metode Operation1, Operation2, dan Operation3 yang berisi implementasi berbagai metode.C. Observer PatternObserver pattern adalah adalah pola desain perangkat lunak di mana suatu objek, yang disebut subjek, akan menyimpan daftar dari tanggungan, yang disebut pengamat, dan memberitahukan mereka secara otomatis dari setiap perubahan negara, biasanya dengan menelepon salah satu metode mereka. Hal ini terutama digunakan untuk mengimplementasikan sistem penanganan peristiwa terdistribusi.

BAB IIIPEMBAHASANA.Studi KasusDalam perusahaan ATK terdapat gudang yang di kelola oleh divisi gudang dan divisi finance. Divisi gudang bertugas mengelola barang, sedangkan divisi finance bertugas mengelola daftar harga dari barang-barang yang tersedia pada gudang.Perusahaan ATK merupakan perusahaan international yang memiliki kerjasama dengan customer perusahaan cabang dari negara lain diantaranya negara JEPANG dan USA. Permasalahan ditemukan pada mata uang dan penamaan barang yang berbeda dari kedua negara tersebut belum sesuai dengan data gudang di pusat.Dengan memanfaatkan kombinasi observer pattern dan template pattern dapat menyelesaikan permasalahan tersebut.

B. Impelementasi

TEMPLATE PATTERN Abstract Class Templatepublic abstract class Employee {} Concreate Abstract Class Templatepublic class User1 extends Employee {}public class User2 extends Employee {}

OBSERVER PATTERN Subject Class Observerpublic class User1 extends Employee {}public class User2 extends Employee {} Abstract Observer public abstract class Observer {} Concreate Observerpublic class GudangUS extends Observer {}public class GudangJPN extends Observer {}

1. Employee class : dimana class abstrak ini merupakan induk dari kelas User1 dan User2, sehingga semua aktifitas/fungsi yang terdapat dalam User1 dan User2 sama dengan induknya (Employee) dan kelas Employee ini merupakan Abstrak Template dari Template pattern2. User2 & User1 class : dimana 2 class ini mengextends dari Employee dan merupakan anak dari kelas Employee sehingga fungsinya merupakan turunan dari Employee dan 2 kelas ini mempunyai 2 peran dalam kombinasi pattern ini (penghubung pattern), yaitu sebagai Concreate Abstract dari Template pattern dan Subject dari Observer Pattern3. Observer class : dimana class abstrak ini sebagai interface atau kelas abstrak yang mendefinisikan operasi yang digunakan untuk memberi notifikasi objek ke anak kelas, dan class observer ini merupakan observer itu sendiri di Observer pattern4. GudangUS & GudangJPN class : dimana kelas ini merupakan mengextends dari Observer dan merupakan anak dari kelas Observer sehingga fungsinya merupakan turunan dari Observer dan peran 2 kelas ini merupakan Concreate Observer dari observer pattern

Employee.java123456789101112131415package pjkppp;

public abstract class Employee { public String dataBarang; public int dataUang; public abstract void login(); public abstract String getlogin(); public abstract void logout(); public abstract void update(String nama, int harga); public abstract void show(); public abstract void notifyAllObservers(); public abstract void attach(Observer as); public abstract String input();}

User1.java1234567891011121314151617181920212223242526272829303132333435363738394041424344package pjkppp;

import java.util.ArrayList;import java.util.List;

public class User1 extends Employee { private List observers = new ArrayList(); private String user = "user1"; @Override public String input() { return dataBarang; } @Override public void show() { notifyAllObservers(); } @Override public void attach(Observer observer) { observers.add(observer); } @Override public void notifyAllObservers() { for (Observer observer : observers) { observer.update(); } } @Override public void login() { System.out.println(user + " has login :"); } @Override public String getlogin() { return user; } @Override public void logout() { System.out.println(user + " has logout"); } @Override public void update(String nama, int harga) { this.dataBarang = nama; }}

User2.java1234567891011121314151617181920212223242526272829303132333435363738394041424344package pjkppp;

import java.util.ArrayList;import java.util.List;

public class User2 extends Employee { private List observers = new ArrayList(); private String user = "user2"; @Override public String input() { return String.valueOf(dataUang); } @Override public void show() { notifyAllObservers(); } @Override public void attach(Observer observer) { observers.add(observer); } @Override public void notifyAllObservers() { for (Observer observer : observers) { observer.update(); } } @Override public void login() { System.out.println(user + " has login :"); } @Override public String getlogin() { return user; } @Override public void logout() { System.out.println(user + " has logout"); } @Override public void update(String nama, int harga) { this.dataUang = harga; }}

Observer.java123456789package pjkppp;

public abstract class Observer {

protected User1 warehouse; protected User2 finance; public abstract void update();}

GudangJPN.java1234567891011121314151617181920212223242526272829package pjkppp;

import java.text.DecimalFormat;

public class GudangJPN extends Observer { public GudangJPN(User1 warehouse, User2 finance) { this.warehouse = warehouse; this.warehouse.attach(this); this.finance = finance; this.finance.attach(this); }

@Override public void update() { DecimalFormat deci = new DecimalFormat("#.###"); double kurs = Double.valueOf(finance.input()) / 108.47; String translate = ""; if ("buku".equals(warehouse.input())) { translate = ""; } else if ("pensil".equals(warehouse.input())) { translate = ""; } System.out.println("Kurs Uang Gudang JPN: "); System.out.println("Nama" + " | " + "Kurs()"); System.out.println(translate + " | " + deci.format(kurs)); System.out.println(""); }}

GudangUS.java123456789101112131415161718192021222324252627import java.text.DecimalFormat;

public class GudangUS extends Observer {

public GudangUS(User1 warehouse, User2 finance) { this.warehouse = warehouse; this.warehouse.attach(this); this.finance = finance; this.finance.attach(this); } @Override public void update() { DecimalFormat deci = new DecimalFormat("#.###"); double kurs = Double.valueOf(finance.input()) / 12000; String translate = ""; if ("buku".equals(warehouse.input())) { translate = "book"; } else if ("pensil".equals(warehouse.input())) { translate = "pencil"; } System.out.println("Kurs Uang Gudang US: "); System.out.println("Nama" + " | " + "Kurs($)"); System.out.println(translate + " | " + deci.format(kurs)); System.out.println(""); }}

BAB IVHASIL