Java Einführung

Werbung
INE2
Java Einführung
■ Programmierparadigmen
■ Objektorientierte Programmierung
■ Java: Überblick und Beispiel
■ Programmieren in Java
1
Programmierparadigmen
School of Engineering
© G. Burkert, K. Rege, ZHAW
2 von 58
Programmierparadigmen
1 Imperative Programmierparadigmen
■ prozedurale Programmierung
1.1 Strukturierte Programmierung
■ objektorientierte Programmierung
1.2 Prozedurale Programmierung
■ Die meisten heutigen Programmiersprachen
unterstützen mehrere Programmierparadigmen
1.3 Modulare Programmierung
1.4 Programmierung mit abstrakten Datentypen
2 Deklarative Programmierparadigmen
2.1 Funktionale Programmierung
2.2 Logische Programmierung
2.3 Constraintprogrammierung
3 Objektorientierte Programmierparadigmen
■ Info:
http://de.wikipedia.org/wiki/Programmierparadigma
http://en.wikipedia.org/wiki/Programming_paradigm
4 Komponentenorientierte Programmierparadigmen
5 Andere
5.1 Agentenorientierte Programmierung
5.2 Aspektorientierte Programmierung
5.3 Generative Programmierung
5.4 Generische Programmierung
5.5 Datenstromorientierte Programmierung
School of Engineering
© G. Burkert, K. Rege, ZHAW
3 von 58
Software-Entwicklung
■ Hauptproblem der Softwareentwicklung:
Mit zunehmender Computerleistung können immer komplexere Programme entwickelt
werden (OS, DBMS, CAD, etc.)
■ Dadurch entstehen einige Probleme:
■
Überblick behalten
■
Programm testen
■
Programm warten (Fehlerbehebung, Erweiterung)
■
Bestehende Software wieder verwenden
■ Wie kann die Komplexität gemeistert werden?
School of Engineering
© G. Burkert, K. Rege, ZHAW
4 von 58
Abstraktion
■ Alle Programmiersprachen unterstützen Abstraktionen, allerdings in unterschiedlichem
Ausmass
■ Je nach Art und Qualität der Abstraktionsmöglichkeiten lassen sich Probleme
geringerer oder höherer Komplexität lösen
■ Assemblersprachen bieten nur eine geringe Abstraktion der jeweiligen
Maschinensprachen
■ Sprachen wie Fortran, BASIC, und C sind Abstraktionen von Assemblersprachen
School of Engineering
© G. Burkert, K. Rege, ZHAW
5 von 58
Imperative Programmierung
■ Folge von Anweisungen, die den Programmzustand verändern
■ Wichtige Bestandteile:
Zuweisungen und Berechnungen, globale Variablen, Datenstrukturen, Sprungbefehle
■ Beispiel in C:
int x = 10;
double y;
x = 23;
y = 32.4;
School of Engineering
© G. Burkert, K. Rege, ZHAW
6 von 58
Strukturierte Programmierung
■ Beschränkter Satz von Ablaufstrukturen
■ Darstellung: Text (eingerückt), Flussdiagramme, Struktorgramme
Sequenz
School of Engineering
Verzweigung
© G. Burkert, K. Rege, ZHAW
Schleife
7 von 58
Prozedurale Programmierung
■ Die Verarbeitung der Daten wird in verschiedene Schritte aufgeteilt
■ Die einzelnen Schritte werden an separate Einheiten (Prozeduren) delegiert
■ Ein Hauptprogramm steuert den ganzen Ablauf
School of Engineering
© G. Burkert, K. Rege, ZHAW
8 von 58
Prozedurale Programmierung
■ Typische Elemente prozeduraler Programmiersprachen
■
Anweisungen
a = b * (c + d/sin(5*x))
■
Schleifen
for x = 1 to 20 do ...
■
Verzweigungen
if a = 5 then ... else
■ Programmstruktur
■
Variablen
integer i, k, n; double x,y;
■
Prozeduren /Funktionen
printLine(text, position);
■
Hauptroutine
main()
School of Engineering
© G. Burkert, K. Rege, ZHAW
9 von 58
Objektorientierte Programmierung
■ Die Daten und Funktionen (Verarbeitung der Daten) werden in Objekten
zusammengefasst
■ Das gewünschte Verhalten des Programms entsteht durch das
Zusammenspiel dieser Objekte
InInCCals
alsFunktionen
Funktionen
bezeichnet
bezeichnet
OOP
PPG
Function
Function11
Function
Function22
Daten
Daten
Objekt 1
Objekt 2
Daten
Daten
Methoden
Function
Function33
School of Engineering
© G. Burkert, K. Rege, ZHAW
Im
ImOO
OOKontext
Kontextals
als
Methoden
Methoden
bezeichnet
bezeichnet
Methoden
10 von 58
Objekte
School of Engineering
© G. Burkert, K. Rege, ZHAW
11 von 58
Was ist ein Objekt?
■ Wir kennen Objekte aus der realen Welt
Beispiele: Auto, Hammer, Bank, Kunde
■ Diese Objekte haben verschiedene Eigenschaften (Attribute)
Auto: Farbe, Preis, Anzahl Gänge
■ Diesen Eigenschaften wird dann zu einem konkreten Wert in den Objekte. Sie haben
einen Zustand, der a) konstant oder b) veränderlich ist:
Auto: aktulle Geschwindigkeit, Tankinhalt, aktueller Gang, Position Steuerrad
■ Schliesslich haben Objekte auch ein Verhalten:
Auto: es fährt, beschleunigt, bremst
Ziel: Objekte im Programm analog zu realen Objekten aufgebaut
School of Engineering
© G. Burkert, K. Rege, ZHAW
12 von 58
Objektorientierte Programmierung
die Grundidee:
die Struktur der Software spiegelt die Realität wieder:
klar unterscheidbare Einheiten (Objekte),
die untereinander Meldungen austauschen
Elektrik
Elektrik
Steuerrad
Steuerrad
Motor
Motor
Lampe
Lampe
Lampe
Lampe
Rad
Rad
School of Engineering
Im
ImOO
OOKontext
Kontextals
als
Meldungsaustausch
Meldungsaustausch
bezeichnet
bezeichnet
Rad
Rad
© G. Burkert, K. Rege, ZHAW
13 von 58
Objektorientierte Programmierung
■ Heute wichtigstes Programmierparadigma:
■ analog einem technischen System, z.B. Auto:
■ Antriebssystem (Motor, Kupplung, Räder,...)
■ Bremssystem (Bremsen, Bremspedal,
Bremsflüssigkeit,...)
■ Lichtanlage (Lichter, Batterie,...)
Softwaresystem aus
Einzelteilen aufbauen
■ Die Einzelteile sind die Objekte
■ Haben einen Zustand
■ Haben ein Verhalten
■ Der gewünschte Programmablauf ergibt sich
durch das Zusammenspiel der Objekte
■ Prinzip der Objektorientierten Programmierung
■ Java, C++, C#
Special Version
School of Engineering
© G. Burkert, K. Rege, ZHAW
© codedcarkeys
14 von 58
Objektorientierte Programmierung
■ Prozeduren/Funktionen in OOP-Jargon (z.B. Java)Æ Methoden
■
■
In Java werden alle Variablem und Methoden Objekten zugeordnet
Objekt vereinigt in sich
Zustände
Zustände
und
und
Verhalten
Verhalten
Æ Konsequenzen:
■
■
Alle Funktionen in OOP-Programmen gehören zu irgendeinem Objekt
Aufruf mit
objektName.methodenName(Parameter…)
Bsp.:
■
myAuto.bremsen();
Schon in einfachen Programmen werden viele davon gebraucht
School of Engineering
© G. Burkert, K. Rege, ZHAW
15 von 58
Begriff Objekte
■ Objekte erlauben in OOP-Programmen die Wirklichkeit im Programm direkt zu
modellieren
■
Beispiel: Programm für Simulation von Autos
Objekt 1:
rotesAuto
Objekt 2:
grünesAuto
Objekt
Objekt1:1:rotesAuto
rotesAuto
Objekt
Objekt2:2:grünesAuto
grünesAuto
Farbe:
Farbe:rot
rot
Preis:
20'000
Preis: 20'000
Geschwindigkeit:
Geschwindigkeit:300
300
Tankinhalt:
100
Tankinhalt: 100
Farbe:
Farbe:grün
grün
Preis:
10'000
Preis: 10'000
Geschwindigkeit:
Geschwindigkeit:80
80
Tankinhalt:
17
Tankinhalt: 17
beschleunigen
beschleunigen
bremsen
bremsen
tanken
tanken
links
linksabbiegen
abbiegen
rechts
rechtsabbiegen
abbiegen
beschleunigen
beschleunigen
bremsen
bremsen
tanken
tanken
links
linksabbiegen
abbiegen
rechts
rechtsabbiegen
abbiegen
School of Engineering
© G. Burkert, K. Rege, ZHAW
Zustand
Verhalten
16 von 58
Klassen
School of Engineering
© G. Burkert, K. Rege, ZHAW
17 von 58
Objektorientierte Programmierung: Klasse
■ Objekte werden zur Laufzeit des Programms bei Bedarf erzeugt
■ Dazu braucht es eine "Beschreibung der Objekte"
■ Diese werden als Klassen bezeichnet
■
Vorlage, Bauplan für Objekte (wie Plan bei einem Auto)
■
Beschreibt die Daten (Namen und Datentypen) und
■
Methoden der Objekte
■
Aus einer Klasse können beliebig viele Objekte erzeugt (instanziert) werden
■
Diese Objekte haben das identische Verhalten
■
Sie unterscheiden sich nur in den Zustand
School of Engineering
© G. Burkert, K. Rege, ZHAW
18 von 58
… Klassen("Baupläne") und ihre Instanzierung
Klasse:
Klasse: Auto
Auto
Farbe:
Farbe:
Preis:
Preis:
Geschwindigkeit:
Geschwindigkeit:
Tankinhalt:
Tankinhalt:
beschleunigen
beschleunigen
bremsen
bremsen
tanken
tanken
linksAbbiegen
linksAbbiegen
rechtsAbbiegen
rechtsAbbiegen
Zustandswertebereiche
(sog. Attribute)
Verhalten
(sog. Methoden)
Die Baupläne kennen mögliche Namen und Zuständswertebereiche (= Datentypen)
Attribute und Methoden für deren Veränderung
Ein konkretes Objekt (= Instanz einer Klasse) kann wie folgt im Programm kreiert und
verwendet werden:
Initialer Zustand
rotesAuto = new Auto(rot, 20000, 300, 100);
rotesAuto.linksAbbiegen(); // Methodenaufruf
School of Engineering
© G. Burkert, K. Rege, ZHAW
Initialer Zustand
19 von 58
Klassen vs. Objekte
■ Von einer Klasse können mehrere Objekte (zur Laufzeit) mittels new erzeugt werden
==Instanz
(instanzieren)
Instanzeiner
einer
Klasse
Klasse
==instanzieren
instanzieren
Objekt:
rotesAuto
Klasse:
Auto
Klasse:
Klasse: Auto
Auto
Objekt
Objekt: :rotesAuto
rotesAuto
Farbe:
Farbe:
Preis:
Preis:
Geschwindigkeit:
Geschwindigkeit:
Tankinhalt:
Tankinhalt:
Farbe:
Farbe:rot
rot
Preis:
20'000
Preis: 20'000
Geschwindigkeit:
Geschwindigkeit:300
300
Tankinhalt:
100
Tankinhalt: 100
beschleunigen
beschleunigen
bremsen
bremsen
tanken
tanken
linksAbbiegen
linksAbbiegen
rechtsAbbiegen
rechtsAbbiegen
School of Engineering
Namen und
Zustandswertebereiche
(sog. Attribute)
Verhalten
(sog. Methoden)
(Attribut-)
Werte
beschleunigen
beschleunigen
bremsen
bremsen
tanken
tanken
links
linksabbiegen
abbiegen
rechts
rechtsabbiegen
abbiegen
© G. Burkert, K. Rege, ZHAW
20 von 58
Eine Klasse ist (auch) ein Datatyp
■ "A class [...] defines a Data Type. Yet this fact is typically not mentioned in beginners
textbooks. Lacking an accurate description of a data type, the best a textbook (or an
instructor) can do is say something like: A class is a template, blueprint, or pattern of an
object.
■ I.m. known data types: int, double, struct (user defined datatype)
■
data types determine the operations: e.g. int-division is different to double-division
■ These characterizations suggest how a class can be viewed, not what a class is, much
less what a class can do, thus making it difficult to learn the true nature of a userdefined data type."
■ Chenglie Hu. Just Say 'A Class Defines a Data Type'. ACM Communications, Vol.51, No.3, March 2008, p.
19–21.
© http://www.swisseduc.ch/informatik/
School of Engineering
© G. Burkert, K. Rege, ZHAW
21 von 58
Datentypen, typengebundene Funktionen
■ Bisher angetroffene Datentypen
int, double, char
■ Selber definierte Datentypen in C: struct
typedef struct {
char[20] name;
} Competitor
void setRank(Competitor c, int r){…}
■ In Java: typengebundene Funktion = Methode
class Competior {
String name;
void setRank(int r) {…}
}
School of Engineering
© G. Burkert, K. Rege, ZHAW
22 von 58
Vererbung
School of Engineering
© G. Burkert, K. Rege, ZHAW
23 von 58
Objektorientiertes Programmieren (OOP)
■ Das Programmieren eines OO-Programms besteht im Wesentlichen aus dem
Schreiben von Klassen
■ Aus diesen werden dann zur Laufzeit die notwendigen Objekte erzeugt
■ Das Zusammenspiel der Objekte erzeugt das gewünschte Programmverhalten
■ Beim Schreiben von Klassen kann man bereits bestehende Klassen wieder
verwenden durch
Vererbung
School of Engineering
© G. Burkert, K. Rege, ZHAW
24 von 58
Vererbung/Instanzierung
original Bauplan
spezialisieren
Rote Lackierung
3.8L Motor
vererben
erweitern
instanzieren
School of Engineering
© G. Burkert, K. Rege, ZHAW
25 von 58
Der Grad der Flexibilität
■ Baupläne können erweitert werden
■
das Fahrzeug bekommt eine Schaufel (->Bagger)
■ "weisse Stellen" im Bauplan können ausgefüllt werden: der Plan kann spezialisiert
werden
Motorfahrzeug
PKW
Bill's Ferrari
School of Engineering
Bus
Bus 69
Bagger
Sergio's Bagger
© G. Burkert, K. Rege, ZHAW
26 von 58
Die Vererbung, die UML Notation
Mittels der Vererbung können bestehende Klassen erweitert und spezialisiert werden
■ Beim Schreiben eine Klasse kann dadurch das Bestehende wiederverwendet werden
Oberklasse
graphisches Zeichen
für Vererbung
Unterklasse
■ Begriffe:
■
■
Oberklasse (Superklasse): Klasse von der geerbt wird
Unterklasse (Subklasse): Klasse, die erbt
School of Engineering
© G. Burkert, K. Rege, ZHAW
27 von 58
Die Vererbung
■ (erbende) Unterklasse kann (von der geerbten) Oberklasse :
■ Attribute
■
erweitern: zusätzliche Attribute hinzufügen
■ Verhalten / Methoden
■
■
erweitern: zusätzliche Methoden hinzufügen
spezialisieren: Methoden mit gleichem Namen wie in Oberklasse definieren -> neues Verhalten definieren
Obige Mechanismen werden als Vererbung zusammengefasst.
School of Engineering
© G. Burkert, K. Rege, ZHAW
28 von 58
Die Vererbung (andere Sicht)
■ Oberklasse: Klasse die vererbt (Superclass/Baseclass)
■ Unterklasse: Klasse die erbt (Subclass/abgeleitete Klasse)
■ von Oberklasse werden in Unterklasse werden übernommen
■
alle Attribute
■
alle Methoden
■ die Unterklasse kann
■
zusätzliche Attribute definieren
■
zusätzliche Methoden definieren
■
geerbte Methoden überschreiben,d.h. ihre Funktionalität anpassen
School of Engineering
© G. Burkert, K. Rege, ZHAW
29 von 58
Vererbungsbeispiel: Fahrzeuge
Klassenname
Attribute
Oberklasse
Methoden
Unterklasse
+
+
Fahrzeug
farbe
preis
geschwindigkeit
bremsen
beschleunigen
links
rechts
MotorFahrzeug
tankinhalt
tanken
rueckwaerts
Personenwagen
anzTueren
+
Fahrrad
anzGaenge
schalten
beschleunigen
ElektroFahrzeug
batterieLadung
laden
entladen
Lastwagen
ladegewicht
laden
entladen
School of Engineering
© G. Burkert, K. Rege, ZHAW
30 von 58
Objektorientiertes Software Engineering
■ Vorteile objektorientierter Software-Entwicklung:
■
Nähe zum Problembereich: erleichtert Kommunikation zwischen Entwicklern und Experten
■
Methodische Durchgängigkeit (s.o.)
■
Objektorientierte Modelle sind oft änderungsfreundlicher, da Änderungen häufig lokal begrenzt möglich sind
■
Abstraktionsmöglichkeiten ermöglichen bessere Wiederverwendbarkeit
Aber: Auch mit diesem Ansatz ist es problemlos möglich,
sehr schlechte Ergebnisse zu erzielen
© swisseduc, Raimond Reichert
School of Engineering
© G. Burkert, K. Rege, ZHAW
31 von 58
Objektorientierte Programmierung:
Wer erbt hier von wem?
■ Bsp: Sie entwickeln eine Schulsoftware
■
gegeben die beiden Klassen Student und Professor
■ Erbt nun Student von Professor oder umgekehrt?
■
Lösung: es wird eine dritte Klasse "Person" eingeführt
Person
Student
Professor
© swisseduc, Raimond Reichert
School of Engineering
© G. Burkert, K. Rege, ZHAW
32 von 58
Andere richtige Lösung wäre ...
Person
Mortal
God
Student
Professor
School of Engineering
© G. Burkert, K. Rege, ZHAW
33 von 58
OOP: Objekte identifizieren ist schwierig
■ Ein kleines Beispiel aus der Studie
■
"design an authorization system that routes users as follows:
■ An existing user will login into the system.
■ A new user will register and receive authorization."
■ Was sind hier die Objekte? User? Login? Register? Authorization? Für Anfänger
schwierige Fragen!
■
Hadar, Irit; Leron, Uri (2008). How intuitive is object-oriented design? Communications of the ACM, Vol. 51, No. 5, pp. 41–46.
© swisseduc, Raimond Reichert
School of Engineering
© G. Burkert, K. Rege, ZHAW
34 von 58
Objektorientierte Programmierung:
Wie naheliegend sind OO-Modelle?
■ „[…] claims regarding the ‘‘naturalness, ease of use, and power’’ of the OO approach.
[…]
■ The papers reviewed do not support this position. They show that identifying objects
is not an easy process,
■ that objects identified in the problem domain are not necessarily useful in the
program domain,
■ that the mapping between domains is not straightforward, and that novices need to
construct a model of the procedural aspects of a solution in order to properly design
objects/classes.
■
Anthony Robins, Janet Rountree, and Nathan Rountree. Learning and Teaching Programming: A Review and Discussion, Computer
Science Education, 2003, Vol. 13, No. 2, pp. 137–172.
© swisseduc, Raimond Reichert
School of Engineering
© G. Burkert, K. Rege, ZHAW
35 von 58
Objektorientierung: Objects First?
■ Der Ansatz "Objects First" gerät in einer zunehmenden Anzahl
von Publikationen in die Kritik. Wie wurde der Ansatz
überhaupt begründet?
■ Durch ein Paper von Kölling, in dem steht: "It is now almost
consensus among OO teachers that object orientation is best
taught by teaching about objects from the start, rather than
starting with a small scale, structured programming approach and adding objects later.
While there is very little scientific evidence to support this, the anecdotal evidence is so
strong that the great majority of teachers and textbooks now follow this approach."
There
Thereisisjust
justone
one! !
vom
vomHörensagen
Hörensagen
■ Das Paper hat 6 Referenzen (3 davon auf Kölling selber)
■
Kölling, Michael; Rosenberg, John (2001). Guidelines for Teaching Object Orientation with Java. In Conference on Information
Technology in Computer Science Education, pp. 33–36.
© swisseduc, Raimond Reichert
School of Engineering
© G. Burkert, K. Rege, ZHAW
36 von 58
Java: Überblick und Beispiel
School of Engineering
© G. Burkert, K. Rege, ZHAW
37 von 58
Geschichte von Java
■ 1991 wurde bei Sun Microsystems eine Projektgruppe
ins Leben gerufen
■ Ziel des Projektes war es, die kommenden Trends
der Computer- und Softwareindustrie aufzuspüren.
■ Die Gruppe wurde von James Gosling geleitet.
■ Das Team entschied sich dafür, einen Prototyp
eines programmierbaren Geräts für die Steuerung
und Integration von Haushaltsgeräten (Toaster, Videorecorder, Fernseher usw.) zu
bauen. Es entstand auch ein Palm ähnliches Gerät namens Prototyp "#7"
■ Die an C++ angelehnte Sprache, hiess zunächst OAK (Object Application Kernel)
■
benannt nach einer Eiche, die vom Bürofenster eines Entwicklers aus zu sehen war.
■ 1994 entstand mit "WebRunner" ein erster Browser, der kleine Java-Programme
(Applets) aus dem World Wide Web laden und innerhalb des Browsers ausführen
konnte. "WebRunner" wurde in "HotJava" umbenannt; in Netscape Browser integriert
■ 1996 wurde die erste Version des Java Development Kit (JDK 1.0) veröffentlicht.
School of Engineering
© G. Burkert, K. Rege, ZHAW
38 von 58
Plattform-unabhängig
■ Problem: jeder Prozessor hat seine eigene Maschinensprache
■ Ein Programm muss für jeden Prozessor in die entsprechende Maschinensprache
übersetzt (kompiliert) werden
■ Java simuliert einen Prozessor mit einem Programm, der
Java Virtual Machine (JVM)
■ Machinensprache der JVM ist der so genannte Bytecode
© Oracle
■ Java-Programme werden in Bytecode übersetzt !
School of Engineering
© G. Burkert, K. Rege, ZHAW
39 von 58
Write once, run everywhere
■ Lediglich die JVM ist plattform abhängig
■ Es existieren
© Oracle
School of Engineering
© G. Burkert, K. Rege, ZHAW
40 von 58
… run (really) everywhere
■ Java wird auf Smartwatches bis auf "Big Irons" eingesetzt
■ JSE: Standard Edition
■ JEE: Enterprise Edition
School of Engineering
© G. Burkert, K. Rege, ZHAW
41 von 58
Java Bibliotheken
■ JRT: nur die für die Laufzeit benötigten Bibliotheken
■ JDK: Java Development Kit: + Compiler, Tools,
© Oracle
School of Engineering
© G. Burkert, K. Rege, ZHAW
© Google
42 von 58
Java Applikationen
■ Java-Applikationen sind eigenständige Programme
■ Sie brauchen – ausser der Java Virtual Machine – keine anderen Programme, um
laufen zu können
■ Java-Applikationen sind vergleichbar mit den C-Programmen, die wir in INE1 entwickelt
haben
■ Sie können direkt durch Doppelclick oder Kommandoaufruf vom Betriebssystem
gestartet werden
School of Engineering
© G. Burkert, K. Rege, ZHAW
43 von 58
Java Applets R.I.P.
■ Applets sind nicht eigenständig, sondern normalerweise Bestandteil einer Web-Seite
■ Sie laufen innerhalb eines Web-Browsers oder Applet-Viewers
■ Applets werden bei Bedarf geladen und gestartet
■ Ein Applet kann irgendwo im Internet als .class-Datei gespeichert sein
■ Sie sind eine hersteller- und plattformunabhängige Form der Apps
■ Java Applets werden heute nicht mehr verwendet
TocTacToe
TocTacToe
Applet
Applet
School of Engineering
© G. Burkert, K. Rege, ZHAW
44 von 58
Zur Erinnerung: Hello World in C
■ Bibliothek einbinden, main() als Startfunktion
#include <stdio.h>
int main (void) {
printf("Hello World in C");
return 0;
}
$ gcc –o hello hello.c
$ ls
hello hello.c
$ ./hello
Hello World in C
$
School of Engineering
© G. Burkert, K. Rege, ZHAW
45 von 58
Your First Cup of Java
■ Eine einfach, vollständige Java-Applikation: Greeting.java
public class Greeting {
public static void main (String args[]) {
System.out.println("Hello you");
}
}
$ javac Greeting.java
$ ls
Greeting.class
Greeting.java
$ java Greeting
Hello you
$
School of Engineering
© G. Burkert, K. Rege, ZHAW
46 von 58
Your First Cup of Java
■ Eine einfach, vollständige Java-Applikation: Greeting.java
Kopf
Kopfder
derKlasse
Klasse
Die Main Methode der Klasse
Die Main Methode der Klasse
public class Greeting {
public static void main (String args[]) {
System.out.println("Hello you");
}
Aufruf
Aufrufder
derprintln
printlnMethode
Methodedes
desout
outObjekts
Objekts
der
Klasse
System
der Klasse System
}
Ende
Endeder
derKlasse
Klasse
School of Engineering
© G. Burkert, K. Rege, ZHAW
47 von 58
Textuelle Ausgabe in Java
■ Häufig angetroffene Anweisungen
■ System.out.println("Hello World");
■ System.out.print("Hello");
■ System.out.println();
■ Ab Java 5 auch printf (wie bei C) unterstützt
■ System.out.printf("%9.2f cm is %10d inch\n", 2.54,1);
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
School of Engineering
© G. Burkert, K. Rege, ZHAW
48 von 58
Textuelle Eingabe in Java
■ Mittels der Klasse Scanner kann von der Kommandozeile gelesen werden
package javaapplication1;
import java.io.*;
import java.util.*;
Paket
Paketder
derKlasse
Klasse
Import
Importanderer
andererPakete
Pakete
public class ReadInputScannerExample {
public static void main(String args[]) throws IOException
Scanner scanner = new Scanner(System.in);
scanner.useLocale(Locale.ENGLISH);
System.out.print("enter name: ");
String name = scanner.next();
System.out.print("enter age: ");
int age = scanner.nextInt();
System.out.printf("Hello %s you are %d\n",name,age);
}
{
}
School of Engineering
© G. Burkert, K. Rege, ZHAW
49 von 58
Datumsausgabe in Java
■ Datum wird zuerst in String umgewandelt: Klassen: SimpleDateFormat, String
Variable
Variablevon
vonKlasse
Klasse==
Object
Object
Klasse
Klasse
Initialisierungswerte
Initialisierungswerte
Erzeuge
ErzeugeInstanz
Instanz
GregorianCalendar date = new GregorianCalendar(2016,2,24);
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
String string = format.format(date);
System.out.printf("The date: %s", string);
Aufruf
Aufrufder
derMethode
Methode"format"
"format"
■ Dafür muss aber noch das "Package" java.text importiert werden (am Anfang des
Programms)
Import
Importbenötigter
benötigterPakete
Pakete
import java.text.*;
import java.util.*;
School of Engineering
© G. Burkert, K. Rege, ZHAW
50 von 58
Programmieren in Java
School of Engineering
© G. Burkert, K. Rege, ZHAW
51 von 58
Java-Applikation erstellen
Editor
Programm
Datei
Greeting.java
Compiler
Greeting.class
JVM
javac Greeting.java
Weitere
Klassen
java Greeting
Java Virtual Machine
School of Engineering
© G. Burkert, K. Rege, ZHAW
52 von 58
Tools
■ Java-Compiler: javac
■
übersetzt Java-Programm in Byte-Code.
■
überprüft grammatikalische Korrektheit des Programms
■ Java Virtual Machine: java
■
lädt <fn>.class File
■
interpretiert Byte-Code
■
ruft main auf
School of Engineering
© G. Burkert, K. Rege, ZHAW
53 von 58
Java-Applikation erstellen
■ Java Compiler compiliert .java (Sourcecode) und
erzeugt .class (Bytecode):
javac javaapplication1\Greeting.java
→ Greeting.class
■ Damit kann die Applikation ausgeführt werden:
java javaapplication1.Greeting
School of Engineering
© G. Burkert, K. Rege, ZHAW
54 von 58
Werkzeuge: Editor
■ Zum Schreiben des Java Programms
■ Zum Beispiel: notepad, ultraedit
■ Programmeditor: optimiert für die Programmierung
■
Einfärben des Textes
■
Formatierungshilfen
■
Zusammenfassen von mehreren Texten zu Projekten
■
Starten des Compilers aus dem Editor heraus
■ Java Spezifika
■
nur eine Klasse pro File, Filename = Klassenname
■
File-Endung .java
School of Engineering
© G. Burkert, K. Rege, ZHAW
55 von 58
Werkzeuge: Compiler
■ In Java: javac.exe
■ Überprüft ob Programm syntaktisch korrekt
■ Wenn nicht → Fehlermeldung
■ Position und Ursache oft nur ungefähr
■ Übersetzt Programm in Byte-Code → .class
<fn>.java
School of Engineering
javac
javac
<fn>.class
© G. Burkert, K. Rege, ZHAW
56 von 58
Integrierte Entwicklungsumgebung
■ Es gibt spezielle Softwarepakete, um Programme zu entwickeln
■ Sie umfassen im allgemeinen einen Editor, Compiler, Linker, Applet-Viewer, Debugger,
graphischen Layouter
■ IDE: Integrated Development Environment
■ IDEs für Java
■
NetBeans, IntelliJ, Eclipse, JBuilder, JCreator, ….. , BlueJ
School of Engineering
© G. Burkert, K. Rege, ZHAW
57 von 58
Noch Fragen?
School of Engineering
© G. Burkert, K. Rege, ZHAW
58 von 58
Herunterladen