Grundlagen der Programmierung. Eine Einführung mit Java

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Programmierung. Eine Einführung mit Java"

Transkript

1 . Eine Einführung mit Java VHS Murrhardt März 2009

2 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Teil I 6. März Einführung 2 Grundlagen der objektorientierten Programmierung 3 Entwicklungsumgebung Eclipse

3 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse (De)Motivation (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt Programmieren kann man lernen, aber nicht lehren! Warum trotzdem teilnehmen? Einige Konzepte sind doch vermittelbar Kurs beinhaltet viele Übungen und praktische Anwendungen Fehlersuche ist frustrierend

4 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Nach dem Kurs... (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt...kennen Sie die wichtigsten Elemente einer objektorientierten Programmiersprache... können Sie kleine Programme selbst schreiben...sind Sie in der Lage, sich alles Übrige selbst beizubringen

5 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Die Sprache (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt Java Sun Microsystems 1991 Warum Java (und nicht Pascal,C++,C#,...)? Warum nicht? Objektorientierung (relativ) saubere Konzepte Einfache Erlernbarkeit Verfügbarkeit auf allen Systemen und Portierbarkeit Verbreitung

6 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Die Werkzeuge (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt Der Baukasten Wir arbeiten mit dem Java SE Development Kit (JDK). Verfügbar für nahezu alle Betriebssysteme normaler PC. Kann von heruntergeladen werden. Entwicklung für andere Plattformen: Java EE, Java ME

7 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Die Werkzeuge (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt Der Compiler: javac Prüft und übersetzt den Quellcode in ein (lauffähiges) Programm. Der Interpreter: java Führt das Programm aus. Die Entwicklungsumgebung: Eclipse Vereint alle Funktionalität unter einer Oberfläche: Editieren, Kompilieren, Debuggen,...

8 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Dieser Kurs deckt nicht ab: (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt konzeptuell unwichtige Details der Java-Syntax völlig abgedrehte Konzepte objektorientierter Programmiersprachen wie Templates und Mehrfachvererbung Feinheiten der GUI-Programmierung Java EE und ME Webapplikationen Weitere Java-eigene und -nahe Technologien wie Applets (ansatzweise, wenn die Zeit reicht), Beans, Servlets, Javadoc,...

9 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Und Sie? (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt Vorkenntnisse? Erwartungen? Wünsche?...

10 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Inhalt 1 Einführung (De)Motivation Inhalt und Ziele Die Sprache Die Werkzeuge Was fehlt 2 Grundlagen der objektorientierten Programmierung 3 Entwicklungsumgebung Eclipse 4 Strukturierte Programmierung in Java 5 Objektorientierte Programmierung in Java (Teil I) 6 Objektorientierte Programmierung in Java (Teil II) 7 Projekt (Teil I) 8 Weitere Techniken und Features von Java 9 Projekt (Teil II) 10 Ausblick

11 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Hallo, Welt! Hallo.java public class Hallo { public s t a t i c void main ( String [ ] args ) { System. out. p r i n t l n ("Hallo, Welt! " ) ; } }

12 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Klassen und Objekte Objekte Objekte sind Repräsentationen von realen oder abstrakten Dingen im Speicher. Objekte besitzen Daten ( Eigenschaften ) und Aktionen ( Methoden ). Klassen Klassen beschreiben den Typ eines Objekts. Jedes Objekt ist Instanz einer Klasse. Eine Klasse kann keine, eine oder viele Instanzen haben. Wir fassen Objekte nie direkt an, sondern benutzen Referenzen.

13 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Beispiel: In Bildern... void drucken() text) name= VHS Murrhardt strasse= Obere Schulgasse 7 plz=71540 ort= Murrhardt = info@vhs-murrhardt.de boolean senden(string plzpruefen() void

14 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Klassen und Objekte Objekte Objekte sind Repräsentationen von realen oder abstrakten Dingen im Speicher. Objekte besitzen Daten ( Eigenschaften ) und Aktionen ( Methoden ). Klassen Klassen beschreiben den Typ eines Objekts. Jedes Objekt ist Instanz einer Klasse. Eine Klasse kann keine, eine oder viele Instanzen haben. Wir fassen Objekte nie direkt an, sondern benutzen Referenzen.

15 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Beispiel: In Bildern... Adresse Eigenschaften String name String strasse Integer plz String ort String Methoden void drucken() boolean plzpruefen() void senden(string text) text) meineadresse name= VHS Murrhardt strasse= Obere Schulgasse 7 plz=71540 ort= Murrhardt = info@vhs-murrhardt.de senden(string void drucken() boolean text) senden(string void name= Max Mittel strasse= Mittelgasse 5 plz=12321 ort= Mittelbach = max@mittelweb.mi void drucken() plzpruefen() boolean plzpruefen() maxensadresse void maxensvhs

16 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Beispiel: In Java... Adresse meineadresse, maxensadresse, maxensvhs ; meineadresse = new Adresse ( ) ; meineadresse. name = "VHS Murrhardt" ; meineadresse. s t r a s s e = "Obere Schulgasse 7" ; meineadresse. plz = 71540; meineadresse. ort = "Murrhardt" ; meineadresse. = " info@vhs murrhardt. de" ; meineadresse. drucken ( ) ; meineadresse. senden ("Hallo, VHS! " ) ; maxensadresse = new Adresse ( ) ; //... maxensvhs = meineadresse ;

17 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Der Umgang mit Objekten Objekte anlegen (Objekt ist Instanz einer Klasse!) Klasse referenz ; referenz = new Klasse(< e v t l. Parameter >); Oder auf einmal: Klasse referenz = new Klasse(< e v t l. Parameter >); null Referenzen, die (noch) auf keine Instanz zeigen (z.b. direkt nach der ersten Zeile im obigen Beispiel), haben den speziellen Wert null.

18 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Der Umgang mit Objekten Objekte verwenden ( dot notation ) // Z u griff auf Eigenschaften referenz. e igenschaft =... ; System. out. p r i n t l n ( refe renz. eigenschaf t ) ; // Z u griff auf Methoden referenz. methode(<parameter >);... = referenz. methode2(<parameter >);

19 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Der Umgang mit Objekten Objekte löschen? Nicht nötig! Java hat Garbage Collection - Objekt wird gelöscht, sobald es keine Referenzen mehr darauf gibt. Klasse ref1, ref2 ; ref1 = new Klasse ( ) ; ref2 = ref1 ; // ref1 auf n u l l setzen ref1 = n ull ; // noch e x i s t i e r t das Objekt! ref2 = n ull ; // e r s t j e t z t wird es ( irgendwann ) gelöscht.

20 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Beispiel mit echten Java-Klassen Beispiel // Referenz für Objekte vom Typ Integer Integer meinezahl ; // Erzeugen eines Integer Objektes ( i n i t i a l i s i e r t mit 5) meinezahl = new Integer ( 5); // Aufrufen der Methode tostring String meinstring = meinezahl. tostring ( ) ; // Erzeugen eines zweiten Integer Objektes Integer anderezahl = new I nteger (17); // Methode compareto aufrufen und Ergebnis ausgeben System. out. p r i n t l n ( meinezahl. compareto ( anderezahl ) ) ;

21 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Einige Java-eigene Klassen und Methoden Genaue Beschreibungen aller Klassen und deren Eigenschaften und Methoden in der API-Referenz [2] Klasse Methode Beschreibung String PrintStream Console boolean equalsignorecase( String) boolean startswith(string) String replace(char s, char r) String touppercase() String concat(string) void print (String) void println (String) String readline() Zeichenketten vergleicht Strings ohne Beachtung von Groß-/Kleinschreibung prüft, ob der String mit einem anderen beginnt ersetzt alle Zeichen s durch r wandelt den String in Großbuchstaben um hängt einen String an einen anderen Ausgabestrom - etwas, in das man hineinschreiben kann, z.b. Konsole, Dateien,... System.out ist Instanz von PrintStream schreibt einen String in den Ausgabestrom schreibt einen String und geht in die nächste Zeile Repräsentiert die Konsole ( Eingabeaufforderung ) System.console() gibt eine Instanz zurück liest einen String von der Konsole

22 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Die hat doch jeder... Einige Methoden existieren in jeder Klasse: // v e r g l e i c h t das Objekt mit einem anderen derselben Klasse boolean equals (K) // e r s t e l l t eine Kopie des Objekts K clone () // B e i s p i e l : K ref1 = new K(), ref2 ; ref2 = ref1 ; // i s t etwas anderes a l s K ref1 = new K(), ref2 ; ref2 = ref1. clone ( ) ; // g e n e riert eine Zeichenkette, die das Objekt beschreibt String tostring ()

23 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Hallo, Welt! Klassen, Objekte und Referenzen Üben und Vertiefen 1 Erweitern Sie Hallo.java zu einem Programm Hallo2.java, das den Benutzer zunächst nach seinem Namen fragt und ihn dann mit Hallo, <Name>! begrüßt. 2 Kompilieren Sie das Programm, indem Sie in der Konsole in das Verzeichnis von Hallo2.java wechseln und javac Hallo2.java eingeben. Beseitigen Sie eventuell auftretende Fehler. 3 Führen Sie das Programm mit java Hallo2 aus.

24 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Entwicklungsumgebung Eclipse Das Arbeiten mit Editor und Konsole ist mühsam. Deshalb verwenden wir die Entwicklungsumgebung (IDE - Integrated Development Environment) Eclipse: (Halb-)Automatisches Erzeugen von Klassen(-rümpfen) Hilfe beim Editieren (z.b. Einblenden von Methoden und Eigenschaften gerade verwendeter Klassen und Objekte) Automatisches Kompilieren im Hintergrund und Anzeigen der Fehler im Quellcode Debugging

25 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Üben und Vertiefen 1 Erstellen Sie mit Eclipse ein Projekt Hallo, legen Sie eine Klasse desselben Namens und mit einer main-methode an und implementieren Sie ein Programm, das Hallo, Eclipse! ausgibt. 2 Öffnen Sie das vorbereitete Projekt Eclipse und führen Sie das Programm aus. Was passiert? Gehen Sie mit Hilfe des Debuggers schrittweise durch das Programm und versuchen Sie seine Arbeitsweise zu verstehen. 3 Schreiben Sie ein Programm Datum, das das aktuelle Datum und die Uhrzeit ausgibt. Tipp: Die Klasse Date und die API-Referenz könnten hilfreich sein.

26 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Teil II 7. März Strukturierte Programmierung in Java 5 Objektorientierte Programmierung in Java (Teil I)

27 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Grundlegende Syntax Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Jeder Befehl wird mit Semikolon (;) abgeschlossen Geschweifte Klammern {...} gruppieren Befehle zu Blöcken Kommentare werden vom Compiler ignoriert (sind aber für den Menschen umso wichtiger!) Einzeilig: von // bis zum Zeilenende Mehrzeilig: zwischen /* und */ JavaDoc: zwischen /** und */

28 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Grundlegende Syntax Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Selbstgewählte Bezeichner (also Namen von Klassen, Objekten,...) nur Buchstaben und Ziffern (keine Sonderzeichen außer _) beginnen immer mit einem Buchstaben keine reservierten Schlüsselwörter ( class, new,... ) auf Groß-/Kleinschreibung achten Üblich: Referenzen und Methoden klein, Klassen beginnen mit Großbuchstaben, mehrere Wörter mit gemischter Schreibweise (z.b. MeineKlasse, meinobjekt), Konstanten vollständig in Großbuchstaben (z.b. PI) Java-Sprachreferenz [1]

29 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Primitive Datentypen Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Spezielle Klassen, die besonders häufig gebraucht werden. Vor allem für numerische Daten: byte, short, int, long, float, double, boolean, char Aus Effizienzgründen keine echten Klassen: Keine Referenzen (= (Zuweisung) wirkt wie clone()) Keine Methoden Operatoren (z.b. +, -, *, /, %,!, ++, ==, < usw.) Sprechweise: Typ statt Klasse, Variable statt Objekt

30 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Beispiel: Kasse Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Ideale objektorientierte Sprache Float preis1, p reis2 = new Float (19.95); p reis1 = new Float ( 7.99); Float netto = p reis1. addiere ( p reis2 ) ; Float brutto = netto. m u l t i p l i z i e r e (new Float ( 1. 19)); System. out. p r i n t l n ( brutto ) ; Java f l o a t preis1, p reis2 = f ; p reis1 = 7.99 f ; f l o a t netto = p reis1 + preis2 ; f l o a t brutto = netto 1.19 f ; System. out. p r i n t l n ( brutto ) ;

31 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Umgang mit Variablen Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen 1 Deklaration: Dem Compiler mitteilen, dass Speicherplatz reserviert werden soll. Optional Initialisierung. int i ; int j = 15; 2 Zuweisung: Einen Wert in einer Variable ablegen. i = 27; i = j ; 3 Operationen: mit Werten (von Variablen) rechnen. i = ( j + 1) 3; j = 17 / 2;

32 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Primitive Datentypen im Einzelnen: Ganze Zahlen Typ int Werte 2 31,..., Operatoren +,, int i = j + 3; /, % (Division und Rest) int zeit = 92 % 24; ++, (In /Dekrement) i++; ==,!=, <, >, <=, >= (Vergleich) boolean b = (a >= 7); (unär) int neg = i; Varianten byte ( 128,..., 127) short ( 2 15,..., ) long ( 2 63,..., )

33 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Primitive Datentypen im Einzelnen: Gleitkommazahlen Typ float Werte ±1.4e 45,..., ±3.4e38 Operatoren +,,, / float x = y + 2.8f; ==,!=, <, >, <=, >= (Vergleich) boolean b = (a >= 7.0f); (unär) float neg = x; Varianten double (±4.9e 324,..., ±1.8e308)

34 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Primitive Datentypen im Einzelnen: Zeichen Typ char Werte..., A, B,..., a, b,... Operatoren ==,!=, <, >, <=, >= (Vergleich) boolean b = (c == g ); Besonderheiten n Zeilenumbruch \t Tabulator \" Anführungszeichen \ Apostroph \\ Backslash \u0065 Unicode-Zeichen

35 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Primitive Datentypen im Einzelnen: Wahrheitswerte Typ boolean Werte true, false Operatoren! (Negation) boolean erfolg =! fehler ; && (logisches Und) boolean gueltig = (i > 0) && (i < 10); ( logisches Oder) boolean antwort = (c== j ) (c== n ); Besonderheiten Rückgabewert der Vergleichsoperatoren

36 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Typumwandlungen Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Wir können Variablen eines Typs in solche eines anderen Typs umwandeln: Typecasts int i = 5, j = 7; f l o a t f = 2.4 f, g = 2.14 f, h = 3.8 f ; f = ( f l o a t ) i ; // Jetzt hat f den Wert 5.0 f f = ( f l o a t )( i + j ) ; // Nun i s t f gleich 12.0 f i = ( int )g ; // i bekommt den Wert 2 j = ( int )( h g ) ; // Jetzt hat j den Wert 1 Bei Typumwandlungen können Daten verloren gehen! Nicht alle Typen lassen sich sinnvoll ineinander umwandeln.

37 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Konstanten Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Variablen, deren Wert nicht geändert werden kann. Beispiel f i n a l f l o a t PI = f ; f l o a t radius = 3.5 f ; f l o a t umfang = 2.0 f PI radius ; PI = 3.1 f ; // Compiler meldet Fehler!

38 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Eingabe Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Einlesen von Zeichenketten BufferedReader br = new BufferedReader (new InputStreamReader ( System. in ) ) ; String s = br. readline ( ) ; Einlesen primitiver Datentypen BufferedReader br = new BufferedReader (new InputStreamReader ( System. in ) ) ; int i = Integer. parseint ( br. readline ( ) ) ; f l o a t f = Float. parsefloat ( br. readline ( ) ) ; char c = ( char ) br. read ( ) ; In der ersten Zeile: import java.io. ;

39 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Ausgabe Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Ausgeben von primitiven Datentypen und Zeichenketten System. out. p rint (25); System. out. p r i n t l n (3.75 f ) ; System. out. p rint (" Hallo, Welt! " ) ;

40 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Üben und Vertiefen Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen 1 Schreiben Sie ein Programm AddSub, das den Benutzer zwei Gleitkommazahlen eingeben lässt und deren Summe und Differenz berechnet. 2 Schreiben Sie ein Programm DM2EUR, das einen vom Benutzer eingegebenen DM-Betrag in Euro umrechnet.

41 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Felder Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Felder Felder sind Sammlungen mehrerer Variablen (oder Objekte) des gleichen Typs (oder der gleichen Klasse). Sie werden wie Objekte immer mit Referenzen verwendet und mit new angelegt. Auch dann, wenn sie primitive Typen enthalten! Beispiel int [ ] f e l d ; f e l d = new int [ ] ; f e l d [ 0 ] = 17; int i = f e l d [ 2 9 ] ;

42 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Felder Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen length Jedes Feld-Objekt hat eine Eigenschaft length vom Typ int, welche die Anzahl der Feldelemente angibt. Die Elemente eines Feldes sind von 0 bis feld.length 1 indiziert. Felder von Objekten Enthält das Feld Objekte, dann erzeugt Klasse [ ] f e l d ; f e l d = new Klasse [ ] ; nur die Referenzen, nicht die hundert Objekte selbst! Das muss in einem zweiten Schritt getan werden: f e l d [ 0 ] = new Klasse ( ) ; f e l d [ 1 ] = new Klasse ( ) ; //...

43 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Mehrdimensionale Felder Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Es gibt auch Felder mit Elementen vom Typ int [] (analog für andere Typen oder Klassen als int), also Felder von Feldern: int [ ] [ ] f e l d f e l d ; f e l d f e l d = new int [ 3 ] [ ] ; feldfeld ist nun ein Feld von (Referenzen auf) int-felder, welches im Moment aber nur null-referenzen enthält. f e l d f e l d [ 0 ] = new int [ 4 ] ; f e l d f e l d [ 1 ] = new int [ 7 ] ; f e l d f e l d [ 2 ] = new int [ 2 ] ; f e l d f e l d [ 1 ] [ 5 ] = 13;

44 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Mehrdimensionale Felder Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen feldfeld 13

45 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Mehrdimensionale Felder Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Es geht auch kürzer: Sollen alle Einzelfelder gleich groß sein, so können wir anstelle von int [ ] [ ] f e l d f e l d ; f e l d f e l d = new int [ 3 ] [ ] ; f e l d f e l d [ 0 ] = new int [ 4 ] ; f e l d f e l d [ 1 ] = new int [ 4 ] ; f e l d f e l d [ 2 ] = new int [ 4 ] ; auch schreiben: int [ ] [ ] f e l d f e l d ; f e l d f e l d = new int [ 3 ] [ 4 ] ;

46 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Wie wird ein Programm ausgeführt? Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Zunächst immer eine Anweisung nach der anderen. Das reicht nicht! Wir wollen bestimmte Anweisungen wiederholt ausführen (Schleifen) manche Anweisungen nur unter bestimmten Bedingungen ausführen (Verzweigung) Im Debugger von eclipse kann der Kontrollfluss (in welcher Reihenfolge werden welche Anweisungen ausgeführt) nachvollzogen werden. Kontrollstrukturen steuern den Kontrollfluss

47 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Verzweigung (if) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Syntax i f ( Wert vom Typ boolean ) Anweisung oder Block [ else Anweisung oder Block ] Wenn die if-bedingung den Wert true hat, wird die erste Anweisung ausgeführt, sonst (falls vorhanden) die zweite.

48 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Verzweigung (if) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Beispiel i f (d!= 0.0 f ) { f l o a t q = a / d ; System. out. p r i n t l n (q ) ; } else System. out. p r i n t l n (" Ungültiger Te iler " ) ;

49 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Mehrfachverzweigung (switch) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Syntax switch ( Wert vom Typ int, short, byte oder char ) { case Wert vom entsprechenden Typ : [ Anweisungen ] [ break ; ]. [ default : [ Anweisungen ] [ break ; ] ] } Die Anweisungen des Falles, der dem gegebenen Wert entspricht, werden ausgeführt.

50 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Mehrfachverzweigung (switch) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Beispiel switch ( stunde ) { case 7: System. out. p r i n t l n ("Guten Morgen! " ) ; break ; case 17: case 18: System. out. p r i n t l n ("Guten Abend! " ) ; break ; default : System. out. p r i n t l n ("Guten Tag! " ) ; break ; }

51 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Mehrfachverzweigung (switch) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen switch kann immer durch eine Kette von if... else if... else... ersetzt werden: Beispiel i f ( stunde == 7) System. out. p r i n t l n ("Guten Morgen! " ) ; else i f ( stunde == 17 stunde == 18) System. out. p r i n t l n ("Guten Abend! " ) ; else System. out. p r i n t l n ("Guten Tag! " ) ;

52 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Schleifen (while) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Syntax while ( Wert vom Typ boolean ) Anweisung oder Block Solange die Bedingung den Wert true hat, wird die Anweisung wiederholt ausgeführt.

53 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Schleifen (do... while) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Syntax do Anweisung oder Block while ( Wert vom Typ boolean ) ; Bei dieser Variante wird die Anweisung mindestens einmal durchgeführt, da die Bedingung erst nach dem Durchlauf der Schleife geprüft wird.

54 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Schleifen (do... while) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Beispiel BufferedReader br = new BufferedReader (new InputStreamReader ( System. in ) ) ; String pswd ; do { System. out. p rint ("Passwort eingeben : " ) ; pswd = br. readline ( ) ; } while (pswd. equals ("geheim " ) ) ;

55 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Zählschleife (for) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Syntax for ( I n i t i a l i s i e r u n g ; Bedingung ; Inkrement ) Anweisung oder Block Zunächst wird die Initialisierungsanweisung durchgeführt, dann der Schleifenrumpf, solang die Bedingung wahr ist. Nach jedem Durchlauf wird die Inkrementierungsanweisung durchgeführt.

56 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Zählschleife (for) Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen Beispiel: Berechnen der ersten 10 Quadratzahlen for ( int i = 0; i < 10; i++) System. out. p r i n t l n ( i i ) ; Beispiel: Ausgeben eines Feldes f l o a t [ ] f e l d = new f l o a t [ 1 4 ] ; //... for ( int i = 0; i < f e l d. length ; i++) System. out. p r i n t l n ( f e l d [ i ] ) ; // oder kürzer : for ( f l o a t f : f e l d ) System. out. p r i n t l n ( f ) ;

57 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Üben und Vertiefen I Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen 1 Schreiben Sie ein Programm Schaltjahr, das den Benutzer nach einer Jahreszahl fragt und dann ermittelt, ob dieses Jahr ein Schaltjahr ist. (Tipp: Der Operator % berechnet den Rest beim Teilen einer Zahl durch eine andere. Zweiter Tipp: Jedes vierte Jahr ist ein Schaltjahr, außer die hundertsten, es sei denn, sie sind durch 400 teilbar.) 2 Öffnen Sie das vorbereitete Projekt Debug. Dieses Programm soll den Benutzer nach einer Zahl fragen und die Summe bis zu der eingegebenen Zahl berechnen. Leider hat sich ein Fehler eingeschlichen. Finden Sie ihn mit Hilfe des Eclipse-Debuggers!

58 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Üben und Vertiefen II Grundlegende Syntax Typen, Variablen & Konstanten Ein- und Ausgabe Felder Kontrollstrukturen 3 Schreiben Sie ein Programm Mittel, das Folgendes tut: Zunächst wird der Benutzer gefragt, wieviele Zahlen er eingeben möchte. Dann werden diese in ein Feld eingelesen. Anschließend wird deren Mittelwert berechnet und ausgegeben. 4 Innerhalb von Schleifen sind die Anweisungen break und continue erlaubt. Finden Sie experimentell oder durch Nachschlagen in der Sprachreferenz [1] heraus, was diese Anweisung bewirkt.

59 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Klassen definieren Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Adresse.java [ public ] clas s Adresse { // Eigenschaften und Methoden } Adresse meineadresse = new Adresse ( ) ; Jede.java-Datei sollte eine Klasse gleichen Namens enthalten, welche public deklariert ist. Alle anderen Klassen sind Hilfsklassen und nach außen nur eingeschränkt sichtbar. Am besten jede Klasse in eine eigene Datei stecken!

60 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Eigenschaften definieren Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Adresse.java public class Adresse { public String name, s t r a s s e ; } // verwenden der Klasse und i h r e r Eigenschaft : Adresse meineadresse = new Adresse ( ) ; meinadresse. name = new String ("VHS Murrhardt" ) ; Eigenschaften einer Klasse können Variablen oder Objekte sein. Was der Zusatz public bedeutet werden wir später sehen.

61 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Methoden definieren Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Adresse.java public class Adresse { public String name, s t r a s s e ; } public void drucke () { System. out. p r i n t l n (name. append (" " ). append ( s t r a s s e ) ) ; } // Aufruf der Methode : Adresse meineadresse = new Adresse ( ) ; meineadresse. name = new String ("VHS Murrhardt" ) ; meineadresse. s t r a s s e = new String ("Obere Schulgasse " ) ; meineadresse. drucke ( ) ;

62 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Zugriff auf Eigenschaften und Methoden Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Innerhalb einer Methode einer Klasse erhält man eine Referenz auf das eigene Objekt mit this. Der Zugriff auf Eigenschaften und Methoden des eigenen Objekts kann aber auch ohne Referenz. erfolgen: MeineKlasse.java p u b l i c c l a s s MeineKlasse { p u b l i c i n t meineeigenschaft ; } p u b l i c void meinemethode1 () {/... /} p u b l i c void meinemethode2 () { t h i s. meineeigenschaft = 7; t h i s. meinemethode1 ( ) ; meineeigenschaft = 5; meinemethode1 ( ) ; }

63 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Methoden: Parameter Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Parameter public void drucke ( String text ) { System. out. p r i n t l n ( meinstring. append( text ) ) ; } // Aufruf der Methode : meinobjekt. drucke (" irgendein Text" ) ; Der Wert "irgendein Text" wird beim Aufruf in die nur innerhalb der Methode gültige Variable text kopiert.

64 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Methoden: Rückgabewert Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Parameter public int summe( int wert1, int wert2 ) { int s = wert1 + wert2 ; return s ; } // Aufruf der Methode : int meinesumme = meinobjekt. summe(2, 3); Wird kein Rückgabewert benötigt, so verwendet man den speziellen Typ void.

65 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Methoden: Überladen Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Überladene Methode public void drucke ( String text ) { System. out. p r i n t l n ( meinstring. append( text ) ) ; } public void drucke ( PrintStream ps, String text ) { ps. p r i n t l n ( meinstring. append( text ) ) ; } // Aufruf der Methoden : meinobjekt. drucke (" irgendein Text" ) ; meinobjekt. drucke ( System. out, "noch ein Text" ) ;

66 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Konstruktoren Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Wozu sind die Klammern beim Erstellen eines Objektes gut? MeineKlasse meinobjekt = new MeineKlasse ( ) ; Antwort: Beim Anlegen des Objektes wird eine spezielle Methode der Konstruktor aufgerufen. Er kann genutzt werden, um das Objekt zu initialisieren z.b. den Eigenschaften Standardwerte zuzuweisen. Der Konstruktor heißt immer so wie die Klasse. Er kann überladen werden und Parameter bekommen. Der parameterlose Konstruktor heißt Standardkonstruktor. Konstruktoren haben keinen Rückgabewert, auch nicht void.

67 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Konstruktoren Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Konstruktoren class MeineKlasse { public int meineeigenschaft ; public MeineKlasse () { meineeigenschaft = 11; } public MeineKlasse ( int param) { meineeigenschaft = param ; } } // Anlegen von Objekten : MeineKlasse meinobjekt1 = new MeineKlasse ( ) ; MeineKlasse meinobjekt2 = new MeineKlasse (13);

68 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Destruktoren Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Destruktoren werden beim Löschen eines Objekts aufgerufen. Sie können Aufräumarbeiten vornehmen. Dank Garbage Collection braucht man Destruktoren nur selten das meiste räumt sich von selbst auf. Destruktor c lass MeineKlasse { public int meineeigenschaft ; protected void f i n a l i z e () { meineeigenschaft = 0; } }

69 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Üben und Vertiefen Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden 1 Schreiben Sie eine Klasse Buch, die in einer Bibliotheksverwaltung verwendet werden könnte. Ihre Klasse sollte geeignete Eigenschaften (Titel, Autor, ist das Buch ausgeliehen und an wen?,...) und Methoden ausleihen und zurueckgeben besitzen. Welche Konstruktoren sollte die Klasse Buch sinnvollerweise bekommen? Schreiben Sie ein Testprogramm, das einige Buch-Instanzen anlegt, deren Eigenschaften ändert und Methoden aufruft.

70 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Parameter Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Der Wert einer als Parameter übergebenen Variablen ändert nach außen nicht, wenn er innerhalb der Methode verändert wird ( call by value ): Primitive Datentypen als Parameter public void meinemethode( int param ) { param = 3; System. out. p r i n t l n ( param ) ; // Ausgabe : 3 } // Aufruf der Methode : int i = 5; meinobjekt. meinemethode( i ) ; System. out. p r i n t l n ( i ) ; // Ausgabe : 5

71 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Parameter Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Objekte als Parameter p u b l i c c l a s s AndereKlasse { p u b l i c i n t andereeigenschaft ;} p u b l i c i n t MeineKlasse { p u b l i c void meinemethode1 ( AndereKlasse param) { param = new AndereKlasse ( ) ; param. andereeigenschaft = 3; } p u b l i c void meinemethode2 ( AndereKlasse param) { param. andereeigenschaft = 3; } } // Aufruf der Methoden : MeineKlasse meinobjekt = new MeineKlasse ( ) ; AndereKlasse anderesobjekt = new AndereKlasse ( ) ; anderesobjekt. andereeigenschaft = 2; meineklasse. meinemethode1 ( anderesobjekt ) ; System. out. p r i n t l n ( anderesobjekt. andereeigenschaft ) ; // Ausgabe : 2

72 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Parameter Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Objekte als Parameter p u b l i c c l a s s AndereKlasse { p u b l i c i n t andereeigenschaft ;} p u b l i c i n t MeineKlasse { p u b l i c void meinemethode1 ( AndereKlasse param) { param = new AndereKlasse ( ) ; param. andereeigenschaft = 3; } p u b l i c void meinemethode2 ( AndereKlasse param) { param. andereeigenschaft = 3; } } // Aufruf der Methoden : MeineKlasse meinobjekt = new MeineKlasse ( ) ; AndereKlasse anderesobjekt = new AndereKlasse ( ) ; anderesobjekt. andereeigenschaft = 2; meineklasse. meinemethode2 ( anderesobjekt ) ; System. out. p r i n t l n ( anderesobjekt. andereeigenschaft ) ; // Ausgabe : 3

73 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Gültigkeit und Sichtbarkeit Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Der Umgang mit Variablen wird ein bisschen komplizierter, wenn Methoden im Spiel sind. Während des Ablaufs eines Programmes heißt eine Variable gültig, solange sie im Speicher vorhanden ist. Eine Variable nennt man zu einem Zeitpunkt eines Programmablaufs sichtbar, wenn sie mit ihrem Namen angesprochen werden kann. Dassebe gilt für Referenzen anstelle von Variablen.

74 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Gültigkeit und Sichtbarkeit Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beispiel 1 1 int i = 0; 2 { 3 int j = 5; 4 i = 7; 5 } 6 j = 0; Variable gültig sichtbar i j

75 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Gültigkeit und Sichtbarkeit Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beispiel 2 1 public void methode1 () 2 { 3 int i = 13; 4 methode2 ( ) ; 5 i = 7; 6 } 7 public void methode2 () 8 { 9 int j = 11; 10 System. out. p r i n t l n ( j ) ; 11 } // methode1 wird aufgerufen Variable gültig sichtbar i 3,4,9,10,5 3,4,5 j 9,10 9,10

76 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Gültigkeit und Sichtbarkeit Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beispiel 3 1 public int i ; 2 3 public void methode () 4 { 5 i = 13; 6 int i = 17; 7 int j = 2; 8 i = 7; 9 } Variable gültig sichtbar i i j

77 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Üben und Vertiefen Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden 1 Ermitteln Sie den Ablauf des Programmes auf der rechten Seite, wenn methode1 aufgerufen wird. Wann sind die einzelnen Variablen gültig, wann sichtbar? Welche Werte haben sie? 1 public int i ; 2 public void methode1 () 3 { 4 i = 13; 5 int i = 17; 6 int j = 2; 7 methode2 ( ) ; 8 i = 7; 9 } 10 public void methode2 () 11 { 12 int j = 0; 13 i = 5; 14 int i ; 15 int k = 2; 16 i = 11; 17 }

78 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Rekursion Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Methoden können andere Methoden aufrufen, aber auch sich selbst. Eine solche Rekursion kann ein effizienter Weg zur Lösung mancher Probleme sein. Aber Achtung vor versteckten Endlos schleifen! Beispiel public int f a k u ltaet ( int n) { i f (n = 0) return 1; else return n fakultaet (n 1); }

79 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Kapselung Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Die zuvor betrachtete Klasse Adresse ist nicht sicher gegenüber unsinnigen Aktionen. Zum Beispiel können wir eine Instanz mit negativer Hausnummer oder nichtexistenter Postleitzahl anlegen und verwenden. Idee: Klassen sollten gekapselt sein, d.h. ihre Eigenschaften sollten von außen nicht direkt zugänglich sein, sondern nur über Methoden der Klasse. Diese können Tests durchführen und verhindern, dass eine Instanz in einen unsinnigen Zustand kommt.

80 n) Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Kapselung Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden void drucken()... name= VHS Murrhardt strasse= Obere Schulgasse 7 plz=71540 ort= Murrhardt = info@vhs-murrhardt.de getname() String setname(string void

81 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Kapselung Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beispielsweise können wir für die Eigenschaft plz zwei Methoden void setplz(int) und int getplz() anlegen. Wir brauchen also einen Weg, den Zugriff auf Eigenschaften für jeden außer den eigenen Methoden der Klasse zu unterbinden. Dasselbe für Methoden (z.b. Hilfsmethoden, die von außen nicht aufrufbar sein sollen) Lösung: public und private

82 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) public und private Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beispiel class MeineKlasse { public int eigens chaft1 ; private int eigenschaft2 ; public void methode1 () { eigenschaft1 = 5; eigenschaft2 = 7; methode2 ( ) ; } private void methode2 () { eigenschaft1 = 2; eigenschaft2 = 3; } }

83 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) public und private Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beispiel (Fortsetzung) MeineKlasse meinobjekt = new MeineKlasse ( ) ; meinobjekt. eigens chaft1 = 17; meinobjekt. methode1 ( ) ; int i = meinobjekt. eigenscha ft2 ; // C om piler fehler! meinobjekt. methode2 ( ) ; // Compilerfehler!

84 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Richtlinien Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Eigenschaften von Klassen sind (fast) immer gekapselt. Die Methoden stellen sicher, dass sich Instanzen immer in einem konsistenten Zustand befinden. Klassen vertrauen niemandem außer ihren eigenen Methoden. Z.B. werden Parameter, die von außen kommen, immer als kontaminiert betrachtet und erst nach eingehender Prüfung in das Objekt übernommen. Jede Klasse ist eine in sich funktionsfähige Einheit und kann wiederverwendet werden (und wir wissen nicht in welchem Kontext).

85 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Üben und Vertiefen Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden 1 Überarbeiten Sie die Klasse Adresse, so dass sie diesen Anforderungen genügt.

86 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Statische Eigenschaften und Methoden Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Gelegentlich gehören Eigenschaften eher zur Klasse als zu ihren Instanzen. Gründe können sein: Der Wert muss für alle Instanzen der Klasse derselbe sein. Es darf aus gewissen Gründen nur eine einzige Instanz der Klasse geben (z.b. die Klasse System im Java-API). Konstanten müssen nicht in jeder einzelnen Instanz gespeichert werden (können es aber). Datenaustausch zwischen verschiedenen Instanzen einer Klasse. Solche Eigenschaften heißen statisch.

87 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Statische Eigenschaften und Methoden Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Adresse Eigenschaften String name, strasse int hnr static boolean strassevorhnr= true meineadresse Methoden static void formatsetzen(boolean) void drucken() void drucken() name= VHS Murrhardt strasse= Obere Schulgasse 7

88 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Statische Eigenschaften und Methoden Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beispiel class Adresse { private String name, s t r a s s e ; private int hnr ; private static boolean strassevorhnr ; } public static void formatsetzen ( boolean strvorh ) { strassevorhnr = strvorh ;} public void drucken () { i f ( strassevorhnr ) System. out. p r i n t l n (name + s t r a s s e + hnr ) ; else System. out. p r i n t l n (name + hnr + s t r a s s e ) ; }

89 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Regeln Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Beim Verwenden statischer Eigenschaften und Methoden ist zu beachten: Nichtstatische Methoden können auf statische Eigenschaften und Methoden zugreifen. Statische Methoden können auf statische Eigenschaften und Methoden zugreifen. Statische Methoden können nicht auf nichtstatische Eigenschaften und Methoden zugreifen. Warum? this ist in statischen Methoden nicht definiert.

90 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Beispiele im Java-API Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden Wir haben statische Eigenschaften und Methoden schon häufiger verwendet: in und out sind statische Eigenschaften der Klasse System. (System hat überhaupt nur statische Eigenschaften und Methoden.) Die Methode parseint der Klasse Integer ist statisch. Die main-methode in unseren Programmen ist statisch.

91 Strukturierte Programmierung in Java Objektorientierte Programmierung in Java (Teil I) Üben und Vertiefen Klassen, Eigenschaften und Methoden definieren Konstruktoren und Destruktoren Mehr über Methoden Kapselung Statische Eigenschaften und Methoden 1 Ergänzen Sie die Klasse Buch um eine statische Methode int anzahlausgeliehen(), die sie Anzahl der ausgeliehenen Bücher zurückgibt. 2 Man kann Konstruktoren auch private definieren. Wenn alle Konstruktoren einer Klasse private sind, können dann noch Instanzen der Klasse erstellt werden? Welchen Sinn könnte diese Vorgehensweise haben?

92 Objektorientierte Programmierung in Java (Teil II) Projekt (Teil I) Teil III 13. März Objektorientierte Programmierung in Java (Teil II) 7 Projekt (Teil I)

93 Objektorientierte Programmierung in Java (Teil II) Projekt (Teil I) Vererbung und Polymorphie Interfaces Einführendes Beispiel Angenommen, wir wollen eine große Adresskartei mit Hilfe einer Klasse Adresse verwalten. Allerdings tauchen in unserem Datenbestand sowohl normale Adressen, als auch Postfachadressen auf. Wir benötigen also zwei verschiedene Adressklassen. Hausadresse Postfachadresse Eigenschaften String name String strasse int hnr, plz String ort Methoden void drucken() boolean plzpruefen() Eigenschaften String name int postfach int plz String ort Methoden void drucken() boolean plzpruefen()

94 Objektorientierte Programmierung in Java (Teil II) Projekt (Teil I) Vererbung und Polymorphie Interfaces Einführendes Beispiel Diese Vorgehensweise hat einige Nachteile: Methoden, die bei beiden Klassen gleich sind (wie z.b. plzpruefen müssen doppelt implementiert (und schlimmer: gewartet) werden. Wir können unsere Adresssammlung nicht mehr in einem großen Feld vom Typ Adresse [] halten, da die Elemente Instanzen zweier verschiedener Klassen sind. Die Trennung in zwei Felder ist logisch nicht sinnvoll. Jede Methode, die auf Adressen zugreift, muss eine Fallunterscheidung durchführen, auch wenn die durchgeführte Operation gar nicht von der genauen Art der Adresse abhängt.

95 Objektorientierte Programmierung in Java (Teil II) Projekt (Teil I) Vererbung und Polymorphie Interfaces Einführendes Beispiel Lösung: Wir fassen die Gemeinsamkeiten beider Klassen in einer Oberklasse Adresse zusammen: Adresse Eigenschaften String name int plz String ort Methoden void drucken() boolean plzpruefen() Hausadresse Eigenschaften String strasse int hnr Methoden void drucken() boolean plzpruefen() Postfachadresse Eigenschaften int postfach Methoden void drucken() boolean plzpruefen()

96 Objektorientierte Programmierung in Java (Teil II) Projekt (Teil I) Vererbung und Polymorphie Interfaces Ableiten von Klassen Dies nennt man Ableiten einer Klasse von einer Basisklasse (englisch derivation ). In Java: c l a s s BasisKlasse { p u b l i c i n t eigen schaf t1 ; p u b l i c void methode1 () { /... / } } c l a s s A bgelei te te Kl asse extends BasisKlasse { p u b l i c i n t eigen schaf t2 ; p u b l i c void methode2 () { /... / } } Die abgeleitete Klasse erbt alle Eigenschaften und Methoden der Basisklasse. Sie hat also zwei Eigenschaften und zwei Methoden: A b ge leitet e Klasse meinobjekt = new Ab g eleitete Klasse ( ) ; meinobjekt. eigen sc haft2 = 5; meinobjekt. eigen sc haft1 = 7; meinobjekt. methode1 ( ) ;

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

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

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

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

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

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

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

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

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

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

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

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

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

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 Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

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

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

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 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

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

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

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

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

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

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 5 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

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

Einfache Arrays. 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

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Variablen & erweiterte Aktionen nutzen

Variablen & erweiterte Aktionen nutzen 341 In Captivate können Sie mit Hilfe von Variablen Texte & Werte speichern oder Systeminformationen ausgeben. Außerdem können Sie auf Basis von Variablen komplexere Aktionen entwickeln, wie z. B. eine

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf

Mehr

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace. Starten Sie Eclipse: Abgesehen vom Kommandozeilenfenster, auf welches wir später eingehen, öffnet sich ein Dialog (in der FH vermutlich nicht, überspringen Sie in diesem Fall): Hier tragen sie Ihr Arbeitsverzeichnis

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 23. April 2009 1/14 Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung Prof. G. Kemnitz Institut für Informatik,

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE22-NutzungVonKlassen (Stand 28.09.2012) Aufgabe 1: Entwickeln Sie in Eclipse auf der Basis der vorgestellten Java-GUI-Klassen ein Java- Programm, das

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 5 1 Aufgabe: Eclipse IDE 1.1 Lernziele 1. Die Entwicklungsumgebung Eclipse einrichten. 2. Eclipse kennen lernen und mit

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Kontrollstrukturen und Funktionen in C

Kontrollstrukturen und Funktionen in C Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren

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

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr