InformaticaProgrammazione

Basso o alto accoppiamento? Scopri la differenza!

In informatica, il termine “accoppiamento” si riferisce al grado di dipendenza tra le parti di un sistema. In altre parole, quanto le diverse parti del sistema sono interconnesse e dipendono l’una dall’altra.

Il basso accoppiamento significa che le parti di un sistema sono meno dipendenti tra loro. Se si modifica una parte del sistema, questa non avrà un impatto significativo sulle altre parti, garantendo una maggiore stabilità del sistema.

D’altra parte, l’alto accoppiamento indica che le parti di un sistema sono strettamente interconnesse e dipendono l’una dall’altra. La modifica di una parte del sistema può avere significative ripercussioni sulle altre parti del sistema.

Un esempio di basso accoppiamento può essere una stampante che è collegata al tuo computer tramite una porta USB. Un modello di stampante diverso non influenzerà significativamente il computer quando viene sostituito. D’altra parte, un esempio di alto accoppiamento può essere un sistema di pagamento online che dipende da una terza parte per elaborare i pagamenti. Se la terza parte ha problemi tecnici, il tuo sistema di pagamento online potrebbe smettere di funzionare correttamente.

Perché è importante comprendere la differenza tra basso e alto accoppiamento? In primo luogo, un sistema con basso accoppiamento è generalmente più facile da modificare e aggiornare. In secondo luogo, un sistema con basso accoppiamento è generalmente più resistente ai guasti e alle interruzioni. Infine, un sistema con basso accoppiamento è generalmente più facile da testare e mantenere.

BASSO ACCOPPIAMENTO

Ecco un esempio di codice PHP che utilizza il basso accoppiamento:

<?php

class AreaCalculator {
    public function calculateRectangleArea($width, $height) {
        return $width * $height;
    }
}

function printArea($calculator, $width, $height) {
    $area = $calculator->calculateRectangleArea($width, $height);
    echo "L'area del rettangolo è: " . $area;
}

$calculator = new AreaCalculator();
printArea($calculator, 5, 10);

In questo esempio, abbiamo creato una classe chiamata “AreaCalculator” che ha un metodo “calculateRectangleArea” che calcola l’area di un rettangolo. Inoltre, abbiamo creato una funzione “printArea” che accetta un’istanza di “AreaCalculator” insieme alla larghezza e all’altezza del rettangolo. Questa funzione utilizza il metodo “calculateRectangleArea” della classe “AreaCalculator” per calcolare l’area del rettangolo e stampa il risultato a schermo.

Notare che la funzione “printArea” dipende solo dalla classe “AreaCalculator” per calcolare l’area del rettangolo, e non dipende da altre parti del sistema. Questo è un esempio di basso accoppiamento, in quanto la funzione è scritta in modo da dipendere solo da una classe specifica e non da altre parti del sistema.

ALTO ACCOPPIAMENTO

Ecco un esempio di codice PHP che utilizza l’alto accoppiamento:

<?php

class Database {
   public function connect() {
      $host = "localhost";
      $username = "root";
      $password = "password";
      $dbname = "database_name";
      
      $conn = new mysqli($host, $username, $password, $dbname);
      return $conn;
   }
}

class User {
   private $db;
   
   public function __construct() {
      $this->db = new Database();
   }
   
   public function getUserInfo($id) {
      $conn = $this->db->connect();
      $result = $conn->query("SELECT * FROM users WHERE id = $id");
      return $result->fetch_assoc();
   }
}

In questo esempio, la classe User utilizza l’alto accoppiamento perché dipende dalla classe Database per stabilire una connessione al database e ottenere le informazioni dell’utente.

In particolare, la classe User ha una dipendenza diretta dalla classe Database, che crea una connessione al database attraverso la funzione connect(). Questo significa che se la classe Database viene modificata, la classe User potrebbe subire delle ripercussioni.

/ 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *