«inheritance» etiketlenmiş sorular

Kalıtım, programlama dili desteğine bağlı olarak mevcut nesnelerin kodunu yeniden kullanmanın veya mevcut bir nesneden veya her ikisinden bir alt tür oluşturmanın bir yoludur.

14
Bu “mirasa karşı iyilik kompozisyonu” kavramı nereden geliyor?
Son birkaç ayda, "mirasa karşı iyilik kompozisyonu" mantığı hiçbir yerden fırlamış ve programlama topluluğu içinde neredeyse bir çeşit meme haline gelmiş gibi görünmektedir. Ve onu her gördüğümde biraz şaşırdım. Birinin dediği gibi "kırıcıların lehine matkaplar". Tecrübelerime göre, kompozisyon ve kalıtım, farklı kullanım durumlarına sahip iki farklı araç ve bunları birbirinin …

9
Birden fazla kalıtımın nefret edilmesinin “gerçek” bir nedeni var mı?
Her zaman bir dilde çoklu miras alma fikrini sevdim. Çoğu zaman kasıtlı olarak affedilmiş olmasına rağmen ve sözde "değiştirme" arayüzlerdir. Arayüzler, çoklu kalıtımın aynı toprakları kapsamaz ve bu kısıtlama zaman zaman daha fazla kazan koduna yol açabilir. Bunun için duyduğum tek temel sebep , temel sınıflardaki elmas problemi . Bunu …

5
Kalıtım yerine neden kompozisyonu tercih etmeliyim?
Her zaman kompozisyonun kalıtım yerine tercih edileceğini okudum. Türlerin aksine bir blog yazısı, örneğin, kalıtım üzerine kompozisyon kullanmayı savunuyor, ancak polimorfizmin nasıl elde edildiğini göremiyorum. Ancak insanlar kompozisyonu tercih ettiklerini söylediğinde, kompozisyon ve arayüz uygulamasının bir kombinasyonunu tercih ettikleri anlamına geliyor. Kalıtım olmadan polimorfizmi nasıl elde edersiniz? Miras kullandığım somut …

12
SetWidth ve SetHeight yöntemlerini geçersiz kılarsak, Kare'yi Dikdörtgen'den devralmak neden sorunlu olsun?
Bir Kare bir Dikdörtgen türü ise, neden bir Kare Dikdörtgenden miras alamaz? Ya da neden kötü bir tasarım? İnsanların söylediklerini duydum: Kare'yi Dikdörtgen'den türetmişseniz, bir dikdörtgen beklediğiniz her yerde bir Kare kullanılabilir olmalıdır Burada problem nedir? Ve neden bir dikdörtgen beklediğiniz her yerde Kare kullanılabilir? Yalnızca Square nesnesini oluşturursak ve …

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 …

11
Bir programı birden çok sınıfa bölmek neden iyidir? [kapalı]
Hala lisede öğrenciyim (10. sınıfa giriyorum) ve henüz okulda gerçek bir bilgisayar kursuna katılmamıştım. Şimdiye kadar yaptığım her şey kitaplardan geçiyor. Bu kitaplar bana kalıtım gibi kavramlar öğretti, ancak bir programı birden fazla sınıfa bölmek nasıl yardımcı olur? Kitaplar bana hiç söylemedi. Bunu temelde yeni bir proje yüzünden soruyorum. Bazılarının …

17
OO programlama gerçekten işe alım şirketleri tarafından yerleştirilenler kadar önemli mi? [kapalı]
Sadece yüksek lisansımı bitirdim (hesaplamada) ve iş başvurusunda bulunuyorum. Pek çok şirketin özellikle nesne yönelimini anlamalarını istediğini fark ettim. Popüler röportaj soruları miras, polimorfizm, erişimciler vb. OO gerçekten bu kadar önemli mi? C'deki bir programlama işi için röportaj bile yaptım ve röportajın yarısı OO idi. Gerçek dünyada, gerçek uygulamaları geliştirmek, …

1
Karışımlar veya özellikler düz çoklu kalıtımdan nasıl daha iyidir?
C ++ çoklu çoklu mirasa sahip, birçok dil tasarımını tehlikeli olarak yasaklıyor. Ancak, Ruby ve PHP gibi bazı diller aynı şeyi yapmak için garip sözdizimi kullanır ve bunları karmaşa veya özellikler olarak adlandırır. Karışımların / özelliklerin kötüye kullanımı basit çoklu kalıtımdan ziyade zor olduğunu defalarca duydum. Onları özel olarak daha …

3
Bir tip sistemi nedir?
Arka fon Bir yan proje olarak bir dil tasarlıyorum. Çalışan bir montajcıya, statik analizöre ve bunun için sanal makineye sahibim. Yaptığım altyapıyı kullanarak önemsiz programları derleyebildiğim ve çalıştırabildiğim için üniversitemde bir sunum yapmayı düşündüm. Konuşmam sırasında VM'nin bir tip sistem sağladığını, " Tip sisteminiz ne için? " Diye sordum . …

8
LSP vs OCP / Liskov Değişimi VS Aç Kapat
OOP'un SOLID ilkelerini anlamaya çalışıyorum ve LSP ile OCP'nin bazı benzerlikleri olduğu sonucuna vardım (daha fazla söylemediyseniz). açık / kapalı prensipte "yazılım varlıkları (sınıflar, modüller, fonksiyonlar vb.) uzatma için açık, ancak değişiklik için kapalı olmalıdır" yazmaktadır. Basit bir ifadeyle LSP, herhangi bir örneğinin türetilmiş Fooherhangi bir örneğiyle değiştirilebileceğini ve programın …


11
Yalnızca yapıcı alt sınıflar: Bu bir kalıp karşıtı mı?
Bir iş arkadaşınızla bir tartışma yapıyordum ve alt sınıflamanın amacı hakkında çelişkili sezgiler yaşadık. Sezgim, eğer bir alt sınıfın birincil işlevi, üst öğesinin sınırlı bir değer değer aralığını ifade etmesiyse, o zaman muhtemelen bir alt sınıf olmamalıdır. Ters sezgi için savundu: alt sınıflamanın bir nesnenin daha "spesifik" olduğunu gösterir ve …


11
Soyut sınıflar / yöntemler eski midir?
Bir sürü soyut sınıf / yöntem yaratırdım. Sonra arayüzleri kullanmaya başladım. Şimdi, arayüzlerin soyut sınıfları modası geçmiş kılmadığından emin değilim. Tamamen soyut bir sınıfa mı ihtiyacınız var? Bunun yerine bir arayüz oluşturun. İçinde bazı uygulamalar olan soyut bir sınıfa mı ihtiyacınız var? Bir arayüz oluşturun, bir sınıf oluşturun. Sınıfı devralın, …

3
“Mirasa ilişkin kompozisyon” “kuru ilke” yi ihlal ediyor mu?
Örneğin, diğer sınıfların genişletmesi için bir sınıfım olduğunu düşünün: public class LoginPage { public String userId; public String session; public boolean checkSessionValid() { } } ve bazı alt sınıflar: public class HomePage extends LoginPage { } public class EditInfoPage extends LoginPage { } Aslında, alt sınıfın geçersiz kılacak bir yöntemi …

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.