Thursday 11 April 2013

Pattern Bridge di Java, C# dan PHP

hari yang tidak terlalu cerah tapi juga tidak terlalu mendung, disambut dengan menulis design pattern di blog ini agar cepet terlunasi target ane selama 2 minggu ini :D... kali ini giliran pattern bridge yang ane bahas dan ane terapin di Java, C# dan PHP... secara bahasa arti dari bridge ini adalah penghubung/jembatan... fungsinya adalah untuk memisahkan antara abstraksi dan implementasinya... disini ane akan coba implementassinya menggunakan sebuah kartu pengenal (kartu KTP dan kartu mahasiswa) yang pembentukan object instance nya dipisahkan dengan interface nya...
Beginilah implementasinya di Java, C# dan PHP

Java
package Bridge;

public class MainClass {
 public static void main(String[] args) {
  RunController run = new RunController();
  
  run.SetBiodata(new KTP("Ahmad Rizal Afani","Kertosari","Jomblo"));
  run.DisplayText();
  System.out.println("--------------------------------------------------------");
  run.SetBiodata(new KTM("1110100601", "Ahmad Rizal Afani", "Jln. Ikan Hiu 30 Kertosari, Banyuwangi"));
  run.DisplayText();
 }
}

interface Biodata{
 public void DisplayText();
}

abstract class Controler{
 protected Biodata biodata;
 public void SetBiodata(Biodata biodata){
  this.biodata = biodata;
 }
 public void DisplayText(){
  biodata.DisplayText();
 }
}

class RunController extends Controler{}

class KTP implements Biodata{
 public KTP(String name,String alamat,String status_hubungan) {
  this.name = name;
  this.alamat = alamat;
  this.status_hubungan = status_hubungan;
 }
 
 private String name,alamat,status_hubungan;
 
 @Override
 public void DisplayText() {
  System.out.println("Class KTP implementasi dari interface Biodata\n");
  System.out.println("Nama \t: "+name);
  System.out.println("Alamat \t: "+alamat);
  System.out.println("Status \t: "+status_hubungan);
  System.out.println();
 }
}

class KTM implements Biodata{
 public KTM(String nim,String nama,String alamat) {
  this.nim = nim;
  this.nama = nama;
  this.alamat = alamat;
 }
 
 private String nim,nama,alamat;
 
 @Override
 public void DisplayText() {
  System.out.println("Class KTM implementasi dari interface Biodata\n\n");
  System.out.println("No. Induk \t: "+nim);
  System.out.println("Nama \t\t: "+nama);
  System.out.println("Alamat \t\t: "+alamat);
  System.out.println();
 }
}


C#
/*
 * Created by SharpDevelop.
 * User: FaiQ
 * Date: 31/03/2013
 * Time: 17:32
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;

namespace Bridge
{
 class Program
 {
  public static void Main(string[] args)
  {
   RunController run = new RunController();
  
   run.SetBiodata(new KTP("Ahmad Rizal Afani","Kertosari","Jomblo"));
   run.DisplayText();
   Console.WriteLine("--------------------------------------------------------");
   run.SetBiodata(new KTM("1110100601", "Ahmad Rizal Afani", "Jln. Ikan Hiu 30 Kertosari, Banyuwangi"));
   run.DisplayText();   
   
   Console.ReadKey(true);
  }
 }
 
 interface Biodata{
  void DisplayText();
 }
 
 abstract class Controler{
  protected Biodata biodata;
  public void SetBiodata(Biodata biodata){
   this.biodata = biodata;
  }
  public void DisplayText(){
   biodata.DisplayText();
  }
 }
 
 class RunController : Controler{}
 
 class KTP : Biodata{
  public KTP(string name,string alamat,string status_hubungan) {
   this.name = name;
   this.alamat = alamat;
   this.status_hubungan = status_hubungan;
  }
  
  private string name,alamat,status_hubungan;  
  
  public void DisplayText() {
   Console.WriteLine("Class KTP implementasi dari interface Biodata\n");
   Console.WriteLine("Nama \t: "+name);
   Console.WriteLine("Alamat \t: "+alamat);
   Console.WriteLine("Status \t: "+status_hubungan);
   Console.WriteLine();
  }
 }
 
 class KTM : Biodata{
  public KTM(string nim,string nama,string alamat) {
   this.nim = nim;
   this.nama = nama;
   this.alamat = alamat;
  }
  
  private string nim,nama,alamat;  
  
  public void DisplayText() {
   Console.WriteLine("Class KTM implementasi dari interface Biodata\n\n");
   Console.WriteLine("No. Induk \t: "+nim);
   Console.WriteLine("Nama \t\t: "+nama);
   Console.WriteLine("Alamat \t\t: "+alamat);
   Console.WriteLine();
  }
 }
}


PHP
<?php
 interface Biodata{
  function DisplayText();
 }

 abstract class Controler{
  protected $biodata;
  function SetBiodata($biodata){
   $this->biodata = $biodata;
  }
  function DisplayText(){
   $this->biodata->DisplayText();
  }
 }

 class RunController extends Controler{}

 class KTP implements Biodata{
  function __construct($name,$alamat,$status_hubungan) {
   $this->name = $name;
   $this->alamat = $alamat;
   $this->status_hubungan = $status_hubungan;
  }
  
  private $name,$alamat,$status_hubungan;
  
  
  function DisplayText() {
   echo("<b>Class KTP implementasi dari interface Biodata</b>< br />< br />");
   echo("Nama \t: ".$this->name.'< br />');
   echo("Alamat \t: ".$this->alamat.'< br />');
   echo("Status \t: ".$this->status_hubungan.'< br />');
  }
 }

 class KTM implements Biodata{
  function __construct($nim,$nama,$alamat) {
   $this->nim = $nim;
   $this->nama = $nama;
   $this->alamat = $alamat;
  }
  
  private $nim,$nama,$alamat;
  
  
  function DisplayText() {
   echo("<b>Class KTM implementasi dari interface Biodata</b><br /><br />");
   echo("No-> Induk \t: ".$this->nim.'< br />');
   echo("Nama \t\t: ".$this->nama.'< br />');
   echo("Alamat \t\t: ".$this->alamat.'< br />');
  }
 }
 
 $run = new RunController();
  
 $run->SetBiodata(new KTP("Ahmad Rizal Afani","Kertosari","Jomblo"));
 $run->DisplayText();
 echo("--------------------------------------------------------< br />");
 $run->SetBiodata(new KTM("1110100601", "Ahmad Rizal Afani", "Jln-> Ikan Hiu 30 Kertosari, Banyuwangi"));
 $run->DisplayText();
?>
pemisahan abstraksi dan implementasinya bisa ente lihat waktu class runController diakses dan kemudian memanggil method yang diwariskan dari parrent class nya... kemudian juga bisa ente lihat waktu method setBiodata diakses dan di isikan dengan object instance class implementasi dari interface biodata :) .. bingung ?? kalo bingung coba ente analisa lagi... ulangi lagi... sampek akhirnya ente paham :D ... sekian dulu untuk postingan kali ini, semoga bermanfaat..

No comments:

Post a Comment