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

10
Yapıcılar olmadan yaşayabilir miyiz?
Diyelim ki bazı nedenlerle tüm nesneler bu şekilde yaratıldı $ obj = CLASS :: getInstance (). Daha sonra ayarlayıcıları kullanarak bağımlılıkları enjekte ediyoruz ve $ obj-> initInstance () kullanarak başlatma işlemini başlatıyoruz; Yapıcıları hiç kullanmayacaksak, çözülemeyen gerçek sorunlar veya durumlar var mı? Bu şekilde nesne yaratmanın nedeni Ps, getInstance () …


12
Nesneye Dayalı Tasarım
Diyelim ki aşağıdakilere sahipsin: +--------+ +------+ | Animal | | Food | +-+------+ +----+-+ ^ ^ | | | | +------+ +-------+ | Deer | | Grass | +------+ +-------+ Deergelen miras Animalve gelen Grassmiras Food. Çok uzak çok iyi. Animalnesneler nesneleri yiyebilir Food. Şimdi biraz karıştıralım. Şunun Lionhangisini devraldığını …

6
Bir nesne kendi kimliğini bilmeli mi?
obj.idoldukça yaygın görünüyor ve aynı zamanda bir nesnenin kendisi hakkında bildiği bir şeyin kapsamına giriyor gibi görünüyor. Kendimi neden nesnemin kendi kimliğini bilmesi gerektiğini sorarken buluyorum. Buna sahip olmak için bir sebep yok gibi görünüyor? Varlığının temel nedenlerinden biri onu almak ve depolarımın bunu bilmesi ve böylece veritabanı etkileşimi 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. …

9
Özel / iç sınıfı ne zaman kullanmalısınız?
Açıklığa kavuşturmak için, sorduğum şey public class A{ private/*or public*/ B b; } vs. public class A{ private/*or public*/ class B{ .... } } Birini veya diğerini kullanmanın bazı nedenlerini kesinlikle düşünebilirim, ama gerçekten görmek istediğim şey, artı ve eksilerin sadece akademik olmadığını gösteren inandırıcı örnekler.


3
Ortak işlevleri paylaşacak Windows formları için en iyi tasarım
Geçmişte, uygulamamda Windows formlarının uzantısına izin vermek için kalıtım kullandım. Tüm formlarımın ortak denetimleri, resimleri ve işlevleri varsa, ortak denetimleri ve işlevleri uygulayan bir temel form oluşturur ve sonra diğer denetimlerin bu temel formdan devralmasına izin veririm. Ancak, bu tasarımla ilgili birkaç sorunla karşılaştım. Kontroller aynı anda yalnızca bir kapta …

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 } } …

9
İnit () yöntemleri bir kod kokusu mu?
init()Bir tür için yöntem bildirmenin herhangi bir amacı var mı ? Bence gerekip gerekmediğini sormuyorum tercih init()yapıcı üzerinde veya nasıl ilan önlemek içininit() . Ben (ne kadar yaygın olduğunu görmek) bir yöntem bildirme arkasında herhangi bir mantık olup olmadığını init()veya bir kod kokusu ve kaçınılması gerektiğini soruyorum . init()Deyim oldukça …


4
Veritabanının kötü tasarlandığı ilişkisel bir veritabanı tabanlı uygulamada daha iyi OO kodu nasıl oluşturulur
Ben esas olarak her sayfada birkaç tablo ve bu tablolar için geçerli bir filtre olan benzer sayfaları bir demet oluşan bir Java web uygulaması yazıyorum. Bu tablolardaki veriler bir SQL veritabanından gelir. Veritabanı kötü tasarlanmış ve mybatis daha veritabanı odaklı bir araç olduğundan myBatis benim durumumda en iyi seçim olmayabilir …

7
C programları için OO en iyi uygulamaları [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ı . "Eğer gerçekten OO şeker istiyorsan - git C ++ kullan" - bunu sorduğumda bir …

1
Bertrand Meyer neden alt sınıflamanın “kapalı” bir modülü genişletmenin tek yolu olduğunu düşünüyor (/ yaptı)?
Meyer'ın Nesneye Dayalı Yazılım Yapımında (1988) açık / kapalı prensibini şu şekilde tanımlar : Bir modül hala uzatma için mevcutsa açık olacaktır. Örneğin, içerdiği veri yapılarına alan veya gerçekleştirdiği işlevler kümesine yeni öğeler eklemek mümkün olmalıdır. Bir modülün başka modüller tarafından kullanılabilmesi için kapalı olduğu söylenecektir. Bu, modüle iyi tanımlanmış, …

7
Veri aktarım nesneleri için arayüzler oluşturmalı mıyım?
Veri aktarım nesneleri için bir arayüz oluşturmak iyi bir fikir mi yoksa kötü bir fikir mi? Nesnenin genellikle değiştirilebilir olduğunu varsayarsak. Örneğim Java'da olmasına rağmen, benzer kavramlara sahip diğer diller için geçerli olmalıdır. interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; String …

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.