Tag 8 Repetitorium Informatik (Java)

Größe: px
Ab Seite anzeigen:

Download "Tag 8 Repetitorium Informatik (Java)"

Transkript

1 Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018

2 Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 2 / 36

3 Übersicht Referenzsemantik Referenzen? null-referenzen und NullPointerException Arrays von Objekten Referenzsemantik bei der Parameterübergabe Objektvergleich mittels equals() Sichtbarkeiten Motivation public vs. private Getter- und Setter-Methoden Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 3 / 36

4 Referenzsemantik

5 Referenzen bekannt: Objekte müssen vor der Verwendung erzeugt werden Zuweisung der Referenz an eine Objektvariable Variablen und Objekte public static void main ( String [] args ) { int a = 7; // primitiver Typ char b = x ; // primitiver Typ int [] ai = new int [5]; // Array von primitivem Typ Person p = new Person (13, A ); // Objekt Person [] ap = new Person [5]; // Array von Objekten Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 5 / 36

6 Referenzen: Beispiel (I) Klasse Person public class Person { int alter ; // Alter char ini ; // Initiale public Person ( int alter, char ini ) { this. alter = alter ; this. ini = ini ; Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 36

7 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); Referenzen p1 p2 Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

8 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; Referenzen p1 alter: 13 ini: A p2 System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

9 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; Referenzen p1 alter: 13 ini: A p2 System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); alter: 19 ini: B Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

10 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; Referenzen p1 alter: 13 ini: A p2 System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); alter: 42 ini: B Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

11 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); Referenzen p1 alter: 13 ini: A p2 alter: 24 ini: C alter: 42 ini: B Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

12 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); Referenzen p1 alter: 13 ini: A p2 alter: 24 ini: C alter: 42 ini: B Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

13 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); Referenzen p1 alter: 13 ini: A p2 alter: 24 ini: C alter: 42 ini: B Ausgabe 13 Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

14 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); Referenzen p1 alter: 17 ini: A p2 alter: 24 ini: C alter: 42 ini: B Ausgabe 13 Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

15 Referenzen: Beispiel (II) Beispiel // Alfred Person p1 = new Person (13, A ); // Berta Person p2 = new Person (19, B ); p2. alter = 42; // Chris p2 = new Person (24, C ); p2 = p1; System.out. println (p1. alter ); p2. alter = 17; // p1 <-> p2 System.out. println (p1. alter ); Referenzen p1 alter: 17 ini: A p2 alter: 24 ini: C alter: 42 ini: B Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 36

16 Referenzen: Was ist das? Objekte Instanziierung mit dem Schlüsselwort new Erzeugung eines neuen Objekts im Speicher (genauer: im sog. Heap) Ergebnis: Referenz auf das neue Objekt Position im Speicher Zuweisung der Referenz an eine Referenzvariable Referenzvariablen (Objektvariablen) speichern lediglich Referenzen, nicht die Objekte selbst! speichern die Information, wo das Objekt im Speicher liegt bei einem Zugriff wird die Referenz auf das Objekt verfolgt man unterscheidet zwischen Wertevariablen mit primitivem Typ: speichern Wert direkt (z.b. int)... Referenzvariablen: speichern Referenz auf ein Objekt Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 8 / 36

17 Referenzen: Interne Darstellung Referenzen als Schaubild p1 alter: 13 ini: A p2 alter: 24 ini: C alter: 42 ini: B Referenzen im Speicher Adresse im Speicher Speicher 42: 44 p1 43: 46 p2 Name im Programm 44: 13 p1.alter 45: 65 ( A ) p1.ini 46: 24 p2.alter 47: 67 ( C ) p2.ini 48: 42 49: 66 ( B ) Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 9 / 36

18 null-referenzen und NullPointerException in manchen Fällen soll eine Referenzvariable auf kein Objekt zeigen Beispiel: ein Mitarbeiter soll optional ein Konto besitzen (s.u.) spezielle Referenz null, die auf kein Objekt zeigt kann Referenzvariable mit beliebigem Typ als Wert zugewiesen werden Initialisierung von Referenzvariablen Vor ihrer Initialisierung ist der Wert einer lokalen Referenzvariable nicht definiert (s.u.). Im Falle einer Klassen-/Instanzvariable wird die Variable implizit mit null initialisiert. NullPointerException Bei dem Versuch eines Zugriffs über eine null-referenz bricht das Programm (ohne weitere Maßnahmen) mit einer sog. NullPointerException ab. Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 10 / 36

19 null-referenzen: Beispiel Mitarbeiter public class Mitarbeiter { String name ; Konto konto ; public Mitarbeiter ( String name ) { this. name = name ; Referenzen m1 m2 Firma public class Firma { public static void main ( String [] a) { Mitarbeiter m1 = new Mitarbeiter (" Mustermann "); Mitarbeiter m2 = new Mitarbeiter (" Musterfrau "); m2. konto = new Konto (...); m2 = null ; null System.out. println (m2. name ); Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 36

20 null-referenzen: Beispiel Mitarbeiter public class Mitarbeiter { String name ; Konto konto ; public Mitarbeiter ( String name ) { this. name = name ; Referenzen m1 m2 name: Mustermann konto: Firma public class Firma { public static void main ( String [] a) { Mitarbeiter m1 = new Mitarbeiter (" Mustermann "); Mitarbeiter m2 = new Mitarbeiter (" Musterfrau "); m2. konto = new Konto (...); m2 = null ; null System.out. println (m2. name ); Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 36

21 null-referenzen: Beispiel Mitarbeiter public class Mitarbeiter { String name ; Konto konto ; public Mitarbeiter ( String name ) { this. name = name ; Firma public class Firma { public static void main ( String [] a) { Mitarbeiter m1 = new Mitarbeiter (" Mustermann "); Mitarbeiter m2 = new Mitarbeiter (" Musterfrau "); m2. konto = new Konto (...); m2 = null ; Referenzen m1 m2 name: Mustermann konto: name: Musterfrau konto: null System.out. println (m2. name ); Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 36

22 null-referenzen: Beispiel Mitarbeiter public class Mitarbeiter { String name ; Konto konto ; public Mitarbeiter ( String name ) { this. name = name ; Firma public class Firma { public static void main ( String [] a) { Mitarbeiter m1 = new Mitarbeiter (" Mustermann "); Mitarbeiter m2 = new Mitarbeiter (" Musterfrau "); m2. konto = new Konto (...); m2 = null ; Referenzen m1 m2 name: Mustermann konto: name: Musterfrau konto: null... System.out. println (m2. name ); Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 36

23 null-referenzen: Beispiel Mitarbeiter public class Mitarbeiter { String name ; Konto konto ; public Mitarbeiter ( String name ) { this. name = name ; Firma public class Firma { public static void main ( String [] a) { Mitarbeiter m1 = new Mitarbeiter (" Mustermann "); Mitarbeiter m2 = new Mitarbeiter (" Musterfrau "); m2. konto = new Konto (...); m2 = null ; Referenzen m1 m2 name: Mustermann konto: name: Musterfrau konto: null... System.out. println (m2. name ); Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 36

24 NullPointerException: Beispiel Firma Referenzen public class Firma { public static void main ( String [] args ) { //... Mitarbeiter m2 = new Mitarbeiter (" Musterfrau "); m2. konto = new Konto (...); m2 = null ; System.out. println (m2. name ); m1 m2 name: Musterfrau konto: null... Zur Laufzeit kracht es! benutzer@faui06a: /ordner$ java Firma Exception in thread main java.lang.nullpointerexception at Firma.main(Firma.java:11) Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 12 / 36

25 Vermeidung von NullPointerExceptions falls unbekannt ist, ob eine Referenzvariable null ist oder nicht: vor dem Zugriff überprüfen, damit das Programm nicht abgebrochen wird! Vergleich der Referenzvariable mit null Beispiel: Überprüfung der Parameter einer Methode in der Methode ist unklar, ob Aufrufer echte Referenzen übergeben hat Beispiel public class //... Konto { public static void ueberweisung ( Konto nach, Konto von, double betrag ) { if ( nach == null von == null ) { System.out. println (" Konten dü rfen nicht null sein "); return ; // Methode im Fehlerfall abbrechen // Jetzt ist es sicher, dass von und nach!= null // double ( betrag ) ist ein primitiver Typ und * kann nicht * null sein nach. kontostand = nach. kontostand + betrag ; von. kontostand = von. kontostand - betrag ; Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 13 / 36

26 Gute Fehlerbehandlung ist ein Thema für sich. Etwas mehr Details dazu gibt es (beispielsweise) in der AuD-Vorlesung. Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 36

27 Arrays von Objekten bekannt: Arrays von primitiven Werten Array-Variable speichert lediglich eine Referenz auf das eigentliche Array jetzt: Arrays von Objekten Verwendung prinzipiell wie bei Arrays mit primitiven Werten aber: die einzelnen Elemente sind Referenzen und nicht die Objekte selbst analog zu einfachen Referenzvariablen bei der Array-Erzeugung werden alle Elemente mit null initialisiert Objekte müssen einzeln erzeugt werden ihre Referenzen müssen einzeln in das Array geschrieben werden Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 15 / 36

28 Arrays von Objekten: Beispiel Beispiel Konto [] konten = new Konto [4]; for ( int i=0; i< konten. length ; ++i) { konten [i] = new Konto (...); Referenzen konten null Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 36

29 Arrays von Objekten: Beispiel Beispiel Konto [] konten = new Konto [4]; for ( int i=0; i< konten. length ; ++i) { konten [i] = new Konto (...); Referenzen konten null Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 36

30 Arrays von Objekten: Beispiel Beispiel Konto [] konten = new Konto [4]; for ( int i=0; i< konten. length ; ++i) { konten [i] = new Konto (...); Referenzen konten... null Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 36

31 Arrays von Objekten: Beispiel Beispiel Konto [] konten = new Konto [4]; for ( int i=0; i< konten. length ; ++i) { konten [i] = new Konto (...); Referenzen konten null Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 36

32 Arrays von Objekten: Beispiel Beispiel Konto [] konten = new Konto [4]; for ( int i=0; i< konten. length ; ++i) { konten [i] = new Konto (...); Referenzen konten null Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 36

33 Arrays von Objekten: Beispiel Beispiel Konto [] konten = new Konto [4]; for ( int i=0; i< konten. length ; ++i) { konten [i] = new Konto (...); Referenzen konten null Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 36

34 Semantik bei der Parameterübergabe bekannt: bei der Parameterübergabe wird der übergebene Wert kopiert Änderung innerhalb der Methode hat keine Auswirkungen beim Aufrufer ebenfalls bekannt: Semantik bei der Parameterübergabe von Arrays Änderung eines Array-Elements in der Methode ist auch im Aufrufer sichtbar Grund: lediglich die Array-Referenz wird kopiert, nicht das Array selbst auch bei Objekten wird lediglich die Referenz kopiert, nicht das Objekt selbst Änderung von Attributen auch im Aufrufer sichtbar Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 17 / 36

35 Semantik bei der Parameterübergabe: Beispiel Beispiel public class Person { //... Referenzen lokal public static void main ( String [] ar) { Person lokal = new Person (13, A ); mach ( lokal ); System.out. println ( lokal. alter + " " + lokal. ini ); public static void mach ( Person param ){ param. alter = 42; param = new Person (53, B ); param. alter = 99; Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 36

36 Semantik bei der Parameterübergabe: Beispiel Beispiel public class Person { //... public static void main ( String [] ar) { Person lokal = new Person (13, A ); mach ( lokal ); System.out. println ( lokal. alter + " " + lokal. ini ); Referenzen lokal alter: 13 ini: A public static void mach ( Person param ){ param. alter = 42; param = new Person (53, B ); param. alter = 99; Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 36

37 Semantik bei der Parameterübergabe: Beispiel Beispiel public class Person { //... public static void main ( String [] ar) { Person lokal = new Person (13, A ); mach ( lokal ); System.out. println ( lokal. alter + " " + lokal. ini ); Referenzen lokal alter: 13 ini: A param public static void mach ( Person param ){ param. alter = 42; param = new Person (53, B ); param. alter = 99; Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 36

38 Semantik bei der Parameterübergabe: Beispiel Beispiel public class Person { //... public static void main ( String [] ar) { Person lokal = new Person (13, A ); mach ( lokal ); System.out. println ( lokal. alter + " " + lokal. ini ); Referenzen lokal alter: 42 ini: A param public static void mach ( Person param ){ param. alter = 42; param = new Person (53, B ); param. alter = 99; Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 36

39 Semantik bei der Parameterübergabe: Beispiel Beispiel public class Person { //... public static void main ( String [] ar) { Person lokal = new Person (13, A ); mach ( lokal ); System.out. println ( lokal. alter + " " + lokal. ini ); Referenzen lokal alter: 42 ini: A param public static void mach ( Person param ){ param. alter = 42; param = new Person (53, B ); param. alter = 99; alter: 53 ini: B Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 36

40 Semantik bei der Parameterübergabe: Beispiel Beispiel public class Person { //... public static void main ( String [] ar) { Person lokal = new Person (13, A ); mach ( lokal ); System.out. println ( lokal. alter + " " + lokal. ini ); Referenzen lokal alter: 42 ini: A param public static void mach ( Person param ){ param. alter = 42; param = new Person (53, B ); param. alter = 99; alter: 99 ini: B Ausgabe Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 36

41 Semantik bei der Parameterübergabe: Beispiel Beispiel public class Person { //... public static void main ( String [] ar) { Person lokal = new Person (13, A ); mach ( lokal ); System.out. println ( lokal. alter + " " + lokal. ini ); Referenzen lokal alter: 42 ini: A public static void mach ( Person param ){ param. alter = 42; param = new Person (53, B ); param. alter = 99; alter: 99 ini: B Ausgabe 42 A Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 36

42 Objektvergleich mittels equals()

43 Klasse Rechteck Klasse Rechteck public class Rechteck { int breite ; int hoehe ; int nummer ; public Rechteck ( int breite, int hoehe, int nummer ) { this. breite = breite ; this. hoehe = hoehe ; this. nummer = nummer ; Vergleich Zwei Rechtecke sollen gleich sein, wenn ihre Breite und Höhe übereinstimmen. Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 36

44 Objektvergleich bekannt: Vergleich von primitiven Werten mit dem ==-Operator jetzt: inhaltlicher Vergleich von Objekten einer Klasse Vergleich von Objekten Der ==-Operator vergleicht bei Objekten lediglich die Referenzen der Objekte auf Gleichheit, d.h. der Vergleich ist nur dann true, wenn beide Referenzen auf dasselbe Objekt zeigen. Ein inhaltlicher Vergleich der Objekte muss selbst implementiert werden. Die Methode equals() In Java ist für einen inhaltlichen Vergleich die Methode equals() vorgesehen. Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 21 / 36

45 Beispiel: Vergleich von Strings equals() für Strings Die Klasse String aus der Java-Standardbibliothek stellt eine Methode equals() zur Verfügung, die zwei Zeichenketten auf Gleichheit überprüft. Beispiel public class StringVergleich { public static void main ( String [] args ) { String s1 = args [0]; String s2 = args [1]; System. out. println (" == liefert " + ( s1 == s2 )); System.out. println (" equals () liefert " + (s1. equals (s2 ))); Ausgabe benutzer@faui06a: /ordner$ java StringVergleich Hallo Hallo == liefert false equals() liefert true Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 22 / 36

46 Eigene Implementierung von equals() Signatur der Methode equals() public boolean equals ( Object other ) { /*... */ Hinweis Gibt true zurück, falls this und other gleich sind, andernfalls false. Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 23 / 36

47 Vererbung ist ein riesiges Thema und wird in der AuD-Vorlesung noch ausführlich besprochen. Wir versuchen das hier so knapp wie möglich zu halten. Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 36

48 Object der Typ Object hat nichts mit Objekt (konkrete Instanz) zu tun eine Referenzvariable vom Typ Object kann ein beliebiges Objekt speichern bei der Zuweisung wird der Typ der Referenz implizit in Object geändert Rechteck r = new Rechteck (2, 3); Object o = r; // o ist eine Referenz auf ein Objekt vom Typ Rechteck Person p = new Person (13, A ); o = p; // o ist jetzt eine Referenz auf ein Objekt vom Typ Person der Typ der Referenz wird geändert, aber: das Objekt bleibt unverändert das Objekt bleibt ein Rechteck, aber: man kann nicht auf Attribute zugreifen Rechteck r = new Rechteck (2, 3); Object o = r; // o ist eine Referenz auf ein Objekt vom Typ Rechteck r. breite = 17; // geht : r ist eine Referenz vom Typ Rechteck o. breite = 17; // GEHT NICHT. o ist eine Referenz vom Typ Object Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 25 / 36

49 instanceof (I) Typfrage o ist eine Referenzvariable auf ein beliebiges Objekt und kann damit unterschiedlichste Objekte speichern (Rechtecke, Personen,...). Manchmal muss man jedoch wissen, was für ein Objekt gerade eben gespeichert wird. instanceof instanceof ermöglicht den Test, ob das Objekt in einer Referenzvariable von einem bestimmen Typ ist Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 26 / 36

50 instanceof (II) Beispiel Rechteck r = new Rechteck (2, 3); Person p = new Person (13, A ); Object o = r; // o ist eine Referenz auf ein Objekt vom Typ Rechteck if ( o instanceof Rechteck ) { System. out. println (" o speichert aktuell ein Rechteck "); else if ( o instanceof Person ) { System. out. println (" o speichert aktuell eine Person "); o = p; // o ist jetzt eine Referenz auf ein Objekt vom Typ Person if ( o instanceof Rechteck ) { System. out. println (" o speichert aktuell ein Rechteck "); else if ( o instanceof Person ) { System. out. println (" o speichert aktuell eine Person "); Ausgabe o speichert aktuell ein Rechteck o speichert aktuell eine Person Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 27 / 36

51 Beispiel: Klasse Rechteck Ziel Objekte der Klasse Rechteck sollen miteinander verglichen werden können. Dabei sollen zwei Rechtecke gleich sein, wenn sowohl Breite als auch Höhe übereinstimmen. Rechteck public class Rechteck { int breite ; int hoehe ; //... public boolean equals ( Object other ) { if (!( other instanceof Rechteck )) { // other ist kein Rechteck return false ; Rechteck anderes = ( Rechteck ) other ; return ( breite == anderes. breite ) && ( hoehe == anderes. hoehe ); Verwendung Rechteck r1 = new Rechteck (13, 3); Rechteck r2 = new Rechteck (13, 3); System.out. println (r1 == r2 ); System.out. println (r1. equals (r2 )); Ausgabe false true Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 28 / 36

52 Sichtbarkeiten

53 Sichtbarkeiten bisher: alle Attribute und Methoden einer Klasse von außen zugreifbar Beispiel: in der Klasse Notenverwaltung kann die Note eines Moduls gesetzt werden aber: in vielen Fällen will man den Zugriff beschränken Ziel: unerwünschten und unbeabsichtigten Zugriff verhindern Datenkapselung ist wichtiger Aspekt Objektorientierter Programmierung interne Details verstecken Zugriff von außen nur über definierte Schnittstelle jetzt: Angabe von Sichtbarkeitsmodifikatoren vor Attributen und Methoden explizite Angabe, ob ein Zugfriff von außen möglich sein soll Compiler meldet Fehler bei einem unerlaubten Zugriff Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 30 / 36

54 Sichtbarkeitsmodifikatoren: public und private Sichtbarkeitsmodifikator wird der Deklaration vorangestellt wir beschränken uns hier auf die folgenden beiden Modifikatoren: public (kennen wir bereits von Methoden) eine öffentliche Methode ist von außen aufrufbar ein öffentliches Attribut ist von außen lesbar und schreibbar öffentliche Attribute und Methoden bilden die Schnittstelle der Klasse private eine private Methode ist nur innerhalb dieser Klasse aufrufbar ein privates Attribut ist nur innerhalb dieser Klasse lesbar und schreibbar ermöglicht Beschränkung des Zugriffs auf Attribute und Methoden Hinweis Jeder Deklaration sollte ein passender Sichtbarkeitsmodifikator vorangestellt werden. Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 31 / 36

55 Sichtbarkeitsmodifikatoren: Beispiel Ziel Eigentümer und Kontostand eines Kontos dürfen nicht von außen geschrieben werden. Konto public class Konto { private String eigentuemer ; private double kontostand ; Erlaubt ( überall ) Konto konto = new Konto (" Musterfrau ", ); konto. kontostandausgeben (); public Konto ( String eigentuemer, double kontostand ) { // Zugriff aus selber Klasse erlaubt! this. eigentuemer = eigentuemer ; this. kontostand = kontostand ; public void kontostandausgeben () { // Zugriff aus selber Klasse erlaubt! System.out. println ( this. kontostand ); Verboten (in anderer Klasse) Konto konto = new Konto (" Musterfrau ", ); konto. kontostand = ; Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 32 / 36

56 Getter-Methoden (I) Konto public class Konto { private String eigentuemer ; private double kontostand ; //... Problem Eigentümer und Kontostand eines Kontos sind jetzt zwar nicht mehr von außen schreibbar, aber auch nicht mehr lesbar... öffentliche Getter-Methoden für den Zugriff auf private Attribute Name per Konvention: getattributname() geben den Wert des entsprechenden Attributes zurück erlauben einen lesenden Zugriff auf das entsprechende Attribut Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 33 / 36

57 Getter-Methoden (II) Konto public class Konto { private String eigentuemer ; private double kontostand ; //... public String geteigentuemer () { return this. eigentuemer ; public double getkontostand () { return this. kontostand ; Bank public class Bank { public static void main ( String [] ar) { Konto konto = new Konto (" Musterfrau ", ); System.out. println ( " Der Kontostand von " + konto. geteigentuemer () + " betr ägt " + konto. getkontostand ()); Ausgabe Der Kontostand von Musterfrau beträgt Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 34 / 36

58 Setter-Methoden analog: öffentliche Setter-Methoden für schreibenden Zugriff auf Attribute insbesondere sinnvoll, wenn Wert auf Gültigkeit überprüft werden soll Ziel Der Kontostand eines Kontos darf von außen geschrieben werden, aber es soll sichergestellt werden, dass der Kontostand nie negativ ist. Konto public class Konto { private double kontostand ; //... public void setkontostand ( double kontostand ) { if ( kontostand >= 0) { this. kontostand = kontostand ; else { System. out. println (" Kontostand darf nicht negativ sein "); Informatik-Repetitorium Tag 8 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 35 / 36

59 Fragen? Fragen! (hilft auch den anderen)

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays 1 Kapitel 8 Ziele 2 Die Datenstruktur der kennenlernen Grundlegende Algorithmen auf in Java implementieren können Mit von Objekten arbeiten können 3 Erweiterungen zur Behandlung von : Überblick Bisher

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen

Mehr

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung

Mehr

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */) Good code is its own best documentation. (Steve McConnell) Java Cheatsheet Java Grundlagen Aufbau einer Klasse Name der Klasse public class MeineKlasse { Textdatei MeineKlasse.java (muss dem Namen der

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

JAVA - Methoden - Rekursion

JAVA - Methoden - Rekursion Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1.2 Attribute und Methoden Aufbau einer Java-Klasse: Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){

Mehr

Der Datentyp String. Stringvariable und -vergleiche

Der Datentyp String. Stringvariable und -vergleiche Informatik 12 mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da

Mehr

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata: Informatik mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da aber

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 03: Wiederholung und Nutzereingaben Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Wiederholung Klassen, Objekte, Attribute und Methoden

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Nachholklausur (6 ECTS): Lösungsvorschlag Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname...

Nachholklausur (6 ECTS): Lösungsvorschlag Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Ludwig-Maximilians-Universität München WS 2012/13 Institut für Informatik 19.04.2013, 12:00 14:00 Uhr Prof. Dr. R. Hennicker, A. Klarl Nachholklausur (6 ECTS): Lösungsvorschlag Einführung in die Informatik:

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Dynamischer Speicher

Dynamischer Speicher Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Übungsblatt 7. Was ist die Ausgabe de facto? Entspricht die Ausgabe Ihren Erwartungen?

Übungsblatt 7. Was ist die Ausgabe de facto? Entspricht die Ausgabe Ihren Erwartungen? »Programmieren«, WS 2006/2007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 7 Die benötigten Quelltexte finden Sie hier: http://imperia.uni-due.de/imperia/md/content/computerlinguistik/uebungsblatt_7_code.zip

Mehr

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Klassen 2 Prozeduale Programmierung Bisher: Klassische prozeduale Programmierung Java ist allerdings eine objektorientierte Sprache Rein prozeduale Programmierung daher

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Unterlagen zur Veranstaltung Einführung in die Objektorientierte Programmierung Mit Processing Alexis Engelke Sommer 2012 Alexis Engelke Inhalt Level 1: Geometrie Hintergrundfarben Punkte, Linien und deren

Mehr

Interfaces und Vererbung

Interfaces und Vererbung Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr