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]