Arayüzler nelerdir? | Haberler Online

pembikbulut

Global Mod
Global Mod
Arayüzler, kodu temiz bir şekilde yapılandırmak için programlamadaki en önemli yapılardan biridir, bu yüzden birçok tasarım modeline dayanır. Ama tam olarak arayüzler nedir ve neden bu kadar alakalı?



Yazılımın tasarımı ve geliştirilmesinde düzenli olarak görünen bir terim “arayüz” dir. Bir arayüzün ne olduğunu sorarsanız, iki cevap olduğunu görebilirsiniz: bir kavramsal ve teknik. Biri genel olmakla birlikte, diğeri genellikle farklı programlama dilleri tarafından modellenir.

Kavramsal olarak, arayüzler harici formu tanımlar. Bu, sözdizimine atıfta bulundukları anlamına gelir. Ancak semantiği de tanımlarlar, çünkü davranışın tanımı da onlarla ayrılmaz. Sonunda, bu, iki parça arasındaki iletişimin standardizasyonu olduğu anlamına gelir, bu nedenle bir arayüz belirli bir anlamda bir protokole benzer.

Örneğin, bir sınıf tarafından bir arayüz uygulanırsa, sınıf, ilgili imzalarla tüm yöntemleri sağlamak için arayüzün tüm gereksinimlerini, yani tüm yöntemleri uygulamalıdır. Bir sınıf sadece bir arayüz uygulamakla kalmaz, aynı zamanda farklıdır, böylece yönleri esnek bir şekilde birleştirilebilir.

Arayüzlerin amaçlarından biri, türlerine bakılmaksızın somut örneklerin değiştirilebilirliğidir: her iki örnek de aynı arayüzü tatmin ettiği ve kullanıcı sadece arayüzü bildiği sürece, ilgili uygulama şeffaf bir şekilde değiştirilebilen bir kara kutu haline gelir. Bu bağlamda, ayrılma ve hayal kırıklığı sözleşmeyi ve uygulamayı arayüz eder.


Önerilen editoryal içerik



Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.



YouTube videosu her zaman yüklenir

YouTube videosu artık yüklüyor



Arayüzler nelerdir?




Arayüzleri farklı uygulayın


Basit ve net tanıma rağmen, çeşitli programlama dilleri arayüzleri farklı şekillerde uygular. Arayüzleri destekleyen her programlama dili, kavramsal tanımın kendi yorumunu sunar. Birçok durumda, bu temel sistemle ilgilidir.



Örneğin C#statik bir nominal sisteme sahiptir. Bu, türler arasındaki ilişkilerin açıkça beyan edilmesi gerektiği anlamına gelir. Bu yüzden C# 'da anahtar kelimeler var interface VE implementsArayüzleri tanımlayabilir ve uygulayabilir. Yalnızca C#biliyorsanız, bunun durumun böyle olması gerektiği varsayımına hızla yol açacaksınız.

TypeScript ve Go'nun başka bir yol olduğunu gösterin: her ikisinin de türlerin uyumluluğunun benzer bir yapı tarafından dolaylı olarak üretildiği statik ve yapısal bir sisteme sahip. Bu dillerde, arayüzler, bağlantıyı açıkça ifade etmek zorunda kalmadan arayüzlere uyum sağlayan türler oluşturarak uygulanır.

İlginç bir şekilde, C# 'deki arayüzler yalnızca sınıflar için, diğer dillerde de diğer türler için, örneğin nesneler ve hatta işlevler için kullanılabilir. Arayüzler sonunda sözdizimini ve semantiği tanımladığından, bu aslında açıktır: esas olarak modelleyen, ancak sınıfların dışındaki işlevleri bilmeyen nesnelere yönlendirme, bu nedenle arayüzler orada bağımsız işlevler için tasarlanmamıştır.


Önerilen editoryal içerik



Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.



YouTube videosu her zaman yüklenir

YouTube videosu artık yüklüyor



Arayüzleri farklı uygulayın




Tasarım modellerinde arayüz


Arayüzler özellikle tasarım modelleri bağlamında görünür. Arayüzler kullanmadan yapılan bu şemalardan sadece bazıları vardır. Bunun nedeni, tasarım modellerinin daha iyi bir yazılım yapısı için kullanılması ve bu nedenle genellikle ayrılmayı amaçlamasıdır. Tam olarak bu görev aynı zamanda arayüzleri de üstlenir, bu yüzden tasarım modelleri için ideal bir temeldir.

Bu, her ikisi de somut bir uygulamayı niyetten parçalayan fabrika veya strateji gibi tasarım modellerinde çok güzel. Bir vaka, sınıflarla, diğerinde işlevlerle ilgilidir, ancak temel fikir benzerdir. Bir fabrika veya stratejinin kullanıcısı için somut uygulama kara bir kutu olarak kalır. Sadece sözdizimsel uyumluluk ve belirli bir semantik garanti edilir.


Önerilen editoryal içerik



Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.



YouTube videosu her zaman yüklenir

YouTube videosu artık yüklüyor



Tasarım modellerinde arayüz




Bileşenler, hizmetler ve co.


Benzer bir soyutlama, bileşenler ve hizmetler için arayüzler kullanılırken de ortaya çıkar. Burada da, bir yandan bileşen veya hizmet ile diğer taraftan kullanıcı arasındaki iletişim aynı zamanda sözdizimsel uyumluluk ve semantik vaatlere sahiptir.

Hizmetler bağlamında, genellikle uygulamalar programlama arayüzleri (arılar) hakkında konuşulur ve arayüzlerin yakınlığı hızlı bir şekilde gösterir. Özellikle, GraphQL veya GRPC gibi protokoller sadece çağrıların sözdizimsel özelliklerini tanımlamakla kalmaz, aynı zamanda belirli bir semantik vaat eder veya hizmetin anlambiliminin bir açıklamasını teşvik eder.

Yanıltıcı ve soyutlama fikri de hizmet için de geçerlidir. Hizmetler bağımsız olarak geliştirilebilir – arayüzlerin arkasına gizlenmişse, örneğin, kullanılan teknolojiler sistematik olarak alakalı değildir. Yalnızca kullanılan protokoller kalmalıdır, gerçek uygulama değiştirilebilir.


Önerilen editoryal içerik



Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.



YouTube videosu her zaman yüklenir

YouTube videosu artık yüklüyor



Bileşenler, hizmetler ve co.




Uygulamaya karşı niyet


Arayüzlerle (ve ayrıca tasarım modelleriyle) somut uygulama değil, aslında niyetin açıklaması olduğunu anlamak önemlidir. Örnek bir referans uygulaması sıklıkla gösterilse de, onu niyetle karıştırmak gerekli değildir. Ne yazık ki, bu özellikle tasarım modellerinde nispeten sık görülür.

Örneğin, tasarım modelinin singletonu, küresel eserlerden bir sınıfın tam olarak bir örnek oluşturulabilmesinden kaçınma niyetine sahiptir. Yani bu benzersizlik. Singleton'un kendisi bunun belirli bir programlama dilinde nasıl somut olduğu hakkında hiçbir şey söylemiyor.

Bu nedenle C ailesinin dilleri için ortak referans uygulaması özel binalara, statik yöntemlere ve statik alanlara dayanmaktadır. Ne yazık ki, çok sık olan şey, bu uygulamanın niyetle karıştırılmasıdır. Bu nedenle sonuç, bu konuda yanlış ve temelli sonuçlardır: “JavaScript olumsuz bir programlama dilidir, çünkü özel üreticilere sunmaz, bu yüzden tekilleri bile uygulayamazsınız”.

Aslında, JavaScript'teki singleton çok iyi tanımlanabilir (ve ayrıca C ++, C# ve Co. ile karşılaştırıldığında çok zarif bir şekilde), ancak mekanizma burada tamamen farklı bir şekilde çalışır. Tasarım modelinin amacı JavaScript'te de kolayca tasvir edilebilir: Singleton'u bir model olarak okumanız ve doğru bir şekilde yorumlamanız gerekir.


Önerilen editoryal içerik



Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.



YouTube videosu her zaman yüklenir

YouTube videosu artık yüklüyor



Modeller: Uygulamaya karşı niyet




Çözüm


Arayüzler, programlama dillerinin sıklıkla hafife alınmış ancak son derece güçlü ve çok yönlü bir yapısıdır. Bu nedenle, arayüzlerin anlamını anlamak ve her şeyden önce kavramsal bir düzeyde, yani belirli bir programlama dilinden bağımsız olarak anlamak son derece önemlidir.

Çoğu zaman olduğu gibi, kutudan dışarı bakmak ve diğer dillerle karşılaşmak farklı yorumları bilmeye yardımcı olur. Niyeti ve uygulamayı bir kenara bırakmaya dikkat eden herkes, hem belirli bir düzeyde hem de varış noktasında daha iyi bir koda doğru büyük bir adım atmıştır.


()
 
Üst