«abstract-class» etiketlenmiş sorular

Soyut bir sınıf, somutlaştırılamayan bir sınıftır. Genellikle genişletilmiş / alt sınıflar içindir ve genellikle alt sınıflar tarafından uygulanması gereken "soyut yöntemlere" sahiptirler.

7
C # 'daki uzatma yöntemlerine sahip arabirimler yerine soyut sınıflar ne zaman kullanılır?
"Soyut sınıf" ve "arabirim" benzer kavramlardır; arabirim ikisinin daha soyut olmasını sağlar. Farklılaşan bir faktör, soyut sınıfların gerektiğinde türetilmiş sınıflar için yöntem uygulamaları sağlamasıdır. Bununla birlikte, C # 'da, bu farklılaşma faktörü, arayüz yöntemleri için uygulamaların sağlanmasına olanak tanıyan uzatma yöntemlerinin tanıtımıyla azaltılmıştır. Bir başka farklılaşma faktörü, bir sınıfın sadece …

9
Neden bir sınıfı soyut bir sınıf olarak ilan etmeliyim?
Sözdizimini biliyorum, soyut sınıfa uygulanan kuralları ve soyut bir sınıfın kullanımını bilmek istiyorum Soyut sınıf doğrudan başlatılamaz, başka bir sınıf tarafından genişletilebilir. Bunu yapmanın avantajı nedir? Arayüzden farkı nedir? Bir sınıfın birden fazla arayüz uygulayabildiğini ancak yalnızca bir soyut sınıfı genişletebileceğini biliyorum. Bu sadece bir arayüz ile soyut bir sınıf …

4
C ++ 'da sanal fonksiyonlar neden ve nasıl yavaşlar?
Herkes sanal masanın tam olarak nasıl çalıştığını ve sanal işlevler çağrıldığında hangi işaretçilerle ilişkilendirildiğini ayrıntılı olarak açıklayabilir mi? Aslında daha yavaşlarsa, sanal işlevin yürütülmesi için geçen süreyi normal sınıf yöntemlerinden daha fazla gösterir misiniz? Bazı kodları görmeden, nasıl / ne olup bittiğini takip etmek kolaydır.

2
Saf soyut sınıfların ve arayüzlerin uygulanması
Bu, C ++ standardında zorunlu olmamasına rağmen, örneğin GCC'nin, saf soyut olanlar da dahil olmak üzere ebeveyn sınıflarını uygulama biçimi, söz konusu sınıfın her örneğine bu soyut sınıf için v-tablosuna bir işaretçi eklemek yoluyla görünmektedir. . Doğal olarak, bu, bu sınıfın her örneğinin boyutunu, sahip olduğu her ana sınıf için …

4
Tanım olarak C # 'da soyut sınıfı kullanın
Bir C ++ geliştiricisi olarak C ++ başlık dosyalarına oldukça alışkınım ve kodun içinde bir tür zorunlu "dokümantasyon" bulundurmanın yararlı olduğunu düşünüyorum. Bu nedenle bazı C # kodlarını okumak zorunda kaldığımda genellikle kötü zaman geçiriyorum: Çalıştığım sınıfın zihinsel haritasına sahip değilim. Bir yazılım mühendisi olarak bir programın çerçevesini tasarladığımı varsayalım. …

3
Asla kamu üyelerini sanal / soyut yapmayın - gerçekten?
2000'li yıllarda bir meslektaşım bana kamu yöntemlerini sanal veya soyut yapmanın bir anti-desen olduğunu söyledi. Örneğin, iyi tasarlanmamış böyle bir sınıfı düşündü: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { if (argument == null) throw new ArgumentNullException(nameof(argument)); // default implementation } } …

5
Numaralamalar kırılgan arayüzler yaratıyor mu?
Aşağıdaki örneği düşünün. ColorChoice enum öğesinde yapılan tüm değişiklikler tüm IWindowColor alt sınıflarını etkiler. Numaralamalar kırılgan arayüzlere neden olma eğiliminde mi? Daha polimorfik esnekliğe izin vermek için bir numaradan daha iyi bir şey var mı? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor { public: …

2
Soyut istisna süper türü
Atma System.Exceptionbu kadar kötü kabul edilirse , neden ilk etapta Exceptionyapılmadı abstract? Bu şekilde aramak mümkün olmazdı: throw new Exception("Error occurred."); Bu, oluşan hata hakkında daha fazla ayrıntı sağlamak için türetilmiş istisnalar kullanılmasını zorunlu kılar. Örneğin, bir kütüphane için özel bir istisna hiyerarşisi sağlamak istediğimde, istisnalarım için genellikle soyut bir …


6
Soyut sınıflar, arayüzler ve bunların ne zaman kullanılacağı arasındaki farklar nelerdir
Son zamanlarda başımı OOP etrafına sarmaya başladım ve şimdi soyut sınıflar ve arayüzler arasındaki farklar hakkında ne kadar çok okursam o kadar karışık hale geliyorum. Şimdiye kadar ikisi de somutlaştırılamaz. Arayüzler iskeleti belirleyen az ya da çok yapısal planlardır ve özetler kısmen kod uygulayarak farklıdır. Özel durumum aracılığıyla bunlar hakkında …

6
Arayüz yöntemlerini soyut yöntemler olarak düşünebilir miyim?
Bunu düşünüyordum ve bazı şüphelerim vardı. Bir arayüz beyan ettiğimde, örneğin: public interface MyInterface { public void method1(); public void method2(); } Bu arayüz yöntemleri soyut kabul edilebilir mi? Demek istediğim, soyut bir yöntem kavramı: Soyut bir yöntem, bildirilen ancak uygulama içermeyen bir yöntemdir. Peki, bu yöntemler soyut kabul edilebilir …



4
C ++ ve Java'daki soyut sınıflar / arayüzler için farklı bir kullanım gerekçesi var mı?
Herb Sutter'e göre, uygulamayı mümkün olduğunca ayrıştırmak için soyut arayüzleri (tüm saf sanal fonksiyonlar) C ++ 'daki soyut sınıflara tercih etmeliyiz. Şahsen bu kuralı çok yararlı bulsam da, yakın zamanda birçok Java programcısı olan bir ekibe katıldım ve Java kodunda bu kılavuz mevcut görünmüyor. Fonksiyonlar ve uygulamaları soyut sınıflarda çok …

7
Tektonların, soyut sınıfların ve arayüzlerin rolleri nelerdir?
C ++ 'da OOP okuyorum ve bu 3 kavramın tanımlarının farkında olmama rağmen, onu ne zaman veya nasıl kullanacağımı gerçekten anlayamıyorum. Örnek olarak bu sınıfı kullanalım: class Person{ private: string name; int age; public: Person(string p1, int p2){this->name=p1; this->age=p2;} ~Person(){} void set_name (string parameter){this->name=parameter;} void set_age (int parameter){this->age=parameter;} string get_name …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.