«object-oriented-design» etiketlenmiş sorular

Nesne yönelimli tasarım, bir yazılım problemini çözmek için etkileşen nesneler sistemini planlama sürecidir.

6
Fonksiyonel programlama problemler ve çözümler arasındaki 'temsili boşluğu' artırır mı? [kapalı]
Kapalı . Bu sorunun daha fazla odaklanması gerekiyor . Şu anda cevapları kabul etmiyor. Bu soruyu geliştirmek ister misiniz? Soruyu, yalnızca bu yayını düzenleyerek tek bir soruna odaklanacak şekilde güncelleyin . 4 yıl önce kapalı . Makine dili (örn. 0110101000110101) Bilgisayar dilleri genellikle daha yüksek soyutlama biçimlerine dönüştüğünden, genellikle bir …

6
Birden fazla miras Tek Sorumluluk İlkesini ihlal ediyor mu?
İki ayrı sınıftan miras alan bir sınıfınız varsa, bu, alt sınıfınızın her bir üst sınıftan bir tane olmak üzere otomatik olarak (en az) 2 şey yaptığı anlamına gelmez mi? Birden fazla arabirim mirasınız varsa hiçbir fark olmadığını düşünüyorum. Düzenleme: Açıkça, birden fazla sınıf alt sınıf SRP ihlal, sonra birden (marker …

3
Durum Paterni Liskov İkame İlkesini ihlal ediyor mu?
Bu görüntü Etki Alanına Dayalı Tasarım ve Desenler Uygulamadan alınmıştır : C # ve .NET'teki Örneklerle Bu sınıf diyagramı olan Devlet Kalıbı bir SalesOrderyaşam süresi boyunca farklı durum olabilir. Farklı durumlar arasında sadece belirli geçişlere izin verilir. Şimdi OrderStatesınıf bir abstractsınıftır ve tüm yöntemleri alt sınıflarına devralınır. Başka Cancelledbir ülkeye …

5
SRP (Tek Sorumluluk İlkesi) objektif midir?
"Kullanıcı çekici" tasarımlar tasarlamak isteyen iki kullanıcı arayüzü tasarımcısını düşünün. "Kullanıcı cazibe" objektif olmayan ve sadece tasarımcıların zihninde bulunan bir kavramdır. Böylece tasarımcı A, örneğin kırmızı rengi alabilirken tasarımcı B maviyi seçebilir. Tasarımcı A, tasarımcı B'den tamamen farklı bir düzen oluşturur, vb. SRP (Tek Sorumluluk İlkesi) hakkında okudum ve anladığım …

4
Tamamen statik sınıflara sahip olmak kötü bir fikir mi?
Daha büyük bir solo proje üzerinde çalışıyorum ve şu anda bir örnek oluşturmak için herhangi bir neden göremediğim birkaç dersim var. Örneğin, şu anda zar sınıfım tüm verilerini statik olarak saklar ve tüm yöntemleri de statiktir. İlklendirmem gerekmiyor çünkü zar atmak ve yeni bir değer elde etmek istediğimde, sadece kullanıyorum …

4
Javascript'teki fonksiyonların gizemi çözülemiyor
Javascript'in perde sahnelerini anlamaya çalışıyorum ve nesnelerin, özellikle Nesne ve Fonksiyonun yaratılmasını ve aralarındaki ilişkiyi anlamaya sıkıştım . Array, String vb.Gibi tüm yerleşik nesnelerin Object'den uzantı (devralınan) olduğunu okuduğumda, Object'in yaratılan ilk nesne olduğunu ve kalan nesnelerin kendisinden miras aldığını varsaydım. Ancak, Nesnelerin yalnızca işlevler tarafından oluşturulabileceğini bilmeniz mantıklı değildir, …

5
Kendisini veya diğer iki şeyi temsil eden bir şey için veri türü nasıl yapılır
Arka fon İşte üzerinde çalıştığım asıl sorun: Kart oyunu Magic: The Gathering'de kartları temsil etmenin bir yolunu istiyorum . Oyundaki çoğu kart normal görünümlü kartlardır, ancak bazıları her biri kendi adına sahip iki bölüme ayrılmıştır. Bu iki parçalı kartların her bir yarısı kartın kendisi olarak kabul edilir. Netleştirmek için, Cardsadece …

1
Ziyaretçi Desenini Anlama
GUI denetimlerini temsil eden bir sınıflar hiyerarşisi var. Bunun gibi bir şey: Control->ContainerControl->Form Çeşitli şeyler yapan nesnelerle çalışan bir dizi algoritma uygulamak zorundayım ve Ziyaretçi deseninin en temiz çözüm olacağını düşünüyorum. Örneğin, bir nesne hiyerarşisinin Xml temsilini oluşturan bir algoritmayı ele alalım. 'Klasik' yaklaşımını kullanarak şunu yaparım: public abstract class …

6
Nesneye Dayalı Tasarımda Gevşek Kavrama
GRASP öğrenmeye çalışıyorum ve bu düşük kuplaj hakkında açıkladı ( burada sayfa 3 ) ve bunu bulduğumda çok şaşırdım: addTrackBir Albumsınıfın yöntemini düşünün , iki olası yöntem şunlardır: addTrack( Track t ) ve addTrack( int no, String title, double duration ) Hangi yöntem kuplajı azaltır? İkincisi, Album sınıfını kullanan sınıfın …

2
PHP'de Yasadışı: OOP tasarım nedeni var mı?
Aşağıdaki arayüz kalıtımı PHP'de yasadışıdır, ancak gerçek hayatta oldukça yararlı olacağını düşünüyorum. Aşağıdaki tasarımda gerçek bir antipattern veya belgelenmiş bir problem var mı, PHP'nin beni koruyor mu? <?php /** * Marker interface */ interface IConfig {} /** * An api sdk tool */ interface IApi { public __construct(IConfig $cfg); } …

6
Strateji Modelinin Avantajları
Eğer if / then durumunda kodunuzu yazabiliyorsanız strateji modelini kullanmak neden yararlıdır? Örneğin: Bir TaxPayer sınıfım var ve yöntemlerinden biri farklı algoritmalar kullanarak vergileri hesaplıyor. Öyleyse neden if / then durumlarına sahip olamaz ve strateji modelini kullanmak yerine bu yöntemde hangi algoritmayı kullanacağını anlayamıyor? Ayrıca, neden TaxPayer sınıfındaki her algoritma …

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 …


3
Uygulamada açık-kapalı ilkesine nasıl uyulur
Açık-kapalı prensibinin amacını anlıyorum. Değiştirmeden genişletmeyi denemenizi söyleyerek, değiştirirken zaten çalışan bir şeyi kırma riskini azaltmak içindir. Ancak, bu prensibin uygulamada nasıl uygulandığını anlamakta zorlandım. Anladığım kadarıyla bunu uygulamanın iki yolu var. Olası bir değişiklikten önce ve sonra: Önce: soyutlamalara programlayın ve 'geleceği tahmin edin' olabildiğince. Örneğin , gelecekte sisteme …

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.