Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Abstract Class vs Interface - Mustafa Burak AMASYALI - Bilisimdergi.Com
      Abstract Class vs Interface Mayıs 2010 | Sayı : 14

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210

Merhaba sevgili okurlar. Bu ay sizlere nesneye yönelik programlamanın önemli iki yapısını, Abstract sınıflar ve Interface'leri anlatmaya çalışacağım. ”Eklenti Tabanlı Programlama Teknolojileri” yazımda abstract sınıfların kullanımını anlatmıştım. Bu yazımda abstract sınıflar ve interface'lerin kullanımına örnekler vereceğim ve bu yapıların farklarına değineceğim.

Abstract Sınıflar:

Abstract sınıfların normal sınıflardan farkı nesnesinin üretilememesidir. Örnek olarak “hayvan” adlı bir abstract sınıfımız olsun. Bu sınıfın bir nesnesini üretemeyiz. Eğer üretmeye kalkarsak aşağıdaki gibi compile zamanında hata alırız.

Peki nesnesi üretilemeyen bir sınıf ne işe yarar? Abstract sınıfların nesnesi üretilemese de abstract sınıflardan türemiş sınıfların nesneleri üretilebilir. Bunun bir diğer anlamı aynı abstract sınıflardan türemiş sınıflar ortak özelliklere sahip olurlar. Nesneye yönelik programlamada bu olaya   polymorphism denir.  Şimdi abstract sınıfımızı biraz daha geliştirelim ve yeni özelliklerini inceleyelim.

Gördüğünüz gibi abstract sınıflarda static ve nonstatic değişkenlere sahip olabilir. Abstract sınıflardan türetilen sınıflar bu değişkenlere sahip olacaklardır. Örnekteki abstract sınıfımız bir static değişkene de sahip, bu değişkeni constructorda arttırıyoruz ve destructorda azaltıyoruz. Bu sayede bu değişken bize hayvan sınıfından türemiş tüm sınıflara ait toplam nesne sayısını verecektir.

Abstract sınıflar fonksiyonlara da sahip olabilirler. “adiniSoyle()” fonksiyonuna otomatik olarak  bu sınıftan türeyen sınıflar sahip olacaktır. Ancak “Yuru()” fonksiyon abstract yani tanımlanmamış olduğu için bu sınıftan türeyen fonksiyonlar bu sınıfı kendi içlerinde tanımlamak zorundadır. Abstract fonksiyonların en önemli özelliklerinden birisi budur. Aynı atadan türemiş farklı sınıflar ortak fonksiyonlara sahiptir ancak bu fonksiyonların içeriği farklıdır.

Örnekte gördüğünüz gibi “kopek” adlı bir sınıfı abstract “hayvan” sınıfımızdan türettik. Bu kopek sınıfının nesnesi new fonksiyonu ile üretilebilmektedir. Gördüğünüz gibi bu “kopek” sınıfına ait nesneyi bir “hayvan” sınıfına ait değişkene encapsulate ederek kullanabiliyoruz. ”Eklenti Tabanlı Programlama Teknolojileri ” yazımı incelerseniz bu özelliğin nasıl kullanılabileceği hakkında daha iyi bir fikir edinebilirsiniz.


Interface'ler:                     

Interfaceler de abstract sınıflar gibi onları implement eden sınıflara ortak özellikler katarlar. Interface'ler abstract sınıflardan farklı olarak tüm fonksiyonları abstractdır ve değişkenlerinin de sabittir. Interfaceler static değişkenlere de sahip olamazlar. Interface'lerin de abstract sınıflar gibi nesneleri üretilemez.

Interface'leri implement eden sınıflar bu interface'lerin sahip olduğu fonksiyonlara sahip olmak zorundadır. Bu yüzden sınıf tanımlandığında bu fonksiyonların da içleri doldurulur.

Bir sınıf sadece bir abstract sınıftan türeyebilir ancak birden çok interface implement edebilir. Abstract sınıflar ile Interfacelerin en önemli farklarından birisi budur.


Abstract sınıflar gibi Interface'ler de bize tasarım yapma konusunda ve yazılım projelerinin yönetimi konusunda kolaylık sağlar. Birçok tasarım kalıbında da Interface'lerden yararlanılmaktadır. Bu yapıları kullanarak daha anlaşılır ve daha profesyonel tasarımlar yapabilirsiniz. Umarım sizler için faydalı olmuştur. İyi okumalar ve yazmalar.

 

      Mustafa Burak AMASYALI
İ.Ü. Bilgisayar Mühendisliği 4. Sınıf
- Mayıs 2010 -

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Editörden... | H. Can ÇOBANOĞLU
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
İzafiyet Teorisi | Özge ATASEVEN
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Kurumsal Facebook | Simge UÇKAN
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Mobil Çeviri | Neslişah ÇELİK
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Yogurtistan | Erman TEPE
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
3 Katman Mimarisi ve JavaScript | Musa ÇİÇEK
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Joomla ile Hızlı Site Oluşturma | Serkan AKDEMİR
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
NV Bellek Teknolojisi ve SSD | Özkan AKGÜL
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Teknoloji Kaçıyor | Muhammed CÜCE
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Derleyicilerin Yapısı | Ercan ZENGİN
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Abstract Class vs Interface | Mustafa Burak AMASYALI
Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
Kriptolojide Güvenlik ve Dijital İmza | Kayhan KIRGIZ

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 208

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 209

Deprecated: Function ereg_replace() is deprecated in /home/bilisimd/public_html/articles_details.php on line 210
« önceki sayfa - 10 - sonraki sayfa »

Ana Sayfa | Künye | Dergimiz | Yazarlar İçin | İletişim
© 2009-2010 Bilisimdergi.Com Tasarım - Kodlama : İU BİLGİSAYAR

Creative Commons License
Bilişim Dergi içeriği  Creative Commons  lisansı ile korunmaktadır.
Kaynak göstermek ve link vermek şartıyla yazılarımızı kullanabilirsiniz.