Programmazione a Oggetti Flashcards
Che cos’è la programmazione orientata agli oggetti (OOP)?
La programmazione a oggetti è un paradigma di programmazione che si basa sul concetto di “oggetti”, che sono istanze di classi. Questo approccio consente di organizzare il codice in modo modulare e di rappresentare concetti del mondo reale come entità distinte con proprietà (attributi) e comportamenti (metodi).
Quali sono i principi fondamentali della programmazione orientata agli oggetti?
Incapsulamento: L’incapsulamento è il concetto di nascondere i dettagli interni di un oggetto e permettere l’accesso solo attraverso metodi pubblici o interfaccia della classe. Questo protegge lo stato dell’oggetto e ne garantisce una modifica controllata e coerente.
Ereditarietà: L’ereditarietà è un concetto in cui una classe può ereditare attributi e metodi da un’altra classe chiamata classe genitore o superclasse. Questo consente la creazione di gerarchie di classi, dove le classi figlio o sottoclassi possono estendere o specializzare il comportamento della classe genitore.
Polimorfismo: Il polimorfismo è la capacità di oggetti di classi diverse di rispondere allo stesso messaggio o chiamata di metodo in modi diversi. Questo può avvenire attraverso il polimorfismo di inclusione (override di metodi) o polimorfismo di parametri (overloading di metodi).
Differenza tra classe e oggetto?
Una classe è un modello o un prototipo da cui vengono creati gli oggetti. Contiene definizioni per attributi e metodi che specificano il comportamento degli oggetti. Un oggetto, d’altra parte, è un’istanza di una classe, che ha uno stato specifico e può eseguire operazioni definite dai metodi della classe.
Qual è la differenza tra una classe astratta e un’interfaccia?
Una classe astratta è una classe che non può essere istanziata direttamente e può contenere metodi astratti, che devono essere implementati dalle classi figlio. Un’interfaccia è simile, ma può contenere solo firme di metodi, senza implementazioni. Le classi possono implementare più interfacce, ma ereditare solo da una classe astratta.
Cos’è il costruttore di una classe?
Un costruttore è un metodo speciale di una classe che viene chiamato automaticamente quando viene creato un nuovo oggetto di quella classe. È utilizzato per inizializzare lo stato dell’oggetto, assegnare valori agli attributi e eseguire altre operazioni necessarie all’inizializzazione.
Cosa sono i metodi virtuali e sovrascritti?
Metodi Virtuali:Un metodo virtuale è un metodo definito in una classe di base che può essere sovrascritto nelle classi derivate. Questo permette alle classi derivate di fornire una propria implementazione del metodo, se necessario.
Metodi Sovrascritti: Un metodo sovrascritto è una versione di un metodo virtuale nella classe derivata che rimpiazza l’implementazione del metodo nella classe base. Quando viene chiamato il metodo attraverso un riferimento alla classe base, verrà eseguita l’implementazione nella classe derivata se presente.
In sostanza, l’utilizzo di metodi virtuali e sovrascritti consente una flessibilità nella progettazione delle classi, consentendo alle classi derivate di estendere o modificare il comportamento dei metodi della classe base.
Descrivi il concetto di aggregazione e composizione.
L’aggregazione e la composizione sono due tipi di relazioni tra oggetti in programmazione orientata agli oggetti:
Aggregazione:Un oggetto “contiene” altri oggetti come parte di sé stesso, ma gli oggetti coinvolti possono esistere indipendentemente.
Composizione: Un oggetto “è composto da” altri oggetti e non possono esistere indipendentemente dall’oggetto principale.
In sostanza, l’aggregazione è una relazione più debole, mentre la composizione è una relazione più forte.
Cos’è la serializzazione di oggetti?
La serializzazione di oggetti è il processo di conversione di un oggetto in un formato che può essere facilmente memorizzato o trasmesso e successivamente ricostruito. Questo è utile per salvare gli stati degli oggetti su file, trasferire oggetti attraverso la rete o memorizzarli in database. In molti linguaggi di programmazione, come Java o C#, questo viene fatto implementando l’interfaccia Serializable