La progettazione orientata agli oggetti è il processo di pianificazione di un sistema di oggetti interagenti allo scopo di risolvere un problema software.
Diciamo per qualche motivo che tutti gli oggetti sono creati in questo modo $ obj = CLASS :: getInstance (). Quindi iniettiamo dipendenze usando setter ed eseguiamo l'inizializzazione iniziale usando $ obj-> initInstance (); Ci sono problemi o situazioni reali, che non possono essere risolti, se non useremo affatto i …
Una classe dovrebbe sapere delle sue sottoclassi? Una classe dovrebbe fare qualcosa di specifico per una determinata sottoclasse, ad esempio? Il mio istinto mi dice che è un cattivo design, sembra un anti-pattern di qualche tipo.
Supponiamo di avere quanto segue: +--------+ +------+ | Animal | | Food | +-+------+ +----+-+ ^ ^ | | | | +------+ +-------+ | Deer | | Grass | +------+ +-------+ Deereredita da Animaled Grasseredita da Food. Fin qui tutto bene. Animalgli oggetti possono mangiare Foodoggetti. Ora lasciamo un po …
obj.idsembra abbastanza comune e sembra anche rientrare nel raggio di qualcosa che un oggetto potrebbe conoscere su se stesso. Mi trovo a chiedermi perché il mio oggetto dovrebbe conoscere il proprio ID? Non sembra avere un motivo per averlo? Uno dei motivi principali della sua esistenza è recuperarlo, quindi i …
Come sviluppatore C ++ sono abbastanza abituato ai file di intestazione C ++ e trovo utile avere una sorta di "documentazione" forzata all'interno del codice. Di solito mi trovo in un brutto momento quando devo leggere del codice C # per questo: non ho quel tipo di mappa mentale della …
Per chiarire, quello che sto chiedendo è public class A{ private/*or public*/ B b; } vs. public class A{ private/*or public*/ class B{ .... } } Posso sicuramente pensare ad alcuni motivi per usare l'uno o l'altro, ma quello che mi piacerebbe davvero vedere sono esempi convincenti che dimostrano che …
In Java in particolare, ma probabilmente anche in altre lingue: quando sarebbe utile avere due riferimenti allo stesso oggetto? Esempio: Dog a = new Dog(); Dob b = a; C'è una situazione in cui ciò sarebbe utile? Perché questa sarebbe una soluzione preferita da usare aogni volta che vuoi interagire …
In passato ho usato l'ereditarietà per consentire l'estensione dei moduli di Windows nella mia applicazione. Se tutti i miei moduli avessero controlli, grafica e funzionalità comuni, creerei un modulo di base che implementa i controlli e le funzionalità comuni e quindi consenti agli altri controlli di ereditare da quel modulo …
Negli anni 2000 un mio collega mi ha detto che è un anti-schema rendere virtuali o astratti i metodi pubblici. Ad esempio, ha considerato una classe come questa non ben progettata: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { if (argument == …
C'è uno scopo per dichiarare un init()metodo per un tipo? Non sto chiedendo se dovremmo preferire init()un costruttore o come evitare di dichiarareinit() . Sto chiedendo se c'è qualche logica dietro la dichiarazione di un init()metodo (visto quanto sia comune) o se è un odore di codice e dovrebbe essere …
Secondo Refactoring to Patterns : Quando una classe sta provando a fare troppo, spesso si presenta come troppe variabili di istanza. Quando una classe ha troppe variabili di istanza, il codice duplicato non può essere molto indietro. In che modo avere troppe variabili di istanza porta a un codice duplicato?
Sto scrivendo un'applicazione Web Java che consiste principalmente in un gruppo di pagine simili in cui ogni pagina ha diverse tabelle e un filtro che si applica a quelle tabelle. I dati su queste tabelle provengono da un database SQL. Sto usando myBatis come ORM, che potrebbe non essere la …
Chiuso . Questa domanda deve essere più focalizzata . Al momento non accetta risposte. Vuoi migliorare questa domanda? Aggiorna la domanda in modo che si concentri su un problema solo modificando questo post . Chiuso 4 anni fa . "Se vuoi davvero zucchero OO - vai a usare C ++" …
In Meyer Object-Oriented Software Construction (1988) definisce il principio aperto / chiuso come segue: Si dirà che un modulo sarà aperto se è ancora disponibile per l'estensione. Ad esempio, dovrebbe essere possibile aggiungere campi alle strutture dati che contiene o nuovi elementi all'insieme di funzioni che esegue. Si dirà che …
È una buona idea o una cattiva idea creare un'interfaccia per gli oggetti di trasferimento dati? Presumendo che l'oggetto sia generalmente mutabile. Sebbene il mio esempio sia in Java, dovrebbe essere applicabile a qualsiasi altro linguaggio che abbia concetti simili. interface DataTransferObject { String getName(); void setName(String name); } class …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.