Sunday, November 27, 2016

Design Pattern - Interpreter

Pada post ini, saya akan membahas tentang salah satu Design Pattern yaitu Interpreter. Sebelumnya, apa itu "design pattern"? Design pattern adalah suatu bentuk solusi untuk menyelesaikan masalah yang sering kali dijumpai ketika mengembangkan suatu perangkat lunak, terutama yang menggunakan Object Oriented Programming (OOP) dalam proses pembuatannya, Dalam sejarahnya, sangat banyak design pattern yang dikembangkan untuk menyelsaikan beragam masalah. Salah satu yang paling populer adalah kumpulan design pattern yang dirancang oleh Erich Gamma, Richard Helm, Ralph Johnson dan John Vlissides pada  tahun 1994 yang ditulis dalam sebuah buku berjudul Design Patterns - Elements of Reusable Object-Oriented Software. Dalam buku tersebut, ada dua puluh tiga macam jenis design pattern yang memiliki ciri-ciri dan kegunaan masing-masing, salah satunya adalah design pattern "Interpreter".

A.  Penjelasan Singkat

 Interpreter adalah salah satu jenis design pattern yang cara kerjanya adalah menerjemahkan (interpreting) suatu kalimat atau ekspresi menjadi sebuah masukkan yang akan menghasilkan perilaku tertentu. Design pattern ini digunakan dalam sistem yang dimana menerjemahkan suatu kalimat menjadi sangat vital dalam fungsi kerjanya, seperti dalam penrjemahan perintah SQL, dimana inputnya merupakan sebuah kalimat utuh.

B. Contoh Struktur (Class Diagram) yang Digunakan

Untuk lebih jelasnya, kita akan mencoba membuat sebuah struktur program sebuah interpreter sederhana dan mengimplementasikannya menjadi sebuah program jadi dalam bahasa Java. Disini akan digunakan contoh dari Tutorialspoint (di sini). Struktur program yang akan kita buat dalam bentuk class diagram dapat dilihat sebagai berikut:



























Dalam contoh tersebut kita akan membuat sebuah program sederhana yang dapat menerjemahkan expresi logika "or" dan "and" Kelas utama dalam program ini adalah kelas InterpreterPatternDemo yang didalamnya terdapat fungsi main dari program ini. Kelas tersebut akan menggunakan kelas Expression, TerminalExpression, OrExpression, dan AndExpression. Kelas TerminalExpression, OrExpression, dan AndExpression merupakan turunan dari kelas Expression.

C. Source Code

Untuk source code yang digunakan dalam contoh ini dapat dilihat di sini atau dari sumbernya di Tutorialspoint (di sini)

D. Contoh Output

Dari source code pada link di atas, akan dihasilkan output sebagai berikut:


(Catatan: dalam contoh ini, input dan aturan dalam "or dan "and" sudah di-hardcode dalam program)

Sumber:
- https://www.tutorialspoint.com/design_pattern
- https://www.tutorialspoint.com/design_pattern/interpreter_pattern.htm


No comments:

Post a Comment