Wednesday 10 April 2013

Pattern Interpreter di Java, C# dan PHP

Tinggal 7 pattern yang harus ane upload di blog ini, habis itu akan lunas deh target ane buat selesaikan tutorial design pattern ini :D ... kali ini giliran pattern Interpreter yang ane bahas dan yang akan ane coba implementasinya di java, C# dan PHP... pattern interpreter ini termasuk kategori design pattern behaviour yang menangani kelakuan program... pattern ini konsep kerja nya seperti gaet yang menerjemahkan bahasa asing. artinya si gaet harus mengenali dan belajar dulu jenis2 bahasa asing agar bisa menerjemahkan..
dalam contoh yang setelah ini ane pake contoh sebuah object yang bisa mengoperasikan operasi matematika yang berbeda dalam suatu proses tetapi menggunakan inputan yang sama. oke.. begini penerapannya di Java, C# dan PHP

Java
package Interpreter;

import java.util.*;

public class MainClass {
 public static void main(String[] args) {
  Context context = new Context();
  List<AbstractExpression> list = new ArrayList<AbstractExpression>();
  
  list.add(new Penjumlahan());
  list.add(new Perkalian());
  
  for(AbstractExpression abs : list){
   abs.DisplayText(context);
  }
 }
}

class Context{
 public int bilangan_1 = 10;
 public int bilangan_2 = 10;
}

abstract class AbstractExpression{
 public abstract void DisplayText(Context context);
}

class Penjumlahan extends AbstractExpression{
 @Override
 public void DisplayText(Context context) {
  System.out.println(context.bilangan_1+context.bilangan_2);
 }
}

class Perkalian extends AbstractExpression{
 @Override
 public void DisplayText(Context context) {
  System.out.println(context.bilangan_1*context.bilangan_2);
 }
}  

C#
using System;
using System.Collections;

namespace Interpreter
{
 class Program
 {
  public static void Main(string[] args)
  {
   Context context = new Context();
   ArrayList list = new ArrayList();
   
   list.Add(new Penjumlahan());
   list.Add(new Perkalian());
   
   foreach(AbstractExpression abs in list){
    abs.DisplayText(context);
   }
   
   Console.ReadKey(true);
  }
 }
 
 class Context{
  public int Bilangan_1 = 10;
  public int Bilangan_2 = 10;
 }
 
 abstract class AbstractExpression{
  public abstract void DisplayText(Context context);
 }
 
 class Penjumlahan : AbstractExpression{
  public override void DisplayText(Context context)
  {
   Console.WriteLine(context.Bilangan_1+context.Bilangan_2);
  }
 }
 
 class Perkalian : AbstractExpression{
  public override void DisplayText(Context context)
  {
   Console.WriteLine(context.Bilangan_1*context.Bilangan_2);
  }
 }
}  

PHP
<?php
 class Context{
  public $bilangan_1 = 10;
  public $bilangan_2 = 10;
 }

 abstract class AbstractExpression{
  abstract function DisplayText($context);
 }

 class Penjumlahan extends AbstractExpression{  
  function DisplayText($context) {
   echo($context->bilangan_1+$context->bilangan_2."< br />");
  }
 }

 class Perkalian extends AbstractExpression{  
  function DisplayText($context) {
   echo($context->bilangan_1*$context->bilangan_2."< br />");
  }
 }
 
 $context = new Context();
 $list = Array();
  
 $list[] = new Penjumlahan();
 $list[] = new Perkalian();
 
 foreach($list as $l){
  $l->DisplayText($context);
 }
?>  

Kalo ente perhatikan.. abstract class "AbstractExpression" itu sebagai gaet yang bisa menerjemahkan 2 proses yaitu penjumlahan dan perkalian yang input nya dari class context :D , maka seperti itu konsep kerja pattern interpreter ini.. hehee.. paham ya ?? kalo gak paham silahkan tanyakan ke ane lewat facebook aje.. wkwkwkwk sekian dulu ya gan ? semoga bermanfaat..

No comments:

Post a Comment