Java

Werbung
1
Informatik I
Praktikum
Download:
www.armand-schulz.de/hshl
I C O N A S
I-CONAS
IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
2
Informatik 1
Java – Ein kurzer Überblick
I C O N A S
I-CONAS
IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Was ist Java, woher kommt der Begriff
I C O N A S
In einem langen Satz:
Java ist..
eine plattformunabhängige
objektorientierte Programmiersprache
des Workstation-Herstellers SUN Microsystems,
die nicht nur das Internet, sondern womöglich die gesamte
Computerbranche revolutionieren wird
sowie natürlich die Hauptinsel Indonesiens,
als auch eine kleine Insel im Pazifik,
deren Hauptexportprodukt Kaffee ist
und damit der umgangssprachliche Ausdruck für Kaffee in den USA.
(Quelle: http://www.dooop.org/Java.html)
3
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
So ist Java entstanden
§
§
§
§
§
§
§
§
§
4
I C O N A S
1991 erste Entwicklungen zu Java durch Sun Microsystems
(Green-Project, Projekt-Team: Bill Joy, James Gosling u. a.)
Zielsetzung von Green-Project:
§ einfache objektorientierte Programmiersprache mit
§ grafischer Benutzungsoberfläche für
§ Haushalts- und Unterhaltungselektonik
erster Java-Interpreter namens OAK (Object Application Kernel )
Benutzerführung durch den Character „Duke“
Mit Verbreitung des Internet änderte sich die Zielsetzung Javas
§ WWW-Seiten interaktiv und grafikfähig machen
Sun entwickelte ersten Java-fähigen WWW-Broswer HotJava
Java-Hype kam 1995 mit Netscape 2.0 (Java in Beta-Version)
Java in der Version 1.0 1996
Gründung von JavaSoft durch Sun Microsystems
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
1996/97
1998
Neue Klassen
Event-Handling
JavaBeans
Java-Applets
Internet-Explorer
Visual Cafe
Visual J++
IBM VisualAge
JBuilder
5
I-CONAS | IT-Dienstleistung für Industrie & Handel
2000
...
2002
2010 2014
Java SE 8 Update 60
...
Java SE 8
Java 2 SDK 5.0
1995/96
Java 2 SDK 1.4
JDK 1.0.x
1995
I C O N A S
Java 2 SDK 1.3
Java-Netscape
1994
Java 2 Version 1.2 (SDK)
Java / HotJava
1991
JDK 1.1.x
Green Project/Oak
Entstehung von Java
2015
XML
Regex
JFC/Swing
Java-Archive
Signierte Applets
Neue Klassen
CORBA
RMI
Hotspot
Übernahme
Sun Microsystems
durch Oracle
Dipl.-Ing. Armand Schulz
[email protected]
Wesentliche Ziele im Green Project
I C O N A S
Java von Grund auf neu entwickeln
Syntax und Sprachkonstrukte von C++ übernehmen
bewährte Merkmale anderer Sprachen verwenden
auf fehleranfällige und komplexe Elemente verzichten
6
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Eigenschaften von Java 1/3
I C O N A S
einfach
§
§
§
wenige Sprachkonstrukte
bewährte Konstrukte anderer OO-Sprachen (C++, Smalltalk)
keine fehleranfälligen Konstrukte (z. B. Mehrfachvererbung, Zeiger)
objektorientiert
§
§
§
vollständig objektorientiert (vgl. Hybridsprache C++)
Grunddatentypen und Objekte
gekapselte Methoden - keine Funktionen, Prozeduren
verteilt
§
§
§
7
Unterstützung verteilter Anwendungen
Java-API für TCP/IP Kommunikation
Java-API für Zugriff entfernter Objekte und Methoden
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Eigenschaften von Java 2/3
I C O N A S
interpretiert
§
§
§
Java-Compiler erzeugt Byte Code
Byte-Code-Interpreter auf nahezu jeder Plattform verfügbar
Byte-Code kann keine systemspezifischen Vorteile nutzen
(Nachteil!?)
robust
§
§
§
long x = 13L;
short y = x // Kompilerfehler
strenge Typprüfung schon bei Kompilierung
kein direkter Speicherzugriff
strenge Bereichsprüfung (z. B. Zeichenketten, Arrays)
sicher
§
§
§
8
Applets haben kaum lokale Zugriffmöglichkeiten
signierte Applets: Zugriff auf lokale Maschine (JDK 1.1)
Security Manager: individuelle Verwaltung der Zugriffsrechte
(JDK1.2)
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Eigenschaften von Java 3/3
I C O N A S
architekturneutral
§
§
§
Interpreter-Konzept – Byte-Code und Java Virtual Maschine (JVM)
Architekturunabhängigkeit wurde wegen Applets eingeführt
Anwendungen laufen plattformuabhängig ohne Anpassung
portabel
§
§
§
keine systemabhängigen Konstrukte
Grösse der Datentypen ist in Java festgeschrieben
eigene GUI !!!
performant
§
§
§
9
erheblich kürzere Entwicklungszeit
leistungsfähige Java-Compiler und Laufzeitsysteme
Anteil der Benutzerinteraktivität nimmt stetig zu
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Eigenschaften von Java 3/3
I C O N A S
nebenläufig
§
§
§
einfache Programmierung Multithreading-fähiger Anwendungen
Multithreading-Fähigkeit ist Bestandteil der Sprache
Multithreading wesentlich für komfortable GUIs
dynamisch
§
§
10
dynamisches Binden von Klassen zur Laufzeit
Klassenzustand kann während der Laufzeit modifiziert werden
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Plattformunabhängigkeit:
Compiler- vs. Interpretersprachen
C++
Source
11
C++
Source
I C O N A S
C++
Source
Compiler
Win32 PC
Compiler
Linux Alpha
Compiler
Irix, MIPS
Maschinencode
Windows, PC
Maschinencode
Linux, Alpha
Maschinencode
IRIX, MIPS
PC, Win2000
DEC-Alpha, Linux
SGI, Irix
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Plattformunabhängigkeit:
Compiler- vs. Interpretersprachen
I C O N A S
JDK/SDK
Java
Source
Java
Compiler
Bytecode
(maschinenunabhängig)
JIT
JVM
JIT
JVM
JIT
JVM
JIT
JRE
JVM
PC, Win2000
12
DEC-Alpha, Linux
I-CONAS | IT-Dienstleistung für Industrie & Handel
Ultra, Solaris
SGI, Irix
Dipl.-Ing. Armand Schulz
[email protected]
13
Entwicklung/Aufbau von Java-Programmen
I C O N A S
I-CONAS
IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Vom Code zum ausführbaren Programm
I C O N A S
(SDK-Werkzeuge)
Datei: Hello.java
Text-Editor
Kompilieren: javac Hello.java
Hello.class
14
I-CONAS | IT-Dienstleistung für Industrie & Handel
Ausführen: java Hello
oder: appletviewer Hello.html
Dipl.-Ing. Armand Schulz
[email protected]
Die integrierte Entwicklungsumgebung
I C O N A S
= projektorientierte effektive Softwareentwicklung
§
§
§
§
§
§
§
§
§
§
15
I-CONAS | IT-Dienstleistung für Industrie & Handel
BlueJ
Eclipse
IBM VisualAge
Borland Jbuilder
VisualCafe
MS Visual J++
Xemacs
SUN JavaWorkshop
Powersoft PowerJ
...
Dipl.-Ing. Armand Schulz
[email protected]
Grundlegender Aufbau von Java-Applikationen
optional
I C O N A S
Dateiname = Name Main-Klasse!
HalloHSHL.java
optional
package HSHL;
import java.lang.*;
public class HalloHSHL {
public static void main(String args[]){
System.out.println(“Hallo HSHL“);
}
}
damit JVM Klasse
aufrufen kann
16
I-CONAS | IT-Dienstleistung für Industrie & Handel
main()-Methode
Einstiegspunkt
Dipl.-Ing. Armand Schulz
[email protected]
Die main()-Methode
JVM muss auf main()
zugreifen können
I C O N A S
keine Wertrückgabe
public static void main(String args[]){}
main() kann ohne Instzanz der
Main-Klasse aufgerufen werden
17
I-CONAS | IT-Dienstleistung für Industrie & Handel
Argumente aus
Kommandozeile
Dipl.-Ing. Armand Schulz
[email protected]
Kommandozeilenargumente in Applikationen
I C O N A S
public class ArgumentPrint {
public static void main(String args[]){
if(args.length == 0){
System.out.println(“keine Argumente“);
}
else{
for(int i=0; i < args.length; i++)
System.out.println(args[i]);
}
}
}
18
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Die Entwicklungswerkzeuge
I C O N A S
Entwicklungsumngebung
Dokumentation
Java API
Demo
19
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Gemeinsamer Einstieg: Übung #01
I C O N A S
Wir erstellen ein Programm, mit dem gerechnet werden
kann.
Grundprogramm: Addition von 2 Werten
1. Ausbaustufe: Addition von beliebigen Werten
2. Ausbaustufe: Erweiterung -, *, /
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Die Bildschirmein- und ausgabe
I-CONAS | IT-Dienstleistung für Industrie & Handel
I C O N A S
Dipl.-Ing. Armand Schulz
[email protected]
Code-Fragmente für Übung #01
I C O N A S
Einlesen von der Konsole
BufferedReader console =
new BufferedReader(new InputStreamReader(System.in));
Fehlerbehandlung
oder einfach
throws Exception
hinter den Methodenamen
Eingabestring in int-Wert umwandeln
Integer.parseInt(eingabe);
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Kontrollstrukturen
for, while, do while, if, else, case, ...
I C O N A S
I-CONAS
IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Übung #02
I C O N A S
Erstellen Sie eine Java-Applikation, mit der die Fakultät eines beliebigen ganzzahligen
Wertes berechnet werden kann
Die Java-Klasse besteht minimal aus den Methoden main() und fakultaet().
(Hinweis: Die Fakultät von 0 ist 1)
Beispiel: Fakultät von 3 = 1 * 2 * 3 = 6
24
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Übung #02a
I C O N A S
Das Programm kann mit x beendet werden
Erweitern Sie das Programm aus
Übung #02 dahingehend, das der links
stehende Programmablauf umgesetzt wird.
Hinweis: blaue Ziffern sind Benutzereingaben
Bitte Wert oder x eingeben: 0
--- Ergebnis --Die Fakultät von 0 ist 1
Bitte Wert oder x eingeben: 1
--- Ergebnis --Die Fakultät von 1 ist 1
Bitte Wert oder x eingeben: 6
--...
...
...
...
...
...
--Die
Rechenschritte --* 1 = 1
* 2 = 2
* 3 = 6
* 4 = 24
* 5 = 120
* 6 = 720
Ergebnis --Fakultät von 6 ist 720
Bitte Wert oder x eingeben: x
Programm wird beendet!
25
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Objektorientierung in kurz
I C O N A S
Was heißt Objektorientierung?
In der Realität vorkommende Individuen/Gegenstände werden als Objekte betrachtet. Die Eigenschaften und Zusammensetzung der Objekte werden nur so
detailliert abgebildet, wie es zur Erfüllung einer Aufgabe zweckdienlich ist.
Lohnabrechnungssystem
Telefonverzeichnis
Steuerklasse
Name
Fred Wacker
39 Jahre, 2 Kinder
Briefmarkensammler
26
Krankenvers.-Nr.
Abteilung
Personal-Nr.
Telefon-Nr.
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Objekte, Klassen und Instanzen
Objekte
Kreis
Attribute:
Position, Radius, Farbe
Innerer Zustand:
sichtbar/unsichtbar
Verhalten: Zeichnen,
Verschieben, Größe ändern
Exemplare
Instanzen
r = 2.5
27
I C O N A S
Klassen
Class Kreis {
punkt Mittelpunkt;
float Radius;
color Farbe;
bool sichtbarkeit;
zeichnen(pos, radius, col);
verschiebe(pos);
neueGroesse(radius);
}
Kreis kreis1;
Kreis kreis2;
kreis1.zeichne(1,2.5, green);
kreis1.neueGroesse(5.8);
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Übung #03
I C O N A S
Erstellen Sie ein Programm, welches von 1 bis n zählt und diese Zahlen durch Semikolon
getrennt auf dem Bildschirm ausgibt. Vor der ersten und nach der letzten Zahl darf kein
Semikolon vorhanden sein. Die für n einzugebende Zahl darf nicht kleiner als 5 und größer
als 20 sein. Die Werteingabe und die Bildschirmausgabe werden in einer Funktionen
(eingabe() und ausgabe()) gekapselt.
Die Ein- und Ausgabe gestaltet sich wie folgt (Eingaben/Variablenwerte sind fett-kursiv):
Geben sie einen Wert fuer n ein: 3
Der Wert ist nicht zulaessig!
Geben sie einen Wert fuer n ein: 7
1;2;3;4;5;6;7
28
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
29
kleiner Einschub: Die tückische Ganzzahldivision
I C O N A S
I-CONAS
IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Typumwandlung – tückische Ganzzahldivision
I C O N A S
Die tükische "Ganzzahldivision"
public static void ganzZahlDiv() {
int x = 3;
int y = 4;
float ergebnis;
ergebnis = x/y;
}
30
erwartetes Ergebnis: 0.75
faktisches Ergebnis: 0
Warum?
3 und 4 sind int => Ergebnis ist auch int
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Übung #04
I C O N A S
Erstellen Sie eine Klasse IOClass die Ein- und Ausgabefunktionen kapselt.
Die Klasse hat die Methoden writeToConsole und readFromKeyboard.
Die Methode writeToConsole gibt den ihr als Parameter übergebenen String-Parameter auf die
Konsole aus.
Die Methode readFromKeyboard liest von der Tastatur und liefert das Eingelesene als String
zurück.
Integrieren Sie die Klasse IOClass in den Quellcode der Übung #03.
31
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Übung #05
I C O N A S
Erstellen Sie ein Programm, welches die Kreiszahl PI näherungsweise berechnet.
Die Berechnung erfolgt nach dem Verfahren, das von dem Mathematiker Leibniz entdeckt
wurde. Danach berechnet sich die Zahl PI wie folgt:
PI = (1 – 1/3 + 1/5 – 1/7 + 1/9 - …) * 4
Der Benutzer gibt die Anzahl der durchzuführenden Rechenschritte an. Die Zahl 0 als Anzahl
ist nicht zulässig. Bei der Anzahl 1 lautet die Berechnung PI = (1 – 1/3) * 4
Anzahl der Rechenschritte eingeben (1..n): 0
Der Wert ist nicht zulaessig!
Anzahl der Rechenschritte eingeben (1..n): 7
PI nach 7 Rechenschritten hat den Wert: 3.017071817071818
32
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
33
Arrays in Java
I C O N A S
I-CONAS
IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Übung #06
I C O N A S
Erstellen Sie ein Programm, mit dem die Summe (1+2+3), das Produkt (1*2*3) und
der arithmetische Mittelwert ((1+2+3)/3) von Gleitpunktwerten bestimmt werden kann.
Die vom Benutzer zur Berechnung eingegebenen Werte werden in einem Array
gespeichert. Die Berechnungen erfolgen in den Methoden: summe(), produkt() und
mittelwert(). Die Bildschirmausgaben erfolgen in der main(). Es dürfen maximal 10
Werte vom Benutzer eingegeben werden. Realisieren Sie die Fallunterscheidung mit der
switch-Anweisung.
Die Ein- und Ausgabe gestaltet sich folgendermaßen
(Eingaben/Variablenwerte sind fett-kursiv):
Geben Sie die Anzahl der Werte ein! 3
Welche Berechnungsart Summe(S), Produkt(P), Mittelwert(M)? P
1. Wert: 1
2. Wert: 2
3. Wert: 3
Das Produkt ist: 6
(entsprechend: Die Summe ist ..., Der Mittelwert ist ...)
34
I-CONAS | IT-Dienstleistung für Industrie & Handel
Dipl.-Ing. Armand Schulz
[email protected]
Herunterladen