2. Java Schnellkurs Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik



Ähnliche Dokumente
1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

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

Java Einführung Collections

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Programmieren in Java

Objektorientierte Programmierung. Kapitel 12: Interfaces

C# im Vergleich zu Java

Vorkurs Informatik WiSe 15/16

Objektorientierte Programmierung

Prinzipien Objektorientierter Programmierung

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

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

1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Einführung in die Programmierung

Einführung in Eclipse und Java

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Grundlagen der Informatik 0

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Einführung in die Java- Programmierung

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

J.5 Die Java Virtual Machine

Java Virtual Machine (JVM) Bytecode

3 Objektorientierte Konzepte in Java

Vorlesung Informatik II

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

2. Programmieren gegen Schnittstellen Advanced Programming Techniques

Java: Vererbung. Teil 3: super()

Grundlagen der Programmierung UE

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Typumwandlungen bei Referenztypen

Javakurs 2013 Objektorientierung

Grundlagen der Programmierung UE

1. Einführung Grundlagen der Programmierung 1 (Java)

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

Vererbung & Schnittstellen in C#

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Java Einführung Methoden in Klassen

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Grundlagen von Python

Vorkurs C++ Programmierung

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Innere Klassen in Java

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

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

Java Kurs für Anfänger Einheit 5 Methoden

Einführung in die Programmierung mit Java

Software Engineering Klassendiagramme Einführung

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

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

Kapitel 6. Vererbung

Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff

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

Java Einführung Programmcode

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Kapitel 6. Vererbung

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Software Engineering Klassendiagramme Assoziationen

Kapitel 6. Vererbung

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

Java für Computerlinguisten

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

JAVA als erste Programmiersprache Semesterkurs

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Applets I. Grundlagen der g Applet-Programmierung

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Effiziente Java Programmierung

7. Pakete Grundlagen der Programmierung 1 (Java)

Distributed Computing Group

Empfehlenswerte Literatur

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Probeklausur: Programmierung WS04/05

7. Komponenten Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Objektorientierte Programmierung

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Client-Server-Beziehungen

3 Objektorientierte Konzepte in Java

Objektorientierte Programmierung

Java Einführung Abstrakte Klassen und Interfaces

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

Einführung in die Java- Programmierung

Liste Programmieren Java Überblick

Objektorientierte Programmierung OOP

Javakurs für Anfänger

Applications Applets (eingeschränkte Rechte)

Objektorientierung: Klassen und Objekte

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

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Methoden und Wrapperklassen

1 Polymorphie (Vielgestaltigkeit)

Java im Informatikunterricht der gymnasialen Oberstufe

Einführung in Javadoc

Transkript:

2. Java Schnellkurs Advanced Programming Techniques Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Einordnung in den gesamten Kurs 1. Einführung 2. Java Schnellkurs 3. Programmieren gegen Schnittstellen 4. Software-Kategorien 5. Komponenten 6. Regeln zum Design von Komponenten 7. Dokumentieren und Testen 8. Fehlerbehandlung 9. Konfigurationsmanagement 10.Debugging, Tracing, Logging 11. Refactoring 2 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Agenda Übersicht Programmierkonstrukte Klassen und Interfaces JDK Literatur

Übersicht 2000 Java im Kontext anderer Programmiersprachen Java 1990 1980 C++ OO Turbo- PASCAL OBERON MODULA Ada Eiffel SMALLTALK80 COMMON LISP PROLOG C INTER LISP 1970 1960 APL BCPL PL360 PL/1 COBOL PASCAL Basic ALGOL68 SIMULA LISP Fortran ALGOL 1950 Assemblersprachen Maschinensprachen 4 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Übersicht Java Historie 1991 im Green-Projekt (Sun Microsystems) als Sprache Oak entwickelt. Ziel: einfache, objekt-orientierte, plattformunabhängige Sprache zur Programmierung von Micro-Computern in Geräten der Konsumelektronik 1995 von Sun Microsystems ersmals als Sprache Java vorgestellt 1995 Netscape lizenziert mit dem Navigator 2.0 erstmals Java-Technologie von Sun - Java- Applets können über das Netz von einem zentralen Server geladen werden. 1996 Freigabe des Java Developer Kit 1.0 JDK 1.0 und JDK 1.1, das ab April 1997 offiziell als Java One auf dem Markt ist 1998 JDK 1.2 enthält als Erweiterung insbesondere die Java Foundation Classes mit dem Swing Toolset zur Gestaltung graphischer Oberflächen (GUI). Ab der Version 1.2 werden die JDK-Versionen 1.x als Java 2 SDK bezeichnet (SDK=Software Development Kit). 2000-2003 JDK 1.3, 1.4: Fehlerkorrekturen/Performance-Verbesserungen gegenüber Vorgängerversionen 2004 JDK 1.5 (Java 5): Umfangreiche Programmiersprachen-Erweiterungen, zum Beispiel Generics, Boxing / Unboxing Aktuelle Version: JDK 6 5 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Übersicht Das Konzept der Virtual Machine in Java class Appl - -...... Java-Programm Xxxxx.java Bytecode Xxxxx.class übersetzt <Opcodes> iadd... entspricht Java-Compiler Aufruf: javac Xxxxx.java Java Virtual Machine implementiert führt aus Java-Interpreter Aufruf: java Xxxxx 6 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009 1 5 1+5=6 Bei der Java Virtual Machine handelt es sich nicht um einen tatsächlich existierenden Prozessor, sondern nur um die Spezifikation eines solchen. Daher wird bei Java ein Programm gebraucht, das einen real existierenden Rechner in eine Java-Maschine verwandelt. Hierbei handelt es sich um den Java-Interpreter.

Agenda Übersicht Programmierkonstrukte Klassen und Interfaces JDK Literatur

Programmierkonstrukte Ein einfaches Java-Programm Objektorientiert: keine Methoden außerhalb von Klassen! Klassenmethoden mit static main-methode für Programmstart Klasse des JDK Modifier class Sample { public static void main (String[] arg) { System.out.println("Hello World!"); } } Punkt-Notation zum Zugriff auf Variablen Punkt-Notation zum Zugriff auf Methoden String Literal Separator 8 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Programmierkonstrukte Lexikalische Konventionen Variablennamen Methodennamen Kleinbuchstaben variable Kleinbuchstaben methode() Klassennamen Großbuchstaben Person symbolische Konstanten alle Buchstaben groß MAXIMUM Bei zusammengesetzten Namen werden ab dem 2. Wort jeweils der 1. Buchstabe des Wortes groß geschrieben, z.b. die Variable firstname, die Methode getfirstname() Stets sprechende Namen wählen! 9 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Programmierkonstrukte Datentypen in Java Datentyp Einfacher (elementarer, primitiver) Typ Referenztyp Wahrheitswerte -boolean Zeichen-Typ -char numerischer Typ Klassen- Typ Array- Typ Schnittstellen- Typ Integer-Typ -byte -short -int -long Gleitpunkt-Typ -float -double 10 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Agenda Übersicht Programmierkonstrukte Klassen und und Interfaces JDK Literatur

Klassen und Interfaces Referenzsemantik in Java: Was geschieht und warum? public class Kunde { private String name; k1 = new Kunde ( Huber ); k2 = new Kunde ( Müller ); k2 = k1; k2.setname( Schultz ); System.out.prinln( k1.getname()); public Kunde(String name){ this.setname(name); } public void setname(string name){ this.name = name; } public String getname(){ return this.name; } 12 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Klassen und Interfaces Garbage Collection Klassen werden mit new instanziiert (Konstruktoraufruf) Speicherplatz muss nicht explizit allokiert werden geschieht implizit durch die virtuelle Maschine Destruktoren müssen nicht programmiert werden Garbage Collection erfolgt automatisch durch die virtuelle Maschine Wie kann das funktionieren? 13 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Klassen und Interfaces Vererbung class Article { int code; int price; boolean available() {...} void print() {...} Article(int c, int p) {...} } Oberklasse (Basisklasse) Schlüsselwort extends zeigt Vererbung an Nur Einfachvererbung in Java! Article code price available() print() Article(c, p) class Book extends Article { String author; String title; void print() {...} Book(int c, int p, String a, String t) {...} } Unterklasse erbt: code, price, available, print ergänzt: author, title, Konstruktor überschreibt: print Book author title print() Book(c, p, a, t) Wenn keine Oberklasse angegeben wird, ist sie Object (implizite Oberklasse aller Java-Klassen) 14 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Klassen und Interfaces Das Denken in Schnittstellen (Interfaces) ist eines der wichtigsten Konzepte der Programmierung Interface: beschreibt die Außensicht, das heißt die Sicht des Nutzers ist einfach ist vielseitig verwendbar Klasse: enthält die Innensicht, das heißt die Sicht des Programmierers ist komplex ist speziell cd Collections «interface» List + add() : void + get() : void + contains() : void + remove() : void «realize» ArrayList «realize» LinkedList 15 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Klassen und Interfaces Java bietet Interfaces als Sprachkonstrukt an Deklaration eines Interface Interfaces definieren das Verhalten von Objekten Interfaces enthalten: Instanzmethoden Konstanten Interfaces haben keine Konstruktoren Interfaces enthalten keine Implementierung public interface List<E> { public void add(e element); public void remove(e element); } 16 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Klassen und Interfaces Verwendung eines Interface Man sagt: Eine Klasse implementiert ein Interface, wenn sie jede einzelne Methode des Interfaces bereitstellt Eine Klasse kann beliebig viele Interfaces implementieren Ein Interface kann von beliebig vielen Klassen implementiert werden Eine Referenz auf ein Interface kann überall dort im Code eingesetzt werden, wo auch eine Referenz auf eine Klasse erlaubt ist public class ArrayList<E> implements List<E>{ E[] elements; } public void add(object o){ } 17 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Klassen und Interfaces Übersicht über Collections, Maps und deren Interfaces Collection Map List Set SortedMap HashMap Hashtable ArrayList Vector HashSet SortedSet TreeMap LinkedList Stack TreeSet Interface Class 18 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Agenda Übersicht Programmierkonstrukte Klassen und Interfaces JDK JDK Literatur

JDK Java Development Kit (JDK) 20 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

JDK Java API Dokumentation (Application Programmers interface) http://java.sun.com/javase/6/docs/api/ 21 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009

Agenda Übersicht Programmierkonstrukte Klassen und Interfaces JDK Literatur

Literatur Literatur und Links Arnold K., Gosling J.: The Java Programming Language. Addison- Wesley. Krüger, Guido. Handbuch der Java-Programmierung. Addison-Wesley, http://www.javabuch.de/ kostenlos im Download als HTML-Version (Nachfolger von "Go To Java 2") WWW: http://java.sun.com/ - Java-Seiten von Sun http://java.sun.com/docs/books/tutorial/index.html - Java tutorials http://java.sun.com/javase/6/docs/api/ - API Dokumentation 23 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 14.10.2009