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.
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 …
La mia attuale comprensione dell'implementazione dell'ereditarietà è che si dovrebbe estendere una classe solo se è presente una relazione IS-A . Se la classe genitore può inoltre avere tipi figlio più specifici con funzionalità diverse ma condividerà elementi comuni astratti nel genitore. Sto mettendo in dubbio questa comprensione a causa …
È meglio usare List<string>nelle annotazioni dei tipi o StringListdoveStringList class StringList : List<String> { /* no further code!*/ } Mi sono imbattuto in molti di questi in Irony .
Di recente ho iniziato a guardare allo sviluppo di Android. Questo mi ha riportato nel mondo dello sviluppo del software Java. L'ultima volta che ho lavorato con Java, lo ammetto, non ho capito OOP quasi quanto (penso) lo faccio ora. Avendo usato principalmente C # nella mia carriera, noto una …
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, …
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 …
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 …
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 …
Se la mia classe è implementsun'interfaccia, allora posso dire che sto seguendo l'eredità? So che quando una classe è extendsun'altra, allora è eredità.
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 …
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 …
Mi chiedo cosa c'è di meglio in termini di buona progettazione di OOP, codice pulito, flessibilità ed evitare odori di codice in futuro. Situazione dell'immagine, in cui hai molti oggetti molto simili che devi rappresentare come classi. Queste classi sono prive di funzionalità specifiche, solo classi di dati e sono …
Durante una revisione del codice oggi, un mio collega ha detto qualcosa di interessante: prototypeè utile solo quando hai bisogno dell'eredità - e quando l'eredità è sempre una buona idea ? Ci ho pensato e mi sono reso conto che di solito uso l'ereditarietà per aggirare il codice che è …
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 …
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 …
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.