folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# Da İnterface Konusunda Aklıma Takılan Sorulaar?



C# Da İnterface Konusunda Aklıma Takılan Sorulaar?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    mhasan
    mhasan's avatar
    Kayıt Tarihi: 03/Mayıs/2012
    Erkek

    C# da interface konusunu çalışıyordum.(Konuyu yeni öğrendiğim için aklıma bazı sorular takılıyor.Konunun mantığını tam olarak anlamak istiyorum kodları ezberlemek değil.) İnterface konusunda aşağıdaki gibi bir örnek vermiş kitap.

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

     

    namespace ConsoleApplication1

    {    

        class Program

        {

            class Daire : IComparable

            {

                int yaricap; //Sınıfımıza ait field(alan)

     

                public Daire(int yaricap)//Sınıfın kurucu metodu

                {

                    this.yaricap = yaricap;

                }

     

                public int CompareTo(object daire1) //Arayüzden gelen metodumuz.

                {

                    //metoda gelen daire1 değişkeni object olduğu için öncelikle kendi türüne dönüştürüyoruz.

     

                    Daire karsilastirilacak_daire = daire1 as Daire;

     

                    //yarıçapı bu dairenin yarıçapı ile aynı ise 0, farklı ise -1 gönderiyoruz.

     

                    return (yaricap == karsilastirilacak_daire.yaricap) ? 0 : -1;

     

                }

            }

            static void Main(string[] args)

            {

                Daire daire_1 = new Daire(3);//Birinci daire nesnemiz

     

                Daire daire_2 = new Daire(2);//İkinci daire nesnenimiz

     

                //Karşılaştırılan her iki daire nesnemizinde yarıçapı faklı olduğu için ekrana -1 yazacaktır.

     

                Console.WriteLine(daire_1.CompareTo(daire_2));

     

                Console.Read();

            }              

        }

    }

    Aklıma takılan soru şu yukarıda IComparable interfaceden ben niye kalıtımla CompareTo metodunu alıyorum. Ben yukarıdaki
    ": IComparable" ifadesini yazmasam,CompareTo metodunu kaltımla almasam zaten bu metodu döndüreceği kodları zaten yazıyorum.Yani ": IComparable" silsem programı yeniden çalıştırsam ayni çıktıyılacağım.

    Aklıma takılan asıl soru şu:
    İnterface niçin gerekli ?
    Niçin interfacele bir sınıfa kalıtım yapayım?

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    hocam interface ve abstract kavramları oop nin temellerini oluşturur. Yazılım tasarım ve mimarisi konusunda bilgilerin genişledikçe neden gerek olduğunu daha iyi anlayacaksındır. 


    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Şöyle olacak,

     

    IComparable bekleyen bir metoda senin Daire sınıfından oluşturduğun nesneyi gönderdiğinde çalışacak. Kısaca senin sınıftan türetilen nesneler sorunsuzca IComparable olacak yeri gelince. Bu şekilde bir arayüzü kendi sınıfına uyarlamış olacaksın.

     

    Soyut örnekler yerine bir somut örnek üzerinden gitmeniz daha kolay olur. Örneğin bir otomobil ve daha geniş bir kavram olan kara taşıtını düşünün. Kara taşıtının tüm özellikleri otomobilde mevcut (tekerlekleri var, freni var vs). Yani kara taşıtı istediğimiz yerde önümüze otomobil getirseler gıkımız çıkmaz. Fakat kara taşıtı sadece otomobil değil, motosiklet de olabilir (bunun da tekerlekleri, freni var vs.). Fakat otomobil ile motosiklet çok farklı denebilir (ortak özelliklerinin yanında birinin iki diğerinin dört tekeri var, birisi ağır diğeri hafif gibi). 

    Şimdi Boğaz Köprüsündeki gişeleri düşünelim. Gişeden geçen taşıtlardan istediğimiz şey fren yapmaları. Biz tüm kara taşıtlarının fren yaptığını biliyoruz ve gişeden geçmekte olan tüm taşıtlara fren yaptırıyoruz. Bu durumda sadece kara taşıtı'na fren yap desek, otomobil de motosiklet de bizi kırmayacak. Kilit nokta ise ikisi de fren yapmasına rağmen birisinin pedala basması diğerinin gidonu sıkması gerekecek (uyarlama farkı). Sonuç olarak bizim için gişeden geçmek üzere olan şey önemli değil. Biz fren yap emrini verdikten sonra kendi istedikleri gibi fren yapabilirler:)


    Olaylara karışmayın!
Toplam Hit: 745 Toplam Mesaj: 3