FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick K04 Java im Überblick • Inhalt 1. Java ist ... 2. Stammbaum der Programmiersprachen 3. Die "Softwarekrise" 1. Merkmale von Software 2. Fortlaufende Veränderungen 3. Erschwerte Rahmenbedingungen bei der Software-Entwicklung 4. Strukturierte vs. objektorientierte Programmierung 1. Strukturierte Programmierung 2. Objektorientierte Programmierung 5. Objekte und Klassen 6. Vererbung Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 1 Lernziele • Sie wissen was Java auszeichnet • Sie kennen den Stammbaum der Programmiersprachen • Sie kennen die Merkmale von Software • Sie wissen den Unterschied zwischen strukturierter und objektorientierter Programmierung • Sie wissen was Objekte und Klassen sind • Sie verstehen wie Vererbung funktioniert Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04_Java-P.ppt, V20 2003 © Diego Schmidlin K04 Java Folie 2 Teil 1 Seite 1 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 1. Java ist ... • gut erlernbar " " " – Anlehnung an C++ -Syntax – wenige Konzepte (alles in Klassen) – keine Adressen (Pointer) • objektorientiert " " " – Vererbung – Polymorphie (Vielgestaltigkeit) – umfangreiche Klassenbibliotheken !1 Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 3 1. Java ist ... • robust " " " – automatische Speicherverwaltung (Garbage collector) – typisierte Sprache – Fehlerbehandlung (Exceptions) • Architektur unabhängig " " – 1 Compiler (-> Byte-Code) – n Interpreter (1 JVM pro Plattform) !1 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 4 Teil 1 Seite 2 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 1. Java ist ... • sicher " " " – Übertragung im Byte-Code – Interpreter mit Byte-Code Verifier – Security-Manager (Zugriffsberechtigung) • Thrad-unterstützend " " – parallele Abläufe (Nebenläufigkeit) – Synchronisations- und Kommunikationsmechanismen • Internet-tauglich " – wegen der oben aufgeführten Eigenschaften !1 Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 5 2. Stammbaum der Programmiersprachen • Ausschnitt: !2 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 6 Teil 1 Seite 3 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 2. Stammbaum der Programmiersprachen 1) Konzept 2) Eleganz 3) Syntax !2 Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 7 3.1 Merkmale von Software • Software entwickeln ist schwierig. Wieso? • Merkmale von Software: – Immaterielles Produkt – Entwickler besitzt grossen Gestaltungsfreiraum • keine Einschränkung durch physikalischen Gesetze – Software ist leicht und schnell änderbar – Die Software-Qualität ist schwer • definierbar • quantifizierbar – Software unterliegt keinem Verschleiss – Software altert! • Anforderungen und Umgebung ändern !3 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 8 Teil 1 Seite 4 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 3.2 Fortlaufende Veränderung • Fortlaufende Veränderung – Software ist wichtiges Wirtschaftsgut – Software ist vielerorts überlebenswichtig – Software wird laufend für komplexere Aufgaben eingesetzt • SAP R/3: ca. 7'000'000 Zeilen Quellencode! – Software kann aktuelle Möglichkeiten der Hardware meistens nicht voll ausschöpfen – Software-Altlasten nehmen ständig zu • Vergleiche Jahr 2000-Problem !3 Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 9 3.3 Erschwerte Rahmenbedingungen • Erschwerte Rahmenbedingungen bei Entwicklung – Software-Anforderungen • Hardware- und Systemkomponenten • Entwicklungswerkzeuge und –methoden ändern sich rasant – Fehleinschätzung von Softwarekomplexität • führt zu einer falschen Wertschätzung von Software-Entwicklung !3 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 10 Teil 1 Seite 5 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 4.1 Strukturierte Programmierung • Programm besteht aus – Unterprogrammen (Funktionen, Prozeduren) • führen verschiedene Operationen aus • manipulieren Daten • Daten werden – über globale Variablen direkt angesprochen – von Unterprogramm zu Unterprogramm weitergereicht • mittels Zeiger auf Daten (Speicherstelle) • Charakteristisch ist Trennung von – Daten – Unterprogramme, die Daten manipulieren • Typische Vertreter: – Fortran, Cobol, Basic, Pascal, C usw. Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 !4 K04 Java Folie 11 4.1 Strukturierte Programmierung Zugriff auf Daten über Pointer Daten Zugriff auf Daten Funktion 1 Funktion 2 Funktion 3 Funktionsaufruf !4 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 12 Teil 1 Seite 6 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 4.2 Objektorientierte Programmierung • Programm besteht aus – aufeinander abgestimmte Sammlung von Objekten • Objekte – Einheiten von Daten und Methoden (Algorithmen) – kommunizieren durch gegenseitiges Aufrufen von Zugriffsmethoden (Austauschen von Botschaften) • Typische Vertreter: – – – – – Smalltalk Objective C C++ Java C# Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 !5 K04 Java Folie 13 4.2 Objektorientierte Programmierung Daten, lokale Methoden, lokale Objekte Aufruf von Zugriffsmethode Zugriffsmethoden, Interface !5 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 14 Teil 1 Seite 7 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 4.2 Objektorientierte Programmierung • Vorteile: " – Modularisierung • Programm besteht aus interagierenden Objekten " – Modellierung der realen Welt • Problemlösung mittels Objekten " – Durchgängige SW-Entwicklung • Analyse # Design # Implementation " – einfache Erweiterbarkeit – bessere Wiederverwendbarkeit – Programmieren wird vereinfacht " " ! 5/6 Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 15 5. Objekte und Klassen • Objekt – repräsentiert "abgeschlossene" Einheit – bestehet aus Daten und Methoden • Beispiele für Objekte: – Textverarbeitung: • Wörter, Seiten, Linien, Köpfe, ... – Reservationssystem: • Flüge, Flughäfen, Sitze, Zeiten, ... – Schachspiel: • Brett, Figuren, ... !6 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 16 Teil 1 Seite 8 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 5. Objekte und Klassen • Anstatt jedes Objekt einzeln zu definieren, definiert der Programmierer sogenannte Klassen • Klasse – Allgemeine Beschreibung für einen bestimmten Objekttyp – Von einer Klasse können beliebig viele konkrete Objekte (Instanzen) erzeugen werden • Klassen-Namen – beginnen mit Grossbuchstaben class Word {...} • Objekt-Namen – beginnen mit Kleinbuchstaben Word word1 = new Word(); • Methoden-Namen – beginnen mit Kleinbuchstaben void insertWord(String w) {...} ! 6/7 Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 17 6. Vererbung • Wir sind es gewohnt in Klassen zu denken – Lebewesen, Pflanzen, Tiere, Menschen – Männer, Frauen • Klassifikations-Schemas – Klassen-Beziehungen • Pflanzen, Tiere, Menschen sind Lebewesen • Frauen und Männer sind Menschen • Speziell von Bedeutung ist – Vererbungsbeziehung – Vererbungshierarchie !8 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 18 Teil 1 Seite 9 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 6. Vererbung G e n era lis ie ru ng Fahrzeug • Vererbungshierarchie -geschwindigkeit : int -anzahlSitze : int -farbe : Farbe +gasgeben() +bremsen() Auto Elektromobil -aktuellerGang : int +hochschalten() +tiefschalten() +auftanken() -spannung : int +aufladen() Cabriolet Kombi +ausfahrenVerdeck() +einfahrenVerdeck() -nutzlast : int +beladen() +entladen() !8 Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 S p e zia lisieru ng K04 Java Folie 19 6. Vererbung • Vererbungsbeziehung – Fahrzeug ist die Oberklasse von Auto – Kombi ist Unterklasse von Auto • Jede Unterklasse erbt alle Merkmale ihrer Oberklasse – Klasse Auto • Attribute – geschwindigkeit, anzahlSitze, farbe • Methoden – gasgeben(), bremsen() • In der Klassenhierarchie findet nach – unten eine Spezialisierung statt – nach oben eine Generalisierung statt !9 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 20 Teil 1 Seite 10 FHZ Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren K04 Java im Überblick 6. Vererbung • Vererbung unterstützt die Wiederverwendbarkeit – Bestehende Klassen können ergänzt bzw. spezialisiert und wiederverwendet werden • Vererbung lässt sich auch mit einem Mengendiagramm veranschaulichen Auto Cabriolet Kombi Elektromobil Fahrzeug !9 K04_Java-P.ppt, V20 2003 © Diego Schmidlin Abteilung Informatik, Fach Programmieren 2003 © Diego Schmidlin V20 K04 Java Folie 21 Teil 1 Seite 11