Station - Bus

Datentransfer über einen Bus

Wir betrachten 3 Register, die über Tore an eine Datenleitung (einen sogenannten Bus) angebunden sind.

Bus mit Registern

Lade zur Simulation dieses Systems die Datei registermaschine.txt herunter und benenne sie in registermaschine.py um. Du musst die Details der hier definierten Klassen nicht verstehen. Entscheidend ist, das Verhalten von Bus- und Tor-Objekten zu kennen.

Aufgabe 1

(a) Führe das folgende Testprogramm aus. Beachte, dass das importierte Modul registermaschine.py im selben Verzeichnis wie das Testprogramm abgespeichert ist.

from registermaschine import *

# Erzeugung der Register
r1 = Register(5)
r2 = Register(3)
r3 = Register(0)

# Erzeugung des Busses
bus = Bus()

# Erzeugung der Tore
tor1 = Tor(r1, bus, "read")
tor2 = Tor(r1, bus, "write")

tor3 = Tor(r2, bus, "read")
tor4 = Tor(r2, bus, "write")

tor5 = Tor(r3, bus, "read")
tor6 = Tor(r3, bus, "write")

# Ausgabe der Registerinhalte
print("r1:", r1.wert)
print("r2:", r2.wert)
print("r3:", r3.wert)

# Verarbeitung der Registerinhalte
tor2.oeffnen()
tor3.oeffnen()
tor3.schliessen()
tor2.schliessen()

# Ausgabe der Registerinhalte
print("r1:", r1.wert)
print("r2:", r2.wert)
print("r3:", r3.wert)

(b) Hast du eine Erklärung für die Ausgaben des Testprogramms?

Aufgabe 2

(a) Was geschieht, wenn man zusätzlich tor5 öffnet?

(b) Was geschieht, wenn man zusätzlich tor6 öffnet?

(c) Was geschieht, wenn man tor2 vor tor3 schließt?

(d) Macht es Sinn, wenn man zusätzlich tor1 öffnet?

Aufgabe 3

Erstell ein Testprogramm, mit dem man die Inhalte von Register1 und Register3 austauschen kann.

Software-Bausteine zur Simulation von Bussen und Toren

Das Klassendiagramm beschreibt die Struktur der Software-Bausteine zur Simulation von Bussen und Toren.

Tor-Bus-Komponente

Ein Komponente-Objekt verwaltet einen Wert wert und erlaubt einen Zugrifft auf diesen Wert über die Operationen setEingang und getAusgang. Ein Register-Objekt ist ein Beispiel für ein Komponente-Objekt. Weitere Komponente-Objekt werden wir in den folgenden Abschnitten betrachten.

Ein Tor-Objekt verwaltet eine Verbindung zwischen einem Bus und einer Komponente und steht daher in Beziehung zu einem Komponente-Objekt und einem Bus-Objekt. Ein Tor-Objekt stellt die Operationen oeffnen und schliessen zur Verfügung. Beim Öffnen wird - je nach vorgegebenem Modus (write / read) - der Wert der Komponente auf den Bus geschrieben oder der Wert des Busses gelesen und auf die Komponente übertragen.

Ein Bus-Objekt verwaltet einen Wert wert. Gibt es keine schreibende Verbindung von einer Komponenten, so ist dieser Wert None (d.h. nicht festgelegt). Nur wenn bereit den Wert True hat, kann über eine schreibende Verbindung der Wert des Busses mit setWert gesetzt werden. Alle lesend verbundenen Komponenten passen bei jeder Änderung des Buswertes ihren Wert entsprechend an. Zur Verwaltung der aktuell lesend verbundenen Komponenten werden die Operationen anmelden und abmelden benutzt.

X

Fehler melden

X

Suche