Scheda: Ereditarietà e polimorfismo

Ripasso sui concetti di ereditarietà e polimorfismo nella programmazione orientata agli oggetti, utile per la preparazione all'esame di maturità.

FalconSofia2·32 schede·32 domande
maturitàcomputer_scienceprogramming
0
Lo so
1 / 32
0
Sto imparando
Fronte

Ereditarietà

Tocca per girare
Retro

Meccanismo di creazione di classi derivate da una classe base, permettendo il riutilizzo del codice.

Tocca per girare
Lo so
Sto imparando

Quiz(32 domande)

Domanda 1 di 32

1. Qual è il principale vantaggio dell'ereditarietà nel design della programmazione OOP?

Termini in questo set(32)

Concetti Fondamentali(16)

Ereditarietà

Meccanismo di creazione di classi derivate da una classe base, permettendo il riutilizzo del codice.

Polimorfismo

Capacità di un oggetto di assumere molte forme. Esempio: metodi sovrascritti.

Qual è la funzione di 'super'?

'super' permette di accedere ai metodi della classe base dalla classe derivata.

Vero o falso: Le classi astratte possono essere istanziate.

Falso. Le classi astratte non possono essere istanziate direttamente.

Ereditarietà semplice vs multipla

- Semplice: una sola classe base. - Multipla: più classi base.

Completare: Il polimorfismo si ottiene tramite __________.

Sovraccarico di metodo o sovrascrittura di metodo.

Qual è il principio della sostituzione di Liskov?

Le classi derivate devono poter sostituire le classi base senza alterare il comportamento atteso.

Vero o falso: L'ereditarietà può causare dipendenze tra classi.

Vero. L'ereditarietà può rendere il codice più complesso e difficile da mantenere.

Esempio di metodo sovrascritto

class Animale { void parla() { System.out.println("Suono"); } } class Cane extends Animale { void parla() { System.out.println("Bau"); } }

Cos'è una classe base?

Classe da cui si derivano altre classi, fornendo un insieme di attributi e metodi comuni.

Polimorfismo statico

Si verifica tramite il sovraccarico di metodo, determinato durante la compilazione.

Qual è un vantaggio dell'ereditarietà?

Facilita il riutilizzo del codice e la creazione di strutture gerarchiche.

Cos'è il metodo 'override'?

Ridistribuzione di un metodo della classe base nella classe derivata per cambiarne il comportamento.

Ereditarietà e incapsulamento

L'ereditarietà permette l'accesso a membri protetti; l'incapsulamento nasconde i dettagli interni.

Qual è la differenza tra override e overload?

Override modifica un metodo esistente; overload crea metodi con lo stesso nome ma firme diverse.

Completare: Il polimorfismo è essenziale per __________.

Implementare design patterns e per il principio di progettazione DRY (Don't Repeat Yourself).

Implementazione e Utilizzo(16)

Cosa significa ereditarietà in programmazione?

L'ereditarietà è un meccanismo che consente a una classe di ereditare proprietà e metodi da un'altra classe.

Polimorfismo: definizione.

Il polimorfismo consente a oggetti di classi diverse di essere trattati come oggetti della stessa classe base.

Ereditarietà vs Composizione.

- Ereditarietà: relazioni 'è un'. - Composizione: relazioni 'ha un'.

Esempio di classe base e derivata.

Classe base: `Animale`. Classe derivata: `Cane` che eredita da `Animale`.

Cosa fa `super()` in Python?

`super()` richiama metodi della classe base, utile in caso di overriding.

Polimorfismo: esempio pratico.

Funzione `stampa(Animale a)` può ricevere `Cane`, `Gatto`, ecc., comportandosi in modo diverso.

La parola chiave `extends` in Java.

`extends` è usata per indicare che una classe deriva da un'altra classe.

Cosa restituisce un metodo `toString()`?

Restituisce una rappresentazione testuale dell'oggetto, utile per il debugging.

Vero o falso: un'interfaccia può avere implementazioni.

Falso. Un'interfaccia può avere solo dichiarazioni di metodi, non implementazioni.

Quando usare il polimorfismo?

Quando diverse classi devono condividere la stessa interfaccia, ma implementare comportamenti diversi.

Esempio di overriding in Java.

Classe `Animale`: `void faiSuono() {}`. Classe `Cane`: `void faiSuono() { System.out.println("Bau"); }`.

Qual è il vantaggio dell'ereditarietà?

Riutilizzo del codice e struttura gerarchica delle classi.

Cosa rappresenta un'astrazione?

Un concetto che rappresenta le caratteristiche comuni delle classi, permettendo la creazione di interfacce.

Polimorfismo statico vs polimorfismo dinamico.

- Statico: risolto a compile-time (overloading). - Dinamico: risolto a runtime (overriding).

Esempio di interfaccia in C#.

Interfaccia `IAnimale` con metodo `Voce()`. Classi `Cane` e `Gatto` implementano `IAnimale`.

Cosa fa il metodo `clone()`?

Crea una copia dell'oggetto corrente, utile per il polimorfismo.

Domande in questo set(32)

1. Qual è il principale vantaggio dell'ereditarietà nel design della programmazione OOP?

A.Riutilizzo del codice
B.Maggiore complessità
C.Diminuzione della leggibilità
D.Costruzione di classi astratte

2. Quale affermazione descrive meglio l'ereditarietà in programmazione?

A.Permette a una classe di ereditare proprietà e metodi da un'altra classe.
B.Consente la creazione di nuovi oggetti.
C.È un modo per definire variabili globali.
D.Si riferisce solo a metodi statici.

3. In che modo il polimorfismo consente la flessibilità in un programma?

A.Limitando l'uso delle classi
B.Permettendo l'uso di metodi con nomi diversi
C.Consentendo a una classe di implementare più interfacce
D.Permettendo a classi derivate di sostituire classi base

4. Cosa si intende per polimorfismo in programmazione?

A.La capacità di un oggetto di assumere diverse forme.
B.Un tipo di errore di runtime.
C.Un metodo per ottimizzare la memoria.
D.Una forma di variabile globale.

5. Qual è il risultato di usare 'super' in una classe derivata?

A.Richiamare un metodo della classe derivata
B.Accedere ai membri privati della classe base
C.Richiamare un metodo della classe base
D.Creare una nuova classe

6. Qual è una differenza fondamentale tra ereditarietà e composizione?

A.L'ereditarietà implica una relazione 'è un', mentre la composizione implica 'ha un'.
B.La composizione è più complessa dell'ereditarietà.
C.L'ereditarietà non consente il riutilizzo del codice.
D.La composizione deve sempre essere usata con le interfacce.

7. Le classi astratte possono essere utilizzate per creare istanze dirette?

A.Sì, senza limitazioni
B.No, non possono essere istanziate
C.Solo se contengono metodi concreti
D.Solo in linguaggi specifici

8. Quale delle seguenti opzioni rappresenta un esempio di classe base e derivata?

A.Classe base: `Veicolo`, Classe derivata: `Auto`.
B.Classe base: `Auto`, Classe derivata: `Veicolo`.
C.Classe base: `Animale`, Classe derivata: `Insegnante`.
D.Classe base: `Casella`, Classe derivata: `Contenitore`.

9. Qual è la differenza principale tra eredità semplice e multipla?

A.Semplice ha più classi base
B.Multipla ha una sola classe base
C.Semplice deriva da una sola classe base
D.Multipla non esiste in OOP

10. Cosa fa il metodo `super()` in Python?

A.Richiama metodi della classe base.
B.Crea una nuova istanza di un oggetto.
C.Esegue un ciclo su una lista.
D.Rimuove un attributo da un oggetto.

11. Il polimorfismo può essere implementato tramite quale delle seguenti opzioni?

A.Sovraccarico di metodo
B.Creazione di classi virtuali
C.Inizializzazione in un costruttore
D.Utilizzo di interfacce non implementate

12. Qual è un esempio pratico di polimorfismo?

A.Una funzione che accetta oggetti di classi diverse come argomenti.
B.Un ciclo che conta numeri.
C.Un metodo che restituisce un numero intero.
D.Una classe che non ha metodi.

13. Quale affermazione descrive meglio il principio di sostituzione di Liskov?

A.Le classi derivate devono mantenere lo stato della classe base
B.Le classi derivate devono sostituire la classe base senza compromettere il comportamento
C.Le classi derivate possono alterare il comportamento della classe base
D.Le classi derivate sono sempre più complesse delle classi base

14. Quale parola chiave viene usata in Java per indicare l'ereditarietà?

A.extends
B.inherits
C.implements
D.inheritsFrom

15. Qual è un effetto negativo dell'ereditarietà?

A.Miglioramento della modularità
B.Aumento della complessità del codice
C.Diminuzione della riusabilità del codice
D.Miglioramento delle prestazioni

16. Cosa restituisce tipicamente un metodo `toString()` in un oggetto?

A.Una rappresentazione testuale dell'oggetto.
B.Il valore di una variabile interna.
C.Un errore se non è implementato.
D.La classe dell'oggetto.

17. Cosa comporta il metodo 'override'?

A.Creazione di un nuovo metodo
B.Modifica del comportamento di un metodo ereditato
C.Sostituzione di un metodo astratto
D.Eliminazione di un metodo dalla classe base

18. Vero o falso: Un'interfaccia può avere metodi implementati.

A.Falso.
B.Vero.
C.Solo in C#.
D.Solo in Java.

19. Qual è la caratteristica principale delle classi base?

A.Fornire solo metodi statici
B.Essere sempre astratte
C.Fornire attributi e metodi comuni per le classi derivate
D.Non poter essere estese

20. Quando è appropriato utilizzare il polimorfismo?

A.Quando diverse classi condividono la stessa interfaccia ma implementano comportamenti diversi.
B.Quando si vogliono evitare le classi astratte.
C.Quando si crea un'interfaccia senza metodi.
D.Quando non si desidera utilizzare l'ereditarietà.

21. Qual è la definizione di polimorfismo statico?

A.Si verifica tramite l'override
B.Si verifica durante l'esecuzione
C.Si verifica tramite il sovraccarico di metodo
D.Non esiste nel linguaggio OOP

22. Quale delle seguenti affermazioni NON è vera riguardo all'ereditarietà?

A.L'ereditarietà permette di creare una gerarchia di classi.
B.Una classe derivata può accedere solo ai metodi pubblici della classe base.
C.Tutte le classi Java ereditano automaticamente da una classe base chiamata Object.
D.L'ereditarietà consente di avere più classi base per una classe derivata.

23. Cosa implica l'incapsulamento nell'ereditarietà?

A.Accesso illimitato ai membri della classe base
B.Protezione dei membri della classe base
C.Rimozione di classi derivate
D.Accesso solo ai membri pubblici

24. Quale descrizione si applica al polimorfismo statico?

A.Viene risolto durante la compilazione.
B.Permette di trattare oggetti di classi diverse come se fossero della stessa classe.
C.Richiede l'uso di interfacce e classi astratte.
D.Si verifica solo con l'overriding dei metodi.

25. Qual è la principale differenza tra 'override' e 'overload'?

A.Entrambi cambiano il nome di un metodo
B.'Override' cambia un metodo esistente, 'overload' crea metodi con la stessa firma
C.'Override' cambia un metodo esistente, 'overload' crea metodi con firme diverse
D.Nessuna differenza

26. Quale scenario rappresenta un esempio di overriding in una classe derivata?

A.Definire un nuovo metodo con lo stesso nome nella classe derivata.
B.Creare un metodo nella classe base con una visibilità diversa.
C.Modificare un metodo esistente nella classe derivata mantenendo la stessa firma.
D.Utilizzare un metodo statico nella classe derivata.

27. Completare: Il polimorfismo è fondamentale per __________.

A.Aumentare la complessità del codice
B.Implementare design patterns
C.Eliminare l'ereditarietà
D.Usare solo metodi statici

28. Qual è la principale funzione delle interfacce in programmazione orientata agli oggetti?

A.Fornire implementazioni parziali di metodi.
B.Definire contratti che le classi devono seguire.
C.Consentire l'ereditarietà multipla.
D.Permettere di accedere ai membri privati di una classe.

29. Quale delle seguenti affermazioni è falsa riguardo l'ereditarietà?

A.Permette di creare una gerarchia di classi
B.Facilita il riutilizzo del codice
C.Può rendere il codice più complesso
D.Non consente l'uso di interfacce

30. Quale delle seguenti affermazioni descrive correttamente l'overloading dei metodi?

A.Permette di avere metodi con lo stesso nome e la stessa firma.
B.Richiede l'uso di classi astratte.
C.Si verifica quando due metodi hanno lo stesso nome ma parametri diversi.
D.È un tipo di polimorfismo dinamico.

31. Quale delle seguenti affermazioni riguardo al polimorfismo è corretta?

A.Il polimorfismo consente di utilizzare lo stesso metodo su oggetti di classi diverse.
B.Il polimorfismo è un concetto che si applica solo alle classi astratte.
C.Il polimorfismo richiede sempre l'uso di interfacce.
D.Il polimorfismo è limitato alle classi derivate che non sovrascrivono metodi.

32. Quando si utilizza il termine 'astrazione' in programmazione orientata agli oggetti?

A.Quando una classe non ha metodi.
B.Quando si isolano le caratteristiche comuni delle classi in interfacce o classi astratte.
C.Quando si implementano metodi concreti in una classe.
D.Quando si utilizza la parola chiave 'static'.

Set correlati

Crea il tuo set di studio

Carica un PDF, incolla le tue note o descrivi un argomento – l'IA genera schede, quiz e altro in pochi secondi.