Kapitel

Ähnliche Dokumente
Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

14. Java Objektorientierung

Informatik II Übung 06. Benjamin Hepp 5 April 2017

14. Java Objektorientierung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Objektorientes Design & Programm

Einführung in Java, Teil 2

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

Repetitorium Informatik (Java)

7. Objektorientierung. Informatik II für Verkehrsingenieure

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Objektorientierte Programmierung Studiengang Medieninformatik

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

B2.1 Abstrakte Datentypen

Die Welt in unseren Programmen false -1.4E-12. false. Klassen

II.4.1 Unterklassen und Vererbung - 1 -

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

3. Grundlegende Sprachkonstruktionen imperativer Programme

Philipp Güttler Objektorientierung und komplexe Datentypen

Abschnitt 10: Datenstrukturen

Algorithmen und Datenstrukturen

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Algorithmen und Programmierung II

Objektorientierte Programmierung Studiengang Medieninformatik

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

II.4.1 Unterklassen und Vererbung - 1 -

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Grundlagen der Programmierung in C Klassen

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 -

00-Wiederholung WIEDERHOLUNG. Programmierkonzepte und Java. Peter Vischer Schule Nürnberg. KW Donnerstag, 22.

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Einführung in die Objektorientierung

Programmieren in Java

Einführung in die Programmierung für NF MI. Übung 04

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

12 Abstrakte Klassen, finale Klassen und Interfaces

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

Datentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen

Objektorientierte Programmierung (OOP)

Programmieren 2 Java Überblick

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Eingeben, Ausgeben, Übergeben, Zurückgeben

Grundlagen der Informatik 0

1 Klassen und Objekte

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

Einführung in die Programmiersprache Java II

Visuelle Kryptographie. Anwendung von Zufallszahlen

Dr. Monika Meiler. Inhalt

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Klausur Grundlagen der Programmierung

Konzepte benutzerdefinierter Datenstrukturen

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

13. Java Klassen. Lernziele. Klassen - Technisch. Definition: Klassen

Grundelemente objektorientierter Sprachen (1)

Softwaretechnik (Allgemeine Informatik) Überblick

Polymorphie. 15. Java Objektorientierung II

Grundelemente objektorientierter Sprachen (1)

Polymorphie. 15. Java Objektorientierung II

Konzepte der Programmiersprachen

II.4.2 Abstrakte Klassen und Interfaces - 1 -

ALP II Dynamische Datenmengen

Algorithmen und Datenstrukturen 07

Folienpaket 9 Themenschwerpunkte: Vererbung und Polymorphie /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Objektorientierte Programmierung Teil 1: Einführung

Algorithmen und Datenstrukturen

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203

FACHHOCHSCHULE MANNHEIM

10. Programmierungs-Phase: Objektorientierung Software Engineering

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

1 Abstrakte Datentypen

Probeklausur: Programmierung WS04/05

Entwurfsmuster (Design Patterns)

Client-Server-Beziehungen

Algorithmen und Datenstrukturen II

Praktische Informatik 1

Sortieren von Objekten

Einführung in die Programmiersprache Java II

Java-Programmierung mit NetBeans

Gliederung. Algorithmen und Datenstrukturen II. Java: Objektorientierung. Java: Objektorientierung. Objektorientierung in JAVA. D.

Geheimnisprinzip: (information hiding principle, Parnas 1972)

Transkript:

10.11.005 Kapitel 4-10.11.005 Lehrbeispiel: Sortieralgorithmus " Bubble Sort" Sortieren von Primitivtypen Der "Abstrakte Datentyp" Grundlagen der Objektorientierung: Abstraktion, Kapselung, Modularität, Hierarchie Lehrbeispiel: Sortieralgorithmus "Bubble Sort" Sortieren von Strings mittels der Methode compareto() Sortieren von Objekten anhand eines Feldes Ausflug: die Java Standard-Klassenbibliothek

Implementierung von Bubble Sort int[] r; //Ein- und Ausgabe-Array int i; //Index r = new int[]{ 5,, 9, 7, 7, 3,, 1, 1, ; == ref 5 9 7 7 3 1 length: 10 System.out.print( r.length ) 1 Ein Objekt vom Typ Array besitzt automatisch ein Feld "length", das die Anzahl der Elemente beinhaltet.

Implementierung von Bubble Sort int[] r; //Ein- und Ausgabe-Array int i; //Index r = new int[]{ 5,, 9, 7, 7, 3,, 1, 1, ; == ref i = ; 5 0 1 9 7 3 7 4 3 5 r[i] r[i+1] 6 1 7 1 8 9 int[index] index

Implementierung von Bubble Sort int[] r; //Ein- und Ausgabe-Array int i; //Index r = new int[]{ 5,, 9, 7, 7, 3,, 1, 1, ; == ref i = 3; 5 0 1 9 7 3 7 4 3 5 6 r[i] r[i+1] 1 7 1 8 9 int[index] index

Implementierung von Bubble Sort int[] r; //Ein- und Ausgabe-Array int i; //Index r = new int[]{ 5,, 9, 7, 7, 3,, 1, 1, ; == ref i = 4; 5 0 1 9 7 3 7 4 3 5 6 1 7 r[i] r[i+1] 1 8 9 int[index] index

Implementierung von Bubble Sort int[] r; //Ein- und Ausgabe-Array int i; //Index r = new int[]{ 5,, 9, 7, 7, 3,, 1, 1, ; == ref 5 0 1 9 7 3 7 4 3 5 6 1 7 1 8 r[i] r[i+1] 9 int[index] index for(i=0; i<r.length; i++){ System.out.println( r[i] );

Implementierung von Bubble Sort r[i+1] 3.. tmp 1. r[i] Weitere Variable ist nötig als Zwischenspeicher

Bubble Sort von Integern in Java int[] r; //Ein- und Ausgabe-Array int i; //Index int tmp; //temporaerer Speicher Variablen- Deklaration r = new int[]{ 17,, 0, 5, 6; //Sortieren for(i=0; i<r.length-1; i++){ if( r[i] > r[i+1]){ tmp = r[i]; r[i]=r[i+1]; r[i+1] = tmp; Eingabe Algorithmus //Ausgabe for(i=0; i<r.length; i++){ System.out.print(r[i]+" "); Ausgabe

Bubble Sort von Integern in Java int[] r; //Ein- und Ausgabe-Array int i; //Index int tmp; //temporaerer Speicher boolean done; //merkt sich, ob Alg fertig r = new int[]{ 17,, 0, 5, 6; //Sortieren do{ done = true; for(i=0; i<r.length-1; i++){ if( r[i] > r[i+1]){ tmp = r[i]; r[i]=r[i+1]; r[i+1] = tmp; done = false; while(!done); Variablen- Deklaration Eingabe Algorithmus //Ausgabe for(i=0; i<r.length; i++){ System.out.print(r[i]+" "); Ausgabe

Der Abstrakte Datentyp Idee: Datenstrukturen + Algorithmen gehören zusammen Ein abstrakter Datentyp (abstract data type) bündelt die Definition einer Trägermenge (carrier set) von Objekten mit einer Spezifikation der zugehörigen Operationen (Methoden) Datenrepräsentation und Implementierung der Methoden bleiben hinter einer abstrakten Aufrufschnittstelle (call interface) verborgen Daten in einem Objekt können nur über die vorgesehenen Methoden manipuliert werden Geheimnisprinzip (principle of information hiding) Dadurch muss nur noch der Hersteller (Programmierer) des abstrakten Datentyps die Datenrepräsentation und die Programmierung der Funktionen verstehen Benutzer braucht nur die Funktionsweise der Schnittstelle zu verstehen Beispiel: < ; 0, 1, +, -, *> Nach einer Folie von A. Weber und W. Küchlin

Grundlagen der Objektorientierung: das Objekt Objekt allgemein: Gegenstand des Interesses (einer Beobachtung, Untersuchung, Messung) individuelles Exemplar von Methode 1 Gegenständen (Auto, Roboter), Personen (Kunde, Mitarbeiter), Daten Begriffen der realen Welt (Auftrag) oder Begriffen der Vorstellungswelt (Strategie) Methode Kennzeichen von Objekten: Identität: Objekt kann deutlich von anderen unterschieden werden Daten (Java: Felder): Eigenschaften des Objekts Operationen (Java: Methoden): Lesen und Manipulieren der Daten Geheimnisprinzip: Datenzugriff nur über Methoden des Objekts Graphik: http://www.ias.uni-stuttgart.de/

Grundlagen der Objektorientierung: die Klasse Klasse allgemein: Art (Typ) eines Gegenstandes, Lebewesen, Begriffs Objekt-Schablone für Objekte mit denselben Daten (Feldern) und mit denselben Operationen (Methoden) Objekt-Erzeugungsmechanismus ("Konstruktor"-Aufruf mittels new() ) Mitarbeiter-Objekt ändern Name ändern Name Name Gehalt ändern Gehalt Mitarbeiter- Klasse Mitarbeiter-Objekt ändern Name Graphik: http://www.ias.uni-stuttgart.de/ Name Müller Gehalt 6.000 Name Meier Gehalt 5.000 ändern Gehalt ändern Gehalt

Grundlagen der Objektorientierung Hauptelemente des Objektmodells Die folgenden vier Konzepte sind die Hauptelemente des Objektmodells (nach G. Booch): Abstraktion Kapselung Modularität Hierarchie Grady Booch: "Object-Oriented Analysis and Design with Applications", 1994 (Neuauflage im Juni 006 mit dem neuen Modellierungsstandard UML!!!)

Grundlagen der Objektorientierung Zeichung: Grady Booch: "Object-Oriented Analysis and Design with Applications" Abstraktion konzentriert sich auf die wesentlichen Charakteristika eines Objekts relativ zur Perspektive des Betrachters

Grundlagen der Objektorientierung Zeichung: Grady Booch: "Object-Oriented Analysis and Design with Applications" Kapselung verbirgt die Details der Implementierung trennt die Schnittstelle einer Abstraktion von ihrer Implementierung

Grundlagen der Objektorientierung Zeichung: Grady Booch: "Object-Oriented Analysis and Design with Applications" Modularität packt Abstraktionen in eigenständige Einheiten Verbindungen zwischen den Modulen sind die Annahmen, die die Module gegenseitig übereinander anstellen

Grundlagen der Objektorientierung Hierarchie Abstraktionen bilden eine Hierarchie Klassenstruktur: ist-ein - Hierarchie (Vererbung) Objektstruktur: Teil-von - Hierarchie (Aggregation) Zeichung: Grady Booch: "Object-Oriented Analysis and Design with Applications"

Modellierung //Kommentar public class ComplexNumber{ //noch ein Kommentar float real; float complex; Implementierung (hier: Java) real: 17.891 complex: 13.1 Modellierung (hier: nicht-standard Symbol)

Modellierungsstandard: UML //Kommentar public class ComplexNumber{ //noch ein Kommentar float real; float complex; Implementierung (hier: Java) ComplexNumber real : float complex : float??? Modellierung (hier: UML) [Unified Modeling Language]

Die Klasse: Felder und Methoden public class ComplexNumber{ float real; float complex; Imaginäre Achse Betrag Reale Achse Erinnerung: Betrag einer komplexen Zahl ist die Wurzel der Summe von Realteil im Quadrat und Imaginärteil im Quadrat.

Die Klasse: Felder und Methoden public class ComplexNumber{ float real; float complex; public float betragquadrat(){ float bq; //Betrag im Quadrat bq = (real*real)+(complex*complex); return bq; ComplexNumber real : float complex : float betragquadrat() : float

Die Klasse: Felder und Methoden ComplexNumber real : float complex : float betragquadrat() : float ComplexNumber cn = new ComplexNumber(); cn.real = 0; cn.complex = 10; float ergebnis = cn.betragquadrat(); Anwendung der Methode betragquadrat() auf das Objekt cn.

Die Klasse: Felder und Methoden Die String-Klasse der Standardbibliothek, welche die Java- Laufzeitumgebung (Java Runtime Environment - JRE) bereits mitbringt. String value : char[] compareto() //Methode compareto() der Klasse String String a = "A"; String b = "B"; int ergebnis = a.compareto(b); -1: falls a lexikographisch kleiner als b 0: falls a lexikographisch identisch mit b +1: falls a lexikographisch größer als b

Bubble Sort von Strings in Java String[] r; //Ein- und Ausgabe-Reihung int i; //index String tmp; //temporaerer Speicher boolean done; //merkt sich, ob Alg fertig r = new String[]{ "IBM", "HP", "Apple"; //Sortieren do{ done = true; for(i=0; i<r.length; i++){ if( r[i].compareto(r[i+1]) > 0 ){ tmp = r[i]; r[i]=r[i+1]; r[i+1] = tmp; done = false; while(!done); Variablen- Deklaration Eingabe Algorithmus //Ausgabe for(i=0; i<r.length; i++){ System.out.print(r[i]+" "); Ausgabe

Sortieren von Objekten anhand ihrer Felder Student[] studenten; int i; //index Student tmp; boolean done; class Student{ String vorname; String nachname; Student studenteins = new Student(); studenteins.vorname = "Hans-Peter"; studenteins.nachname = "Müller";... studarr = new Student[]{ studenteins, studentzwei, studentdrei ; do{ done = true; for(i=0; i<studarr.length; i++){ if(studarr[i].vorname.compareto(studarr[i+1].vorname)>0){ tmp = studarr[i]; studarr[i]=studarr[i+1]; studarr[i+1] = tmp; done = false; while(!done);

Ausflug: die Java Standard-Klassenbibliothek http://java.sun.com/jse/1.4./docs/api/ Interessante Klassen zum Einstieg: java.util.random (Zufallszahlengenerator) java.lang.stringbuffer java.lang.string java.lang.stringtokenizer