Loading presentation...
Prezi is an interactive zooming presentation

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Java - Eine Einführung

compicampus eth zurich 2013-10-03
by

Oliver Nautsch

on 3 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Java - Eine Einführung

Java
Eine Einführung
- Wie Java entstand
- Das erste Programm "Hello World"
- Sprachkonzepte und -grundlagen
- Die Klassenbibliothek
- Werkzeuge
- Anwendungsfelder (Desktop, Web, Server, Mobile)
- Wie weiter?
- Diskussion

Willkommen
Oliver Nautsch
Software Engineer/Crafter/Artist/Architect/Gardener...

@ollispieps
www.nautsch.net
Kaffeemaschinen...
- "The Green Project" Frühjahr 1991 bis Sommer 1992 - SUN
- "Oak" -> "Java"
- Durchbruch mit Netscape Navigator
- Java 1.0 - 1996
- Oracle kauft SUN im Januar 2010
- aktuelle Version ist Java SE 7
- Java SE 8 soll am 18. März 2014 erscheinen.
James Gosling
“Hallo Welt!” Programmieren
java -version

/home/<username>/javaprojekt (Unix)
c:\temp\javaprojekt (windows)
// in datei HalloWelt.java
public class HalloWelt {
public static void main(String[] args) {
System.out.println("Hallo Welt");
}
}
Hallo Welt” Kompilieren und Laufen
> cd /home/<username>/javaprojekt
> javac HelloWorld.java
> java HelloWorld
Eigenschaften von Java
Vorteile:

objektorientiert, plattformunabhängig, Multithreading (Parallelisierung), Sicher und Robust (keine Zeiger und Bytecode), Garbage Collector, strenge Typisierung, dynamisch (Klassen werden erst gelinkt, wenn sie benötigt werden), strukturiert, sehr viele Bibliotheken, relative schnell, abwärtskompatibel, viele Entwickler, viel Literatur/Tutorials/Werkzeuge, verteilte Verarbeitung

Nachteile

initiales Laden der JVM, schlecht für systemnahe Programmierung, compile
Variablen
- für Klassen, Objekte, lokal innerhalb von Methoden und als Parameter
- Gross- und Kleinschreibung ist signifikant
- können beginnen mit Buchstaben, $ oder _
- weiter mit Buchstaben, Zahlen, $ oder _
- keine Schlüsselwörter
String name = “Oliver”
int groesse = 186
Schlüsselwörter
abstract continue for new switch
assert default goto* package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const* float native super while
Einfache Datentypen
Datentyp Standardwert von bis
byte 0 -128 127
short 0 -32,768 32,767
int 0 -2,147,483,648 2,147,483,647
long 0L -9,223,372,036,854,775,808
9,223,372,036,854,775,807
float 0.0f 32-bit IEEE 754
double 0.0d 64-bit IEEE 754
char '\u0000' \u0000 (0) \uffff (65,535)
boolean false true false
String null
Arrays
Containerobjekt mit fixer Anzahl von Werten eines bestimmten Types.

Index beginnt bei 0.
int[] kornHaufen;
kornHaufen = new int[64];


int[] kornHaufen = new int[64];


kornHaufen[0] = 1;
kornHaufen[1] = kornhaufen[0] * 2;
Operatoren
Operatoren Priorität
postfix expr++ expr--
unary ++expr --expr +expr -expr ~ !
multiplicative * / %
additive + -
shift << >> >>>
relational < > <= >= instanceof
equality == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
ternary ? :
assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=

Expression, Statements
Expression -
ergibt einen Wert aus Variablen, Operatoren und Methodenaufrüfen, auch zusammengesetzt

Statement
abgeschlossener “Satz” mit Semikolon am Ende
expression statement
declaration statement
control flow statement

(4+2) * 10





groesse=1.86;
double groesse = 1.86;

Block
Geschweifte Klammern mit 0 bis n Statements.
public class HalloWelt {
public static void main(String args[]) {
{
String nachricht = "Hallo Welt.";
}
System.out.println(nachricht);
}
}
FEHLER
Control Flow Statement - if
if (amEssen) {
System.out.println("Gerade am Essen.");
}
else if (amSchlafen) {
System.out.println("Gerade am Schlafen.");
}
else {
System.out.println("Gerade am Lernen.");
}
Control Flow Statement - switch
switch (jahresHaelfte) {
case 1: schreibe("Erste Jahreshälfte.");
break;
case 2: schreibe("Zweite Jahreshälfte.");
break;
default: schreibe("???");
break;
}
Control Flow Statement - while / do while
while (zaehler < 11) {
System.out.println("Zaehler ist: " + zaehler);
zaehler++;
}

do {
System.out.println("Zaehler ist: " + zaehler);
zaehler++;
} while (zaehler < 11);
Control Flow Statement - for
for(int i=1; i<11; i++){
System.out.println("Zaehler ist: " + i);
}
Control Flow Statement - branching
break - for, while, do-while loop
continue - for, while, do-while loop
return - beendet Methode
public static int getAnzahlLokomotiven() {
return anzahlLokomotiven;
}
Was ist Objektorientierte Programmierung (OOP) ?
“OOP bedeutet für mich nur
Messaging
lokales Beibehalten, Schützen und Verbergen des Prozesszustands und
spätmögliche Bindung aller Dinge”
- Alan Kay (Erfinder von Smalltalk)
Konzepte von OOP in Java
Objekt - konkrete Daten und Verhalten, wie Objekte in der realen Welt (mein Fahrrad, die Zugmaschine die an uns vorbeifährt, die Person neben uns)

Klasse - die Schablone aus der Objekte generiert werden (Konzept des Fahrrads, Bautyp einer Zugmaschine, Person im Allgemeinen)

Vererbung (Inheritance) - erben von Zustand und Verhalten von Klassen - (default: extends java.lang.Object)

Schnittstelle (Interface) - Vertrag zur Kommunikation (von Klassen) - Black Box

Package - Namensraum für Klassen und Schnittstellen
Beispiel
package net.nautsch.eisenbahnapp;

import net.nautsch.eisenbahnapp.fahrzeuge.Fahrzeug;
import net.nautsch.eisenbahnapp.fahrzeuge.Lokomotive;

public class EisenbahnApp {

public static void main(String args[]) {
final Lokomotive lok14251 = new Lokomotive("Ce 6/8 II - 14251");
lok14251.beschleunigeAuf(30);

druckeAktuelleGeschwindigkeit(lok14251);

System.out.println(
"Anzahl Lokomotiven : " +
Lokomotive.getAnzahlLokomotiven()
);
}

private static void druckeAktuelleGeschwindigkeit(Fahrzeug fahrzeug) {
System.out.println(
"Aktuelle Geschwindigkeit: " +
fahrzeug.getAktuelleGeschwindigkeit() +
" km/h");
}
}
package net.nautsch.eisenbahnapp.fahrzeuge;

public interface Fahrzeug {
int getAktuelleGeschwindigkeit();
}
package net.nautsch.eisenbahnapp.fahrzeuge;

public class Lokomotive implements Fahrzeug {

private static int anzahlLokomotiven;

private String nummer;
private int aktuelleGeschwindigkeit;

public Lokomotive(String nummer) {
this.nummer = nummer;
Weiteres zur Sprache
Verschachtelte Klassen
Enum Types
Numbers, Strings, Autoboxing und Unboxing
Exceptions
Annotations
Generics
Packages
Die Klassenbibliothek
http://docs.oracle.com/javase/7/docs/
Copyright © 1993, 2013, Oracle and/or its affiliates.
Full transcript