Java für Anfänger Teil 1: Intro Programmierkurs 11.-15.10.2010 Manfred Jackel 1 1. Handwerkszeug Eclipse Workbench mit Java-Compiler Java Runtime Environment Notwendige Software Java Runtime Environment JRE 6 von http://java.sun.com/javase/downloads/index.js p ca. 14 MB Nur JRE, nicht JDK, SE oder EE (schadet nicht, braucht sehr viel Platz) Eclipse Entwicklungsumgebung Eclipse IDE for Java Developers ca. 78 MB www.eclipse.org In dieser Reihenfolge installieren Download JRE Software hat Installer Download Eclipse Kein Installer, In Verzeichnis entpackenr Eclipse.exe starten … File New Java Project Eclipse.exe starten … File New Java Project Exklusives Verzeichnis wählen Eclipse starten … File New Java Project Projektdialog ausfüllen Frei wählbaren Projektnamen eingeben, z.B. „WelcomeProject“ Sonst die Vorgabewerte belassen Finish drücken Neue Klasse einfügen Projekt markieren, in dem die Klasse erzeugt werden soll File New Class Klassen-Dialog ausfüllen Einen Klassennamen in das Feld „Name“ eingeben: Welcome Konvention: Klassenname beginnt mit Großbuchstabe 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. Strings=Zeichenketten “Welcome to Java“ ist ein Stringliteral Workspace Editor console 2 ist Zahlliteral, zwei ist Zahlwort, “zwei“ und “2” sind Stringliterale System.out.print (22); System.out.print( “zweiundzwanzig“); Ausgabe: zweiundzwanzig System.out.print( 2+“und“+20); Ausgabe: zweiundzwanzig 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“ Im Unterverzeichnis WelcomeProject Ein Unterverzeichnis „src“ Darin die Datei „Welcome.java“ mit Quellcode 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 Java-Dateien werden ín Bytecode übersetzt. Die Java Virtual Machine führt diesen Bytecode dann aus. Java-Architektur systemunabhängig .class .java JavaProgramm (Textdatei) Java Byecode Ausführen JavaCompiler Java Virtual Machine Betriebssystem Ausführen systemabhängig Java von der Kommandozeile javac Java- Compiler java Bytecode- Interpreter nur mit JDK 2. Stoff Java- Geschichte Entwickelt 1995 für Sun Microsystems, Vorläufer Oak (Heimelektronik), James Gosling u.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 etwas Unspezifiziertes, siehe Sache oder Gegenstand im Sinne der Dialektik das, worauf ein Subjekt seine beobachtende, sinnliche, empirische und praktischverändernde Aktivität richtet, siehe Objekt (Philosophie) ein Gegenstand mathematischer Untersuchungen Mathematisches Objekt Begriff Objekt (Wikipedia) ein Satzglied, siehe Objekt (Grammatik) einen Himmelskörper, siehe Astronomisches Objekt eine Einheit in einem Geoinformationssystem, siehe Geoobjekt 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) Ein Objekt bezeichnet … ein Exemplar eines bestimmten Datentyps oder einer bestimmten Klasse (auch "Objekttyp" genannt). Im Kontext der objektorientierten Programmierung werden Objekte auch als „Instanzen einer Klasse“ bezeichnet. Objekte sind also konkrete Ausprägungen („Instanzen“) eines Objekttyps. Die Klasse beschreibt das Muster aller Objekte, 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“ Geburtstag 01.02.1990 01.12.1991 Objekt Instanz Klassendefinition Person Objekt Beispiel Klasse Klasse Klasse class Person { String vorname; String nachname; Datum gebdatum; } Objekt Instanz Klasse Person Person1 Person2 Vorname “Hans“ “Lieschen“ Nachname “Dampf“ “Müller“ Geburtsdatum 01.02.1990 01.12.1991 Klassendefinition Person Objekt Beispiel Klasse Klasse Klasse class Person { String vorname; String nachname; Datum gebdatum; } Objekt Instanz Person1 Person2 Hans Lieschen Dampf Müller 01.02.1990 01.12.1991 Objekt (Programmierung Wikipedia) Jedes Objekt hat einen Zustand, ein Verhalten und eine Identitä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 ("Methoden") beschrieben. Die Identität unterscheidet ein Objekt von anderen 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 Operationen ("Methoden") beschrieben. Alter = 18 Alter = 20 Person1 Person2 “Hans“ “Lieschen“ “Dampf“ “Müller“ 01.02.1990 01.12.1991 Objekt erweitertes Beispiel class Person { String: vorname; String: nachname; Datum: gebdatum; int alter() { … } } Programm zur Berechnung Person Vorname Nachname Geburtstag int alter() Person1 Person2 “Hans“ “Lieschen“ “Dampf“ “Müller“ 01.02.1990 01.12.1991 Objekt erweitertes Beispiel Klasse für Datum class Datum { int jahr; int monat; int tag; } 30 Methode: Erweitertes Beispiel int alter() { Datum heute = new Datum(); heute.jahr=2010; heute.monat=10; heute.tag=11; int grob = heute.jahr - gebdatum.jahr; if (heute.monat > gebdatum.monat) return grob - 1; if (heute.monat == gebdatum.monat && heute.tag > gebdatum.tag) return grob - 1; return grob; Demo } Altersberechnung 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) Architekturneutral (nicht OS- oder rechnerspezifisch) Portierbar (Bytecode) Nebenläufig Java Runtime Environment C1.java C2.java CN.java Java-Compiler C1.class C2.class CN.class Java Virtual Machine Betriebssystem Hardware