Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 12 di 50
  • livello avanzato
Indice lezioni

Le classi astratte

Un'analisi completa su cosa sono le classi astratte (abstract class) in PHP, come si utilizzano, come evitare errori nel loro impiego, come estenderle e qual'è il loro ruolo nel paradigma orientato agli oggetti in PHP.
Un'analisi completa su cosa sono le classi astratte (abstract class) in PHP, come si utilizzano, come evitare errori nel loro impiego, come estenderle e qual'è il loro ruolo nel paradigma orientato agli oggetti in PHP.
Link copiato negli appunti

Nelle ultime lezioni proposte da questa trattazione abbiamo analizzato i concetti basilari dell’ereditarietà in PHP. In questo capitolo tratteremo invece delle classi astratte, le quali ricoprono un ruolo fondamentale nella programmazione orientata agli oggetti (OOP).

Cosa sono le classi astratte (abstract class

Una classe astratta è definibile come un particolare tipo di classe la quale non può essere istanziata

Possiamo considerare una classe astratta come una superclasse, in cui è possibile aggiungere uno o più metodi astratti

Per questo motivo possiamo considerare questa tipologia di classe come una "base di partenza" o "modello" per la creazione di classi.

abstract
<?php
// definizione della classe astratta Person
// una classe astratta può contenere metodi normali e metodi astratti.
abstract class Person {
	private $name = "";
	private $lastname = "";
	public function setName($name, $lastname) {
		$this->name = $name;
		$this->lastname = $lastname;
	}
	public function getName() {
		return "$this->name $this->lastname";
	}
	abstract public function viewHello();
}
?>

Nell'esempio, abbiamo dichiarato la classe astratta Person abstract $name $lastname setName getName

La classe Person viewHello

Come detto in precedenza, una classe astratta non può essere istanziata. In altre parole, non è consentito creare una nuova istanza di una classe astratta. Infatti, provando ad istanziare la classe Person

<?php
...
$p = new Person('Giuseppe','Rossi');
...
?>

dove viene generato un errore di runtime interrompendo l'esecuzione dello script:

Fatal error: Cannot instantiate abstract class Person in [...]

Ora potremo creare la nostra classe Employees Person

<?php
// definizione della sottoclasse Employees
class Employees extends Person {
	public function viewHello() {
		echo "Hello " . $this->getName()."<br>";;
	}
	function setId($id_rif) {
		$this->id_rif = $id_rif;
	}
}
// oltre a chiamare setId() è possibile richiamare getName() e setName(),
// dal momento che questi metodi sono ereditati dalla classe astratta Person
$employee = new Employees();
$employee->setName( "Giuseppe", "Rossi" );
$employee->viewHello();
$employee->setId(7);
?>

Come possiamo vedere, la nostra classe, implementa il metodo astratto viewHello Person setId()

Hello Giuseppe Rossi

Dichiarando Employee viewHello()

Fatal error: Class Employees contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Person::viewHello) in  [...]

Conclusioni

Con questa lezione abbiamo descritto le modalità con cui utilizzare le classi astratte per capirne l'importanza. Nella prossima lezione verranno descritte delle ulteriori astrazioni delle classi astratte: le interfacce.

Ti consigliamo anche