Soyut tip - Abstract type
| Tip sistemleri |
|---|
| Genel konseptler |
| Ana kategoriler |
|
| küçük kategoriler |
| Ayrıca bakınız |
Gelen programlama dilleri , bir soyut tip bir bir türüdür yalın tip sistemine edilemez örneği doğrudan; soyut olmayan bir türü - edebilirsiniz başlatılamaz - Bir denir beton türü . Soyut bir türün her örneği, bazı somut alt türlerin bir örneğidir . Soyut tipler varoluşsal tipler olarak da bilinir .
Soyut bir tür, hiçbir uygulama veya eksik bir uygulama sağlamayabilir. Bazı dillerde, uygulaması olmayan soyut türler (tamamlanmamış bir uygulama yerine), protokoller , arayüzler , imzalar veya sınıf türleri olarak bilinir . Olarak Sınıf tabanlı nesne yönelimli programlama , özet türleri olarak uygulanır soyut sınıflar (aynı zamanda soyut temel sınıfları ) ve beton tip beton sınıfları . Gelen jenerik programlama , benzer kavram bir olan kavram birbiriyle alakasız iki tip aynı kavram tatmin edebilir: Benzer sözdizimi ve anlambilim belirtir ancak bir alt tür ilişki gerektirmez.
Çoğu zaman, arka türleri, bir ya da daha fazla uygulamaları beton alt tipleri şeklinde, örneğin, ayrı olarak temin olacaktır olabilir örneği. Nesne yönelimli programlamada, soyut bir sınıf , alt sınıfları tarafından paylaşılan soyut yöntemler veya soyut özellikler içerebilir . Soyut türleri uygulamak için kullanılan (veya kullanılabilecek) dil özelliklerinin diğer adları arasında özellikler , karışımlar , tatlar , roller veya tür sınıfları bulunur .
Soyut türleri belirtmek
Soyut sınıflar çeşitli şekillerde oluşturulabilir, gösterilebilir veya simüle edilebilir:
- Java , D veya C#' da olduğu gibi sınıf tanımında açık anahtar sözcüğün
abstractkullanılmasıyla . - Sınıf tanımına, sınıfın protokolünün bir parçası olarak kabul ettiği bildirilen, ancak hiçbir uygulama sağlanmayan bir veya daha fazla soyut yöntemi ( C++ 'da saf sanal işlevler olarak adlandırılır ) dahil ederek.
- By devralan soyut türünden ve sınıf tanımı tamamlamak için gerekli tüm özelliklerin eksik geçersiz değil. Başka bir deyişle, ebeveyninden gelen tüm soyut yöntemleri uygulamayan bir çocuk türü, kendisi soyut hale gelir.
- Smalltalk gibi dinamik olarak yazılan birçok dilde , this öğesine belirli bir yöntem gönderen ancak bu yöntemi uygulamayan herhangi bir sınıf soyut olarak kabul edilebilir. (Ancak, Objective-C gibi bu tür birçok dilde, sınıf kullanılana kadar hata algılanmaz ve mesaj, algılandığında
- [NSObject doesNotRecognizeSelector:(SEL)selector]çağrıldığı gibi "Seçiciyi tanımıyor: xxx" gibi bir istisna hata mesajıyla sonuçlanır . uygulanmamış bir yöntem).
Örnek (Java)
//By default, all methods in all classes are concrete, unless the abstract keyword is used.
abstract class Demo {
// An abstract class may include abstract methods, which have no implementation.
abstract public int sum(int x, int y);
// An abstract class may also include concrete methods.
public int product(int x, int y) { return x*y; }
}
//By default, all methods in all interfaces are abstract, unless the default keyword is used.
interface DemoInterface {
[abstract] int getLength(); //Abstract can be used here, though is completely useless
//The default keyword can be used in this context to specify a concrete method in an interface
default int product(int x, int y) {
return x * y;
}
}
Soyut türlerin kullanımı
Soyut türler, statik olarak yazılan OOP dillerinde önemli bir özelliktir . Dinamik olarak yazılan pek çok dilin eşdeğer bir özelliği yoktur (ancak ördek yazımının kullanılması soyut türleri gereksiz kılar); ancak özellikler bazı modern dinamik olarak yazılan dillerde bulunur.
Bazı yazarlar, sınıfların yaprak sınıflar olması (alt türleri olmaması) veya soyut olması gerektiğini savunur .
Soyut türler, bir protokolü tanımlamak ve uygulamak için kullanılabilecekleri için kullanışlıdır ; protokolü uygulayan tüm nesnelerin desteklemesi gereken bir dizi işlem.
Soyut türler ayrıca Template Method Pattern'in önemli bir parçasıdır .
Ayrıca bakınız
Referanslar
daha fazla okuma
- İlk Java'ya Başlayın . O'Reilly Medya. 2003. s. 688 . ISBN'si 0-596-00920-8.
- Çekirdek Java: R. Nageswara Rao'dan Entegre Bir Yaklaşım
Dış bağlantılar
- "Soyut veya İskelet Arayüzlerinin Açıklaması" [1]
- Türler ve Programlama Dilleri , Benjamin Pierce (MIT Press 2002) [2]
- Özet tipi de Rosetta Kanunu