Langsung ke konten utama

EAS PPL - Roman Numeral Converter

Perancangan Perangkat Lunak Menggunakan Design Pattern - Interpreter
Roman Numeral Converter


Disusun oleh:
1. Shafly Naufal Adianto (5114100114)
2. Rahmatin Nadia (5114100130)
3, Hariyoso Ario Bimo (5114100166)

1. Studi Kasus
Studi kasus yang kami kerjakan adalah Roman Numeric Converter, dimana kita dapat menginputkan angka Romawi dan menerjemahkannya ke angka desimal.
Didalam angka Romawi terdapat ketentuan seperti dibawah ini:

Symbol - Nilai Desimal
I  - 1
V - 5
X - 10
C - 100
D - 500
M - 1000

Untuk menerjemahkan angka romawi, kita harus menyimpan string input, dan mengiterasi huruf hurufnya dan mengecek apakah huruf tersebut termasuk kedalam ribuan atau ratusan atau puluhan atau satuan, setelah mengecek, kita akan menjumlahkan kedalam sebuah variable temporary untuk menjumlahkan semua hasil iterasi.

2. Design Pattern



Design Pattern yang kami gunakan adalah design pattern interpreter, dimana didalam design pattern ini terdapat:
- sebuah abstract class yang mendefinisikan sebuah "grammar rule" yang nantinya akan digunakan untuk menginterpretasi data.
- Sebuah class yang bernama context yang digunakan untuk menyimpan data input dan output
- Serta subclass yang meng-extend abstract class untuk menggunakan grammar rulenya, di class ini lah proses interpretasi dilakukan.

Kami menggunakan design pattern ini karena studi kasus yang kami gunakan memiliki karakteristik seperti yang dijelaskan pada design pattern, interpreter. dimana terdapat context/data yang akan di interpret , abstract expression dan terminal expressionnya. Dengan menggunakan pattern ini, maka dibuat class diagram seperti dibawah:



Disini kita membuat Class Context berisi angka romawi yang akan di convert dan yang sudah diconvert. Kemudian class Expression kami berisi grammar rule dalam pengkonversian angka romawi, dimana didalamnya terdapat:
- method interpret yang mengecek apabila sebuah angka terdiri dari angka 1 atau 4, 5, 9. Kami melakukan pengecekan hanya pada angka tersebut karena pada angka tersebut dalam bilangan romawi memiliki bentuk yang berbeda sendiri. Contoh:
angka 2 terdiri dari  2 kali angka 1 yaitu II , angka 7 terdiri dari V dan I dan I.
- Pengecekan apakah ia merupakan ribuan , ratusan ,puluhan atau satuan. proses pengecekan ini akan di cek pada Class-Class yang mengextend abstract class.

3. Implementasi

Pertama kita akan membuat dulu Class bernama Context


Di class ini akan disimpan input output serta method method untuk mengeset dan mengambil nilainya.

Kemudian kita buat abstract class sebagai baseclass dari interpreter-interpreter yang dibuat


Disini terdapat method utama bernama interpret, yang mendefinisikan "grammar rule" untuk interpreter lain. Jadi dari method ini akan mengambil data inputan kita, lalu akan megecek apabila ia dimulai dari 1 atau 4 atau 5 atau 9, berdasarkan satuannya. Maksud dari 1 4 5 9 berdasarkan satuannya itu misalnya seperti untuk angka 9 pada puluhan (90) maka romawinya "XC" sedangkan angka 9 pada ratusan (900) maka romawinya "CM"

Setelah menentukan angka awalannya, maka dia akan dikali dengan multiplier. dan Data context akan diupdate.



Kemudian dibuat abstract method seperti diatas untuk didefinisikan lagi pada class-class yang mengextend kelas ini.

Kemudian dibuat tiap tiap class yang mengextend interpreter utama








Di class class ini didefiniskan kembali abstract class pada class Expression, gunanya class-class ini adalah untuk memberikan aturan sendiri setiap satuannya.

setelah itu buat main class untuk menjalankan semuanya



Diatas dapat dilihat, misalnya angka romawi ang akan kita convert adalah MCMXXVIII
maka akan dibuat objek baru yang menyimpan angka romawi tersebut.

Lalu kita membuat array yangn diisi class-class interpreter yang melakukan pengecekan apabila dia itu termasuk bilangan ribuan ratusan puluhan atau satuan.

Kemudian array tersebut diiterasi untuk melakukan pengecekannya.
Dan pada akhirnya hasil akhirnya di print.

Output:


Disusun oleh:
1. Shafly Naufal Adianto (5114100114)
2. Rahmatin Nadia (5114100130)
3, Hariyoso Ario Bimo (5114100166)


Referensi:

https://sourcemaking.com/design_patterns/interpreter
http://www.oodesign.com/interpreter-pattern.html

Komentar

Postingan populer dari blog ini

Sequence Diagram, Class Diagram dan Use Case Sistem Informasi Laundry

Sistem Informasi Laundry minggu ke-6  Sequence Diagram Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar obyek dan mengindikasikan komunikasi diantara obyek-obyek tersebut. Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan oleh obyek-obyek yang melakukan suatu tugas atau aksi tertentu. Obyek-obyek tersebut kemudian diurutkan dari kiri ke kanan, aktor yang menginisiasi interaksi biasanya ditaruh di paling kiri dari diagram. Pada diagram ini, dimensi vertikal merepresentasikan waktu. Bagian paling atas dari diagram menjadi titik awal dan waktu berjalan ke bawah sampai dengan bagian dasar dari diagram. Garis Vertical, disebut lifeline, dilekatkan pada setiap obyek atau aktor. Kemudian, lifeline tersebut digambarkan menjadi kotak ketika obyek melakukan suatu operasi , kotak tersebut disebut activation box. Obyek dikatakan mempunyai live activation pada saat tersebut. Pesan yang dipertukarkan antar obyek digambarkan sebagai sebuah anakpanah anta

Hierarchial Input-Process-Output (HIPO)

Hierarchial Input-Process-Output (HIPO) Pengertian ü   Menurut Jogiyanto HM dalam buku Analisis & Desain Sistem Informasi (2005:787) HIPO ( Hierarchy plus Input-Process-Output)  adalah alat disain dan teknik dokumentasi dalam siklus pengembangan sistem. ü   Menurut Praptiningsih (2010:3),  “HIPO (Hierarchy Plus Input Process Output) adalah alat bantu yang digunakan untuk membuat spesifikasi program yang merupakan struktur yang berisi diagram dimana didalam program ini berisi input yang diproses dan menghasilkan output” ü   Jadi, HIPO adalah alat yang digunakan sebagai dokumentasi program dan sebagai alat desain dan teknik dokumentasi dalam siklus pengembangan system. ·          Merupakan metodologi yang dikembangkan dan didukung oleh IBM. ·          Sebenarnya merupakan alat dokumentasi program. ·          Sekarang banyak digunakan sebagai alat disain dan teknik dokumentasi dalam siklus pengembangan system ·          Berbasis pada fungsi, yaitu tiap-tiap

Sistem Informasi Laundry (2)

Sistem informasi Laundry adalah sebuah sistem informasi yang dibuat untuk memudahkan para pengelola usaha laundry dalam memanage usahanya. Pada Sistem informasinya, kami batasi hanya mendukung layanan kiloan. Jadi laundry disini menghitung baju per kilogram bukan dari jenis bajunya. Customer yang memakai jasa kami akan kami berikan kartu anggota untuk mempermudah melakukan penginputan data customer, customer yang telah memiliki kartu anggota dapat menggunakan layanan laundri antar jemput dengan menghubungi kami dan petugas akan datang kerumah. Selain itu customer juga dapat memilih pembayaran cash atau melalui mesin debit yang akan dibawa oleh petugas laundry pada saat pengiriman laundry ketempat customer Ada beberapa jenis diagram yang biasa digunakan, diantaranya Use Case Diagram Use-case Diagram adalah deskripsi dari fungsionality pada sistem. Penjelasan dari use case biasanya dibuat dalam teks sederhana sebagai pendokumentasian pada simbol use case, tetapi dapat juga digamba