Arayüzler, gerçekliğin (nesnelerin) soyutlamasının (sınıfların) bir soyutlamasını (bir arketip) yapmaktır.
Arayüzler, sınıflar tarafından sağlanan uygulamaları sağlamadan sözleşme koşullarını belirtmek içindir.
Arayüzler özelliklerdir:
Arayüzler, konseptin hareketsiz davranışını tek başına ve statik olduğu için belirleyen tasarım zamanı yapılarıdır.
Sınıflar, etkileşim ve hareket halindeki gerçekliğin mobil yapısını belirleyen uygulama zamanı yapılarıdır.
Arayüz nedir?
Bir kediyi gözlemlediğinizde onun dört pençesi, başı, gövdesi, kuyruğu ve kılı olan bir hayvan olduğunu söyleyebilirsiniz. Onun yürüyebildiğini, koşabildiğini, yemek yiyebildiğini ve miyavlayabildiğini görebilirsiniz. Ve bunun gibi.
Özellikleri ve işlemleriyle bir arayüz tanımladınız. Bu nedenle, herhangi bir çalışma şekli tanımlamadınız, sadece işlerin nasıl çalıştığını bilmeden sadece özellikler ve yetenekler tanımladınız: yetenekleri ve farklılıkları tanımladınız.
Bu nedenle, UML'de bunu bir sınıf diyagramında bir sınıf olarak adlandırmamıza rağmen, henüz bir sınıf değil, çünkü yapının derinlemesine bir görüşüne sahip olmaya başlamak için özel ve korumalı üyeleri tanımlayabiliriz. Burada kafanızı karıştırmayın çünkü UML'de bir arayüz, C #'daki bir arayüzden biraz farklıdır: soyutlama atomuna kısmi bir erişim noktası gibidir. Bu nedenle, bir sınıfın birden fazla arabirim uygulayabileceğini söyledik. Bu nedenle, aynı şeydir, ancak değildir, çünkü C # 'daki arayüzler hem soyutlamayı soyutlamak hem de bu soyutlamayı bir erişim noktası olarak sınırlamak için kullanılır. İki farklı kullanım alanı. Bu nedenle, UML'deki bir sınıf, bir programlama sınıfına tam bir bağlantı arayüzünü temsil ederken, bir UML arayüzü, bir programlama sınıfının bir bölümünün bir ayrıştırma arayüzünü temsil eder. Aslında, UML'deki sınıf diyagramı uygulama ile ilgilenmez ve tüm yapıtları programlama arayüzü seviyesindedir. UML sınıflarını programlama sınıflarıyla eşlerken, soyut soyutlamanın somut soyutlamaya aktarılmasıdır. Tasarım alanı ile programlama alanı arasındaki ikilemi açıklayan bir incelik var. Dolayısıyla, UML'deki bir sınıf, iç gizli şeyleri göz önünde bulundurarak bir programlama arayüzü açısından bir programlama sınıfıdır.
Arayüzler ayrıca, garip bir şekilde kullanılamadığında çoklu kalıtımı simüle etmeye de izin verir. Örneğin, cat sınıfı, kendisini hayvan arayüzünden türeten cat arayüzünü uygulayacaktır. Bu cat sınıfı aynı zamanda şu arayüzleri de uygulayacaktır: yürüyün, koşun, yemek yiyin ve ses çıkartın. Bu, sınıf düzeyinde çoklu mirasın yokluğunu telafi eder, ancak her seferinde her şeyi yeniden uygulamanız gerekir ve gerçekliği en iyi durumda gerçekliğin yaptığı gibi hesaba katamazsınız.
Arayüzü ve uygulama bölümlerini bir birimde tanımladığınız Pascal Nesnesi kodlamasına başvurabileceğimizi anlamak için. Arayüzde türleri tanımlarsınız ve uygulamada türü uygularsınız:
unit UnitName;
interface
type
TheClass = class
public
procedure TheMethod;
end;
implementation
class procedure TheClass.TheMethod;
begin
end;
Burada, arayüz bölümü UML sınıf tasarımıyla eşleşirken, Arayüz türleri bu nedenle başka şeylerdir.
Yani bizim işimizde tek bir kelimemiz var, arayüz , iki farklı ama benzer şeyi belirtmek için ve bu bir kafa karışıklığı kaynağı.
Ayrıca C # 'da, örneğin, programlama arayüzleri, açık türlerde gerçek genel çok biçimliliğin yokluğunu, hedefi gerçekten başarmadan telafi etmeye izin verir, çünkü güçlü bir şekilde yazılmış hability'yi kaybettiniz.
Sonuçta, uyumsuz sistemlerin (Dağıtılmış) Ortak Nesne Modeli ile tanıtıldığı gibi bellekteki nesnelerin uygulanması ve yönetimi hakkında endişelenmeden iletişim kurmasına izin vermek için arabirimler gereklidir.
Sınıf nedir?
Dışsal bir bakış açısından gerçeklikte bir indirgeme tanımladıktan sonra, bunu içeriden bir perspektiften tanımlayabilirsiniz: Bu, kapsüllediğiniz gerçekliğin hayata geçmesine ve etkileşime girmesine izin vermek için veri işleme ve mesaj yönetimini tanımladığınız sınıftır. örnekleri kullanarak nesnelere.
Böylece, UML'de, makinenin tekerleklerinde fraktal bir daldırma fark edersiniz ve işlemek istediğiniz gerçeklik parçasının soyutlamasını uygulayabilmek için durumları, etkileşimleri vb. Tanımlarsınız.
Bu nedenle, soyut bir sınıf, derleyicinin bakış açısından bir şekilde bir arayüzün eşdeğeridir.
Daha fazla bilgi
Protokol (nesne yönelimli programlama)
C # - Arayüzler
C # - Sınıflar