TUTORIAL CODEIGNITER : APLIKASI WEBSITE / BLOG (WEBLOG) SEDERHANA DENGAN CODEIGNITER

Oke gan, langsung saja untuk screen shoot contoh aplikasi website, weblog, blog dengan codeigniter yang ane kasi, seperti di bawah ini...

Tutorial HTML

HTML merupakan bahasa dasar pembuatan web. Disebut dasar karena dalam membuat web, jika hanya menggunakan HTML tampilan web terasa hambar. Terdapat banyak bahasa pemograman web yang ditujukan untuk memanipulasi kode HTML, seperti ...

TUTORIAL ORACLE - KONEKSI ORACLE KE JAVA, PHP DAN C# (C-SHARP)

Disitu juga ane kasi contoh aplikasi CRUD nya yang bisa ente download Gratisss :D ...

Rabu, 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..

Pattern Visitor di Java, C# dan PHP

Postingan ini yang ke 3 dihari ini, setelah posting tentang pattern decorator kali ini ane pengen upload pattern visitor yang berkategori behavior design pattern dan seperti biasa ane kasi contoh penerapannya di Java, C# dan PHP :D .. akan ane jelasin sedikit tentang pattern ini... pattern visitor ini memungkinkan client dalam hal ini ane sering pake MainClass untuk mendefinisikan suatu operasi baru tanpa mengubah element sebuah class ... dalam hal ini seperti nama pattern nya, ane kasi sebuah contoh tentang travelling...
jadi kita sudah punya rute2 yang harus dilewati kemudian kita mempunyai 2 tim yang kedua nya harus melewati rute yang telah ditentukan.. rute A harus dilewati pertama kali oleh semua tim.. peraturannya seperti itu :D ... hubunganya sama pattern visitor apa ? seperti yang ane definisikan tadi, memungkinkan untuk mendefinisikan suatu operasi tanpa merubah element class, jadi ketika tim pertama rute yang telah di tentukan, maka tim ke dua juga harus melewati rute sesuai yang telah dilewati tim pertama.. jadi g merubah rute... hehee paham ya ?? biar tambah bingung dan pusing ane kasi contoh program nya langsung ya pake Java, C# dan PHP

Java
package Visitor;

import java.util.ArrayList;
import java.util.List;

public class MainClass {
public static void main(String[] args) {
Contorller controller = new Contorller();
controller.Add(new RuteA("Surabaya"));
controller.Add(new RuteB("Jakarta"));

controller.Display(new VisitorA("Tim A"));
controller.Display(new VisitorB("Tim B"));
}
}

abstract class Visitor{
public abstract void TimA(RuteA ruteA);
public abstract void TimB(RuteB ruteB);
}

abstract class Rute{
public abstract void Display(Visitor visitor);
}

class RuteA extends Rute{
public RuteA(String name){
this.name = name;
}

public String name;
@Override
public void Display(Visitor visitor)
{
visitor.TimA(this);
}
}

class RuteB extends Rute{
public RuteB(String name){
this.name = name;
}

public String name;
@Override
public void Display(Visitor visitor)
{
visitor.TimB(this);
}
}

class VisitorA extends Visitor{
public VisitorA(String name){
this.name = name;
}

private String name;
@Override
public void TimA(RuteA ruteA)
{
System.out.println(ruteA.name+" di lewati oleh "+this.name);
}
@Override
public void TimB(RuteB ruteB)
{
System.out.println(ruteB.name+" di lewati oleh "+this.name);
}
}

class VisitorB extends Visitor{
public VisitorB(String name){
this.name = name;
}

private String name;
@Override
public void TimA(RuteA ruteA)
{
System.out.println(ruteA.name+" di lewati oleh "+this.name);
}
@Override
public void TimB(RuteB ruteB)
{
System.out.println(ruteB.name+" di lewati oleh "+this.name);
}
}

class Contorller{
List<Rute> list_rute = new ArrayList<Rute>();
public void Add(Rute rute){
this.list_rute.add(rute);
}
public void Remove(Rute rute){
this.list_rute.remove(rute);
}
public void Display(Visitor visitor){
for(Rute my_rute : list_rute){
my_rute.Display(visitor);
}
}
}

C#
using System;
using System.Collections.Generic;

namespace Visitor
{
class Program
{
public static void Main(string[] args)
{
Contorller controller = new Contorller();
controller.Add(new RuteA("Surabaya"));
controller.Add(new RuteB("Jakarta"));

controller.Display(new VisitorA("Tim A"));
controller.Display(new VisitorB("Tim B"));
Console.ReadKey(true);
}
}

abstract class Visitor{
public abstract void TimA(RuteA ruteA);
public abstract void TimB(RuteB ruteB);
}

abstract class Rute{
public abstract void Display(Visitor visitor);
}

class RuteA : Rute{
public RuteA(String name){
this.name = name;
}

public string name;

public override void Display(Visitor visitor)
{
visitor.TimA(this);
}
}

class RuteB : Rute{
public RuteB(string name){
this.name = name;
}

public string name;

public override void Display(Visitor visitor)
{
visitor.TimB(this);
}
}

class VisitorA : Visitor{
public VisitorA(string name){
this.name = name;
}

private string name;

public override void TimA(RuteA ruteA)
{
Console.WriteLine(ruteA.name+" di lewati oleh "+this.name);
}

public override void TimB(RuteB ruteB)
{
Console.WriteLine(ruteB.name+" di lewati oleh "+this.name);
}
}

class VisitorB : Visitor{
public VisitorB(string name){
this.name = name;
}

private string name;

public override void TimA(RuteA ruteA)
{
Console.WriteLine(ruteA.name+" di lewati oleh "+this.name);
}

public override void TimB(RuteB ruteB)
{
Console.WriteLine(ruteB.name+" di lewati oleh "+this.name);
}
}

class Contorller{
List<Rute> list_rute = new List<Rute>();
public void Add(Rute rute){
this.list_rute.Add(rute);
}
public void Remove(Rute rute){
this.list_rute.Remove(rute);
}
public void Display(Visitor visitor){
foreach(Rute my_rute in list_rute){
my_rute.Display(visitor);
}
}
}
}

PHP
<?php
abstract class Visitor{
abstract function TimA($ruteA);
abstract function TimB($ruteB);
}

abstract class Rute{
public abstract function Display($visitor);
}

class RuteA extends Rute{
function __construct($name){
$this->name = $name;
}

public $name;

function Display($visitor)
{
$visitor->TimA($this);
}
}

class RuteB extends Rute{
function __construct($name){
$this->name = $name;
}

public $name;

function Display($visitor)
{
$visitor->TimB($this);
}
}

class VisitorA extends Visitor{
function __construct($name){
$this->name = $name;
}

private $name;

function TimA($ruteA)
{
echo($ruteA->name." di lewati oleh ".$this->name.'< br />');
}

function TimB($ruteB)
{
echo($ruteB->name." di lewati oleh ".$this->name.'< br />');
}
}

class VisitorB extends Visitor{
function __construct($name){
$this->name = $name;
}

private $name;

function TimA($ruteA)
{
echo($ruteA->name." di lewati oleh ".$this->name.'< br />');
}

function TimB($ruteB)
{
echo($ruteB->name." di lewati oleh ".$this->name.'< br />');
}
}

class Contorller{
private $list_rute = Array();
function Add($rute){
$this->list_rute[] = $rute;
}
function Remove($index){
unset($this->list_rute[$index]);
}
function Display($visitor){
foreach($this->list_rute as $list){
$list->Display($visitor);
}
}
}

$controller = new Contorller();
$controller->Add(new RuteA("Surabaya"));
$controller->Add(new RuteB("Jakarta"));

$controller->Display(new VisitorA("Tim A"));
$controller->Display(new VisitorB("Tim B"));
?>

gampang kan penerapannya di Java, C# dan PHP ? :D wkwkwkwkwkwk... bagi yang ngerti gampang... bagi yang gak ngerti yo mbohh wkwkwkwkwk... oke guys.. sekian dulu untuk postingan pattern visitor ini semoga bermanfaat... keep cooding :)

Pattern Decorator di Java, C# dan PHP

Ini postingan yang ke 2 di hari yang agak sibuk ini, masi tentang design pattern yang contoh programnya udah ane siapkan tentunya dengan Java, C# dan PHP.. jadi tinggal upload :D kali ini tentang pattern decorator yang termasuk dari pattern kategori structural artinya pattern yang menangani masalah struktur program... definisinya secara bahasa decorator artinya ada perias, sedangkan secara programming adalah pattern yang dapat mengubah nilai2 dalam kelas utama tanpa mengubah bentuk asli dari class utama tersebut,
dalam hal ini ane kasi contoh sebuah binatang, kalo binatang ini dikasi sayap apa makhluk ini akan jadi manusia ?? ya tidak tentunya :D tetep aja binatang ... kalo binatang ini dikasi kaki ? ya tetep aja masi binatang, tidak berubah... konsep dari pattern seperti itu... meskipun dikasi nilai baru tetapi tidak merubah konsep asli dari sebuah object... paham ya ?? kalo udah paham sekarang kita langsung ke implementasi nya di Java, C# dan PHP

Java
package Decorator;

public class MainClass {
public static void main(String[] args) {
Binatang binatang = new Burung();
binatang.Gambarkan();
System.out.println("-------------------------");
binatang = new Kaki(binatang);
binatang.Gambarkan();
System.out.println("-------------------------");
binatang = new Sayap(binatang);
binatang.Gambarkan();
}
}

interface Binatang{
public void Gambarkan();
}

class Burung implements Binatang{
@Override
public void Gambarkan() {
System.out.println("Ini binatang Burung");
}
}

abstract class Decorator implements Binatang{
protected Binatang binatang = null;
public Decorator(Binatang binatang) {
this.binatang = binatang;
}
}

class Kaki extends Decorator{
public Kaki(Binatang binatang) {
super(binatang);
}
@Override
public void Gambarkan() {
this.binatang.Gambarkan();
this.CanRun();
}

private void CanRun(){
System.out.println("Burung Bisa Lari");
}
}

class Sayap extends Decorator{
public Sayap(Binatang binatang) {
super(binatang);
}

@Override
public void Gambarkan() {
this.binatang.Gambarkan();
this.CanFly();
}

private void CanFly(){
System.out.println("Burung Bisa Terbang");
}
}


C#
using System;

namespace Decorator
{
class Program
{
public static void Main(string[] args)
{
Binatang binatang = new Burung();
binatang.Gambarkan();
Console.WriteLine("-------------------------");
binatang = new Kaki(binatang);
binatang.Gambarkan();
Console.WriteLine("-------------------------");
binatang = new Sayap(binatang);
binatang.Gambarkan();
Console.ReadKey(true);
}
}

interface Binatang{
void Gambarkan();
}

class Burung : Binatang{
public void Gambarkan() {
Console.WriteLine("Ini binatang Burung");
}
}

abstract class Decorator : Binatang{
public Binatang binatang = null;
public Decorator(Binatang _binatang) {

this.binatang = _binatang;
}

public abstract void Gambarkan();
}

class Kaki : Decorator{
public Kaki(Binatang _binatang) :base(_binatang){
}

public override void Gambarkan() {
this.binatang.Gambarkan();
this.CanRun();
}

private void CanRun(){
Console.WriteLine("Burung Bisa Lari");
}
}

class Sayap : Decorator{
public Sayap(Binatang binatang):base(binatang) {
}

public override void Gambarkan() {
this.binatang.Gambarkan();
this.CanFly();
}

private void CanFly(){
Console.WriteLine("Burung Bisa Terbang");
}
}
}


PHP
<?php
interface Binatang{
function Gambarkan();
}

class Burung implements Binatang{
function Gambarkan() {
echo("Ini binatang Burung< br />");
}
}

abstract class Decorator implements Binatang{
protected $binatang = null;
function Decorator($binatang) {
$this->binatang = $binatang;
}
}

class Kaki extends Decorator{
function __construct($binatang) {
parent::__construct($binatang);
}

function Gambarkan() {
$this->binatang->Gambarkan();
$this->CanRun();
}

function CanRun(){
echo("Burung Bisa Lari< br />");
}
}

class Sayap extends Decorator{
function __construct($binatang) {
parent::__construct($binatang);
}

function Gambarkan() {
$this->binatang->Gambarkan();
$this->CanFly();
}

function CanFly(){
echo("Burung Bisa Terbang< br />");
}
}

$binatang = new Burung();
$binatang->Gambarkan();
echo("-------------------------< br />");
$binatang = new Kaki($binatang);
$binatang->Gambarkan();
echo("-------------------------< br />");
$binatang = new Sayap($binatang);
$binatang->Gambarkan();
?>

Yupzzz ... begitulah penerapan dari design pattern decorator di Java, C# dan PHP... selain itu ente juga bisa mencoba menerapkan pattern di beberapa kasus, misal kasus modifikasi motor... kalo motor di modifikasi dengan ditambah komponennya atau diganti warnanya... ya tetap saja namanya motor :D ... hemmb untuk postingan pattern decorator cukup sampai sini aja dan semoga bermanfaat.. :)

Selasa, 09 April 2013

Pattern Composite di Java, C# dan PHP

alhamdulillah kali ini masi bisa  ngupdate design pattern yang memang harus ane lunasin update nya :D , sekarang gilirannya pattern composite yang ane bahas dan ane terapin di Java, C# dan PHP. sedikit penjelasan tentang pattern ini ya ? hehee.... pattern ini berfungsi untuk menulis objek ke dalam struktur pohon yang mewakili bagian keseluruhan hirarki, selain itu pattern ini memungkinkan client (dalam hal ini ane sering pake "MainClass") memperlakukan object individu dan komposisi seragam. artinya object individu tadi akan diakses secara bersamaan yang dengan komposisi object2 yang ada.. biar tambah bingung :D langsung ane kasi contoh nya yak ??

Java
package Composite;

import java.util.ArrayList;
import java.util.List;

public class MainClass {
public static void main(String[] args) {
Mahasiswa mahasiswa_1 = new Mahasiswa("Rizal");
Mahasiswa mahasiswa_2 = new Mahasiswa("Panjoel");
Mahasiswa mahasiswa_3 = new Mahasiswa("Shohif");
Mahasiswa mahasiswa_4 = new Mahasiswa("Faradis");
Mahasiswa mahasiswa_5 = new Mahasiswa("Chanda");

Composite composite_1 = new Composite();
composite_1.AddComponent(mahasiswa_1);
composite_1.AddComponent(mahasiswa_2);

Composite composite_2 = new Composite();
composite_2.AddComponent(mahasiswa_3);
composite_2.AddComponent(mahasiswa_4);

Composite composite_3 = new Composite();
composite_3.AddComponent(composite_1);
composite_3.AddComponent(composite_2);
composite_3.AddComponent(mahasiswa_5);

System.out.println("Panggil Function PrintHello() dari mahasiswa_1");
mahasiswa_1.PrintHello();
System.out.println("-----------------------------------------------");
System.out.println("Panggil Function PrintHello() dari composite_1");
composite_1.PrintHello();
System.out.println("-----------------------------------------------");
System.out.println("Panggil Function PrintHello() dari composite_2");
composite_2.PrintHello();
System.out.println("-----------------------------------------------");
System.out.println("Panggil Function PrintHello() dari composite_3");
composite_3.PrintHello();
System.out.println("-----------------------------------------------");
}
}

interface Component{
public void PrintHello();
public void PrintGoodBye();
}

class Mahasiswa implements Component{
public Mahasiswa(String name) {
this.name = name;
}

private String name;

@Override
public void PrintHello() {
System.out.println(this.name+" Mengatakan Hallo");
}

@Override
public void PrintGoodBye() {
System.out.println(this.name+" Mengatakan Selamat tinggal");
}
}

class Composite implements Component{
List<Component> list = new ArrayList<Component>();
@Override
public void PrintHello() {
for(Component component : list){
component.PrintHello();
}
}
@Override
public void PrintGoodBye() {
for(Component component : list){
component.PrintGoodBye();
}
}
public void AddComponent(Component component){
this.list.add(component);
}

public void RemoveComponent(Component component){
this.list.remove(component);
}
}


C#
using System;
using System.Collections.Generic;

namespace Composite
{
class Program
{
public static void Main(string[] args)
{
Mahasiswa mahasiswa_1 = new Mahasiswa("Rizal");
Mahasiswa mahasiswa_2 = new Mahasiswa("Panjoel");
Mahasiswa mahasiswa_3 = new Mahasiswa("Shohif");
Mahasiswa mahasiswa_4 = new Mahasiswa("Faradis");
Mahasiswa mahasiswa_5 = new Mahasiswa("Chanda");

Composite composite_1 = new Composite();
composite_1.AddComponent(mahasiswa_1);
composite_1.AddComponent(mahasiswa_2);

Composite composite_2 = new Composite();
composite_2.AddComponent(mahasiswa_3);
composite_2.AddComponent(mahasiswa_4);

Composite composite_3 = new Composite();
composite_3.AddComponent(composite_1);
composite_3.AddComponent(composite_2);
composite_3.AddComponent(mahasiswa_5);

Console.WriteLine("Panggil Function PrintHello() dari mahasiswa_1");
mahasiswa_1.PrintHello();
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("Panggil Function PrintHello() dari composite_1");
composite_1.PrintHello();
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("Panggil Function PrintHello() dari composite_2");
composite_2.PrintHello();
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("Panggil Function PrintHello() dari composite_3");
composite_3.PrintHello();
Console.WriteLine("-----------------------------------------------");
Console.ReadKey(true);
}
}

interface Component{
void PrintHello();
void PrintGoodBye();
}

class Mahasiswa : Component{
public Mahasiswa(string name) {
this.name = name;
}

private string name;

public void PrintHello() {
Console.WriteLine(this.name+" Mengatakan Hallo");
}


public void PrintGoodBye() {
Console.WriteLine(this.name+" Mengatakan Selamat tinggal");
}
}

class Composite : Component{
List<Component> list = new List<Component>();

public void PrintHello() {
foreach(Component component in list){
component.PrintHello();
}
}

public void PrintGoodBye() {
foreach(Component component in list){
component.PrintGoodBye();
}
}
public void AddComponent(Component component){
this.list.Add(component);
}

public void RemoveComponent(Component component){
this.list.Remove(component);
}
}
}


PHP
<?php
interface Component{
function PrintHello();
function PrintGoodBye();
}

class Mahasiswa implements Component{
function __construct($name) {
$this->name = $name;
}

private $name;

function PrintHello(){
echo $this->name." Mengatakan Hallo<br />";
}

function PrintGoodBye() {
echo $this->name." Mengatakan Selamat tinggal<br />";
}
}

class Composite implements Component{
private $list = Array();

function PrintHello() {
foreach($this->list as $l){
$l->PrintHello();
}
}

function PrintGoodBye() {
foreach($this->list as $l){
$l->PrintGoodBye();
}
}
function AddComponent($component){
$this->list[] = $component;
}

function RemoveComponent($index){
unset($list[$index]);
}
}

$mahasiswa_1 = new Mahasiswa("Rizal");
$mahasiswa_2 = new Mahasiswa("Panjoel");
$mahasiswa_3 = new Mahasiswa("Shohif");
$mahasiswa_4 = new Mahasiswa("Faradis");
$mahasiswa_5 = new Mahasiswa("Chanda");

$composite_1 = new Composite();
$composite_1->AddComponent($mahasiswa_1);
$composite_1->AddComponent($mahasiswa_2);

$composite_2 = new Composite();
$composite_2->AddComponent($mahasiswa_3);
$composite_2->AddComponent($mahasiswa_4);

$composite_3 = new Composite();
$composite_3->AddComponent($composite_1);
$composite_3->AddComponent($composite_2);
$composite_3->AddComponent($mahasiswa_5);

echo("Panggil Function PrintHello() dari mahasiswa_1< br />");
$mahasiswa_1->PrintHello();
echo("-----------------------------------------------< br />");
echo("Panggil Function PrintHello() dari composite_1< br />");
$composite_1->PrintHello();
echo("-----------------------------------------------< br />");
echo("Panggil Function PrintHello() dari composite_2< br />");
$composite_2->PrintHello();
echo("-----------------------------------------------< br />");
echo("Panggil Function PrintHello() dari composite_3< br />");
$composite_3->PrintHello();
echo("-----------------------------------------------< br />");
?>
hemmbb..... untuk analisa nya coba ente belajar mandiri dulu ya ? :D .. toh tadi ane kasi definisinya.. dari situ juga sudah hampir jelas, biar lebih jelas coba ente analisa kode program nya di Java, C# dan PHP yang ane kasi tadi.. hehehee.. karena ane juga lagi sibuk.. wkwkwkwkwk.. untuk postingan design pattern composite cukup sampek disini dulu ya ? smoga bermanfaat buat ane, ente dan pengunjung blog ini :)

Pattern Strategy di Java, C# dan PHP

design pattern yang ane bahas kali ini tentang strategy pattern yang termasuk kategory behaviour pattern yang menangani kelakuan program. dan seperti biasanya ane kasi penerapannya nanti di Java, C# dan PHP.. akhir2 ini ane jadi agak sedikit males nulis di blog kesayangan ini karena beberapa beban yang harus ane selesaikan dengan cepat dalam waktu yang sangat singkat :( . rasanya memang seperti tak punya hidup, memang tidak bisa mengatur sedikit waktu untuk bersantae si... dikarenakan ke padatan jadwal.. memang nasibnya programmer kali yak ? :(
untuk sedikit bermain saja sudah terasa banget waktu terbuang2.. hal ini sangat mengganggu ane sebenarnya... smoga besok2 ada kabar baik yang bisa membangkitkan kembali semangat ane untuk berkarya dengan cepat lagi. pengertian dari pattern strategy ini memungkinkan algoritma bervariasi secara independen dari client yang memanfaatkannya.. kali ini ane kasi contoh  kasus nya seperti validasi rentang tipe data dalam pemrograman... seperti yang ente tau, type data byte mempunyai rentang antara 0 - 255 sedangkan integer rentangnya mulai -2147483648 sampai  2147483647 ... disini kita bisa memakainya sebagai simulasi penerapan design pattern strategy untuk menvalidasi sebuah bilangan, berikut penerapannya di Java, C# dan PHP

Java
package Strategi;

public class MainClass {
public static void main(String[] args) {
int nomer = 400;
System.out.println("Input Angka = "+nomer);
Context context = new Context(new VirtualByte(), nomer);
System.out.println(context.GetResult());
context = new Context(new VirtualInteger(), nomer);
System.out.println(context.GetResult());
}
}

interface Strategi{
String CekNomer(int angka);
}

class VirtualByte implements Strategi{
@Override
public String CekNomer(int angka) {
if(angka >= 0 && angka <= 255){
return "Angka Sesuai dengan Type Data Byte";
}else{
return "Angka diluar Rentang Type Data Byte";
}
}
}

class VirtualInteger implements Strategi{
@Override
public String CekNomer(int angka) {
if(angka >= -2147483648 && angka <= 2147483647){
return "Angka Sesuai dengan Type Data Integer";
}else{
return "Angka diluar Rentang Type Data Integer";
}
}
}

class Context{
private Strategi strategi = null;
private int nomer;
public Context(Strategi strategi,int nomer) {
this.strategi = strategi;
this.nomer = nomer;
}
public void SetStrategy(Strategi strategy){
this.strategi = strategy;
}
public int GetNomer(){
return this.nomer;
}
public String GetResult(){
return this.strategi.CekNomer(this.nomer);
}
}

C#
using System;

namespace Strategy
{
class Program
{
public static void Main(string[] args)
{
int nomer = 400;
Console.WriteLine("Input Angka = "+nomer);
Context context = new Context(new VirtualByte(), nomer);
Console.WriteLine(context.GetResult());
context = new Context(new VirtualInteger(), nomer);
Console.WriteLine(context.GetResult());


Console.ReadKey(true);
}
}

interface Strategi{
string CekNomer(int angka);
}

class VirtualByte : Strategi{
public string CekNomer(int angka) {
if(angka >= 0 && angka <= 255){
return "Angka Sesuai dengan Type Data Byte";
}else{
return "Angka diluar Rentang Type Data Byte";
}
}
}

class VirtualInteger : Strategi{
public string CekNomer(int angka) {
if(angka >= -2147483648 && angka <= 2147483647){
return "Angka Sesuai dengan Type Data Integer";
}else{
return "Angka diluar Rentang Type Data Integer";
}
}
}

class Context{
private Strategi strategi = null;
private int nomer;
public Context(Strategi strategi,int nomer) {
this.strategi = strategi;
this.nomer = nomer;
}
public void SetStrategy(Strategi strategy){
this.strategi = strategy;
}
public int GetNomer(){
return this.nomer;
}
public string GetResult(){
return this.strategi.CekNomer(this.nomer);
}
}
}

PHP
<?php
interface Strategi{
function CekNomer($angka);
}

class VirtualByte implements Strategi{
function CekNomer($angka) {
if($angka >= 0 && $angka <= 255){
return "Angka Sesuai dengan Type Data Byte< br />";
}else{
return "Angka diluar Rentang Type Data Byte< br />";
}
}
}

class VirtualInteger implements Strategi{
function CekNomer($angka) {
if($angka >= -2147483648 && $angka <= 2147483647){
return "Angka Sesuai dengan Type Data Integer<br />";
}else{
return "Angka diluar Rentang Type Data Integer<br />";
}
}
}

class Context{
private $strategi = null;
private $nomer;
function __construct($strategi,$nomer) {
$this->strategi = $strategi;
$this->nomer = $nomer;
}
function SetStrategy($strategy){
$this->strategi = $strategy;
}
function GetNomer(){
return $this->nomer;
}
function GetResult(){
return $this->strategi->CekNomer($this->nomer);
}
}

$nomer = 400;
echo("Input Angka = ".$nomer."< br />");
$context = new Context(new VirtualByte(), $nomer);
echo($context->GetResult());
$context = new Context(new VirtualInteger(), $nomer);
echo($context->GetResult());
?>

begitulah gan penerapan design pattern strategy di Java, C# dan PHP :D ... semoga bermanfaat buat kita semua.. :)

Senin, 08 April 2013

Pattern Builder di Java, C# dan C++

Pattern Builder ini adalah pattern terakhir dari kategori creational patterns yang ane bahas, artinya pattern ini design pattern yang menangangi pembuatan sebuah object... dan seperti biasa ane akan bahas dengan Java, C# dan PHP. pengertian pattern builder ini adalah algoritma yang berfungsi untuk memisahkan pembangunan object yang sulit dari representasinya sehingga konstrusksi yang sama dapat menghasilkan representasi yang beda. dalam hal ini akan ane kasi contoh status tentang wisata kuliner :D (jadi laper),
misal kita disini mendata tentang makanan khas dari setiap kabupaten di Indonesia. tentunya saat kita menulis data kuliner dari kabupaten tersebut kita akan menulis nama daerah kemudian makanan khas nya. waktu kita catat Banyuwangi, kita catat nama kabupaten, makanan dan minuman khas nya, begitu juga waktu kita mendata kuliner khas dari madura, prosesnya juga akan sama, menulis nama kabupaten kemudian menulis makanan dan minuman khas nya... apa hubungannya dengan pattern builder ?? :D seperti yang ane jelasin tadi, pattern builder ini memisahakan pembangunan object yang sulit dari representasinya dalam hal ini banyuwangi dan madura, konstruksi yang sama dalam hal ini mencatat datanya, menghasilkan representasi yang berbeda :D .... biar lebih jelas lagi, langsung kita contohkan dengan program Java, C# dan PHP

Java
package Builder;

public class MainClass {
public static void main(String[] args) {
KulinerBuilder oseng = new OsengKuliner();
Controller controller = new Controller(oseng);
controller.Build();
Kuliner kuliner = controller.GetKuliner();
System.out.println(kuliner);

KulinerBuilder madura = new MaduraKuliner();
controller = new Controller(madura);
controller.Build();
kuliner = controller.GetKuliner();
System.out.println(kuliner);
}
}

class Controller{
KulinerBuilder kuliner_bulider;
public Controller(KulinerBuilder kuliner_bulider) {
this.kuliner_bulider = kuliner_bulider;
}

public void Build(){
kuliner_bulider.DaerahBuilder();
kuliner_bulider.MakananBuilder();
kuliner_bulider.MinumanBuilder();
}

public Kuliner GetKuliner(){
return kuliner_bulider.GetKuliner();
}
}

class Kuliner{
private String daerah,makanan,minuman;
public void SetDaerah(String daerah){
this.daerah = daerah;
}
public String GetDaerah(){
return this.daerah;
}
public void SetMakanan(String makanan){
this.makanan = makanan;
}
public String GetMakanan(){
return this.makanan;
}
public void SetMinuman(String minuman){
this.minuman = minuman;
}
public String GetMinuman(){
return this.minuman;
}
public String toString(){
return "Kota "+GetDaerah()+" Makanan Khas nya "+GetMakanan()+" dan minuman khas nya "+GetMinuman();
}
}

interface KulinerBuilder{
public void DaerahBuilder();
public void MakananBuilder();
public void MinumanBuilder();
public Kuliner GetKuliner();
}

class OsengKuliner implements KulinerBuilder{
private Kuliner kuliner = null;
public OsengKuliner() {
kuliner = new Kuliner();
}
@Override
public void DaerahBuilder() {
kuliner.SetDaerah("Banyuwangi");
}
@Override
public void MakananBuilder() {
kuliner.SetMakanan("Sego Tempong");
}
@Override
public void MinumanBuilder() {
kuliner.SetMinuman("Es Degan");
}
@Override
public Kuliner GetKuliner() {
return kuliner;
}
}

class MaduraKuliner implements KulinerBuilder{
private Kuliner kuliner = null;
public MaduraKuliner() {
kuliner = new Kuliner();
}
@Override
public void DaerahBuilder() {
kuliner.SetDaerah("Madura");
}
@Override
public void MakananBuilder() {
kuliner.SetMakanan("Sate");
}
@Override
public void MinumanBuilder() {
kuliner.SetMinuman("Es Teh");
}
@Override
public Kuliner GetKuliner() {
return kuliner;
}
}


C#
using System;

namespace Builder
{
class Program
{
public static void Main(string[] args)
{
KulinerBuilder oseng = new OsengKuliner();
Controller controller = new Controller(oseng);
controller.Build();
Kuliner kuliner = controller.GetKuliner();
Console.WriteLine(kuliner.ToString());

KulinerBuilder madura = new MaduraKuliner();
controller = new Controller(madura);
controller.Build();
kuliner = controller.GetKuliner();
Console.WriteLine(kuliner.ToString());

Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}

class Controller{
KulinerBuilder kuliner_bulider;
public Controller(KulinerBuilder kuliner_bulider) {
this.kuliner_bulider = kuliner_bulider;
}

public void Build(){
kuliner_bulider.DaerahBuilder();
kuliner_bulider.MakananBuilder();
kuliner_bulider.MinumanBuilder();
}

public Kuliner GetKuliner(){
return kuliner_bulider.GetKuliner();
}
}

class Kuliner{
private string daerah,makanan,minuman;

public string Daerah {
get { return minuman; }
set { minuman = value; }
}

public string Makanan {
get { return makanan; }
set { makanan = value; }
}

public string Minuman {
get { return daerah; }
set { daerah = value; }
}

public string ToString(){
return "Kota "+this.Daerah+" Makanan Khas nya "+this.Makanan+" dan minuman khas nya "+this.Minuman;
}
}

interface KulinerBuilder{
void DaerahBuilder();
void MakananBuilder();
void MinumanBuilder();
Kuliner GetKuliner();
}

class OsengKuliner : KulinerBuilder{
private Kuliner kuliner = null;
public OsengKuliner() {
kuliner = new Kuliner();
}
public void DaerahBuilder() {
kuliner.Daerah = "Banyuwangi";
}
public void MakananBuilder() {
kuliner.Makanan = "Sego Tempong";
}
public void MinumanBuilder() {
kuliner.Minuman = "Es Degan";
}
public Kuliner GetKuliner() {
return kuliner;
}
}

class MaduraKuliner : KulinerBuilder{
private Kuliner kuliner = null;
public MaduraKuliner() {
kuliner = new Kuliner();
}
public void DaerahBuilder() {
kuliner.Daerah = "Madura";
}
public void MakananBuilder() {
kuliner.Makanan = "Sate";
}
public void MinumanBuilder() {
kuliner.Minuman = "Es Teh";
}
public Kuliner GetKuliner() {
return kuliner;
}
}
}


PHP
<?php
class Controller{
private $kuliner_bulider = null;
public function __construct($kuliner_bulider) {
$this->kuliner_bulider = $kuliner_bulider;
}

function Build(){
$this->kuliner_bulider->DaerahBuilder();
$this->kuliner_bulider->MakananBuilder();
$this->kuliner_bulider->MinumanBuilder();
}

function GetKuliner(){
return $this->kuliner_bulider->GetKuliner();
}
}

class Kuliner{
private $daerah,$makanan,$minuman;
function SetDaerah($daerah){
$this->daerah = $daerah;
}
function GetDaerah(){
return $this->daerah;
}
function SetMakanan($makanan){
$this->makanan = $makanan;
}
function GetMakanan(){
return $this->makanan;
}
function SetMinuman($minuman){
$this->minuman = $minuman;
}
function GetMinuman(){
return $this->minuman;
}
function toString(){
return "Kota ".$this->GetDaerah()." Makanan Khas nya ".$this->GetMakanan()." dan minuman khas nya ".$this->GetMinuman();
}
}

interface KulinerBuilder{
public function DaerahBuilder();
public function MakananBuilder();
public function MinumanBuilder();
public function GetKuliner();
}

class OsengKuliner implements KulinerBuilder{
private $kuliner = null;
public function __construct() {
$this->kuliner = new Kuliner();
}

public function DaerahBuilder() {
$this->kuliner->SetDaerah("Banyuwangi");
}

public function MakananBuilder() {
$this->kuliner->SetMakanan("Sego Tempong");
}

public function MinumanBuilder() {
$this->kuliner->SetMinuman("Es Degan");
}

public function PrintText(){
echo "Im Text<br />";
}

public function GetKuliner() {
return $this->kuliner;
}
}

class MaduraKuliner implements KulinerBuilder{
private $kuliner = null;
public function __construct() {
$this->kuliner = new Kuliner();
}

public function DaerahBuilder() {
$this->kuliner->SetDaerah("Madura");
}

public function MakananBuilder() {
$this->kuliner->SetMakanan("Sate");
}

public function MinumanBuilder() {
$this->kuliner->SetMinuman("Es Teh");
}

public function GetKuliner() {
return $this->kuliner;
}
}

$oseng = new OsengKuliner();
$controller = new Controller($oseng);
$controller->Build();
$kuliner = $controller->GetKuliner();
echo $kuliner->toString().'<br /><br />';

$madura = new MaduraKuliner();
$controller = new Controller($madura);
$controller->Build();
$kuliner = $controller->GetKuliner();
echo $kuliner->toString().'<br /><br />';
?>

hemmbb... untuk analisa nya bsa ente pelajari sendiri ya tentunya :D , karena ane lagi males jelasin panjang2 ni... sekian dulu postingan design pattern builder dan implementasi nya di Java, C# dan PHP ini... semoga bermanfaat :)

Kamis, 04 April 2013

Pattern Memento di Java, C# dan PHP

Memento pattern secara bahasa artinya adalah kenang-kenangan :) pattern memento ini termasuk kategory design pattern behaviour yang menangani kelakuan dari program... kali ini memang saatnya pattern memento ane bahas, karena hati ane memang lagi pengen bahas pattern memento ini :D dan nanti akan ane kasi penerapannya di Java, C# dan PHP ... Pattern memento ini secara gampangnya adalah pola yang dapat menyimpan sebuah proses ataupun sebuah moment, contoh nya yang sangat gampang dan kita ketahui seperti yang ada di Windows yaitu system restore...
System restore ini bisa menyimpan waktu dan keadaan system operasi. suatu saat kita menyimpan sebuah waktu / sebuah keadaan laptop kita, kemudian besok2 nya ada kerusakan pada system operasi, maka kita tidak perlu buru2 menginstal ulang komputer, karena kita sudah pernah menyimpan sebuah moment dari komputer itu kmaren2, jadi tinggal di restore atau dikembalikan saja maka akan kembali pada moment yang kita simpan tadi :D, cara kerja Pattern memento ini seperti itu..
kali ini ane akan kasi contoh yang kasusnya berbeda dari penjelasan ane tadi, kasus ini menceritakan saat ane PDKT sama mantan ane sampai akhir nya putus :D hehehee... dan ini bukan curhat loo ya ? hanya sebagai simulasi saja dan pada penerapan pattern memento ini ane akan simpan sebuah moment yang indah menurut ane dan saat putus ane akan kembalikan dengan pattern memento ini... begini gan penerapan pattern memento di Java, C# dan PHP :)

Java

package Memento;

import Memento.StatusInfo.Memento;

public class MainClass {
public static void main(String[] args) {
Controller controller = new Controller();
StatusInfo info = new StatusInfo("Rizal Afani", "January", "Jomblo", "Kenalan");
System.out.println(info);
info.SetState("February", "Jomblo", "PDKT");
System.out.println("\nsimpan moment\n");
controller.Save(info);
System.out.println(info);
info.SetState("Maret", "Berpacaran", "Berpacaran");
System.out.println(info);
info.SetState("Juni", "Berpacaran", "Galau");
System.out.println(info);
info.SetState("Juli", "Jomblo", "Galau");
System.out.println(info);
System.out.println("\n=========================================================================");
System.out.println("|| Andaikan saja waktu bisa diulang dengan pattern memento seperti ini ||");
System.out.println("=========================================================================\n");
System.out.println("kembalikan moment\n");
controller.Restore(info);
System.out.println(info);
}
}

class StatusInfo{
private String name, bulan, status,keadaan;
public StatusInfo(String name,String bulan,String status,String keadaan) {
this.name = name;
this.bulan = bulan;
this.status = status;
this.keadaan = keadaan;
}
public void SetState(String bulan,String status,String keadaan){
this.bulan = bulan;
this.status = status;
this.keadaan = keadaan;
}

public String toString(){
return this.name+" pada bulan "+this.bulan+" sedang "+this.keadaan+" dengan status "+this.status;
}

public Memento Save(){
return new Memento(bulan, status, keadaan);
}

public void Restore(Object objMemento){
Memento _obj = (Memento)objMemento;
this.bulan = _obj.bulan;
this.status = _obj.status;
this.keadaan = _obj.keadaan;
}

public class Memento{
public String bulan, status,keadaan;
public Memento(String bulan,String status,String keadaan) {
this.bulan = bulan;
this.status = status;
this.keadaan = keadaan;
}
}
}

class Controller{
private Object objMemento;
public void Save(StatusInfo info){
this.objMemento = info.Save();
}
public void Restore(StatusInfo info){
info.Restore(this.objMemento);
}
}


C#
using System;

namespace Memento
{
class Program
{
public static void Main(string[] args)
{
Controller controller = new Controller();
StatusInfo info = new StatusInfo("Rizal Afani", "January", "Jomblo", "Kenalan");
Console.WriteLine(info.ToString());
info.SetState("February", "Jomblo", "PDKT");
Console.WriteLine("\nsimpan moment\n");
controller.Save(info);
Console.WriteLine(info.ToString());
info.SetState("Maret", "Berpacaran", "Berpacaran");
Console.WriteLine(info.ToString());
info.SetState("Juni", "Berpacaran", "Galau");
Console.WriteLine(info.ToString());
info.SetState("Juli", "Jomblo", "Galau");
Console.WriteLine(info.ToString());
Console.WriteLine("\n=========================================================================");
Console.WriteLine("|| Andaikan saja waktu bisa diulang dengan pattern memento seperti ini ||");
Console.WriteLine("=========================================================================\n");
Console.WriteLine("kembalikan moment\n");
controller.Restore(info);
Console.WriteLine(info.ToString());

Console.ReadKey(true);
}
}

class StatusInfo{
private String name, bulan, status,keadaan;
public StatusInfo(String name,String bulan,String status,String keadaan) {
this.name = name;
this.bulan = bulan;
this.status = status;
this.keadaan = keadaan;
}
public void SetState(String bulan,String status,String keadaan){
this.bulan = bulan;
this.status = status;
this.keadaan = keadaan;
}

public String ToString(){
return this.name+" pada bulan "+this.bulan+" sedang "+this.keadaan+" dengan status "+this.status;
}

public Memento Save(){
return new Memento(bulan, status, keadaan);
}

public void Restore(Object objMemento){
Memento _obj = (Memento)objMemento;
this.bulan = _obj.bulan;
this.status = _obj.status;
this.keadaan = _obj.keadaan;
}

public class Memento{
public String bulan, status,keadaan;
public Memento(String bulan,String status,String keadaan) {
this.bulan = bulan;
this.status = status;
this.keadaan = keadaan;
}
}
}

class Controller{
private Object objMemento;
public void Save(StatusInfo info){
this.objMemento = info.Save();
}
public void Restore(StatusInfo info){
info.Restore(this.objMemento);
}
}
}


PHP
<?php
class StatusInfo{
private $name, $bulan, $status,$keadaan;
function __construct($name,$bulan,$status,$keadaan) {
$this->name = $name;
$this->bulan = $bulan;
$this->status = $status;
$this->keadaan = $keadaan;
}
function SetState($bulan,$status,$keadaan){
$this->bulan = $bulan;
$this->status = $status;
$this->keadaan = $keadaan;
}

function toString(){
return $this->name." pada bulan ".$this->bulan." sedang ".$this->keadaan." dengan status ".$this->status."<br />";
}

function Save(){
return new Memento($this->bulan, $this->status, $this->keadaan);
}

function Restore($objMemento){
$this->bulan = $objMemento->bulan;
$this->status = $objMemento->status;
$this->keadaan = $objMemento->keadaan;
}
}

class Memento{
public $bulan, $status,$keadaan;
function __construct($bulan,$status,$keadaan) {
$this->bulan = $bulan;
$this->status = $status;
$this->keadaan = $keadaan;
}
}

class Controller{
private $objMemento;
function Save($info){
$this->objMemento = $info->Save();
}
function Restore($info){
$info->Restore($this->objMemento);
}
}

$controller = new Controller();
$info = new StatusInfo("Rizal Afani", "January", "Jomblo", "Kenalan");
echo($info->toString());
$info->SetState("February", "Jomblo", "PDKT");
echo("< br />simpan moment< br />< br />");
$controller->Save($info);
echo($info->toString());
$info->SetState("Maret", "Berpacaran", "Berpacaran");
echo($info->toString());
$info->SetState("Juni", "Berpacaran", "Galau");
echo($info->toString());
$info->SetState("Juli", "Jomblo", "Galau");
echo($info->toString());
echo("< br />=========================================================================<br />");
echo("|| Andaikan saja waktu bisa diulang dengan pattern memento seperti ini ||< br />");
echo("=========================================================================< br />");
echo("kembalikan moment< br />< br />");
$controller->Restore($info);
echo($info->toString());

?>

kalo ente lihat pada implementasi atau penerapan pattern memento di Java, C# dan PHP itu ada sebuah proses kemudian salah satu proses nya ane simpan (dalam hal ini saat ane PDKT) ente juga tau kalo saat2 yang indah itu saat PDKT, bukan saat pacaran, kemudian saat ane putus, ane kembalikan lagi ke saat PDKT :D ... andaikan didunia ini ada Jutsu yang bisa menyimpan dan mengembalikan waktu seperti Pattern memento ini ane akan pelajari... biar gak jomblo gini... wkwkwkwkwk tapi jomblo juga banyak hikmah nya looo hehehehehe... oke dah gan, semoga ente paham dan semoga bermanfaat buat ane, ente juga para pengunjung blog ini :)