«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.

3
Dairesel bağımlılık nasıl çözülür?
Birbirine dairesel bağlı üç sınıfım var: TestExecuter, TestScenario'nun isteklerini yerine getirir ve ReportGenerator sınıfını kullanarak bir rapor dosyasını saklar. Yani: TestExecuter, raporu oluşturmak için ReportGenerator'e bağlıdır ReportGenerator, TestScenario'ya ve TestExecuter'dan ayarlanan parametrelere bağlıdır. TestScenario, TestExecuter'a bağlıdır. Bağırsak bağımlılıklarının nasıl giderileceğini çözemiyorum. public class TestExecuter { ReportGenerator reportGenerator; public void getReportGenerator() …

2
Ölçeklenebilir bir bildirim sistemi nasıl tasarlanır? [kapalı]
Bir bildirim sistemi yöneticisi yazmam gerekiyor. İşte benim gereksinimlerim: Tamamen farklı olabilecek farklı platformlarda bir Bildirim gönderebilmem gerekiyor (örneğin, SMS veya E-posta gönderebilmem gerekiyor). Bazen bildirim, belirli bir platformdaki tüm alıcılar için aynı olabilir, ancak bazen platform başına alıcı (veya birkaç) başına bildirim olabilir. Her bildirim platforma özgü veri yükü …

7
Bir bayrak daha sonra kullanmak için bir döngü içinde bir bayrak ayarlamak için bir kod kokusu mu?
Bir haritayı belirli bir koşul doğru oluncaya kadar tekrar eden ve daha sonra başka şeyler yapmak için bu koşulu kullandığımda bir kod parçam var. Örnek: Map<BigInteger, List<String>> map = handler.getMap(); if(map != null && !map.isEmpty()) { for (Map.Entry<BigInteger, List<String>> entry : map.entrySet()) { fillUpList(); if(list.size() > limit) { limitFlag = …

3
“Start”, “run” veya “execute” yöntemi iyi bir uygulama mıdır?
Şu anda Başlat yöntemini uygulayan birçok sınıfa sahip bir kod tabanı üzerinde çalışıyorum. Bu bana her zaman kötü bir uygulama olarak düşündüğüm iki aşamalı bir yapıya benziyor. Bu ve bir kurucu arasındaki farkı söyleyemem. Normal obje yapımı yerine start metodu kullanmak ne zaman uygundur? Yapıcıyı ne zaman kullanmayı tercih etmeliyim? …

10
İşlevsel Programlama savunucuları bu ifadeye Kod Tamamlama'da nasıl cevap verebilir?
İkinci baskının 839. sayfasında, Steve McConnell, programcıların büyük programlarda "karmaşıklığı ele geçirme" yollarını tartışıyor. Tüyoları bu ifadeyle sonuçlandı: "Nesneye yönelik programlama , aynı zamanda algoritmalar ve veriler için geçerli olan bir soyutlama düzeyi sağlar , yalnızca işlevsel ayrışmanın tek başına sağlamadığı bir tür soyutlama sağlar." "Karmaşıklığın azaltılması tartışmalı olarak etkili …

17
Ayrıntıları soyutlamalar yoluyla gizlemenin değeri nedir? Şeffaflıkta değer yok mu?
Arka fon Ben büyük bir soyutlama hayranı değilim. Arayüzlerin uyarlanabilirlik, taşınabilirlik ve yeniden kullanılabilirlik vb. Faydalarından yararlanabileceğini kabul edeceğim. Orada gerçek fayda var ve bunu sormak istemiyorum, o yüzden görmezden gelelim. Uygulama mantığını ve ayrıntılarını bu soyutlamanın kullanıcılarından gizlemek olan soyutlamanın diğer büyük "yararı" da vardır. Argüman, detayları bilmek zorunda …

10
Soyut bir sınıfta arayüzler
İş arkadaşım ve ben, temel sınıflar ve arayüzler arasındaki ilişki hakkında farklı görüşler var. Bir sınıfın, bir arayüzün uygulanması gerektiğinde kullanılabiliyorsa, bir sınıfın bir arayüz uygulamaması gerektiğine inanıyoruz. Başka bir deyişle, böyle bir kod görmeyi seviyorum: interface IFooWorker { void Work(); } abstract class BaseWorker { ... base class behaviors …

3
TDD'de yeniden tasarlandıktan sonra bu yöntem özel olduğunda yöntemlerin testlerinde ne olur?
Diyelim ki diğer karakterlere ve bu tür şeylere saldıran karakterlerle bir rol oyunu geliştirmeye başladım. TDD'yi uygulayarak, mantık içinde Character.receiveAttack(Int)yöntemini test etmek için bazı test durumları yapmak . Bunun gibi bir şey: @Test fun healthIsReducedWhenCharacterIsAttacked() { val c = Character(100) //arg is the health c.receiveAttack(50) //arg is the suffered attack …

4
C # 6.0'ın yeni boş koşullu operatörü Demeter Yasasına aykırı mı?
Demeter Kanunu şöyle der: Her ünite diğer üniteler hakkında sadece sınırlı bilgiye sahip olmalıdır: sadece mevcut ünite ile ilgili "yakından" olan üniteler. Her birim sadece arkadaşlarıyla konuşmalıdır; yabancılarla konuşma. Sadece yakın arkadaşlarınızla konuşun. C # 6.0 boş koşullu işleç adı verilen yeni bir işleç başlattı . IMHO, kodlamayı kolaylaştırır ve …

6
Class anahtar kelimesi olmadan “nesne yönelimli” programlamayı uygulayabilir misiniz?
Diyelim ki bir bankada "hesap" soyutlama yapmak istiyoruz. İşte functionPython'da bir nesne kullanarak bir yaklaşım : def account(): """Return a dispatch dictionary representing a bank account. >>> a = account() >>> a['deposit'](100) 100 >>> a['withdraw'](90) 10 >>> a['withdraw'](90) 'Insufficient funds' >>> a['balance'] 10 """ def withdraw(amount): if amount > dispatch['balance']: …

6
Bayrakları kontrol etme ihtiyacını ortadan kaldırmak için bir tasarım deseni var mı?
Veritabanında bazı string loadload'ları biriktireceğim. İki global konfigürasyonum var: şifreleme sıkıştırma Bunlar konfigürasyon kullanılarak, her ikisinin de etkinleştirildiği veya her ikisinin de devre dışı bırakıldığı şekilde etkinleştirilebilir veya devre dışı bırakılabilir. Mevcut uygulamam şudur: if (encryptionEnable && !compressEnable) { encrypt(data); } else if (!encryptionEnable && compressEnable) { compress(data); } else …

7
İşlevsel programlama “Modüllere Ayrıştırma Sistemlerinde Kullanılacak Kriterler Üzerinden” (veri gizleme) 'den kazanılan faydaları görmezden geliyor mu?
İlk kez okuduğum Modüllere Ayrıştırma Sistemlerinde Kullanılacak Kriterler Üzerine adlı klasik bir makale var . Bana çok mantıklı geliyor ve muhtemelen OOP'un dayandığı makalelerden biri. Sonuç: Bu örneklerle, bir sistemin bir akış şeması temelinde modüllere ayrıştırılmasının başlamasının neredeyse her zaman yanlış olduğunu göstermeye çalıştık. ... Her modül daha sonra böyle …


4
Prototip miras, pratik olarak klasik mirastan ne kadar farklıdır?
Kalıtım, Polimorfizm ve Kapsülleme, OOP'nin en belirgin üç önemli özelliğidir ve bunlardan, kalıtımın bu günlerde yüksek kullanım istatistiklerine sahiptir. JavaScript öğreniyorum ve burada hepsi prototip mirası olduğunu söylüyorlar ve her yerdeki insanlar bunun klasik mirastan çok farklı bir şey olduğunu söylüyor . Ancak, pratik kullanım açısından farklılıklarının ne olduğunu anlayamıyorum. …


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.