Ana içeriğe geç

Interface

Arayüz

Okunuşu
intırfeys
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/interface

Kısaca

Interface, bir türün sağlamayı vaat ettiği metot ve özellik imzalarından oluşan adlandırılmış bir kümedir; bu üyelerin nasıl gerçekleştirildiğini söylemez.

Programlamada interface nedir?

Interface, bir kod parçasının neler yapabildiğini nasıl yaptığını söylemeden tarif eder. Metot adlarını parametreleri ve dönüş türleriyle, bazen de özellikleri listeler, ancak kendi çalışan mantığını taşımaz. Interface'i uygulayan (implement eden) her sınıf bu üyelerin hepsini sağlamayı vaat eder; böylece diğer kod bunların orada olduğuna güvenebilir.

Java, C#, Go ve TypeScript'te interface anahtar sözcüğü vardır; Swift aynı fikre protocol, Rust ise trait der. Java ve C#'ta bir sınıf implements ifadesini açıkça bildirir ve derleyici gerekli her metodun bulunduğunu denetler. Go ve TypeScript'te türleme yapısaldır (structural); yani doğru şekle sahip her tür, interface'i hiç anmasa bile onu otomatik olarak sağlar.

Duvar prizi iyi bir benzetmedir: fişin şeklini ve voltajı tanımlar ve uyan her cihaz, ister lamba ister dizüstü bilgisayar şarj aleti olsun, takılabilir. Kodda interface'ler uygulamaları değiştirmenizi sağlar; örneğin üretimde gerçek bir ödeme servisi, testlerde ise sahte bir tane kullanmak gibi. Bu, bağımlılık enjeksiyonunun (dependency injection) ve taklit (mocking) yönteminin temelidir.

Interface'ler sıklıkla soyut sınıflarla karıştırılır. Soyut sınıf ortak kod ve alanlar içerebilir ve bir sınıf genellikle yalnızca birini genişletebilir; interface ise esas olarak bir sözleşme tanımlar ve bir sınıf birçoğunu uygulayabilir. Aynı sözcük, uygulama programlama arayüzü anlamına gelen API'de de geçer; API bu fikri daha büyük ölçekte uygular: iç ayrıntıları gizleyen herkese açık bir sözleşme.

Önemli noktalar

  • Interface, bir türün hangi metotlara ve özelliklere sahip olması gerektiğini tanımlar, nasıl çalıştıklarını değil.
  • Bir sınıf birkaç interface uygulayabilir ama genellikle yalnızca bir sınıfı genişletir.
  • Java ve C# açık bir implements gerektirir; Go ve TypeScript şekli otomatik denetler.
  • Interface'lere göre kod yazmak, uygulamaları değiştirmeyi ve test yazmayı kolaylaştırır.

Örnek

TypeScript'te bir interface tanımlamak ve uygulamaktypescript
interface Shape {
  name: string;
  area(): number; // a signature only, no body
}

class Circle implements Shape {
  name = "circle";
  constructor(private radius: number) {}
  area() { return Math.PI * this.radius ** 2; }
}

// Accepts any Shape, not just Circle
function describe(shape: Shape): string {
  return `${shape.name}: ${shape.area().toFixed(2)}`;
}

Sık sorulan sorular

Interface ile soyut sınıf arasındaki fark nedir?

Interface esas olarak bir sınıfın sağlaması gereken üyelerin sözleşmesini bildirir ve bir sınıf birçok interface uygulayabilir. Soyut sınıf ise ortak kod ve durum da tutabilir, ancak bir sınıf genellikle yalnızca birini genişletebilir.

Interface kod içerebilir mi?

Geleneksel olarak hayır, ancak bazı diller artık buna izin veriyor. Java 8 ve sonrası ile C# 8 ve sonrası, interface'lerin varsayılan metot uygulamaları içermesine izin verir; TypeScript interface'leri ise yalnızca türleri tarif eder ve derlemeden sonra tamamen kaybolur.

TypeScript'te interface ile type arasındaki fark nedir?

İkisi de bir nesnenin şeklini tarif edebilir. Interface'ler genişletilebilir ve aynı adla iki kez bildirildiğinde birleştirilir; type takma adları ise birleşim (union), demet (tuple) ve ilkel türleri de tarif edebilir. Düz nesne şekilleri için ikisi de olur.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar