2 Mart 2020 Pazartesi

Abstract Interface Farkı

İş görüşmelerinde sıkça karşılaştığımız bu iki terim hakkında detaylı olarak bilgiyi aşağıda bulabilirsiniz.

İkisi birbirine benziyor gibi görünse de aralarındaki farklardan bahsediyor olacağız. 

Nesne yönelimli programlamanın temel taşlarından birisi olan abstraction (soyutlama), C# programlama dilinde iç detayları gizleyerek sadece işlevleri göstermeye yaramaktadır. 

Soyutlama demiş olduğumuz kurguyu yaparken abstract ve interface yapılarını kullanıyor olmamız gerekecektir. Arkadaki teknik hadiselere takılmadan, bize sunulmuş olan metotları kullanarak işimizi görmeye çalışırız.

Şimdi abstract class nedir biraz ondan bahsedelim. Abstract class yapıları genellikle base class (temel sınıf) olarak tanımlamak için kullanılan ve soyutlama yeteneği kazandıran sınıflardır. Elimizdeki bir sınıfı abstract yapmak için abstract yani kelime anlamı soyut olan anahtar kelimeyi kullanırız. 

Abstract bir class içerisinde en az 1 tane abstract üye bulundurmalıdır. Aşağıdaki görselde Yazdir isimli abstract class içerisinde EkranaYazdir isimli metot içermektedir. Bu metot override edilerek gövdesi kodlanır.


    abstract class Yazdir
    {
        public abstract void EkranaYazdir();

    }

Abstract class özellikleri aşağıdaki gibidir:
  • kalıtım (inheritance) uygularken kullanırız.
  • soyut anlamına gelmekte olup new anahtar kelimesi ile nesneleri oluşturulamaz.
  • içerisinde değişken ve metot imzası barındırır.
  • abstract sınıflardan kalıtım alan sınıfların abstract metotların implement edip gövdesini kodlaması zorunludur.
  • Constructors (yapıcı metot) ya da destructors(yıkıcı metot) bulundurabilirler.
  • abstract classlar static olarak tanımlanamazlar, derlenme anında an abstract class cannot be sealed or static hatası verirler.
  • bir sınıf sadece 1 tane abstract classtan kalıtım alabilir. Çoklu kalıtımı desteklemez.
  • abstract classlar içerisinde abstract olmayan metotları da bulunabilir.
  • kendisinden inherit alacak sınıflar ile arasında is-a ilişkisi vardır. (abstact yapmamız gereken senaryolarda interface mi yoksa abstract mı kullanmamız gerektiğini belirtecek senaryo)

IS-A ilişkisi

Çarpışan araba bir arabadır ve arabanın sahip olduğu özellikleri barındırmalıdır.


Can-Do ilişkisi 

Çarpışan arabanın hızlanabiliyor olması, yavaşlayabiliyor olması vs. eğer class'lara yetenek kazandırmak istersek kullanılır.


Farkları

Abstract Class                                              Interface
Constructor içerebilir                                      Constructor içeremez.
Static üyeler içerebilir.                                    Static üyeler içeremez.
public,private,protected olabilirler.                   Sadece public.
IS-A ilişkisi                                                    Can-do İlişkisi
Çoklu kalıtım yok.                                          Çoklu kalıtım var.
Ortak özellikler abstract classa yazılır.              Ortak metotlar interace'e yazılır.
Türetilen sınıf kısmi implement edebilir.           Türetilen sınıf implement zorunda
Metot imzaları ya da implementasyonlar          Sadece metot imzaları içerir.








Hiç yorum yok:

Yorum Gönder

SQL Çalışma Sorularının Çözümü

 -Ürünler tablosundaki ürünlerden Rengi siyah,silver ya da multi renkte olanları fiyat bilgisine göre büyükten küçüğe getirilip gösterilecek...