🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

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();
?>