Gliederung 1. Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel 5) 23.4. 3. Datenbankprogrammierung: Prinzipien und Beispiele (5. Studienbrief, Kapitel 6) 30.4. + 7.5. 4. Einordnung, Ausblick, Klausurvorbereitung 14.5. Ausblick jenseits von ObjectPascal und Delphi Lehrevaluation Beispiel einer Klausuraufgabe Informatik ist viel mehr als Delphi-Programmierung! Bedeutung der Informationstechnik Disziplinen der Informatik Programmiersprachen Softwaretechnologie Seite 1
Wirtschaftliche Bedeutung von Informations- und Kommunikationstechnik 3500 3000 2500 2000 1500 Weltweite Leitindustrien (Umsatz 1994 in Milliarden US-$) 1000 500 0 Quelle: Balzert, Bd. 1 Militär & Verteidigung Maschinenbau Autoindustrie Chemieindustrie Textilindustrie Inform. - und Komm.-technik Tourismus ICT = Information and Communication Technology Teilgebiete der Informatik Theoretische Informatik Theoretische Grundlagen der Informationsverarbeitung Komplexität, Berechenbarkeit, Modellbildung,... Technische Informatik Konstruktion von informationsverarbeitenden Maschinen (Hardware) Praktische Informatik Konstruktion von Algorithmen und Programmen (Software) Softwaretechnologie Betriebssysteme, Rechnernetze, Datenbanken, Compilerbau, Computergrafik,... Angewandte Informatik Einsatz maschineller Informationsverarbeitung Interdisziplinarität Künstliche Intelligenz Lernende Maschinen, Sprach- und Bildverstehen, log. Schliessen Seite 2
Wichtige Programmiersprachen Nicht objektorientiert: C maschinennah, effizient COBOL kaufmännisch orientiert FORTRAN naturwissenschaftlich-technisch orientiert Visual Basic Microsoft-spezifisch, einfach, visuell Objektorientiert: Object Pascal universell, Borland-spezifisch C++ objektorientierte Fassung von C, sehr komplex Ada vorwiegend für Luftfahrt, Raumfahrt, Militär Java plattformunabhängig, klein, elegant, C-ähnlich C# Microsoft-spezifisch, ähnlich zu Java "Hello World" in Java class HelloWorld { public static void main (String[] args) { System.out.println("Hello, World!"); Resultat-Typ Argument-Typ Definierte Klasse Definierte Methode Verwendete Klasse Verwendetes Objekt Verwendete Methode Seite 3
Definition einer Klasse class Point { public double x, y; public void clear(); { x = 0; y = 0; x y Point clear distance public double distance (Point that) { double xdiff, ydiff; xdiff = x - that.x; ydiff = y - that.y; return Math.sqrt(xdiff*xdiff+ydiff*ydiff); Erzeugen von Objekten, Methodenaufruf Point p1 = new Point(); Point p2 = new Point(); p1.clear(); p2.x = 3.0; p2.y = 4.0; System.out.println(p1.distance(p2)); Seite 4
Vererbung, Redefinition von Methoden class ColorPoint extends Point { Color color; public void clear() { super.clear(); color = null; Von ObjectPascal nach Java (1) TTeambesprechung = class(ttermin) ObjectPascal private teilnehmer: array of TTeammitglied; konfliktfrei: Boolean;... public procedure vereinbaren;... constructor Create (titel: String; beginn: TDateTime; dauer: Integer; teilnehmer: array of TTeammitglied); end; class Teambesprechung extends Termin { private Teammitglied[] teilnehmer; private boolean konfliktfrei; Java public void vereinbaren() {... Methodenrumpf... public Teambesprechung(String titel, Date beginn, int dauer, Teammitglied[] teilnehmer) {... Methodenrumpf... Seite 5
Von ObjectPascal nach Java (2) procedure TTeambesprechung.vereinbaren; var i: Integer; begin konfliktfrei := abstimmen(beginn,dauer); if konfliktfrei then for i := 0 to High(teilnehmer) do teilnehmer[i].teilnahmefestlegen(self); end; ObjectPascal class Teambesprechung {... public void vereinbaren() { konfliktfrei = abstimmen(beginn,dauer); if (konfliktfrei) for (int i = 0; i < teilnehmer.length; i++) teilnehmer[i].teilnahmefestlegen(this); Java Ungefähre Verteilung des Arbeitsaufwandes Analyse 10 % Entwurf 20 % Implementierung 20 % 50 % Test, Integration Wartung Seite 6