Esercizi Interfacce PHP
Codegrind Team•Jul 22 2023
Ecco degli esercizi semplici con soluzione per praticare le basi delle interfacce e programmazione ad oggetti in PHP.
Esercizio 1
Creare un'interfaccia "FormaGeometrica" con un metodo "calcolaArea()". Creare una classe "Quadrato" che implementa l'interfaccia e implementa il metodo "calcolaArea()" per calcolare l'area del quadrato.
<?php
interface FormaGeometrica {
public function calcolaArea();
}
class Quadrato implements FormaGeometrica {
private $lato;
public function __construct($lato) {
$this->lato = $lato;
}
public function calcolaArea() {
return $this->lato * $this->lato;
}
}
$quadrato = new Quadrato(5);
echo "Area del quadrato: " . $quadrato->calcolaArea();
?>
Esercizio 2
Creare un'interfaccia "Suonabile" con un metodo "suona()". Creare una classe "Chitarra" che implementa l'interfaccia e implementa il metodo "suona()" per far suonare la chitarra.
<?php
interface Suonabile {
public function suona();
}
class Chitarra implements Suonabile {
public function suona() {
return "La chitarra sta suonando!";
}
}
$chitarra = new Chitarra();
echo $chitarra->suona();
?>
Esercizio 3
Creare un'interfaccia "Volante" con un metodo "volare()". Creare una classe "Aereo" che implementa l'interfaccia e implementa il metodo "volare()" per far volare l'aereo.
<?php
interface Volante {
public function volare();
}
class Aereo implements Volante {
public function volare() {
return "L'aereo sta volando!";
}
}
$aereo = new Aereo();
echo $aereo->volare();
?>
Esercizio 4
Creare un'interfaccia "Animale" con un metodo "emettiVerso()". Creare una classe "Cane" che implementa l'interfaccia e implementa il metodo "emettiVerso()" per far abbaiare il cane.
<?php
interface Animale {
public function emettiVerso();
}
class Cane implements Animale {
public function emettiVerso() {
return "Woof woof!";
}
}
$cane = new Cane();
echo $cane->emettiVerso();
?>
Esercizio 5
Creare un'interfaccia "Logger" con un metodo "log($messaggio)". Creare una classe "FileLogger" che implementa l'interfaccia e implementa il metodo "log($messaggio)" per scrivere il messaggio su un file di log.
<?php
interface Logger {
public function log($messaggio);
}
class FileLogger implements Logger {
public function log($messaggio) {
$file = fopen("log.txt", "a");
fwrite($file, $messaggio . "\n");
fclose($file);
}
}
$logger = new FileLogger();
$logger->log("Messaggio di log");
?>
Esercizio 6
Creare un'interfaccia "SchedaAudio" con un metodo "riproduciAudio()". Creare una classe "SchedaAudioUSB" che implementa l'interfaccia e implementa il metodo "riproduciAudio()" per riprodurre l'audio attraverso una scheda audio USB.
<?php
interface SchedaAudio {
public function riproduciAudio();
}
class SchedaAudioUSB implements SchedaAudio {
public function riproduciAudio() {
return "L'audio viene riprodotto attraverso la scheda audio USB.";
}
}
$schedaAudio = new SchedaAudioUSB();
echo $schedaAudio->riproduciAudio();
?>
Esercizio 7
Creare un'interfaccia "Database" con metodi "connetti()", "eseguiQuery($query)" e "chiudiConnessione()". Creare una classe "MySQLDatabase" che implementa l'interfaccia e implementa i metodi per la connessione, l'esecuzione delle query e la chiusura della connessione a un database MySQL.
<?php
interface Database {
public function connetti();
public function eseguiQuery($query);
public function chiudiConnessione();
}
class MySQLDatabase implements Database {
public function connetti() {
// Connessione al database MySQL
}
public function eseguiQuery($query) {
// Esecuzione della query
}
public function chiudiConnessione() {
// Chiusura della connessione al database
}
}
$database = new MySQLDatabase();
$database->connetti();
$database->eseguiQuery("SELECT * FROM utenti");
$database->chiudiConnessione();
?>
Esercizio 8
Creare un'interfaccia "Autenticabile" con un metodo "autentica($username, $password)". Creare una classe "Utente" che implementa l'interfaccia e implementa il metodo "autentica($username, $password)" per autenticare un utente.
<?php
interface Autenticabile {
public function autentica($username, $password);
}
class Utente implements Autenticabile {
public function autentica($username, $password) {
// Logica di autenticazione
}
}
$utente = new Utente();
$utente->autentica("admin", "password");
?>
Esercizio 9
Creare un'interfaccia "Serializable" con metodi "serialize()" e "unserialize($data)". Creare una classe "Oggetto" che implementa l'interfaccia e implementa i metodi per la serializzazione e la deserializzazione dell'oggetto.
<?php
interface Serializable {
public function serialize();
public function unserialize($data);
}
class Oggetto implements Serializable {
public function serialize() {
// Serializzazione dell'oggetto
}
public function unserialize($data) {
// Deserializzazione dei dati
}
}
$oggetto = new Oggetto();
$serializedData = $oggetto->serialize();
$oggetto->unserialize($serializedData);
?>
Esercizio 10
Creare un'interfaccia "Pagabile" con un metodo "calcolaTotale()". Creare una classe "Ordine" che implementa l'interfaccia e implementa il metodo "calcolaTotale()" per calcolare il totale dell'ordine.
<?php
interface Pagabile {
public function calcolaTotale();
}
class Ordine implements Pagabile {
private $prodotti;
public function __construct($prodotti) {
$this->prodotti = $prodotti;
}
public function calcolaTotale() {
// Calcolo del totale dell'ordine
}
}
$prodotti = array(/* ... */);
$ordine = new Ordine($prodotti);
echo "Totale dell'ordine: " . $ordine->calcolaTotale();
?>