La progettazione orientata agli oggetti è il processo di pianificazione di un sistema di oggetti interagenti allo scopo di risolvere un problema software.
Ho tre classi che sono circolari dipendenti l'una dall'altra: TestExecuter esegue le richieste di TestScenario e salva un file di report utilizzando la classe ReportGenerator. Così: TestExecuter dipende da ReportGenerator per generare il rapporto ReportGenerator dipende da TestScenario e dai parametri impostati da TestExecuter. TestScenario dipende da TestExecuter. Non riesco …
Devo scrivere un gestore del sistema di notifica. Ecco i miei requisiti: Devo essere in grado di inviare una notifica su piattaforme diverse, che potrebbero essere totalmente diverse (ad esempio, devo essere in grado di inviare un SMS o un'e-mail). A volte la notifica può essere la stessa per tutti …
Ho un pezzo di codice in cui eseguo l'iterazione di una mappa fino a quando una determinata condizione è vera e successivamente utilizzo quella condizione per fare altre cose. Esempio: 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() …
Attualmente sto lavorando su una base di codice che ha molte classi che implementano un metodo Start. Mi sembra una costruzione a due fasi, che avevo sempre considerato una cattiva pratica. Non so distinguere tra questo e un costruttore. Quando è appropriato utilizzare un metodo di avvio anziché la normale …
A pagina 839 della seconda edizione, Steve McConnell sta discutendo tutti i modi in cui i programmatori possono "conquistare la complessità" nei grandi programmi. I suoi consigli culminano con questa affermazione: "La programmazione orientata agli oggetti fornisce un livello di astrazione che si applica contemporaneamente agli algoritmi e ai dati …
sfondo Non sono un grande fan dell'astrazione. Devo ammettere che si può trarre vantaggio dall'adattabilità, portabilità e riutilizzabilità delle interfacce ecc. C'è un vero vantaggio lì, e non voglio metterlo in discussione, quindi ignoriamolo. C'è l'altro grande "vantaggio" dell'astrazione, che è nascondere la logica di implementazione e i dettagli agli …
Io e il mio collega abbiamo opinioni diverse sulla relazione tra classi di base e interfacce. Sono convinto che una classe non dovrebbe implementare un'interfaccia a meno che quella classe non possa essere utilizzata quando è richiesta un'implementazione dell'interfaccia. In altre parole, mi piace vedere il codice in questo modo: …
Diciamo che inizio a sviluppare un gioco di ruolo con personaggi che attaccano altri personaggi e quel genere di cose. Applicando TDD, realizzo alcuni casi di test per testare la logica all'interno del Character.receiveAttack(Int)metodo. Qualcosa come questo: @Test fun healthIsReducedWhenCharacterIsAttacked() { val c = Character(100) //arg is the health c.receiveAttack(50) …
La legge di Demetra afferma quanto segue: Ogni unità dovrebbe avere una conoscenza limitata delle altre unità: solo le unità "strettamente" correlate all'unità corrente. Ogni unità dovrebbe parlare solo con i suoi amici; non parlare con estranei. Parla solo con i tuoi amici immediati. C # 6.0 ha introdotto un …
Supponiamo di voler fornire un'astrazione di un "conto" in una banca. Ecco un approccio, usando un functionoggetto in Python: 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 …
Ho intenzione di salvare un po 'di payload di stringa nel database. Ho due configurazioni globali: crittografia compressione Questi possono essere abilitati o disabilitati usando la configurazione in modo che sia abilitato solo uno di essi, entrambi siano abilitati o entrambi siano disabilitati. La mia attuale implementazione è questa: if …
C'è un articolo classico chiamato On the Criteria To Be Use in Decomposing Systems in Modules che ho appena letto per la prima volta. Ha perfettamente senso per me ed è probabilmente uno di quegli articoli su cui si basava OOP. La sua conclusione: Abbiamo provato a dimostrare con questi …
Stavo seguendo questa domanda molto votata su una possibile violazione del principio di sostituzione di Liskov. So qual è il principio di sostituzione di Liskov, ma ciò che non è ancora chiaro nella mia mente è ciò che potrebbe andare storto se io come sviluppatore non penso al principio durante …
Ereditarietà, polimorfismo ed incapsulamento sono le tre caratteristiche più distinte e importanti di OOP, e da esse l'ereditarietà ha oggi statistiche di utilizzo elevato. Sto imparando JavaScript, e qui, tutti dicono che ha un'eredità prototipale, e le persone ovunque dicono che è qualcosa di molto diverso dall'eredità classica. Tuttavia, non …
Diventare un buon analizzatore e designer può essere di grande beneficio per uno sviluppatore. Ma ci sono sicuramente ostacoli per questo. Non tutti sono interessati a OOAD, e non tutte le persone interessate conoscono il percorso. Un buon OOAD dovrebbe conoscere più lingue OO? O dovrebbe avere progetti falliti? Come …
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.