Tag 8 Repetitorium Informatik (Java)
|
|
- Innozenz Busch
- vor 6 Jahren
- Abrufe
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) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrJavakurs 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
MehrAuD-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
MehrII. 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
MehrEinstieg 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
MehrKapitel 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
MehrProbeklausur: 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,
MehrKapitel 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
MehrLetztes 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
Mehr5.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
Mehr5.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
MehrAlgorithmen 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
Mehr6 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
MehrKlassen 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
MehrJavakurs 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
MehrEinfü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)
MehrKapitel 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
MehrEinstieg 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
MehrEinstieg 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
Mehr3 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
MehrJavakurs 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
Mehr1. 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
MehrVorkurs 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:
MehrJavakurs 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,
MehrEinfü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
MehrTutoraufgabe 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
MehrArrays 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
MehrProgrammieren 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
MehrJava 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:
MehrProbeklausur: 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,
MehrKapitel 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
MehrEinfü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
MehrSilke 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
MehrWelche 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
MehrJAVA - 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
MehrAufbau 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
MehrObjektorientierte 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
MehrArrays 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
MehrBeispiel: 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
MehrAlgorithmen 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
MehrEinstieg 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
MehrJava 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
Mehr3 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
MehrRepetitorium 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:
MehrEinfü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)
MehrEINI 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
MehrEinstieg 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
MehrSichtbarkeit & 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
MehrDie 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 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
MehrPIWIN 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
MehrJava 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
MehrKapitel 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
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
Mehr7. 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
MehrJava 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
MehrWiederholung 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
MehrEinfü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
Mehr5.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
MehrJava 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
MehrVerhindert, 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:
MehrProf. 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
MehrJavakurs 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
MehrJava 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
MehrVererbung. 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,
MehrJava 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
Mehr620.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
MehrJAVA - 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
MehrVorlesung 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
Mehr1.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){
MehrDer 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
MehrObjektorientierte 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
MehrProgrammieren 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
MehrKlassen 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
MehrString 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
MehrJava 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
MehrVIII: 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:
Mehr1 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
MehrJavakurs 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
MehrVererbung. 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
MehrNachholklausur (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:
MehrEine 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,
MehrProgrammierkurs 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
MehrTest 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
MehrDynamischer 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?
»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
MehrVorlesung 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:
MehrProgrammieren 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
MehrEinfü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
MehrC# 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
MehrJava: 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
MehrProgrammieren 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
MehrObjektorientierte 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
MehrInterfaces 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
MehrJAVA-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).
MehrArrays 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"
MehrFachgebiet 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
MehrKapitel 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
MehrEinfü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
MehrJavakurs 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