Profili Göster

ActionScript 3.0 : Nesne Yönelimli Programlama VII : Interfaces (Arabirimler)

Muttalip TULGAR Tarih: 1/10/2008 Yorum: 2 adet

Okunma : 672 Tutanlar: Bu yazıyı 2 kişi tuttu.

Sınıflar arasında iletişim kurmada kullanılan bir yöntemdir. Özellikle büyük flash projelerinde ortak bir yaklaşım oluşturmak adına iyi bir çözümdür. Projede yer alan bütün sınıfların kullanacağı ortak metotlar için belirli kurallara dikkate edilmesi gerekecektir. Bu kurallar interfaceler’in yardımıyla belirlenmektedir. Aslında interfaceler, sınıflarda ortak olarak kullanılacak tüm metotların nerede kullanılacağını, metotların veri tipini ve dönüş değerlerini kontrol etmede tercih edilmektedir.

Tabiî ki günlük çalışmalarda interfaceleri kullanmayı çok da tercih edileceğini söylemek doğru olmaz. Ancak çok büyük projelerde çalışıyorsanız veya projenizin büyüyeceğini düşünüyorsanız modüler bir yapı için interfaceleri kullanabilirsiniz.

Interface, bir sınıf için şu bilgileri tanımlayabilir:

  • Public sınıfın metot kapsamını
  • Metot ismini
  • Metot parametreleri ve onlara ilişkin veri tiplerini
  • Metotların dönüş tipini

Interface, bir sınıf için şu bilgileri tanımlayamaz:

  • Sınıf özellikleri
  • Değişken ve sabitleri (get ve set hariç)
  • Private ve static metotları
  • Metotlar içindeki herhangi bir kodu (tanımlama)

Ayrıca; – Interfaceler de sınıflar gibi .as uzantılı dosya olarak kaydedilir. – Interface tanımlamada "interface" anahtar sözcüğü kullanılmalıdır. – Interface adlarını yazarken de sözcüğün başına "I" harfini koymak alışılagelmiş bir programcılık kullanımıdır.

interface   IDeneme

.

  • Tanımlanan Interface’lerin sınıflara uygulanabilmesi için "implements" anahtar sözcüğü kullanılmalıdır. -Bir interface’in diğer bir interface’in özelliklerine ulaşabilmesi için "extends" anahtar sözcüğü kullanılmalıdır.
interface  ISehir     extends       IUlke

.

  • Bir sınıfa birden fazla interface uygulanabilir.
public  class   televizyon implements  IKumanda, IRenk, IEkranBoyutu

Aşağıdaki kod satırlarında interface’ler "televizyon" sınıfına uygulanmıştır. Bir veya birden çok interface bir sınıfa uygulandığında şunlara dikkat etmek gerekir:

  • Sınıf içindeki metot ile içindeki metot isimleri aynı olmalıdır.
  • Sınıf içindeki metot "public" erişim özelliğine sahip olmalıdır.
  • Sınıf içindeki metodun parametre sayısı, interface içindeki metodun parametre sayısı ile aynı olmalıdır.
  • Sınıf içindeki metodun veri dönüş tipi ile interface içindeki metodun veri dönüş tipleri aynı olmalıdır.
interface  IKumanda
{
function kumandaTuslari(tus:Number):Number;
}


interface  IRenk
{
function televizyonRenkleri(renk:String):String;



interface  IEkranBoyutu
{
function ekranBoyutu(boyut:Number):Number;
}


package 
{
    public class televizyon implements IKumanda,IRenk,IEkranBoyutu
    {
        public function kumandaTuslari(tus:Number):Number;
        public function televizyonRenkleri(renk:String):String;
        public function ekranBoyutu(boyut:Number):Number;

    }
}
}

Yazan: Muttalip TULGAR

Not: ActionScript 3.0 : Nesne Yönelimli Programlama dersleri sona ermiştir. "ActionScript 3.0 : Olaylar I (Events)" dersinde görüşmek üzere.

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

Profili Göster
Selcuk.Bozdag 4/10/2008

Merhabalar,

Yazilariniz icin oncelikle tesekkurler. Zaman ayirip bildiklerini paylasan fazlaca gelistirici goremiyoruz, o acidan cok memnun oldum boylesi bir yazi dizisinden.

Ancak, Interface’ler konusunda verdiginiz ornegin sozdizimi acisindan dogru olmasina ragmen anlamsal ve kullanim acisindan beni tatmin etmedigini soylemek istedim. Bunu biraz konusup tartisalim istiyorum.

Interface yaygin olarak polimorfizm icin kullanilir. Yani, "Her yigit yogut yer ama her yigidin yogurt yemesi baskadir" sozunu programlamak icin kullanilir.


interface IYigit {
 public function yogurtYe(y:Yogurt):void;
}

class Akdenizli implements IYigit {
  public function yogurtYe(y:Yogurt):void {   
   yemekYe( y, sarimsakBul() );
  }
 }
class Egeli implements IYigit {
  public function yogurtYe(y:Yogurt):void {   
   yemekYe( y, naneBul() );
  }
 }

Sonucta elimizde bir "Yigit" tipinde biri varsa onun yogurt yedigini ancak nasil yedigini bilmiyoruz:



function yigitGetir(s:Sehir):IYigit {

   var vatandas:IYigit;
   // Eger Mersinliyse
   if( s == "Mersin" )
      vatandas = new Akdenizli();
   // Eger Manisaliysa
   else if( s == "Manisa" )
      vatandas = new Egeli();
   return vatandas;
}

// bu fonksiyonu kullanarak
IYigit yigit = yigitGetir ( "Mersin" );

yigit.yogurtYe( yogurt );

Televizyon orneginin polymorfizme cok iyi bir ornek olmadigini dusunuyorum, o nedenle yukaridaki ornegi (sozdizimi hatalari olabilir) vermek istedim. Belki bir katkisi olabilir.

Tekrar tesekkurler

Profili Göster
Muttalip TULGAR 4/10/2008

Eleştiriniz için teşekkür ederim. Sizin verdiğiniz örnek daha açıklayıcı olmuş. Eminim ki dersi okuyanlar için daha tatmin edici bir çalışma olmuştur. Katkılarınızı her zaman bekliyeceğim..

yeni üyelik | şifremi unuttum

aç-kapa Toplantı Kahraman ve need4code.com Projesi Connect Toplantısı

Kahraman ve need4code.com Projesi Connect Toplantısı

Selam arkadaslar, Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori: Toplantı

aç-kapa Yarışma Fikir10000 Dijital Pazarlama Fikir Yarışması

Fikir10000 Dijital Pazarlama Fikir Yarışması

ADTECH tarafından düzenlenen Fikir10000 yarışmasına; dijital pazarlama ile ilgili size ait olan fikrinizle katılabilir ve 10.000 YTL’lik birinci...
Kategori: Yarışma

aç-kapa Yarışma 7Dx Demoscene Party

7Dx Demoscene Party

2002 yılından beri amatör bilgisayar kültürü ile ilgilenen insanları bir araya getirmeyi hedefleyen 7DX parti serisinin bu seneki ayağı olan 7D8 Demo ...
Kategori: Yarışma

aç-kapa Eğitim Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Etkin Katılım Çağrısı Türkiye’de Internet ile ilgili grupları biraraya getirerek İnternet’i tum boyutlarıyla tanıtmak, gelistirmek, tartı...
Kategori: Eğitim

aç-kapa Konferans Bilgi Güvenliği ve Kriptoloji Konferansı

Bilgi Güvenliği ve Kriptoloji Konferansı

Önemli Tarihler: Etkinlik Tarihi : 24-26 Aralık 2008 Son Bildiri Gönderme Tarihi : 20 Ekim 2008 Bildiri Kabul Tarihi Bildirimi :...
Kategori: Konferans

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 299 (0 kayıtlı, 299 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul