Domande taggate «inheritance»

L'ereditarietà è un modo per riutilizzare il codice di oggetti esistenti o per stabilire un sottotipo da un oggetto esistente o entrambi, a seconda del supporto del linguaggio di programmazione.

5
In che modo definire che un metodo può essere ignorato è un impegno più forte rispetto alla definizione che un metodo può essere chiamato?
Da: http://www.artima.com/lejava/articles/designprinciples4.html Erich Gamma: Penso ancora che sia vero anche dopo dieci anni. L'ereditarietà è un modo interessante per cambiare comportamento. Ma sappiamo che è fragile, perché la sottoclasse può facilmente fare ipotesi sul contesto in cui viene chiamato un metodo che ignora. Esiste un accoppiamento stretto tra la classe …




5
I mixin Python sono un anti-pattern?
Sono pienamente consapevole del fatto che pylinte altri strumenti di analisi statica non sono onniscienti, e talvolta i loro consigli devono essere disobbediti. (Questo vale per varie classi di messaggi, non solo per conventions.) Se ho lezioni simili class related_methods(): def a_method(self): self.stack.function(self.my_var) class more_methods(): def b_method(self): self.otherfunc() class implement_methods(related_methods, …

10
Va bene avere oggetti che si lanciano da soli, anche se inquinano l'API delle loro sottoclassi?
Ho una classe di base, Base. Ha due sottoclassi Sub1e Sub2. Ogni sottoclasse ha alcuni metodi aggiuntivi. Ad esempio, Sub1ha Sandwich makeASandwich(Ingredients... ingredients)e Sub2ha boolean contactAliens(Frequency onFrequency). Poiché questi metodi adottano parametri diversi e fanno cose completamente diverse, sono completamente incompatibili e non posso semplicemente usare il polimorfismo per risolvere …

7
Perché i costruttori non sono ereditati?
Sono confuso su quali potrebbero essere i problemi se un costruttore fosse ereditato da una classe base. Cpp Primer Plus dice: I costruttori sono diversi dagli altri metodi di classe in quanto creano nuovi oggetti, mentre altri metodi sono invocati da oggetti esistenti . Questo è uno dei motivi per …
33 c++  inheritance 

10
"Parent x = new Child ();" invece di "Child x = new Child ();" è una cattiva pratica se possiamo usare quest'ultimo?
Ad esempio, avevo visto alcuni codici che creano un frammento come questo: Fragment myFragment=new MyFragment(); che dichiara una variabile come frammento anziché MyFragment, che MyFragment è una classe figlio di frammento. Non sono soddisfatto di questa linea di codici perché penso che questo codice dovrebbe essere: MyFragment myFragment=new MyFragment(); che …


7
Devo testare i metodi ereditati?
Supponiamo di avere un manager di classe derivato da un dipendente di classe base e che il dipendente abbia un metodo getEmail () ereditato da Manager . Devo verificare che il comportamento del metodo getEmail () di un manager è in realtà lo stesso di quello di un dipendente? Al …





3
In che modo il rafforzamento delle precondizioni e l'indebolimento delle postcondizioni violano il principio di sostituzione di Liskov?
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 …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.