Java für Anfänger Teil 1: Intro Programmierkurs 12 -16 10 2009 12.-16.10.2009 Manfred Jackel 1 1. Handwerkszeug Notwendige Software Java Runtime Environment JRE 6 von http://java.sun.com/javase/downloads/index.js p j j j p ca. 14 MB Nur JRE,, nicht SE oder EE ((schadet aber nicht)) Eclipse Entwicklungsumgebung Eclipse IDE for Java Developers ca ca. 78 MB www.eclipse.org In dieser Reihenfolge installieren Download JRE Download Eclipse Eclipse starten … File New Java Project Projektdialog ausfüllen Frei wählbaren P j kt Projektnamen eingeben, z.B. „WelcomeProject“ W l P j t“ Sonst die Vorgabewerte belassen Finish drücken Neue Klasse einfügen Projekt markieren, in d dem di die Kl Klasse erzeugt werden soll File New Class Klassen-Dialog ausfüllen Einen Klassennamen i d in das Feld F ld „Name“ N “ eingeben: Welcome Konvention: Klassenname beginnt g mit Großbuchstabe main-Methode main Methode für ausführbare Klassen Sonst Vorgaben belassen public static void main(String[] args) Einsprung ins Programm Kontextsensitive Hilfe Die Klasse System Die Klasse System beinhaltet mehrere nützliche Felder und Methoden Methoden. Strings=Zeichenketten “Welcome to Java“ ist ein Stringliteral 2 ist Zahlliteral Zahlliteral, zwei ist Zahlwort Zahlwort, “zwei“ ist Stringliteral g System.out.print (22); System.out.print( “zweiundzwanzig“); Ausgabe: zweiundzwanzig System.out.print( 2+“und“+20); Ausgabe: g zweiundzwanzig g System.out.print( “zwei“+“und“+“zwanzig“); Ausgabe: 22 Ausgabe: 2und20 System.out.print(20+2); Ausgabe: 22 Was Eclipse für uns gemacht hat: Im workspace-Verzeichnis: Ein Unterverzeichnis „WelcomeProject“ „WelcomeProject Im Unterverzeichnis WelcomeProject Ein Unterverzeichnis „src“ j mit Quellcode Darin die Datei „„Welcome.java“ Ein Unterverzeicnis „bin“ Darin die Datei „Welcome.class“ mit Bytecode Ohne Eclipse: Übersetzen mit Befehl: javac Welcome.java Ausführen mit Befehl: java Welcome.class JJava-Dateien D t i werden d íín B Bytecode t d üb übersetzt. t t Di Die JJava Virtual Machine führt diesen Bytecode dann aus. Java von der Kommandozeile javac Java- Compiler p java BytecodeBytecode Interpreter 2. Stoff Java- Geschichte Entwickelt 1995 für Sun Microsystems, Vorläufer Oak (Heimelektronik) James Gosling u (Heimelektronik), u.a. a Push durch Applet für NetScape Mosaic Browser JDK 1.0 1996 Java Development Kit JDK 1.1 1997 JDK 1.2 1999 ab hier Java 2 Platform JDK 1.3 2000, JDK 1.4 2003 JDK 1.5 2004: J2SE 5.0 Java 2 Standard Edition 5.0 JDK 1.6 2006 Begriff Objekt (Wikipedia) 8.10.2009 Objekt bezeichnet: allgemein ll i etwas t U Unspezifiziertes, ifi i t siehe i h Sache S h oder d Gegenstand i Si im Sinne d der Di Dialektik l ktik d das, worauff ein i S Subjekt bj kt seine i beobachtende, sinnliche, empirische und praktischverändernde Aktivität richtet richtet, siehe Objekt (Philosophie) ein Gegenstand mathematischer Untersuchungen Mathematisches Objekt Begriff Objekt (Wikipedia) ein Satzglied, siehe Objekt (Grammatik) einen i Hi Himmelskörper, l kö siehe i h Astronomisches A t i h Obj Objekt kt eine Einheit in einem Geoinformationssystem, siehe G Geoobjekt bj kt eine Einheit in der Programmierung, siehe Objekt (Programmierung) eine bestimmte Art künstlerischer Werke, siehe Objektkunst einen selbstständigen Betrieb der ehem. Wismut AG Objekt (Programmierung Wikipedia) p ) Ein Objekt bezeichnet … ein Exemplar eines b ti bestimmten t Datentyps D t t oder d einer i b bestimmten ti t Klasse (auch "Objekttyp" genannt). Im Kontext d objektorientierten der bj kt i ti t P Programmierung i werden d Objekte auch als „Instanzen einer Klasse“ b bezeichnet. i h t Obj Objekte kt sind i d also l kkonkrete k t Ausprägungen („Instanzen“) eines Objekttyps. Di Kl Die Klasse beschreibt b h ibt d das Muster M t aller ll Obj Objekte, kt die zu ihr gehören. Einfaches Objekt Beispiel Person1: Hans Dampf 01.02.1990 Person2: Lieschen Müller 01.12.1991 Muster: Vorname Nachname (Geburts-)Datum Klasse Person Person1 Person2 Vorname Hans Lieschen Nachname Dampf Müller G b t t Geburtstag 01 02 1990 01.02.1990 01 12 1991 01.12.1991 Objekt Instanz Klassendefinition Person Objekt Beispiel Klasse Klasse Klasse class l P Person { String vorname; String nachname; Datum gebdatum; } Objekt Instanz Klasse Person Person1 Person2 Vorname Hans Lieschen Nachname Dampf Müller G b t t Geburtstag 01 02 1990 01.02.1990 01 12 1991 01.12.1991 Klassendefinition Person Objekt Beispiel Klasse Klasse Klasse class l P Person { String vorname; String nachname; Datum gebdatum; } Objekt Instanz Person1 Person2 Hans Lieschen Dampf Müller 01 02 1990 01.02.1990 01 12 1991 01.12.1991 Objekt (Programmierung Wikipedia) p ) Jedes Objekt hat einen Zustand, ein Verhalten und d eine i Identität. Id tität Der Zustand des Objekts setzt sich aus seinen Attributen und Verbindungen zu anderen Objekten zusammen. Das Verhalten des Objekts wird durch die Menge seiner Operationen p (("Methoden")) beschrieben. Die Identität unterscheidet ein Objekt von anderen Objekten Objekten, auch wenn diese anderen Objekte den gleichen Zustand und das gleiche Verhalten haben [ Objekt, erweitertes Beispiel Das Verhalten des Objekts wird durch die Menge seiner i O Operationen ti ("M th d ") beschrieben. ("Methoden") b hi b Alter = 17 Alter = 19 Person1 Person2 Hans Lieschen Dampf Müller 01 02 1990 01.02.1990 01 12 1991 01.12.1991 Objekt erweitertes Beispiel class l P Person { String: vorname; String: nachname; Datum: gebdatum; int alter() { … } } Programm zur Berechnung Person Vorname Nachname Geburtstag Methode alter() Person1 Person2 Hans Lieschen Dampf Müller 01 02 1990 01.02.1990 01 12 1991 01.12.1991 Methode: Erweitertes Beispiel int alter() { Datum heute = new Datum(); int grob = heute.jahr - gebdatum.jahr; if (heute.monat > gebdatum.monat) return grob - 1; if (heute.monat == gebdatum.monat && heute.tag > g gebdatum.tag) g) return grob - 1; g ; return grob; } Java Eigenschaften Java-Verwandte: C++, C#, Objective C, Smalltalk, Delphi hat Klassen und Objekte Vergleichsweise einfach Interpreter-gestützt (VM) Robust (z.B. keine Pointer-Arithmetik) Pointer Arithmetik) Architekturneutral (nicht OS- oder rechnerspezifisch) Portierbar (Bytecode) ( y ) Nebenläufig Java Runtime Environment C1.java C2.java CN.java Java-Compiler C1.class C2.class CN.class J Java Virtual Vi t l Machine M hi Betriebssystem Hardware