Supponiamo di avere un elenco di entità Task e un ProjectTasksottotipo. Le attività possono essere chiuse in qualsiasi momento, tranne ProjectTasksche non possono essere chiuse una volta che hanno lo stato Avviato. L'interfaccia utente dovrebbe garantire che l'opzione per chiudere un avvio ProjectTasknon sia mai disponibile, ma nel dominio sono …
Sto cercando di capire i principi SOLID di OOP e sono giunto alla conclusione che LSP e OCP hanno alcune somiglianze (se non per dire altro). il principio aperto / chiuso afferma che "le entità software (classi, moduli, funzioni, ecc.) dovrebbero essere aperte per l'estensione, ma chiuse per modifica". LSP …
La risposta più votata a questa domanda sul principio di sostituzione di Liskov fa fatica a distinguere tra i termini sottotipo e sottoclasse . Sottolinea inoltre che alcune lingue confondono le due, mentre altre no. Per i linguaggi orientati agli oggetti con cui ho più familiarità (Python, C ++), "tipo" …
Un noto difetto delle gerarchie di classi tradizionali è che sono cattive quando si tratta di modellare il mondo reale. Ad esempio, cercando di rappresentare le specie animali con classi. In realtà ci sono diversi problemi nel farlo, ma uno a cui non ho mai visto una soluzione è quando …
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 …
Diciamo che ho un'interfaccia FooInterfaceche ha la seguente firma: interface FooInterface { public function doSomething(SomethingInterface something); } E una classe concreta ConcreteFooche implementa tale interfaccia: class ConcreteFoo implements FooInterface { public function doSomething(SomethingInterface something) { } } Vorrei ConcreteFoo::doSomething()fare qualcosa di unico se viene passato un tipo speciale di SomethingInterfaceoggetto …
Ho letto che il principio di sostituzione di Liskov è violato se: I requisiti sono rafforzati, o Le post-condizioni sono indebolite Ma non riesco ancora a capire come questi due punti violerebbero il principio di sostituzione di Liskov. Qualcuno può spiegare con un esempio. In particolare, come una delle condizioni …
Un certo fallimento di OOP viene mostrato con una classe Square che eredita da Rectangle, dove Logicamente Square è una specializzazione di Rectangle e dovrebbe quindi ereditare da esso, ma tutto cade a pezzi quando si tenta di modificare la lunghezza o la larghezza di un quadrato. Esiste un termine …
Questa immagine è tratta dall'applicazione di modelli e schemi basati su dominio: con esempi in C # e .NET Questo è il diagramma di classe per il modello di stato in cui a SalesOrderpuò avere stati diversi durante la sua vita. Sono consentite solo determinate transizioni tra i diversi stati. …
LSP afferma che le classi dovrebbero essere sostituibili per le loro classi di base, il che significa che le classi derivate e di base dovrebbero essere semanticamente equivalenti. Ma LSP si applica anche alle classi che implementano un'interfaccia? In altre parole, se un metodo di interfaccia implementato da una classe …
Contesto: sto sviluppando un framework di messaggistica. Questo quadro consentirà: invio di messaggi tramite un bus di servizio iscriversi alle code sul bus dei messaggi sottoscrivendo argomenti su un bus messaggi Attualmente stiamo usando RabbitMQ, ma so che passeremo al Microsoft Service Bus (on Premise) nel prossimo futuro. Ho intenzione …
Dì che ho: interface Thing { GetThing(); } class FastThing : Thing { public int GetThing() { return 1; } } class SlowThing : Thing { public int GetThing() { return GetThingFromDatabase(); } } È una violazione del principio di sostituzione di Liskov?
Ispirato da questa risposta: Liskov principio di sostituzione richiede che Le condizioni preliminari non possono essere rafforzate in un sottotipo. Le postcondizioni non possono essere indebolite in un sottotipo. Gli invarianti del supertipo devono essere conservati in un sottotipo. Vincolo storico (la "regola della storia"). Gli oggetti sono considerati modificabili …
Esiste una classe LinkedList con funzioni come add_first (), add_last (), add_after (), remove_first (), remove_last () e remove () Ora esiste una classe Stack che fornisce funzionalità come push (), pop (), peek () o top () e per implementare questi metodi estende i metodi della classe LinkedList. È …
Avere l' CircleestensioneEllipse rompe il Principio della Sottostazione di Liskov , perché modifica una postcondizione: vale a dire, puoi impostare X e Y in modo indipendente per disegnare un'ellisse, ma X deve sempre essere uguale a Y per i cerchi. Ma il problema qui non è causato dal fatto che …
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.