FH D Fachhochschule Düsseldorf University of Applied Sciences 1 Informatik 2 Objektorientierte Programmierung in Java Prof. Dr.‐ Ing. André Stuhlsatz FH D Vorlesung: 16:00‐16:45/Pause/17:00‐17:45 Fachhochschule Düsseldorf University of Applied Sciences Dipl.‐Ing. in Elektrotechnik, Fachrichtung Nachrichtentechnik Wissenschaftler am Fraunhofer Institut FIT, Forschungsbereich Augmented Reality Wissenschaftlicher Angestellter im FB3/FB4 der FH Düsseldorf, Fachgebiet Mustererkennung Dr.‐Ing. in Elektrotechnik, Fachgebiet Maschinelle Lernverfahren André Stuhlsatz Prof. Dr.‐Ing. in Informatik (nebenberuflich) seit 2014 Entwicklungsingenieur (hauptberuflich) bei SMS Siemag AG Informatik 2 FH D Fachhochschule Düsseldorf University of Applied Sciences 2 Informatik Team Informatik 1: Prof. Dr.‐Ing. Thomas Zielke Informatik 2: Prof. Dr.‐Ing. André Stuhlsatz Raum S4 Sprechzeit: Mittwochs 13‐14 Uhr Immer erreichbar via E‐Mail: andre.stuhlsatz@fh‐duesseldorf.de Oder wissenschaftliche Mitarbeiter, Raum S1a : M.Sc. Jens Lippel B.Eng. Janika Merz Oder Tutorensprechstunde: Di. 16h, Mi. 14h & Do. 8:30h Informatik 2 3 1 FH D Fachhochschule Düsseldorf University of Applied Sciences Vorlesungsunterlagen Vorlesung: PowerPoint Folien http://mv.fh‐duesseldorf.de/d_pers/informatik Wird regelmäßig aktualisiert. Dort finden Sie auch Programmierbeispiele (Netbeans Projekte) Klausuren: Alle Klausuren als PDF‐Datei Lösung der letzten Klausur (WS 2013/2014) 4 Informatik 2 FH D Fachhochschule Düsseldorf University of Applied Sciences Vorlesungsunterlagen Anwesenheit wird dringend empfohlen! Folien sind Stichwortsammlung Zusätzlich werden wichtige Lehrinhalte erläutert Tipp: Nicht alles abschreiben, sondern selbst ergänzen! Letzte Vorlesung: Probeklausur Klausur: max. 48 Punkte, keine Kofferklausur, sondern einseitig handgeschriebener A4‐Merkzettel 5 Informatik 2 FH D Praktikum Fachhochschule Düsseldorf University of Applied Sciences Unterlagen und Information auf der Internetseite! Beginnt ab 17.03.2014 Endgültige Gruppeneinteilung für das Info II Praktikum im Schaukasten neben S1a 4 Präsenztermine (4P) / 3 Projektaufgaben (15P) / 1 Abschlussprojekt (5P): Präsenztermin: Praktische Programmierübung unter Betreuung (Anwesenheitspflicht!) Projektaufgabe: Eigenständig zu bearbeitende Aufgaben zw. Präsenzterminen / Aufgabenstellung jeweils nach Präsenztermin Abschlussprojekt: Größeres Projekt (freiwillig, jedoch für max. Punktzahl notwendig!) Fragen zum Praktikum beantwortet Hr. Lippel oder Fr. Merz (Raum S1a). Informatik 2 6 2 FH D Literatur Fachhochschule Düsseldorf University of Applied Sciences Handbuch der Java‐Programmierung Guido Krüger, Thomas Stark Gebundene Ausgabe: 1280 Seiten Verlag: Addison‐Wesley, München; Auflage: 5. Auflage (28. November 2007) Sprache: Deutsch ISBN‐10: 3827323738 Die HTML Ausgabe des Buches ist auch kostenlos verfügbar: www.javabuch.de Java ist auch eine Insel Christian Ullenboom Geb. Ausgabe: 1308 S. Galileo Computing, Sprache: Deutsch ISBN‐10: 3836228734 Online kostenlos: http://openbook.galileocomputing.de/javainsel/ The Java® Language Specification Sprache: Deutsch http://docs.oracle.com/javase/ specs/jls/se7/html/index.html Informatik 2 FH D Fachhochschule Düsseldorf University of Applied Sciences 7 Entwicklungsumgebung In der Vorlesung wird die kostenlose Entwicklungsumgebung NetBeans verwendet: http://netbeans.org/downloads/ Informatik 2 FH D Fachhochschule Düsseldorf University of Applied Sciences 8 Informatik 2: Java Java ist eine objektorientierte Programmiersprache. Vergleich C vs. Java Syntax ist ähnlich (logische Ausdrücke, Schleifen) Konzept der Programmierung ist grundlegend anders Warum Java Java ist kostenlos Java ist plattformunabhängig Für Java gibt es schon viele Programme, die Sie auch verwenden können. Informatik 2 9 3 FH D Objektorientierung Fachhochschule Düsseldorf University of Applied Sciences Objektorientierung ist ein Entwicklungskonzept für Software Programmierparadigma (zugrundeliegendes Prinzip) Daten werden klassifiziert nach Eigenschaften, Verhalten und Operationen. Organisationsstrukturen oder reale „Dinge“ (Objekte) werden nachgebildet. Objekte sind subjektiv Was ein Objekt ist und was es für wichtige Eigenschaften und Verhalten hat, hängt von der Wahrnehmungsweise ab. Objekte sind eigenständig und können mit anderen Objekten interagieren/kommunizieren. Beispiel: Motorrad Händler: Baujahr, Preis Kunde: Leistung, Fahreigenschaften Finanzamt: Hubraum, CO2 Ausstoß Versicherung: Leistung, Unfälle 10 Informatik 2 FH D Abstraktion: Klasse Fachhochschule Düsseldorf University of Applied Sciences Ein Objekt aus der realen Welt wird abstrahiert und dessen allgemeiner Bauplan als Klassendefinition implementiert. Aus dieser Klasse können viele verschiedene Objekte (Instanzen einer Klasse) erzeugt werden. Zur Definition einer Klasse gehören Attribute: Eigenschaften des Objektes Methoden: Verhalten des Objektes Jetzt ein paar Beispiele ohne konkrete Implementierung! 11 Informatik 2 FH D Beispiel: Fußballspieler Fachhochschule Düsseldorf University of Applied Sciences Reales System: Fußballmannschaft Abstrakter: Eine Spieler‐Klasse, davon 11 Instanzen Attribute Spiele: Tore: in: out: Name: Nummer: Zahl 0…100 Zahl 0..22 Zahl 0..22 Zahl 0..22 Zeichenkette Zahl Methoden: „Schieße auf das Tor“ „Ein Rote Karte mehr“ „Auswechseln“ Informatik 2 12 4 FH D Fachhochschule Düsseldorf University of Applied Sciences SMS SIEMAG: Bandposition in Walzstraße v1 v2 v3 Bandkopf wird beim Walzen schneller (Massenerhalt) Wann sind die Bandköpfe wo? Objekte: Walzen Band Informatik 2 FH D 13 Einfaches Java Programm Fachhochschule Düsseldorf University of Applied Sciences Dieses einfache Java Programm gibt eine Meldung auf dem Bildschirm aus public class Anwendung { public static void main(String[] args) { System.out.println("Erstes Beispiel"); } } Informatik 2 FH D Fachhochschule Düsseldorf University of Applied Sciences 14 Die Klasse „Anwendung“ public class Anwendung { public static void main(String[] args) { System.out.println("Erstes Beispiel"); } } public: Sichtbarkeit „öffentlich“ – erst mal machen wir alles öffentlich. class: Klasse, Schlüsselwort von Java Anwendung: Name der Klasse. Auch gleich Dateinamen „Anwendung.java“ {…}: Block. Alles zwischen den geschweiften Klammern gehört zur Klasse Informatik 2 15 5 FH D main Methode Fachhochschule Düsseldorf University of Applied Sciences public class Anwendung { public static void main(String[] args) { System.out.println("Erstes Beispiel"); } } public: Sichtbarkeit „öffentlich“ – erst mal machen wir alles öffentlich. static: Zugriff direkt ohne Objekt möglich später mehr dazu… void: Rückgabetyp. Die Methode gibt nichts zurück main(String[] args) : Dies ist das Hauptprogramm. Eventuell werden aus der Kommandozeile Zeichenketten als Übergabeparameter bereitgestellt später… {…}: Block. Alles zwischen den geschweiften Klammern gehört zur Methode Informatik 2 FH D 16 Klasse für Eigenschaften von Spieler Fachhochschule Düsseldorf University of Applied Sciences Spieler: Jeder Spieler einer Fußballmannschaft soll einen Namen und eine Spielstärke haben. public class Spieler { int spielstärke; String name; } Deklaration von Variablen: <Datentyp> <Variablenname>; Es ist nun der „Bauplan“ für einen Spieler gegeben. Es gibt aber noch keine Spieler! Spieler müssen erst noch erzeugt werden: <Klassenname> <Variablenname>; <Variablenname> = new <Klassenname> (); <Klassenname> <Variablenname> = new <Klassenname> (); Spieler mittelFeld = new Spieler(); Informatik 2 FH D Fachhochschule Düsseldorf University of Applied Sciences 17 Ein Spieler wird erzeugt und bekommt einen Namen Spieler.java public class Spieler { int spielstärke; String name; } Anwendung.java public class Anwendung { public static void main(String[] args){ Spieler mittelFeld = new Spieler(); mittelFeld.name = "Jim Knopf"; } } Zugriff auf Eigenschaften und Methoden mit „.“ <Variablenname>.<Eigenschaft> mittelFeld.name = "Jim Knopf"; Informatik 2 18 6 FH D Erstes Programmbeispiel Fachhochschule Düsseldorf University of Applied Sciences public class Spieler { int spielstärke; String name; } public class Anwendung { public static void main(String[] args) { Spieler mittelFeld = new Spieler(); mittelFeld.name = "Jim Knopf"; mittelFeld.spielstärke = 57; System.out.println("Die Spielstärke von " + mittelFeld.name + " ist " + mittelFeld.spielstärke); } } 19 Informatik 2 FH D Mehrere Spieler Fachhochschule Düsseldorf University of Applied Sciences Es können mehrere Instanzen (Objekte) der Klasse Spieler erzeugt werden. Jede Instanz hat ihre eigenen Eigenschaften. Eine Instanz weiß nicht, ob es noch andere Instanzen seiner Klasse gibt. public class Anwendung { public static void main(String[] args) { Spieler mittelFeld = new Spieler(); Spieler abwehr = new Spieler(); Spieler sturm = new Spieler(); mittelFeld.name abwehr.name sturm.name = "Jim Knopf"; = "Lukas Loko"; = "Max Mahlzahn"; } Informatik 2 FH D Fachhochschule Düsseldorf University of Applied Sciences 20 Methoden einer Klasse public class Spieler { int spielstärke; String name; public void zeigeInfo() { System.out.println("Die Spielstärke von " + name + " ist " + spielstärke); } } Methoden sind die „Funktionen“ einer Klasse. Diese Methoden werden i.d.R. verwendet, um auf die internen Attribute lesend oder schreibend zuzugreifen. Methoden können mehrere oder keine Übergabewertehaben haben Methoden können einen oder keinen Rückgabewert haben. Auf die Methoden wird durch den Punktoperator zugegriffen: Beispiel: mittelFeld.zeigeInfo() Informatik 2 21 7