Datenübertragung Teil 3
Gruppe: mk, 14.6.03
Aufgabenstellung
Da nicht nur einzelne Nullen und Einsen übertragen werden sollen, müssen alle anderen Zahlen, Zeichen, ... in eine Folge von Nullen und Einsen codiert werden. In diesem Teil soll die Klasse TBitFolge um die Fähigkeit erweitert werden,
- Zahlen aus dem Bereich 0..255 in eine Bitfolge,
- Buchstaben in eine Bitfolge,
- Bitfolgen in Zahlen und
- Bitfolgen in Buchstaben
umzuwandeln.
Dazu soll ein Test- und Veranschaulichungs-Programm geschrieben werden.
Ressourcen
Erweitertes Klassendiagramm:
Wir interpretieren die Bitfolgen dazu als Zahlen in binärer Darstellung (mit der höchstwertigen Stelle links und der niedrigstwertigen Stelle rechts).
Systemanalyse
Es wird davon ausgegangen, dass eine genügende Vertrautheit mit dem Binärsystem vorhanden ist.
Pflichtenheft zur 3. Teilaufgabe
/1/ Der Benutzer soll eine Folge von 8 Bits, eine Zahl zwischen 0 und 255 oder einen einzelnen Buchstaben in separate Eingabefelder eingeben können.
/2/ Die Ansicht wird aktualisiert, d.h. bei Verlassen eines Eingabebereiches wird die Eingabe in die anderen Formate gewandelt und angezeigt.
/3/ Die Methoden sollen folgende Bezeichner tragen:
- procedure fromByte( b : byte )
- procedure fromChar( c : char )
- function toByte : byte
- function toChar : char
"interne Pflichten":
/4/ Die Dokumentation ist konsequent weiterzuführen.
Prototyp
Objektorientierte Analyse
Objektorientiertes Design
Implementierung
Die Umsetzung obiger Struktogramme zeigt folgender Auszug aus dem Quelltext.
Man sieht ebenso, dass fromChar und toChar durch Rückgriff auf ord und chr programmiert wurde.
procedure TBitFolge.fromByte(b : byte);
var
i : byte;
begin
for i := 8 downto 1 do
begin
if b mod 2 = 1 then Bits[i] := Eins else Bits[i] := Null;
b := b div 2;
end;
end;
function TBitFolge.toByte : byte;
var
wert,stellenwert,i : byte;
begin
wert := 0; stellenwert := 1;
for i := 8 downto 1 do
begin
if Bits[i] = Eins then wert := wert + stellenwert;
stellenwert := 2*stellenwert;
end;
result := wert;
end;
procedure TBitFolge.fromChar(ch : char);
begin
fromByte(ord(ch));
end;
function TBitFolge.toChar : char;
begin
result := chr(toByte);
end;
|
Download des Delphi-Projekts:
Kodierung.zip
Test
Es wurden umfangreiche Tests durchgeführt:
Aus BitFolge: 10101010, 00000000,01000000,00100000 führten zu korrekten Ergebnissen.
Aus Zahl : 32, 65, 48, 0, 126, 100, 42, 255 führten jeweils zu korrektem Zeichen und zu korrekter BitFolge
Aus Zeichen: A, B, d, Leerzeichen, 0,1,5, Ä,ß führten zu korrekten Ergebnissen.