Programmieren in Java



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

Programmieren I. Kapitel 15. Ein und Ausgabe

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

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

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

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

Java-Schulung Grundlagen

Einführung in die Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung

Java Einführung Operatoren Kapitel 2 und 3

Computeranwendung und Programmierung (CuP)

Distributed Computing Group

Java Einführung Packages

Einführung in Javadoc

Objektorientierte Programmierung in Java

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

Programmieren in Java

Große Übung Praktische Informatik 1

C# im Vergleich zu Java

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

Grundlagen von Python

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

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

Liste Programmieren Java Überblick

Modul 122 VBA Scribt.docx

Programmierkurs Java

Primitive Datentypen

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv

Java: Vererbung. Teil 3: super()

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

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

Testen mit JUnit. Motivation

Einführung in die Java- Programmierung

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

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

JDBC. Allgemeines ODBC. java.sql. Beispiele

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Java Einführung Programmcode

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Diana Lange. Generative Gestaltung Operatoren

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Programmieren in Java

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

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

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Vorkurs C++ Programmierung

Objektorientierte Programmierung OOP

1. Der Einstieg in Java. Was heißt Programmieren?

VBA-Programmierung: Zusammenfassung

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

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Tutorium Rechnerorganisation

Javakurs zu Informatik I. Henning Heitkötter

2. Semester, 2. Prüfung, Lösung

Einstieg in die Informatik mit Java

Programmieren 2 Selbststudium Semesterwoche 6

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

Probeklausur: Programmierung WS04/05

Einführung in die Programmierung Blockkurs Java

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

Prinzipien Objektorientierter Programmierung

E-PRIME TUTORIUM Die Programmiersprache BASIC

Client-Server-Beziehungen

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Einstieg in die Informatik mit Java

Grundlagen der Modellierung und Programmierung, Übung

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

Kapitel 12 Dokumentation und Zugriffsrechte

Oracle: Abstrakte Datentypen:

Vererbung & Schnittstellen in C#

Prinzipien der Softwareentwicklung S. Strahringer

SEP 114. Design by Contract

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

3 Objektorientierte Konzepte in Java

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

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

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

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

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

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Java Einführung Abstrakte Klassen und Interfaces

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

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

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Objektorientiertes JavaScript

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

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Applets I. Grundlagen der g Applet-Programmierung

Vorkurs Informatik WiSe 15/16

Einführung in die Programmierung für Wirtschaftsinformatik

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

Delegatesund Ereignisse

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

CORBA. Systemprogrammierung WS

Deklarationen in C. Prof. Dr. Margarita Esponda

Transkript:

Programmieren in Java Angelehnt an: The Java Tutorial from Sun Microsystems Hannes Reisinger - hare@tirol.com

Ziele und Pläne Grundlagen Schlüsselwörte und Sprachgrundlagen Programme lesbar schreiben und die der anderen Kursteilnehmer lesen können Paradigmen des Programmierens Grundbegriffe der OOP Kapselung Klassen Vererbung

Beispielanwendung JDK und Texteditor HelloWorldApp.java erstellen Kompilieren und ausführen \jdk1.3\docs\api\index.html

Beispielapplet HelloWorld.java und HelloWorld.html erstellen Kompilieren und ausführen import java.applet.applet; import java.awt.graphics; public class HelloWorld extends Applet init(), start(), paint(), stop() und destroy()

JavaDoc \jdk1.3\docs\tooldocs\win32\javadoc.html Kein /* Kommentar */ oder // Kommentar Sondern nur /** Kommentar */ @author name-text @see "string" oder <a href="url">label</a> oder package.class#member label @version version-text

Die Java Sprachumgebung Compiler Java Bytecode Plattform-abhängiger Interpreter

Die Java Plattform Java Application Programming Interface (Java API) Java Virtual Machine (Java VM)

Die Programmiersprache Java Simple Object oriented Distributed Interpreted Robust Secure Architecture neutral Portable High performance Multithreaded Dynamic

Nachteile konventioneller Programmiersprachen Keine eigenen Internetfunktionen Größe der ausführbaren Dateien Mangelnde Sicherheit Keine Unterstützung für unterschiedlichste Plattformen

Die Sprache Java erlernen OOP Konzepte Sprachgrundlagen Basisobjekte Klassen und Vererbung Schnittstellen und Packages

Prozedural - Objektorientiert Haupt- / Unterprogramme Mensch Auto Haus

Paradigmen des Programmierens Prozedurales Programmieren Entscheide, welche Prozeduren Du willst; verwende den besten Algorithmus, den Du kennst. Modulares Programmieren Entscheide, welche Module Du brauchst; zerlege das Programm so, daß die Daten in Module eingekapselt sind. Datenabstraktion Entscheide, welche Typen Du willst; stelle eine komplette Menge von Operationen für jeden Typ zur Verfügung. Objektorientiertes Programmieren Entscheide, welche Klassen Du brauchst; stelle für jede Klasse eine komplette Menge von Operationen zur Verfügung; mache Gemeinsamkeiten via Vererbung explizit.

Was zeichnet die Objekttechnologie aus? Vielzahl neuer Begriffe und Schlagworte Programm als Abbild der Wirklichkeit Zusammenfassung von Daten und der darauf wirkenden Operationen = Kapselung Entwicklung geschieht nicht revolutionär sondern evolutionär Fehlersicherheit Wiederverwendbarkeit höhere Produktivität

Vorraussetzungen dafür sind Analyse - Die relevanten Objekte der Realität herausfiltern und deren Kommunikation untereinander überlegen Design - Übersichtliche und auch für andere Problemstellungen zu verwendende Schnittstellen definieren und deren Gemeinsamkeiten in Form einer Hierarchie darstellen Entsprechend Analyse und Design die Klassen implementieren Ausgiebig testen und dokumentieren Solange man nicht zufrieden ist, wieder mit dem ersten Punkt beginnen

OOP Konzepte Objekt Nachricht Klasse Vererbung Schnittstelle Praktisches Beispiel ClickMe-Applet

Grundlegende Informationen zu Objekten Eigenschaften (attributes) Daten Methoden (methodes) Operationen zur Manipulation seiner eigenen Daten Nachrichten (messages) Werden zur Kommunikation untereinander benötigt Rufen die entsprechenden Methoden auf Unterscheidung: class - instance Unterscheidung: message - methode Vererbung (inheritance)

Sprachgrundlagen Variablen Operatoren Ausdruck, Anweisung und Blöcke Kontrollstrukturen

Regeln für Bezeichner (unter anderem auch Variablennamen) (siehe Java Language Specification "3.8 Identifiers") Bezeichner müssen mit einem Buchstaben (A..Z, a..z) oder einem Unterstrich (_) oder einem Dollarzeichen ($) beginnen. Zu testen über Character.isJavaIdentifierStart() Auf dieses erste Zeichen können weitere Buchstaben, Ziffern (0..9) und Unterstriche und Dollarzeichen folgen. Zu testen über Character.isJavaIdentifierPart() Bezeichner können beliebig lang sein. Zwischen Groß- und Kleinschreibung wird unterschieden. In Java stellen also Index, INDEX und index drei verschiedene Bezeichner dar, die nichts miteinander zu tun haben. Schlüsselwörter (wie z.b. for oder while) können nicht als Bezeichner verwendet werden. Auch true, false und null sind nicht erlaubt.

Arbeitsblatt - Variablennamen Entscheiden Sie bitte, welche der angeführten Variablennamen gültig sind, welche nicht, und welche Ihnen ungünstig erscheinen (bitte mit einer kurzen Notiz). Um eine Liste der Schlüsselwörter (Keywords) zu erhalten (die ja nicht als Variablennamen verwendet werden dürfen) siehe Java Language Specification "3.9 Keywords" 1. var_22 2. 22ste_var 3. _zaehler 4. _zähler 5. karl_der_grosse 6. karl_der_große 7. vier_*_5_ist_20 8. c 9. marathonlaufteilnehmername 10. marathon_lauf_teilnehmer_name 11. MarathonLaufTeilnehmerName 12. int 13. char 14. INT 15. return 16. do 17. DO_WHILE_SCHLEIFE 18. _ 19.

Datentypen elementare Datentypen Referenztypen boolean Numerische Werte class Ganze Zahlen Gleitkommazahlen interface Array signed unsigned float (32 Bit) String byte (8 Bit) char (16 Bit) double (64 Bit) short (16 Bit) int (32 Bit) long (64 Bit)

Erste Operatoren Der Vorrang und die Assoziativität der Operatoren ist in der LangSpec 15.7 Evaluation Order festgehalten. Wertzuweisungen = plus die Zuweisungsoperatoren Arithmetische Operatoren +, -, *, /, % (%... Rest nach ganzzahliger Division - Modulo) Erste Zuweisungsoperatoren +=, -=, *=, /=, %= Vergleichsoperatoren (Relationale Operat.) ==,!=, <, <=, >, >= Verknüpfungsoperatoren (Logische Operat.) && (AND), (OR),! (NOT), ^ (XOR)

Kontrollstrukturen (siehe LangSpec 14 Blocks and Statements) Bedingungen if-else?: Auswahl else-if switch Schleifen while (Schleife mit Eintrittsbedingung) for (Zählschleife) do-while (Schleife mit Austrittsbedingung)

Weitere Operatoren Unäre Operatoren +, -, ++, -- Bitmanipulationen << (shift left), >> (shift right), >>> (shift right), & (AND), (OR), ^ (XOR), ~ (NOT) (~ ist ein unärer Operator) Weitere Zuweisungsoperatoren <<=, >>=, >>>=, &=, =, ^= Diverse andere Operatoren?:, (), [],., (type), new, instanceof

Lebenszyklus eines Objekte Deklarieren einer Variablen (Referenzvariablen) Erzeugung eines Objekts Initialisieren des Objekts mit dem Konstruktor Das Objekt der (Referenz-)Variablen zuweisen Das Objekt über die Referenzvariable und den Operator '.' verwenden Zerstörung durch die Garbage Collection protected void finalize() throws Throwable

Zugriffsrechte Bezeichner class subclass package world private X protected X X X public X X X X package X X

Basisobjekte Typ name = new Typ(Parameter); String und StringBuffer Nummern (Basisklasse: Number) Byte, Short, Integer, Long, Float, Double BigInteger, BigDecimal Math Array

Formatierungen java.text.numberformat getnumberinstance() format() java.text.decimalformat applypattern() java.text.decimalformatsymbols DecimalFormat() - Konstruktor DecimalFormat.setDecimalFormatSymbols()

Klasse und Schnittstelle jdk1.3\tutorial\java\javaoo\classes.html Innere Klassen jdk1.3\tutorial\java\javaoo\innerclasses.html Schnittstellen und Pakete jdk1.3\tutorial\java\interpack\index.html

Vererbung Abgeleitete Klassen public class a { /*... */ } public class b extends a { /*... */ } Abstrakte Klassen public abstract class c { /*... */ }

Objekte, Daten, Funktionen und der Speicher public class Bsp { int m_i1, m_i2; void f1() {} void f2() {} };... main(...) { Bsp var1=new Bsp(), var2=new Bsp(), var3=new Bsp(); var3.f1(); var1.f2(); } var1 var2 var3 m_i1 m_i2 m_i1 m_i2 Funktionen der Klasse Bsp Bsp.f1 m_i1 m_i2 Bsp.f2

Statische im Vergleich zu automatischen Elementvariablen public class Bsp { int m_i1 = 1; int m_i2 = 2; static int s_i = 3; void print() {} }... main(...) { Bsp var1=new Bsp(), var2=new Bsp(), var3=new Bsp(); } var1 var2 var3 m_i1 m_i2 m_i1 m_i2 Klassenvaraible der Klasse Bsp m_i1 m_i2 Bsp.s_i

Implementierung von Klassen - 1 public class B { private int m_i1; protected int m_i2; public int m_i3; public static int s_i; public void bf(); } public class C extends B { private int m_i4; public void cf(); } B-> B, C-> B.m_i1 B.m_i2 B.m_i3 B.m_i1 B.m_i2 B.m_i3 C.m_i4

Implementierung von Klassen - 2 B-> B.m_i1 B.m_i2 B.m_i3 B, C-> B.m_i1 B, D-> B.m_i1 B, D, E-> B.m_i1 B.m_i2 B.m_i2 B.m_i2 B.m_i3 B.m_i3 B.m_i3 C.m_i4 D.m_i5 D.m_i5 E.m_i6

Implementierung von Klassen - 3 public class X { public void fa() {} public void fb() {} } public class Y extends X { public void fa() {} public void fc() {} } X-> Y-> X::vfptr X.m_... Y::vfptr X.m_... Y.m_... X.fa X.fb Y.fa X.fb Y.fc public class Z extends Y { public void fa() {} public void fc() {} public void fd() {} } Z-> Z::vfptr X.m_... Y.m_... Z.m_... Z.fa X.fb Z.fc Z.fd vfptr... virtual function pointer

Wichtige Java Klassen java.util.properties java.lang.system java.lang.securitymanager java.lang.throwable, java.lang.exception usw. java.io.* Reader, Writer, InputStream, OutputStream usw. java.lang.thread und entsprechende Klassen

java.util.properties

java.lang.system Alle Methoden und Variablen sind static Standard I/O Streams (in, out, err) System Properties Eigener SecurityManager java.lang.runtime

Ausnahmebehandlung - Exceptionhandling java.lang.throwable java.lang.error (nicht fangen) java.lang.exception (zu fangen) java.lang.runtimeexception (muß nicht deklariert werden) try { throw new DerivedException("Hallo"); } catch ( DerivedException e ) { } catch ( Exception e ) { } finally {} Reihenfolge wichtig

Threads

Varianten von Threads Timer und TimerTask Klasse von Thread ableiten und run() überladen Wenn eine Klasse schon abgeleitet ist, dann das Interface Runnable mit der Methode run() implementieren Schlüsselwort synchonized Thread.yield() für kooperatives Multitasking

Arbeitsblatt Object.wait() und Object.notify() Fabrik => Lager => Auslieferung Eine Fabrik produziert Waren. Diese werden in ein Lager geliefert. Dieses Lager kann drei dieser Waren aufnehmen. Die Auslieferung holt die Ware, die im Lager ist heraus und liefert sie aus. Ist die Fabrik schneller als die Auslieferung, so muß die Fabrik warten. Ist die Auslieferung schneller, so muß die Auslieferung warten.

Standard Ein-/Ausgabe System.in, System.out, System.err Ausgabemethoden (System.out, System.err) print() und println() Einlesemethoden (System.in) BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String str = in.readline();

Java.io.* Streams die mit Bytes arbeiten Lesend: InputStream Schreibend: OutputStream Streams die mit Buchstaben arbeiten Lesend: Reader Schreibend: Writer

Bytes in/aus Datensenken java.io.inputstream ByteArrayInputStream FileInputStream PipedInputStream StringBufferInputStream java.io.outputstream ByteArrayOutputStream FileOutputStream PipedOutputStream

Bytes verarbeitende Streams java.io.inputstream FilterInputStream BufferedInputStream DataInputStream LineNumberInputStream PushbackInputStream ObjectInputStream SequenceInputStream java.io.outputstream FilterOutputStream BufferedOutputStream DataOutputStream PrintStream ObjectOutputStream

Buchstaben in/aus Datensenken java.io.reader java.io.chararrayreader java.io.filereader java.io.pipedreader java.io.stringreader java.io.writer java.io.chararraywriter java.io.filewriter java.io.pipedwriter java.io.stringwriter

Buchstaben verarbeitende Streams java.io.reader java.io.bufferedreader java.io.linenumberreader java.io.filterreader java.io.pushbackreader java.io.inputstreamreader java.io.writer java.io.bufferedwriter java.io.filterwriter java.io.outputstreamwriter java.io.printwriter

java.util.* java.util.date und java.util.calendar java.util.observable und java.util.observer java.util.random java.util.zip.* und java.util.jar.*

Collections Framework

java.awt.component

LayoutManager BorderLayout CardLayout FlowLayout GridLayout GridBagLayout GridBagConstraints

Events und Listeners add*listener() Adapter und innere Klassen

java.awt.menucomponent

JFC - Java Foundation Classes Swing Components Pluggable Look and Feel Support Accessibility API Java 2D API (Java 2 Platform only) Drag and Drop Support (Java 2 Platform only)

Unterstützende Technologien setaccessiblename() wenn kein kurzer Text settooltiptext() or setaccessibledescription() JButton.setMnemonic() ImageIcon.setDescription() JLabel.setLabelFor()

Arbeitsblatt Grafische Darstellung des Beispiels Fabrik => Lager => Auslieferung Mit einem Knopf soll die Fabrik eine Ware in das Lager einfügen Der Füllstand des Lagers soll dargestellt werden Zuerst als Text, wenn Zeit ist, mit Symbolen Mit einem weiteren Knopf soll die Auslieferung eine Ware aus dem Lager entnehmen

JDBC - Datenbank Zugriff DRIVER = "sun.jdbc.odbc.jdbcodbcdriver"; Class.forName(DRIVER); URL2DB = "jdbc:odbc:personen"; DriverManager.getConnection(URL2DB); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * FROM Person"); rs.getstring(indexornameofcolumn);

Bei Java-kompatiblen Browsern liefert der Server die fehlenden Objekt-Viewer oder anderen Programmcode einfach nach. Browser Netzwerk Server Benutzer fordert Objekt an Browser versteht den Objekttyp nicht Darstellung des Objekts Objekt Java-Code zur Objektdarstellung