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

bookAstrazione Nei Principi OOP

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 una specifica implementazione. 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 fondamentale, 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 siamo obbligati a 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, ci baseremo sull'astrazione chiamata Car. Per semplificare ulteriormente: Car è un modello su cui vengono create classi di auto specifiche.

Presta attenzione alla sintassi:

public abstract class className{ }.

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

public abstract returnValue methodName();

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

Analizziamo più da vicino cosa sia una classe astratta:

Nota che non è possibile 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. Prendendo l'esempio delle automobili, ogni automobile dovrebbe avere un modello, anno di produzione, velocità massima e colore. Dovrebbero anche essere in grado di muoversi e fermarsi. Questo è tutto; da qui, progetterai le tue classi specifiche basandoti su questo schema 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 sarà possibile 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 che metodi con implementazioni;
  4. Una classe che eredita da una classe astratta deve sovrascrivere tutti i metodi astratti;
  5. È possibile 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 comprendere 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 astratta Car. Si può notare che l'IDE suggerisce di implementare i metodi richiesti;

  • Seconda slide: Vengono sovrascritti i metodi necessari. Ad esempio, si specifica 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!

Riepilogo

L'astrazione è probabilmente il principio più complesso dell'OOP da comprendere, ed è molto probabile che in questo momento non sia tutto chiaro. Tuttavia, non pensare di essere l'unico. L'astrazione è un concetto che inizialmente risulta difficile da assimilare per la maggior parte degli sviluppatori. Con il tempo, si acquisirà una migliore comprensione su come lavorare efficacemente con l'astrazione e le classi astratte. L'astrazione è un principio fondamentale perché consente di rendere i 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

Suggested prompts:

Can you explain the difference between abstraction and encapsulation?

Can you give more real-world examples of abstraction in Java?

How do interfaces relate to abstraction in OOP?

Awesome!

Completion rate improved to 4.76

bookAstrazione Nei Principi OOP

Scorri per mostrare il menu

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 una specifica implementazione. 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 fondamentale, 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 siamo obbligati a 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, ci baseremo sull'astrazione chiamata Car. Per semplificare ulteriormente: Car è un modello su cui vengono create classi di auto specifiche.

Presta attenzione alla sintassi:

public abstract class className{ }.

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

public abstract returnValue methodName();

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

Analizziamo più da vicino cosa sia una classe astratta:

Nota che non è possibile 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. Prendendo l'esempio delle automobili, ogni automobile dovrebbe avere un modello, anno di produzione, velocità massima e colore. Dovrebbero anche essere in grado di muoversi e fermarsi. Questo è tutto; da qui, progetterai le tue classi specifiche basandoti su questo schema 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 sarà possibile 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 che metodi con implementazioni;
  4. Una classe che eredita da una classe astratta deve sovrascrivere tutti i metodi astratti;
  5. È possibile 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 comprendere 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 astratta Car. Si può notare che l'IDE suggerisce di implementare i metodi richiesti;

  • Seconda slide: Vengono sovrascritti i metodi necessari. Ad esempio, si specifica 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!

Riepilogo

L'astrazione è probabilmente il principio più complesso dell'OOP da comprendere, ed è molto probabile che in questo momento non sia tutto chiaro. Tuttavia, non pensare di essere l'unico. L'astrazione è un concetto che inizialmente risulta difficile da assimilare per la maggior parte degli sviluppatori. Con il tempo, si acquisirà una migliore comprensione su come lavorare efficacemente con l'astrazione e le classi astratte. L'astrazione è un principio fondamentale perché consente di rendere i 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