Anda di halaman 1dari 13

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
MALANG

BAB I
PENDAHULUAN
1. Latar Belakang
Pada 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. Faktorfaktor 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 tersebut
Oleh 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 kebutuhan
2.Tujuan
Tujuan 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 II
DASAR TEORI
A.

UML

UML (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 Diagram
adalah 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-tomany).

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 Pattern
Sebuah 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 Pattern
Observer 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 III
PEMBAHASAN
A. Studi Kasus
Dalam 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 Template

public abstract class Employee {}


Concreate Abstract Class Template
public class User1 extends Employee {}
public class User2 extends Employee {}

OBSERVER PATTERN
Subject Class Observer
public class User1 extends Employee {}
public class User2 extends Employee {}
Abstract Observer
public abstract class Observer {}
Concreate Observer
public 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 pattern
2. 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
Pattern
3. 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 pattern
4. 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.java
1
package pjkppp;
2
3
public abstract class Employee {
4
public String dataBarang;
5
public int dataUang;
6
public abstract void login();
7
public abstract String getlogin();
8
public abstract void logout();
9
public abstract void update(String nama, int harga);
10
public abstract void show();
11
public abstract void notifyAllObservers();
12
public abstract void attach(Observer as);
13
public abstract String input();
14

15

User1.java
1
package pjkppp;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
public class User1 extends Employee {
7
private List<Observer> observers = new ArrayList<Observer>();
8
private String user = "user1";
9
@Override
10
public String input() {
11
return dataBarang;
12
}
13
@Override
14
public void show() {
15
notifyAllObservers();
16
}
17
@Override
18
public void attach(Observer observer) {
19
observers.add(observer);
20
}
21
@Override
22
public void notifyAllObservers() {
23
for (Observer observer : observers) {
24
observer.update();
25
}
26
}
27
@Override
28
public void login() {
29
System.out.println(user + " has login :");
30
}
31
@Override
32
public String getlogin() {
33
return user;
34
}
35
@Override
36
public void logout() {
37
System.out.println(user + " has logout");
38
}
39
@Override

40
41
42
43
44

public void update(String nama, int harga) {


this.dataBarang = nama;
}
}

User2.java
1
package pjkppp;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
public class User2 extends Employee {
7
private List<Observer> observers = new ArrayList<Observer>();
8
private String user = "user2";
9
@Override
10
public String input() {
11
return String.valueOf(dataUang);
12
}
13
@Override
14
public void show() {
15
notifyAllObservers();
16
}
17
@Override
18
public void attach(Observer observer) {
19
observers.add(observer);
20
}
21
@Override
22
public void notifyAllObservers() {
23
for (Observer observer : observers) {
24
observer.update();
25
}
26
}
27
@Override
28
public void login() {
29
System.out.println(user + " has login :");
30
}
31
@Override
32
public String getlogin() {
33
return user;
34
}
35
@Override
36
public void logout() {
37
System.out.println(user + " has logout");
38
}
39
@Override

40
41
42
43
44

public void update(String nama, int harga) {


this.dataUang = harga;
}
}

Observer.java
1
package pjkppp;
2
3
public abstract class Observer {
4
5
protected User1 warehouse;
6
protected User2 finance;
7
public abstract void update();
8
}
9
GudangJPN.java
1
package pjkppp;
2
3
import java.text.DecimalFormat;
4
5
public class GudangJPN extends Observer {
6
public GudangJPN(User1 warehouse, User2 finance) {
7
this.warehouse = warehouse;
8
this.warehouse.attach(this);
9
this.finance = finance;
10
this.finance.attach(this);
11
}
12
13
@Override
14
public void update() {
15
DecimalFormat deci = new DecimalFormat("#.###");
16
double kurs = Double.valueOf(finance.input()) / 108.47;
17
String translate = "";
18
if ("buku".equals(warehouse.input())) {
19
translate = "";
20
} else if ("pensil".equals(warehouse.input())) {
21
translate = "";
22
}
23
System.out.println("Kurs Uang Gudang JPN: ");
24
System.out.println("Nama" + " | " + "Kurs()");
25
System.out.println(translate + " | " + deci.format(kurs));
26
System.out.println("");
27
}
28

29

GudangUS.java
1
import java.text.DecimalFormat;
2
3
public class GudangUS extends Observer {
4
5
public GudangUS(User1 warehouse, User2 finance) {
6
this.warehouse = warehouse;
7
this.warehouse.attach(this);
8
this.finance = finance;
9
this.finance.attach(this);
10
}
11
@Override
12
public void update() {
13
DecimalFormat deci = new DecimalFormat("#.###");
14
double kurs = Double.valueOf(finance.input()) / 12000;
15
String translate = "";
16
if ("buku".equals(warehouse.input())) {
17
translate = "book";
18
} else if ("pensil".equals(warehouse.input())) {
19
translate = "pencil";
20
}
21
System.out.println("Kurs Uang Gudang US: ");
22
System.out.println("Nama" + " | " + "Kurs($)");
23
System.out.println(translate + " | " + deci.format(kurs));
24
System.out.println("");
25
}
26
}
27

BAB IV
HASIL

Anda mungkin juga menyukai