• Buradasın

    Nesne Tabanlı Programlama: Interface Kavramı Eğitimi

    youtube.com/watch?v=8eBYOPtk1Ik

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan nesne tabanlı programlama eğitim serisinin bir parçasıdır. Eğitmen, interface kavramını detaylı bir şekilde anlatmaktadır.
    • Video, interface kavramının temel anlamlarını, kullanım amaçlarını ve özellikleri kapsamlı şekilde ele almaktadır. İçerik, interface'in ne olduğunu, abstract class'larla arasındaki farkları, tanımlama kurallarını, isimlendirme geleneğini ve implementasyon yöntemlerini (explicit, implement, amelis) açıklamaktadır. Ayrıca, C, Java ve C# gibi farklı programlama dillerinde interface kullanımının nasıl yapıldığı da gösterilmektedir.
    • Eğitim, interface'lerin sadece imzaları (metod ve property) tanımladığını, erişim belirleyicileri kullanmadığını ve gövdeleri içermediğini vurgulamaktadır. Ayrıca, bir sınıfın birden fazla interface'i implemente edebilmesi, interface'lerin birbirinden türetilebilmesi ve referans değişkenleri olarak kullanılabilmesi gibi önemli konular da ele alınmaktadır. Video, konunun iki parçadan oluştuğunu belirterek, bu bölümün temel bilgileri içeren birinci aşamayı kapsamaktadır.
    00:01Nesne Tabanlı Programlama Eğitimlerinde Interface
    • Bu ders, nesne tabanlı programlama eğitimlerinde Türkiye genelinde merak edilen interface yapılanmasını ele alıyor.
    • Nesne tabanlı programlama eğitimleri üç etapta veriliyor ve bu ders birinci etabın son konusunu kapsamaktadır.
    • Interface, belirli amaca hizmet eden, belirli davranışları sergilemeyi sağlayan, belirli kurallara tabi olan bir yapılanmadır.
    01:00Interface Eğitiminin Yapısı
    • Interface eğitimi iki parçaya bölünmüş olup, birinci derste interface'in felsefesi, varlık sebebi, tanımlama kuralları ve imzası anlatılacaktır.
    • İkinci derste ise daha detaylı bilgiler ve yenilikler paylaşılacaktır.
    02:18Interface'in Tanımı ve Amacı
    • Interface, nesnelerin bir arayüz şablonu oluşturmasını ve bu arayüz üzerinden geliştirici ile nesne arasındaki etkileşimin kolaylaştırılmasını sağlayan bir araçtır.
    • Interface, nesnelere bir şablon (arayüz) oluşturarak geliştirici ile nesne arasındaki etkileşimi kolaylaştırır.
    • Interface sadece geliştirici ile nesne arasındaki süreci değil, aynı zamanda programlar arasında veya programlarla bileşenler arasındaki etkileşimi de kolaylaştırır.
    04:12Interface'in Avantajları
    • Interface, bir şablon ortaya koyarak uygulayanların ekstra ayrıntılara girmeden davranışlarını sergileyebilmesini sağlar.
    • Interface, nesne ile kullanıcı, geliştirici veya programlar arasındaki etkileşim sürecindeki fazlalıkları ve ekstra ayrıntıları ortadan kaldırır.
    • Interface, nesnenin tüm memberlarını değil, sadece gerekli olan memberlara erişim sağlayarak süreci arındırır.
    07:15Interface'in Kullanımı
    • Interface, kullanıcıya nesnenin nasıl çalıştığına dair ayrıntılı bilgiye ihtiyaç duyulmaksızın, sadece arayüzün sunduğu fonksiyonları veya propertileri kullanarak etkileşime girmesini sağlar.
    • Interface, nesneye abstraction uygulayarak belirlenmiş bir arayüz üzerinden çalışılmasını ve geliştirme sürecinin kolaylaştırılmasını sağlar.
    08:41Interface ve Abstraction İlişkisi
    • Interface, abstraction davranışını uygulamamızı sağlayan bir yapıdır ve abstraction dersinde bahsedilmiştir.
    • Abstraction'ı abstract class'larla gerçekleştirirken, interface sadece imzalara konsantre olmuş bir yapıdır.
    • Interface, abstract class'lara göre abstraction davranışı açısından daha elverişlidir.
    10:48Interface'in Genel Bütünleme
    • Interface'in genel davranışı "kendi ilişkisidir" ve bu ilişki nesne tabanlı programlama eğitimi sürecinde incelenmiştir.
    • Interface, bir sınıfta olmasını istediğimiz memberların imzalarını tanımlayarak bir şablon oluşturur.
    • Bir sınıf bir interface kullanıyorsa, interface'in içerisindeki memberların uygulanmasını zorunlu kılar.
    17:02Interface'in Sözleşmesi Olarak Karakteri
    • Interface, içerisindeki imzaları kendisiyle çalışma yapan sınıflara zoraki uygulattığı için bir sözleşme mahiyetinde kullanılır.
    • Bir interface tanımladığınızda, bu interface kullanacak olan sınıflar bunun içerisindeki imzaları zorunlu olarak tanımlayacaklardır.
    • Interface, farklı nesneler veya bileşenler arasında iletişimi kolaylaştırmak, bir standarda tabi kılmak ve uyumlu hale getirmek için kullanılır.
    18:28Interface Kullanım Amacı
    • Interface, farklı sınıfları ortak bir zeminde birleştirerek bir sözleşme mahiyetinde kullanabilirsiniz.
    • Sistem ve mimarinin modüler şekilde tasarlanabilmesi için interface kullanılır.
    • Bir sınıfın farklı davranışları, bu davranışları barındıran interface'lerde tanımlanır ve sınıf bu interface'leri uygulayarak bu davranışları içerir.
    19:24Interface Kullanım Örnekleri
    • Hesaplama interface'i, bir sınıfta hesaplama ile ilgili davranışları modüler bir şekilde bir araya getirmeye çalışır.
    • Interface segregation prensibi, davranışları mümkün mertebe modüler hale getirmek ve birbirlerinden bağımsız hale getirmek için arayüzleri ayırır.
    • Single responsibility prensibi, her bir yapının tek bir sorumluluğa odaklı çalışmasını sağlar.
    21:22Interface Kullanım Alanları
    • Farklı geliştiriciler ve ekiplerin çalışmasında, belirlenmiş bir arayüz üzerinden sınıfların tasarlanmasını sağlayarak dökümantasyon gerektirmeksizin programatik kurallar koyabilmek için interface'ler kullanılır.
    • Bir işin nasıl yapılacağını uzun bir döküman yerine, bir interface üzerinden daha kolay anlatmak mümkündür.
    21:59Interface Tanımlama ve İnşa Etme
    • Bir interface tanımlamak için "interface" keyword'inden istifade edilir.
    • Interface oluşturmak için önce "interface" keyword'ünü kullanır, sonra interface'e bir isim verir ve scope'lar açılır.
    • Interface referans türlü değişkenlerdir ve bir referans türü oluşturur.
    24:37Interface İsimlendirme Geleneği
    • C programlama dilinde bir interface isim verirken adının "I" ile başlaması isimlendirme geleneğidir.
    • Bu bir programatik kural değil, bir gelenektir ve Microsoft'un framework'ünde dahili olarak gelen birçok interface'in "I" ile başladığını görebilirsiniz.
    • Bu geleneğe uyulduğunda, geliştiriciler "I" ile başlayan referansların interface olduğunu direkt anlayabilirler.
    26:53Interface Tanımlama Alanları
    • Bir class nerede tanımlanabiliyorsa interface de orada tanımlanabilir.
    • Interface'ler namespace, class, struct veya başka bir interface içerisinde tanımlanabilir.
    • Interface'ler namespace dışında da tanımlanabilir, ancak metodların içerisinde tanımlanamaz.
    28:43Interface Tanımlama Özellikleri
    • Interface tanımlamasında erişim belirleyicileri (access modifier) kullanılmaz ve metot ve propertilerin gövdeleri interface'in içerisinde tanımlanmaz.
    • Interface sadece imzaları tanımlar ve bu yapı direkt imzalara odaklıdır.
    • Abstract class'lar ile interface arasındaki temel fark, abstract class'ların kalıtımsal davranışta sergileyebilmesi iken, interface'lerin direkt uygulama (implementation) mantığına sahip olmasıdır.
    29:43Abstract Class ve Interface Karşılaştırması
    • Hem abstract class'lar hem de interface'ler, imzaları kullanacak sınıflara zorunlu olarak uygulatmak için kullanılır.
    • Abstract class'lar içindeki imzaları uygulamak için "public abstract" ile işaretlenmesi gerekirken, interface'lerde sadece imzaların tanımlanması yeterlidir.
    • Interface'lerde erişim belirleyicileri kullanılmaz çünkü zorunlu uygulama mantığı vardır, abstract class'lar ise "public" olmak zorundadır.
    33:27Interface ve Abstract Class'ın Farkları
    • Abstract class'lar hem kalıtımsal davranışta hem de zorunlu uygulama imzaları sunabilirken, interface'ler sadece zorunlu uygulama imzaları sunar.
    • C# 7 veya 8'de "default implementation" özelliği ile interface'lerin direkt imzalara odaklı olması değişmiş olsa da, bu özellik 2. bölümde incelenecektir.
    • Interface'lerde imzalar "abstract" keyword'ü ile tanımlanmaz çünkü interface'ler sadece sınıflara uygulatılacak imzaları barındırır.
    35:05Interface'de Field Tanımlaması
    • Interface içerisinde field tanımı yapılamaz çünkü field'lar metotlar ve propertiler tarafından operasyonel olarak kullanılır.
    • Field'ların operasyonel süreçlerde kullanılması gerektiğinde, o anlık operasyon sürecinde tanımlanması daha mantıklıdır.
    • Programlama dilinin gereksiz tanımlamalara izin vermemesi nedeniyle field tanımı interface içinde yasaklanmıştır.
    36:32Interface Kullanımı
    • Interface kullanmak için kalıtım sürecinde kullanılan iki nokta üst üste operatörü kullanılır.
    • Bu operatör burada "uygulama" (implementation) operatörü olarak nitelendirilir.
    • Bir class bir interface'i implemente ederse, bu bir kalıtım değil, bir uygulama (implementation) durumudur.
    38:44Interface ve Implementasyon Kavramları
    • İki nokta üst üste operatör ile birlikte kullanılan yapı bir class değil de interface ise, operatörlemementation görevi görecektir.
    • Implementasyon, herhangi bir class, interface veya abstract class iki nokta üst üste operatörü ile şablon arayüz olarak sağlanmasıdır.
    • Bir class interface uygulaması demek, implemente edilmesi demek, o interface içerisindeki imzaların o classta zoraki dayatılması demektir.
    40:28Implementasyon Türleri ve Farkları
    • Bir class class'tan türetirsek buna inheritance, interface kullanırsak implementasyon denir.
    • Interface üzerinden yapılan implementasyon neticesinde uygulanan memberların imzalarında abstract classlardan yapılan implementasyondaki gibi override durumu söz konusu değildir.
    • Interface den yapılan implementasyon neticesinde imzalara karşılık gövdeler sade bir şekilde tanımlanır, abstract classlarda ise override edilerek implemente edilmek zorundadırlar.
    44:07Interface ve Implementasyon Yöntemleri
    • Interface'in içerisindeki imzaları bu interface kullanan sınıflara zoraki uygulatması, interfacelerin sınıfların imzası olduğu anlamına geliyor.
    • Bir interface herhangi bir class'ta implemente ederken explicit, implement ve manual olmak üzere üç farklı yöntemden birini kullanabiliyorsunuz.
    • Manual yöntem, her şeyi manuel yapma yöntemidir; bir interface'in içerisindeki imzaları herhangi bir class'ta tek tek manuel bir şekilde implemente edebilirsiniz.
    46:31Interface İmlementasyon Yöntemleri
    • AMI yöntemi garantidir ancak gerçek çalışmada çok sayıda imzası olan interface'lerle çalışırken zaman kaybı yaşanabilir.
    • İlementasyon yöntemi, Visual Studio editörü aracılığıyla interface'lerin hızlı bir şekilde uygulanmasını sağlayan bir yöntemdir.
    • Interface üzerine tıkladığınızda çıkan ampulü tıklayıp "Implement Interface" sekmesine tıklayarak interface'in imzalarını hızlıca uygulayabilirsiniz.
    47:56İlementasyon Kombinasyonları
    • İlementasyon yapılacağı satırda yanda çıkan ampul simgesine tıklayabilir veya ilgili satırda Ctrl+Alt+I kombinasyonunu kullanabilirsiniz.
    • Ctrl+Enter veya Alt+Enter kombinasyonları ile de interface'in direkt ilamente edilmesini sağlayabilirsiniz.
    • Gerçek çalışmaların %99'unda bu hızlı yöntemler kullanılır.
    48:55Explicit İlementasyon
    • Explicit implementasyon, interface'lerde name hiding durumunu ele alır ve ikinci parte ayrıntılı olarak anlatılacaktır.
    • Explicit implementasyon için "Implement All Members Explicitly" seçeneği kullanılır.
    • Explicit implementasyonda interface adı verilir, nokta ile member adı yazılır ve erişim belirleyicisi private olarak kullanılır.
    50:14İlementasyon Erişim Belirleyicileri
    • Bir interface'in imzası ilamente edildiğinde, o imzanın kesinlikle public olması gerekir.
    • Interface içerisindeki bir imzanın class'ta ilamente edilmesi neticesinde onun public olmasını isteyen bir kural vardır.
    • Explicit interface ilamente edildiğinde ise erişim belirleyicisi private olmak zorundadır.
    51:34Çoklu İlementasyon
    • C# dilinde bir sınıf sadece ve sadece tek bir sınıftan kalıtım alabilir, ancak birden fazla interface'i ilamente edebilir.
    • Bir sınıf aynı anda birden fazla interface'i uygulayabilir ve tüm interface'ler ilgili class'ta ilamente edilmelidir.
    • Birden fazla interface'i bir class'ta ilamente edebildiğimizden dolayı, bu yapıların interface olduğunu rahatlıkla yorumlayabiliriz.
    54:50Interface Referansları ve Abstraction
    • Bir sınıfın örneği (instance) farklı referans türleriyle (sınıf referansı, interface referansları) referans edilebilir.
    • Interface'ler referans türünde değişkenlerdir ve referans oluşturma imkanı sağlarlar.
    • Her bir interface referansı sadece kendi imzalarına (member'larına) erişebilir, bu abstraction (soyutlama) durumudur.
    56:33Interface Kalıtımı
    • Interface'ler kendi aralarından türetebilir, bu durumda iki nokta üst üste operatörü kalıtım görevi görür.
    • Bir sınıf ile interface arasında iki nokta üst üste kullanıldığında inheritance (kalıtım) değil, implementation (uygulama) olarak adlandırılır.
    • Interface'ler arasında kalıtım durumunda, kalıtımsal kurallar geçerli olur ve hiyerarşik olarak member'lar torunlarına aktarılır.
    59:22Interface Özellikleri
    • C++ programlama dilinde bir sınıf sadece tek bir sınıftan türeyebilirken, bir interface aynı anda birden fazla interface'den türeyebilir.
    • Bir sınıf hem sınıf hem de interface'den kalıtım alabilir, ancak önce sınıf kalıtımı sonra interface'ler tanımlanmalıdır.
    • Interface kalıtımı sırasında önce sınıf kalıtımı, sonra virgül ile ayrılan interface'ler tanımlanmalıdır, aksi takdirde derleyici hata verecektir.
    1:03:03Dersin Sonucu
    • Bu derste interface'in ne olduğu, nasıl tanımlandığı ve nasıl kullanıldığı ele alınmıştır.
    • İkinci bölümde interface'in daha derin özelliklerine (default implementation, name hiding durumu) değinilecektir.
    • Dersin amacı, interface'in kuramsal açıdan ele alınması ve kullanımına uygun bir şekilde bilgi vermektedir.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor