Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Principi OOP: Astrazione | Oop
Java OOP
course content

Contenuti del Corso

Java OOP

Java OOP

1. Come Lavorare con l'IDE?
2. Oop
3. Interfaccia

book
Principi OOP: Astrazione

Astrazione

Siamo arrivati all'ultimo, ma molto importante, principio della OOP: Astrazione. La parola "astrazione" suona piuttosto astratta e, in breve, questo principio ci dice che dovremmo dipendere dall'astrazione piuttosto che da un'implementazione specifica. Tuttavia, questo potrebbe sembrare complesso ora. Iniziamo guardando la definizione:

Ad esempio, abbiamo una classe chiamata Person, e molte classi diverse derivano da essa. Person possiede vari campi e metodi comuni a tutte le classi. Tuttavia, quando abbiamo una classe chiamata BasketballPlayer,, la caratteristica height diventa cruciale, mentre per una classe come Driver, height è irrilevante e non importante. È qui che entra in gioco l'astrazione. Ereditando da un'astrazione, possiamo rendere il parametro height opzionale, così non dobbiamo utilizzarlo dove non è necessario.

Potrebbe sembrare complesso, quindi passiamo a un esempio:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

La classe Car non rappresenta qualcosa di specifico. Non esiste semplicemente una Car; esistono berline, camion, trattori. Pertanto, dipenderemo dall'astrazione chiamata Car. Per semplificare ulteriormente: Car è un modello su cui creiamo classi di auto specifiche.

Presta attenzione alla sintassi:

Questa è la sintassi per dichiarare una classe astratta. Nota anche la sintassi per dichiarare un metodo astratto:

Un metodo astratto non ha un corpo; questa è la sua caratteristica principale. Le sottoclassi di una classe astratta sovrascriveranno questo metodo astratto per definire la propria implementazione, utilizzando il polimorfismo.

Analizziamo più da vicino cosa sia una classe astratta:

Nota che non possiamo creare un oggetto di una classe astratta; ciò genererà un errore:

Le classi astratte ci liberano dal trattare solo con "oggetti"; ci forniscono uno stato di base e un comportamento di base. Prendendo l'esempio delle auto, ogni auto dovrebbe avere un modello, anno di produzione, velocità massima e colore. Dovrebbero anche poter muoversi e fermarsi. Questo è tutto; da qui, progetterai le tue classi specifiche basandoti su questo modello astratto.

Regole per la creazione di una classe astratta

  1. Una classe astratta è una classe che contiene almeno un metodo astratto. Puoi creare una classe astratta senza alcun metodo astratto, ma in tal caso non avrebbe uno scopo. Non potrai istanziare oggetti di una classe astratta;

  2. I metodi astratti possono esistere solo all'interno di una classe astratta; non puoi creare metodi astratti al di fuori di una classe astratta;

  3. I metodi all'interno di una classe astratta possono essere sia metodi astratti sia metodi con implementazione;

  4. Una classe che eredita da una classe astratta deve sovrascrivere tutti i metodi astratti;

  5. Puoi ereditare da un massimo di una classe (astratta o non astratta);

  6. Una classe astratta dovrebbe rappresentare le proprietà e i comportamenti comuni delle sue classi derivate. Approfondiremo questo aspetto quando studieremo i principi SOLID.

Consideriamo un esempio per capire come le sottoclassi dovrebbero sovrascrivere i metodi astratti ereditando da una classe astratta, utilizzando l'esempio della classe figlia Truck:

Ecco il codice dallo screenshot, riscritto per una migliore leggibilità e chiarezza:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Analizziamo più da vicino quanto scritto sopra nel dettaglio:

  • Prima slide: Viene creata una sottoclasse Truck che eredita dalla classe astrattaCar. Si può notare che l'IDE suggerisce di implementare i metodi richiesti;

  • Seconda slide: Vengono sovrascritti i metodi necessari. Ad esempio, si indica che il Truck ha iniziato a muoversi e poi si è fermato;

  • Terza slide: Si crea un oggetto nel metodo main. Prestare attenzione alla sintassi utilizzata: Car name = new Truck();. Si inizia a creare l'oggetto tramite astrazione e si termina con un'implementazione specifica. Questo si chiama composizione. Successivamente si assegnano i valori ai campi secondo necessità e si richiamano i metodi sovrascritti.

Voilà! Se tutto è chiaro, hai appreso come utilizzare una classe astratta!

Sommario

L'astrazione è probabilmente il principio più difficile da comprendere della OOP, ed è molto probabile che tu non abbia ancora afferrato tutto in questo momento. Ma non pensare di essere solo in questo. L'astrazione è un concetto che inizialmente risulta difficile da comprendere per la maggior parte degli sviluppatori. Col tempo, capirai meglio come lavorare efficacemente con l'astrazione e le classi astratte. L'astrazione è un principio cruciale perché ci permette di rendere i nostri programmi estensibili e altamente flessibili.

1. Che cos'è l'astrazione nella Programmazione Orientata agli Oggetti?

2. Quali delle seguenti affermazioni sono vere riguardo l'astrazione?

3. Qual è lo scopo di una classe astratta in Java?

4. In che modo l'astrazione contribuisce alla manutenibilità del codice?

question mark

Che cos'è l'astrazione nella Programmazione Orientata agli Oggetti?

Select the correct answer

question mark

Quali delle seguenti affermazioni sono vere riguardo l'astrazione?

Select the correct answer

question mark

Qual è lo scopo di una classe astratta in Java?

Select the correct answer

question mark

In che modo l'astrazione contribuisce alla manutenibilità del codice?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

course content

Contenuti del Corso

Java OOP

Java OOP

1. Come Lavorare con l'IDE?
2. Oop
3. Interfaccia

book
Principi OOP: Astrazione

Astrazione

Siamo arrivati all'ultimo, ma molto importante, principio della OOP: Astrazione. La parola "astrazione" suona piuttosto astratta e, in breve, questo principio ci dice che dovremmo dipendere dall'astrazione piuttosto che da un'implementazione specifica. Tuttavia, questo potrebbe sembrare complesso ora. Iniziamo guardando la definizione:

Ad esempio, abbiamo una classe chiamata Person, e molte classi diverse derivano da essa. Person possiede vari campi e metodi comuni a tutte le classi. Tuttavia, quando abbiamo una classe chiamata BasketballPlayer,, la caratteristica height diventa cruciale, mentre per una classe come Driver, height è irrilevante e non importante. È qui che entra in gioco l'astrazione. Ereditando da un'astrazione, possiamo rendere il parametro height opzionale, così non dobbiamo utilizzarlo dove non è necessario.

Potrebbe sembrare complesso, quindi passiamo a un esempio:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

La classe Car non rappresenta qualcosa di specifico. Non esiste semplicemente una Car; esistono berline, camion, trattori. Pertanto, dipenderemo dall'astrazione chiamata Car. Per semplificare ulteriormente: Car è un modello su cui creiamo classi di auto specifiche.

Presta attenzione alla sintassi:

Questa è la sintassi per dichiarare una classe astratta. Nota anche la sintassi per dichiarare un metodo astratto:

Un metodo astratto non ha un corpo; questa è la sua caratteristica principale. Le sottoclassi di una classe astratta sovrascriveranno questo metodo astratto per definire la propria implementazione, utilizzando il polimorfismo.

Analizziamo più da vicino cosa sia una classe astratta:

Nota che non possiamo creare un oggetto di una classe astratta; ciò genererà un errore:

Le classi astratte ci liberano dal trattare solo con "oggetti"; ci forniscono uno stato di base e un comportamento di base. Prendendo l'esempio delle auto, ogni auto dovrebbe avere un modello, anno di produzione, velocità massima e colore. Dovrebbero anche poter muoversi e fermarsi. Questo è tutto; da qui, progetterai le tue classi specifiche basandoti su questo modello astratto.

Regole per la creazione di una classe astratta

  1. Una classe astratta è una classe che contiene almeno un metodo astratto. Puoi creare una classe astratta senza alcun metodo astratto, ma in tal caso non avrebbe uno scopo. Non potrai istanziare oggetti di una classe astratta;

  2. I metodi astratti possono esistere solo all'interno di una classe astratta; non puoi creare metodi astratti al di fuori di una classe astratta;

  3. I metodi all'interno di una classe astratta possono essere sia metodi astratti sia metodi con implementazione;

  4. Una classe che eredita da una classe astratta deve sovrascrivere tutti i metodi astratti;

  5. Puoi ereditare da un massimo di una classe (astratta o non astratta);

  6. Una classe astratta dovrebbe rappresentare le proprietà e i comportamenti comuni delle sue classi derivate. Approfondiremo questo aspetto quando studieremo i principi SOLID.

Consideriamo un esempio per capire come le sottoclassi dovrebbero sovrascrivere i metodi astratti ereditando da una classe astratta, utilizzando l'esempio della classe figlia Truck:

Ecco il codice dallo screenshot, riscritto per una migliore leggibilità e chiarezza:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Analizziamo più da vicino quanto scritto sopra nel dettaglio:

  • Prima slide: Viene creata una sottoclasse Truck che eredita dalla classe astrattaCar. Si può notare che l'IDE suggerisce di implementare i metodi richiesti;

  • Seconda slide: Vengono sovrascritti i metodi necessari. Ad esempio, si indica che il Truck ha iniziato a muoversi e poi si è fermato;

  • Terza slide: Si crea un oggetto nel metodo main. Prestare attenzione alla sintassi utilizzata: Car name = new Truck();. Si inizia a creare l'oggetto tramite astrazione e si termina con un'implementazione specifica. Questo si chiama composizione. Successivamente si assegnano i valori ai campi secondo necessità e si richiamano i metodi sovrascritti.

Voilà! Se tutto è chiaro, hai appreso come utilizzare una classe astratta!

Sommario

L'astrazione è probabilmente il principio più difficile da comprendere della OOP, ed è molto probabile che tu non abbia ancora afferrato tutto in questo momento. Ma non pensare di essere solo in questo. L'astrazione è un concetto che inizialmente risulta difficile da comprendere per la maggior parte degli sviluppatori. Col tempo, capirai meglio come lavorare efficacemente con l'astrazione e le classi astratte. L'astrazione è un principio cruciale perché ci permette di rendere i nostri programmi estensibili e altamente flessibili.

1. Che cos'è l'astrazione nella Programmazione Orientata agli Oggetti?

2. Quali delle seguenti affermazioni sono vere riguardo l'astrazione?

3. Qual è lo scopo di una classe astratta in Java?

4. In che modo l'astrazione contribuisce alla manutenibilità del codice?

question mark

Che cos'è l'astrazione nella Programmazione Orientata agli Oggetti?

Select the correct answer

question mark

Quali delle seguenti affermazioni sono vere riguardo l'astrazione?

Select the correct answer

question mark

Qual è lo scopo di una classe astratta in Java?

Select the correct answer

question mark

In che modo l'astrazione contribuisce alla manutenibilità del codice?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7
some-alt