Tasarım Desenleri
Nesneye Dayalı Programlamada Sınıf İlişkileri Nasıl Olmalı?
Testçiler sizin düşmanınız değildir. Esas düşman yazılım hatalarıdır!
Davranışsal Tasarım Desenleri

Yorumlayıcı ( Interpreter ) Tasarım Deseni

Bu tasarım desenindeki amaç, özelleşmiş bir bilgisayar dilinin yorumlanmasının gerçekleştirilmesidir. Ana fikir, bu özelleşmiş dilin her bir sembolü için ayrı bir sınıf yaratmaktır. Bu tasarım deseni, veritabanı yönetim sistemlerindeki SQL tarzı dillerin yorumlanmasında kullanılabilir. Bir başka örnek olarak, bilgisayar ağlarındaki iletişim protokollerindeki özel dillerin çözümlenmesinde kullanılabilir.

Örnek Uygulama

Örnekte, '+' ( artı ), '-' ( eksi ) ve '%' ( yüzde ) karakterlerinden oluşan bir bilgisayar dilinin yorumlanması gösterilmiştir. Her bir karakter için, ArtıSembol, EksiSembol ve YüzdeSembol sınıfları oluşturulmuştur. Bu sınıflar da Sembol üst arayüz sınıfından türetilmiştir. DilYorumlayıcısı istemci sınıfı, verilen metnin her bir karakterini ayrıştırmıştır. Her bir karakter için ayrı bir sembol karakteri oluşturulup, bu sınıflar bir listeye eklenmiştir. Daha sonra, liste sırayla dolaşılarak, "Sembol" sınıfının "yorumla" yordamı çağırılarak verilen metin yorumlanmıştır.

/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/



package com.ilkerkonar.td.desen.ornekkodlar.interpreter;

/**
* Sembol.java
*
* Tarih bilgisi : May 24, 2014
*/
public interface Sembol {

 
void yorumla();
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/

package com.ilkerkonar.td.desen.ornekkodlar.interpreter;

/**
* ArtıSembol.java
*
* Tarih bilgisi : May 24, 2014
*/
public class ArtıSembol implements Sembol {

 
@Override
 
public void yorumla() {
   
System.out.println( "+ sembolü yorumlandı." );
 
}
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/



package com.ilkerkonar.td.desen.ornekkodlar.interpreter;

/**
* ArtıSembol.java
*
* Tarih bilgisi : May 24, 2014
*/
public class EksiSembol implements Sembol {

 
@Override
 
public void yorumla() {
   
System.out.println( "- sembolü yorumlandı." );
 
}
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/

package com.ilkerkonar.td.desen.ornekkodlar.interpreter;

/**
* ArtıSembol.java
*
* Tarih bilgisi : May 24, 2014
*/
public class YüzdeSembol implements Sembol {

 
@Override
 
public void yorumla() {
   
System.out.println( "% sembolü yorumlandı." );
 
}
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/



package com.ilkerkonar.td.desen.ornekkodlar.interpreter;

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

/**
* DilYorumlayıcısı.java
*
* Tarih bilgisi : May 24, 2014
*/
public class DilYorumlayıcısı {

 
public static void main( final String[] args ) {
   
// Yorumlanacak dil.
   
final String metin = "++-%%+-";
   
final List< Sembol > sembolListesi = new ArrayList< Sembol >();

   
// Metni ayrıştır ve sembol sınıflarını
    // listeye ekle.
   
for ( final char c : metin.toCharArray() ) {
     
if ( c == '+' ) {
       
sembolListesi.add( new ArtıSembol() );
     
} else if ( c == '-' ) {
       
sembolListesi.add( new EksiSembol() );
     
} else if ( c == '%' ) {
       
sembolListesi.add( new YüzdeSembol() );
     
}
    }

   
// Yorumla.
   
for ( final Sembol s : sembolListesi ) {
     
s.yorumla();
   
}
  }
}
+ sembolü yorumlandı.
+ sembolü yorumlandı.
- sembolü yorumlandı.
% sembolü yorumlandı.
% sembolü yorumlandı.
+ sembolü yorumlandı.
- sembolü yorumlandı.

Yorumlar

Henüz bu sayfa için bir yorum yapılmamıştır.

Yorum Yaz, Düşüncelerini Paylaş

Not: Zorunlu alanlar yıldız (*) ile belirtilmiştir.

Kişisel Bilgiler

E-posta adresiniz kimse ile paylaşılmayacaktır. Gerekli olduğunda sizinle iletişim sağlamak için kullanılacaktır.

Yorum Alanı
Giriş Kontrol


Tüm java kodları "jdk1.7.0_09" ile derlenmiş ve çalıştırılmıştır.

Tüm hakları saklıdır. ©  "İlker KONAR" | İletişim: bilgi@tasarimdesenleri.com