schule:logikgatter
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| schule:logikgatter [2016-07-09 07:43] – [Vererbung] Kahoot marco.bakera | schule:logikgatter [2021-01-26 07:23] (aktuell) – [Wertetabelle] xor trick marco.bakera | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Emulator für logische Schaltungen ====== | ||
| + | ===== Auftrag ===== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Sie haben den Auftrag erhalten, für die Elektro-Fachabteilung eines mittelständischen Unternehmens ein Programm zur Emulation logischer Schaltungen zu entwickeln. | ||
| + | |||
| + | Die verschiedenen Grundbausteine können nach Eingabe von Wertbelegungen für die Eingänge getestet werden. | ||
| + | |||
| + | Stelle Sie durch ein Objekt-Orientiertes Design des Programms sicher, dass auch komplexe Schaltungen simuliert werden können. | ||
| + | |||
| + | ===== Wertetabelle ===== | ||
| + | |||
| + | - Erstelle eine Wertetabelle für alle [[wpde> | ||
| + | - Das XOR hat in der Kryptographie eine besondere Bedeutung. Es kommt bei sogenannten One-Time-Pads zum Einsatz. Diese werden in dem PDF von [[http:// | ||
| + | - Weitere Anwendungen von XOR beschreibt der Artikel [[https:// | ||
| + | |||
| + | Das Wissen können wir gemeinsam in einem [[https:// | ||
| + | ===== Und-Gatter ===== | ||
| + | |||
| + | - Wie könnte eine Klasse für ein UND-Gatter aufgebaut sein? | ||
| + | - Welche Attribute und [[Methoden]] gibt es? | ||
| + | - Implementiere die Klasse '' | ||
| + | |||
| + | ===== Vererbung ===== | ||
| + | |||
| + | - Bei der Implementierung gibt es Wiederholungen im Quelltext. An welchen Stellen? | ||
| + | - Wie können solche Wiederholungen vermieden werden? | ||
| + | - Nutze Vererbung, um die Wiederholungen zu vermeiden. | ||
| + | - Bearbeite das // | ||
| + | |||
| + | Das Wissen können wir gemeinsam in einem [[https:// | ||
| + | ===== Tests ===== | ||
| + | |||
| + | Die Gatter sollen getestet werden. | ||
| + | |||
| + | - Welches Ziel verfolgt ein [[wpde> | ||
| + | - Was ist der Unterschied zwischen einem Blackbox- und einem Whitebox-Test? | ||
| + | - Erstelle ein neues Projekt " | ||
| + | - Füge als Verweis das bisherige Projekt hinzu. | ||
| + | - Erstelle für jedes Gatter einen Testklasse: Für das '' | ||
| + | |||
| + | Ein [[https:// | ||
| + | ===== Komposition und Aggregation ===== | ||
| + | |||
| + | Einige Gatter können die Funktionalität anderer Gatter wiederverwenden. So kann das Nicht-Und-Gatter z.B. aus einem Nicht- und einem Und-Gatter aufgebaut werden. | ||
| + | |||
| + | - Skizziere ein Klassendiagramm, | ||
| + | - Stelle deine Implementierung auf die Verwendung von Aggregation um und veröffentliche den Quelltext unten. | ||
| + | - Was ist der Unterschied zwischen Aggregation und Komposition? | ||
| + | - Was sind Multiplizitäten? | ||
| + | - Bearbeite das {{: | ||
| + | |||
| + | ===== Halb-Addierer und Addierer ===== | ||
| + | |||
| + | Oben ist ein [[wpde> | ||
| + | |||
| + | - Informiere dich über die Funktionsweise eines Halbaddierers und implementiere ihn als neue Klasse '' | ||
| + | - Teste ihn in dem Testprojekt. | ||
| + | - Veröffentliche deinen Quelltext. | ||
| + | - Du kannst aus zwei Halbaddierern und einem weiteren Gatter einen [[wpde> | ||
| + | |||
| + | |||
| + | ===== Unterschiedliche Ausgaben der Gatter mit Hilfe des Strategy-Patterns ===== | ||
| + | |||
| + | Das Gatter soll bei der Ausgabe des Ergebnisses (z.B. über eine Methode '' | ||
| + | |||
| + | **Vorgehen** | ||
| + | |||
| + | - Informiere dich über das //Strategy Pattern//. | ||
| + | - Entwickle ein Klassendiagramm für das Logikgatterprojekt. | ||
| + | - (Wir vergleichen) | ||
| + | - Setze das Klassendiagramm in Quelltext um. | ||
| + | - In welchen Situationen kommt das Strategy Pattern zum Einsatz? | ||
| + | - Welche anderen Entwurfsmuster (Pattern) findest du noch? vgl. z.B. [[https:// | ||
| + | |||
| + | |||
| + | ===== GUI für die Logikgatter ===== | ||
| + | |||
| + | Das Projekt soll um eine GUI ergänzt werden, so dass der Benutzer Gatter mit der Maus auswählen und die Eingänge selbst setzen kann. | ||
| + | |||
| + | Entwirf eine einfache GUI und veröffentliche sie. | ||
| + | |||
| + | Eine mögliche GUI und die zugehörige Klasse: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Hardware-Ansteuerung | ||
| + | |||
| + | Die Logikgatter können auch über ein Hardwaremodul über den [[Raspberry Pi]] angesteuert werden. Das zugehörige Python-Modul heißt [[https:// | ||
| + | |||
| + | - Installiere das Modul '' | ||
| + | - Steuere das Modul so an, dass die beiden Taster mit den Eingängen und die LEDs mit den Ausgängen verschiedener Gatter wie folgt verbunden werden: rot=Und-Gatter, | ||
| + | - Verbinde die Module über das Netzwerk ('' | ||
| + | |||
| + | ===== Webinterface | ||
| + | |||
| + | Webseiten können auf zwei Arten ausgeliefert werden: // | ||
| + | |||
| + | Die Logikgatter sollen nun dynamisch über ein Webinterface zugänglich gemacht werden. Hierfür bieten sich drei unterschiedliche Ansätze an. | ||
| + | |||
| + | - Einen bestehenden Webserver wie Apache verwenden und das Programm über ein [[wpde> | ||
| + | - Einen eigenen [[Webserver programmieren]]. | ||
| + | - Ein Webframework für Python benutzen wie z.B. Django oder [[http:// | ||
| + | ===== MVC Muster ===== | ||
| + | |||
| + | Das MVC-Muster ([[wpde> | ||
| + | |||
| + | - Informiere dich darüber, was die Begriffe und Pfeile jeweils bedeuten und erstelle eine kurze Präsentation, | ||
| + | - Finden sich die Bereiche Model, View und Controller in eurer Anwendung wieder? Falls ja, stelle dies dar. | ||
| + | |||
| + | // | ||
| + | |||
| + | ===== Links ===== | ||
| + | |||
| + | * Mit Hilfe von Minecraft lassen sich die Schaltkreise auch mit Redstone nachbilden -- sogenannte [[http:// | ||
