Simulation de Circuits Électriques Domestiques : Synthèse des Projets 7 et 8

Ce document synthétise les apprentissages et les défis rencontrés lors de la réalisation des projets 7 et 8, axés sur la simulation de circuits électriques domestiques.

Projet 7 : Simulation de Circuits Électriques Domestiques - Version 3

Connaissances Acquises :

  • Circuits Série : Courant identique, répartition de la tension.
  • Circuits Parallèle : Tension identique, répartition du courant.
  • Conception Orientée Objet : Mise en place de classes pour les appareils, les appareils contrôlés, les dispositifs de contrôle, les circuits série et parallèle.
  • Structures de Données : Utilisation de listes ou de dictionnaires pour stocker les informations du circuit et l'état des appareils.
  • Algorithmes : Calcul récursif ou itératif de la tension, du courant et de l'état des appareils.
  • Entrées/Sorties : Lecture et analyse des informations d'entrée, affichage de l'état des appareils dans un format spécifié.

Complexité du Projet :

Ce projet présente une complexité moyenne. Il nécessite une bonne compréhension des principes fondamentaux des circuits électriques et la simulation fidèle du comportement de divers appareils. La conception d'une structure de classes et d'algorithmes adéquats est cruciale pour gérer la complexité des interconnexions. La gestion dynamique de l'état des appareils en fonction des entrées exige des capacités de traitement logique significatives.

Défis Spécifiques :

  • Gestion de l'état et répartition du courant pour les interrupteurs à états mutuellement exclusifs.
  • Contrôle des niveaux d'un régulateur de vitesse et calcul de sa tension de sortie.
  • Calcul du rapport d'ouverture des rideaux, dépendant de la luminosité totale des lampes du circuit.
  • Traitement des relations en parallèle de multiples circuits série, assurant une répartition correcte de la tension et du courant.
  • Analyse des entrées et construction de la structure du circuit, nécessitant une codification et un débogage minutieux.

Projet 8 : Simulation de Circuits Électriques Domestiques - Version 4

Connaissances Acquises :

  • Programmation Orientée Objet : Conception de classes pour divers appareils (interrupteurs, régulateurs, lampes, ventilateurs, rideaux, diodes) et leurs caractéristiques communes.
  • Simulation de Circuits : Compréhension des principes de base des circuits série et parallèle, de la répartition de la tension et du calcul du courant.
  • Gestion d'État : Gestion des états et paramètres changeants de chaque appareil.
  • Analyse d'Entrées : Extraction des informations sur les appareils, les connexions et les commandes à partir de données textuelles.
  • Gestion des Exceptions : Détection des limitations de courant et des courts-circuits.
  • Calcul de Tension : Calcul de la tension aux bornes de chaque connexion en fonction de la tension d'entrée et des caractéristiques des appareils.
  • Structures de Données : Utilisation appropriée de dictionnaires et de listes pour stocker les informations des appareils et les relations de connexion du circuit.

Complexité du Projet :

Ce projet est classé comme de haute complexité. Bien qu'il s'agisse de simulation de circuits, il est davantage axé sur la pratique de la conception orientée objet plutôt que sur des modèles physiques complexes. La logique de gestion des relations série/parallèle et des interactions entre appareils est particulièrement élaborée. L'implémentation de la détection de limitations de courant et de courts-circuits ajoute une couche de complexité supplémentaire. Les exigences détaillées en matière de format de sortie demandent une attention particulière aux détails.

Défis Spécifiques :

  • Gestion des Diodes : Implémentation de la conduction directe et du blocage inverse.
  • Détection de Courts-Circuits : Calcul de la résistance totale et identification des cas où la résistance est nulle.

Conception et Analyse

Projet 7 :

Structure des Classes :

La structure des classes a été étendue par rapport aux versions précédentes, introduisant des classes pour les appareils contrôlés et les dispositifs de contrôle. Les classes clés incluent :

  • Electric : Classe de base pour tous les appareils.
  • Switch, ME_Switch, FenDangSwitch, LianXuSwitch, Lump, Riguang, Diaoshan, LuodiFan, DayLight : Classes dérivées implémentant des fonctionnalités d'appareils spécifiques.
  • Bi et Chuan : Classes représentant les circuits parallèle et série.
  • Complain : Classe responsable de la création des appareils à partir des informatoins d'entrée.
  • Main : Point d'entrée du programme, gérant le flux général.

Projet 8 :

Structure des Classes :

La structure des classes du projet 7 a été enrichie pour inclure la classe Diode.

Expériences et Solutions

Projet 7 : Implémentation des Interrupteurs Contrôlés

Les interrupteurs mutuellement exclusifs nécessitent trois broches et deux états (connexion à la broche 2 ou 3). L'état initial est la connexion à la broche 2.

Solution : Création d'une classe ME_Switch avec une logique de commutation d'état et de calcul de tension.

Code d'exemple pour la gestion de l'état et le calcul de la tension :


public class ME_Switch {
    private int currentState = 0; // 0: connecte à la broche 2, 1: connecte à la broche 3
    private final int resistance12 = 5;
    private final int resistance13 = 10;
    private double voltageOutput = 0;

    public void toggleState() {
        currentState = 1 - currentState; // Inverse l'état
    }

    public void calculateVoltage(double inputVoltage) {
        if (currentState == 0) {
            voltageOutput = inputVoltage * (double)resistance12 / (resistance12 + resistance13);
        } else {
            voltageOutput = inputVoltage * (double)resistance13 / (resistance12 + resistance13);
        }
    }
    // Getter pour voltageOutput...
}

Projet 8 : Gestion des Diodes et Détection de Courts-Circuits

Implémentation de la Diode :

Les diodes ont deux états : conduction directe et blocage inverse.

Solution : Création d'une classe Diode avec une logique de conduction.

Code d'exemple pour la gestion de la conduction de la diode :


public class Diode {
    private boolean isConducting = true;
    private double voltageDrop = 0;

    public void updateConduction(double voltage1, double voltage2) {
        if (voltage1 == voltage2) {
            isConducting = (voltage1 != 0); // Conduction si tension non nulle
        } else {
            isConducting = true; // Conduction si tensions différentes
        }
    }

    public double getOutputVoltage(double inputVoltage) {
        return isConducting ? inputVoltage : 0;
    }
    // ... autres méthodes
}

Détection de Courts-Circuits :

Solution : Méthode statique pour calculer la résistance totale et détecter un court-circuit.

Code d'exemple pour la détection de courts-circuits :


public class CircuitUtils {
    public static boolean detectShortCircuit(Map<String, ElectricDevice> devices) {
        double totalResistance = 0;
        for (ElectricDevice device : devices.values()) {
            totalResistance += device.getResistance(); // Supposant que getResistance() existe
        }
        return totalResistance == 0;
    }
}

Suggestions d'Amélioration

  • Gestion des Exceptions Personnalisées : Introduire des classes d'exception personnalisées (par exemple, InputFormatException, DeviceNotFoundException) pour une gestion d'erreurs plus robuste.
  • Refactorisation du Code : Extraire la logique répétitive dans des méthodes d'assistance pour réduire la redondance, notamment dans le traitement des entrées et la gestion des connexions.
  • Extension des Types d'Appareils : Utiliser le patron de conception Factory pour faciliter l'ajout de nouveaux types d'appareils sans modifier la structure existante.
  • Clarification des Responsabilités des Classes : Diviser les classes monolithiques (comme Electric) en classes plus petites et spécialisées, potentiellement en utilisant des interfaces pour définir des contrats communs pour la gestion d'état et les calculs de tension.

Conclusion

Les projets 7 et 8 ont permis d'approfondir les concepts de programmation orientée objet, de simulation de circuits et d'application de design patterns. La gestion des circuits complexes, la simulation du comportement des appareils et la détection des anomalies ont été des points clés. L'importance de la concpetion modulaire, de la gestion des erreurs et de l'utilisation judicieuse des structures de données a été clairement mise en évidence.

Étiquettes: Java Programmation orientée objet simulation de circuits gestion d'erreurs Design Patterns

Publié le 15 juin à 23h28