schule:logikgatter
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
schule:logikgatter [2016-07-09 09:35] – [Webinterface] Reihenfolge marco.bakera | schule:logikgatter [2019-12-21 13:52] – [MVC Muster] owncloud link enternt. 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:// | ||
+ | |||
+ | 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 ===== | ||
+ | * **[[https:// | ||
+ | * Mit Hilfe von Minecraft lassen sich die Schaltkreise auch mit Redstone nachbilden -- sogenannte [[http:// |
schule/logikgatter.txt · Zuletzt geändert: 2021-01-26 08:23 von marco.bakera