Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Einführung Diese Vorlesung wird Ihnen präsentiert von ... … Achim Bitzer: ● ● ● Studium „audiovisuelle Medien“ an der Hochschule der Medien Stuttgart Abschluss 2005 als Dipl.-Ing. (FH) Seither: Software-Entwickler (Java) bei der SEITENBAU GmbH [email protected] www.seitenbau.com Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 2/26 SEITENBAU im Überblick SEITENBAU wurde 1996 gegründet und ist in drei Geschäftsbereiche gegliedert: Content Management & Frontend Engineering • Einrichtung u. kundenspezifische Anpassung • Grafische Gestaltung u. barrierefreie Umsetzung intuitiver Benutzeroberflächen Softwareentwicklung • Entwicklung kundenspezifischer Individualsoftware • Konzeption und Aufbau effizienter IT-Architekturen • Entwicklung hochwertiger Software-Anwendungen Intranet & Portale • Intranets u. Mitarbeiterportale • Enterprise Portale u. Wissensmanagement Lösungen Kunden (öffentlicher & privater Sektor) Mitarbeiterentwicklung Kooperation mit der HTWG ● Intensive, wachsende Kooperation zwischen HTWG und SEITENBAU – Betreuung von Praktika und Abschlußarbeiten – Gemeinsame Forschungsprojekte – Übernahme von Lehraufträgen Zurück zur Vorlesung: Organisatorisches Vorlesungstermine: ● Donnerstags 17:30 – 19:00 Uhr, Raum G-240 ● Freitags 14:00 – 15:30 Uhr, Raum G-240 Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 8/26 Zurück zur Vorlesung: Organisatorisches Unterlagen und Infos im Netz: http://www.achimbitzer.de/htwg ● Folien ● Informationen zur Vorlesung ● Neuigkeiten und Ankündigungen ● auch als Feed (folgt demnächst, unbedingt abonnieren!) Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 9/26 Organisatorisches Laborübungen: ● ● ● ● Ansprechpartner: Ruediger Schneider <[email protected]> Aufgeteilt auf 2 Gruppen – Donnerstags 11:30 – 13:00, Raum F-113 – Donnerstags 14:00 – 15:30, Raum F-112 Zweiergruppen empfehlenswert (macht Spaß und bringt viel) Übungsaufgaben und weitere Informationen befinden sich auf http://www.achimbitzer.de/htwg – Wenn Sie zu Hause programmieren, benötigen Sie Java SDK1.5 oder neuer: http://java.oracle.com Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 10/26 Organisatorisches Prüfungen: ● ● Übungsschein – Bestehen von zwei Testaten (30-minütige schriftliche Tests) – Erstes Testat nach ca 5 Wochen, zweites nach ca. 10 Wochen, genaue Termine werden noch bekanntgegeben – Pro Testat sind 50% der Punkte zum Bestehen erforderlich Klausur – 90-minütige schriftliche Prüfung – Keine Hilfsmittel zugelassen Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 11/26 Organisatorisches Credit Points (ECTS) & Aufwand: ● Vorlesung und Übungen ergeben zusammen 7 ECTS ● wöchentlicher Arbeitsaufwand: ca. 11 Stunden ● Vorlesung + Übungen: 4,5 Stunden pro Woche ● Selbstlernanteil: 6,5 Stunden pro Woche, aufgeteilt auf – Vorlesungsvorbereitung (!!!) – Vorlesungsnachbereitung – eigenes Üben (zusätzlich zu Laborübungsstunden) Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 12/26 Empfohlene Literatur ● ● ● ● ● Ratz, Scheffler, Seese. Grundkurs Programmieren in Java. Hanser Verlag 2010, ISBN 3446416552. €34,90. Skript Java – Grundlagen und Einführung des RRZN Hannover. Erhältlich für € 6.– (Mensakarte) bei Fr. Schulze, Raum G146. Ullenboom. Java ist auch eine Insel. Galileo Computing 2011, ISBN 978-3-8362-1802-3. €49,90 oder als html-Version online unter http://openbook.galileocomputing.de/javainsel/ ansonsten: Jede Menge Material über Java im Web verfügbar… Allgemeiner Tip: Schneider (Hrsg.). Taschenbuch der Informatik. Hanser Verlag, 7. Auflage 2012, ISBN 3446426388. €29,90 Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 13/26 Was ist Programmiertechnik? Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 14/26 Was ist Programmiertechnik? Programmieren: Die Tätigkeit, Computerprogramme zu erstellen. Computerprogramm: Folge von Befehlen, die auf einem Computer zur Ausführung gebracht werden können, um eine bestimmte Funktionalität zu erzeugen. Technik: Die Anwendung von Methoden und Prinzipien, mit dem Ziel eine bestimmte Wirkung zu erzielen. Programmiertechnik: Methoden und Prinzipien zur Erstellung von Computerprogrammen. Programmierung beinhaltet auch ein großes Maß an Kreativität! Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 15/26 Programmiersprachen ● ● Programme werden in einer Programmiersprache geschrieben Programmiersprache wird in Maschinencode übersetzt, also in Zahlenfolgen, die der Prozessor ausführen kann. Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 16/26 Programmiersprachen ● Die primitivsten Programmiersprachen sind die Assembler-Sprachen – lediglich lesbare Namen für Maschinenbefehle, z.B. ● ● ● mov B, A (schiebt Wert von Adresse A nach Adresse B) xchg Op1, Op2 (vertauscht die Werte von Operand OP1 und Op2) jmp Marke (springt zu dem mit Marke markierten Befehl) – rechnerabhängig – sehr effizient, d.h. kann sehr schnell ausgeführt werden – mühsam und fehleranfällig Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 17/26 Programmiersprachen Heute fast nur noch höhere Programmiersprachen ● rechnerunabhängig ● komfortabler zu programmieren durch abstraktere Konzepte wie ● ● ● – Prozeduren, Subroutinen, Methoden – Module – Klassen, Schnittstellen und Vererbung – etc. weniger effizient als Assembler wesentlich einfacher (billiger) zu warten (Programme verändern, anpassen, erweitern) es existiert eine Vielzahl höherer Programmiersprachen, z.B.: – Ada, Algol, C, C++, C#, Cobol, Eiffel, Fortran, Java, Lisp, Modula-2, Oberon, ObjectiveC, Pascal, Prolog, Scheme, Smalltalk. Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 18/26 Einschub: Warum Java? ● ● Eine Programmiersprache ist nicht unbedingt besser oder schlechter als andere, sondern hat bestimmte Eigenschaften, die für bestimmte Anwendungsgebiete wichtig sind. Bei Java sind die für uns wichtigen Eigenschaften: – einfache, klare, objektorientierte Konzepte – Die Programmiersprache des Internets (Web-Services, E-Commerce, E-Banking, Applets, Servlets, …) – große Auswahl an Programmbibliotheken für graphische Benutzeroberflächen, Computerkommunikation, verteilte Anwendungen, Datenbankapplikationen, Medien (Audio und Video), … – hohe praktische Relevanz Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 19/26 Programmausführung Ein Programm in einer höheren Programmiersprache kann ● übersetzt (kompiliert) ● oder interpretiert werden Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 20/26 Programmausführung ● Kompilierung: – Compiler übersetzt Quellprogramm in Maschinencode – Maschinencode wird gespeichert – Maschinencode kann vom Rechner direkt ausgeführt werden – effizient – Compiler und Maschinencode sind maschinenabhängig → portierter Code muss neu übersetzt werden – typische Vorgehensweise für C/C++ Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 21/26 Programmausführung ● Interpretierung: – Quellcode wird von einem Interpreter Zeile für Zeile übersetzt und direkt ausgeführt – Maschinencode wird nicht gespeichert – Programmteile, die mehrfach durchlaufen werden, werden auch mehrfach übersetzt. – ineffizient – Programm kann direkt auf jede Zielmaschine portiert werden, die einen Interpreter für die Sprache besitzt Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 22/26 Programmausführung ● Mischform – Zwischenformat: – Compiler übersetzt Quellcode in ein maschinennahes Zwischenformat (Bytecode) – Bytecode wird auf der Zielmaschine interpretiert – Bytecode maschinenunabhängig → portabel – Interpretieren durch maschinennahe Struktur des Bytecode sehr effizient – typische Repräsentanten: Java, C# – Bytecode-Interpreter = Java Virtual Machine (JVM) Die Kombination der Verfahren führt zu portablem Code, der trotzdem schnell ausgeführt werden kann. Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 23/26 Erstellen von Java-Programmen ● ● ● ● Das einfachste Java-Programm besteht aus einer einzelnen Klasse, z.B. MyClass. Diese Klasse muss in einer Datei des Namens <Klassenname>.java definiert sein. hier: MyClass.java Der Java-Compiler (javac) übersetzt diese Klasse in Bytecode und speichert das Ergebnis in der Datei MyClass.class. Die virtuelle Maschine (Java Virtual Machine = JVM) interpretiert diesen Bytecode. Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 24/26 Java-Programmgerüst Die Datei MyClass.java, die die Klasse MyClass definiert, hat die folgende Struktur: public publicclass classMyClass MyClass{{ public publicstatic staticvoid voidmain(String[] main(String[]args) args){{ ////hier hierkommt kommtspaeter spaetermal malIhr Ihreigener eigener ////Programmtext Programmtexthin. hin. }} }} ● ● Im Moment genügt es, diese Struktur zu kennen. Sie müssen sie noch nicht verstehen! Die Zeichen '//' leiten eine Kommentarzeile ein, d.h. der Java-Compiler ignoriert die entsprechende Zeile. Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 25/26 Have a nice cup of Java coffee! Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 26/26