Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut."—  Präsentation transkript:

1 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

2 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 2 Inhalt l Lösung Übung 4 l Referenzdatentypen l Vorbesprechung Übung 6

3 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 3 Verbund-Datentypen als Werte Verbund-Variable: Typ – Name – Wert – Adresse JanaSpeicher AdresseWert type Pair = { int a int b } Pair p p.a = 10 p.b = 13 100 104 108 112 10 13.. Name = p Typ = Pair Adresse = 100 Adresse = 100 Wert = 10 Adresse = 104 Wert = 13 pa b 13 10

4 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 4 Referenzdatentypen JanaSpeicher AdresseWert reftype RefPair = { int a int b } RefPair p P = new RefPair p.a = 10 p.b = 13 100 104 108 112 116 120 112.. 10 13.. Name = p Typ = RefPair Adresse = 100 Wert = 112 Adresse = 112 Wert = 10 Adresse = 116 Wert = 13 Warum Referenzvariablen? zur Laufzeit kann (beliebig viel) Speicherplatz für neue Daten belegt werden Strukturierung der Daten pa b 13 10 a b 13 10

5 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 5 Vergleich Referenz/Verbund-Datentypen I type Person = { char[] firstName, lastName } reftype RefPerson = { char[] firstName, lastName } Deklaration Erzeugen von Datenobjekten Person student Objekt wird bei Deklaration bereits erzeugt; Wert undefiniert! RefPerson refStudent Wert von student: Referenz auf ein Objekt Student; noch nicht initialisiert! refStudent = new RefPerson erst jetzt ist ein Objekt des Typs RefPerson erzeugt. Wert ist noch nicht definiert Wert-Variable Referenzvariable

6 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 6 Vergleich Referenz/Verbund-Datentypen II student.firstName = "Hugo"refStudent^.firstName = "Hugo" oder refStudent.firstName = "Hugo" Zugriff auf Elemente Löschen von Datenobjekten Werden beim Verlassen des Algorithmus automatisch aus dem Speicher entfernt delete refStudent jetzt gilt: refStudent == null Spezieller Referenzwert null refStudent = null - Wert-Variable Referenzvariable

7 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 7 Person hugo, franz hugo.firstname = "Hugo hugo.lastname = "Berger franz = hugo RefPerson hugo, franz hugo = new RefPerson hugo^.firstname = "Hugo hugo^.lastname = "Berger franz = hugo Achtung: Zuweisung der Referenz! Zuweisung Vergleich Person a,b a.firstName = "Hugo " a.lastName = "Berger " b.firstName = "Hugo " b.lastName = "Berger " if (a == b) {...} // true RefPerson a,b,c a = new RefPerson, b = …; c =... a.firstName = "Hugo a.lastName = "Berger b.firstName = "Hugo b.lastName = "Berger " c=a if (a == b) {...} //Gleichheit false! if (a == c) {...} //Identität true! Wert-Variable Referenzvariable Vergleich Referenz/Verbund-Datentypen III

8 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 8 Vergleich Referenz/Verbund-Datentypen IV f( Person p) { p.firstName = "nix" } Kopie des Werts = Datenobjekt selbst wird übergeben g( RefPerson p) { p.firstName = "nix" } Kopie des Werts = Referenz wird übergeben !! Verwendung als Eingangsparameter Verwendung als Übergangsparameter f( Person p) { Person a a.firstName="franz" a.lastName="Huber" p=a } g( RefPerson p) { RefPerson b; b = new Refperson b.firstName="franz" b.lastName="Huber" p=b } Referenz p wird verändert! Wert-Variable Referenzvariable

9 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 9 Beispiel Algorithmusanalyse: reftype X = { int a Y y } type Y = { int a } algorithm() { X x1,x2 Y y x1 = new X x1.a = 99 y.a = 11 x1.y = y (1) y.a = 77 x2 = x1 (2) invert( x2) write( x1.y.a) (3) } invert ( X x) { x.y.a = -x.y.a } Was wird am Ende des Algorithmus ausgegeben? Welche Werte enthalten die Variablen x1, x2 und y an den Stellen (1)-(3)

10 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 10 Lösung (1) x1 a:11 a:99 y x2? a:11 x1 a:11 a:99 y x2 a:77 (2) y y x1 a:-11 a:99 y x2 a:77 (3) y Ausgabe:-11


Herunterladen ppt "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut."

Ähnliche Präsentationen


Google-Anzeigen