Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine...

28
Java, OO und UML

Transcript of Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine...

Page 1: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Java, OO und UML

Page 2: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Übersicht

● Vorstellung des OO-Paradigmas● Umsetzung des OO-Paradigmas in Java● Einführung (seeeeeehr rudimenter) in

UML zur graphischen Darstellung von OO● Grammatik und Semantik von Java

Page 3: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Das Objektorientierte Paradigma

● OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.B. das Relationsmodell relationaler Datenbanken)

● OO ist eine Sammlung und Nutzung mehrerer Prinzipien– Klasse (Kapselung)– Objekte (Kapselung)– Vererbung– Nachricht– Polymorphie– Identität (von Objekten)

Page 4: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Das Objektorientierte Paradigma

● Unterschiedliche Ansätze der OO-Umsetzung sind möglich

● Dies schlägt sich in der Vielzahl OO-fähiger Sprachen nieder

● Sprachen wie Eiffel setzen das OO-Paradigma am konkretesten um, hier ist alles Objekt, es gibt keine primitiven Datentypen

Page 5: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Das Objektorientierte Paradigma

● Um das Paradigma von der reellen Implementierung abzugrenzen, gibt es Beschreibungssprachen

● Diese geben OO-Konzepte sprachneutral wieder

● Die bekannteste und verbreitetste ist UML● UML ist zudem eine graphische

Beschreibungssprache● Die OO-Konzepte von Java werden im

folgenden in UML mitdargestellt

Page 6: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Vokabeln lernen -Java und Grammatik

Page 7: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Java - Grammatik

● Für alle Programmiersprachen gilt, dass sie einer Grammatik genügen müssen

● Diese Grammatik ist eben genau durch den Compiler, der den Quellcode in Maschinensprache übersetzt, festgelegt

● Genügt der Quellcode nicht der Grammatik der Sprache, in der er geschrieben ist, gibt der Compiler Fehler aus

● Ein theoretisches Konstrukt für Grammatiken ist die Backus-Naur-Notation

Page 8: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Java - Grammatik

Auszug aus der Java-Grammatik in EBNF:...Type ::= ( ReferenceType | PrimitiveType );ReferenceType ::= ( PrimitiveType ( "[" "]" )+ |

( ClassOrInterfaceType ) ( "[" "]" )* );ClassOrInterfaceType ::= <IDENTIFIER> ( TypeArguments )? ( "."

<IDENTIFIER> ( TypeArguments )? )*;TypeArguments ::= "<" TypeArgument ( "," TypeArgument )* ">";TypeArgument ::= ( ReferenceType | "?" ( WildcardBounds )? );WildcardBounds ::= ( "extends" ReferenceType |

"super" ReferenceType );PrimitiveType ::= ( "boolean" | "char" | "byte" | "short" |

"int" | "long" | "float" | "double" );...

Beispiele:booleanboolean[]StringString[]Testclass.innerClassTypeTestclass.innerClassType[]...

Page 9: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Java - Grammatik

● Java-Quellcode setzt sich grammatisch zusammen aus:– Bezeichner oder Identifier– Schlüsselworte (sog. Terminale)– Literale– Operatoren– Trennzeichen

Page 10: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Java - Grammatik

public class test {public alert(String text) {

System.out.println(text + „ TEST“);}

} * Bezeichner oder Identifier * Schlüsselworte (sog. Terminale) * Literale * Operatoren * Trennzeichen

Page 11: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Die Konzepte des Paradigmas

Page 12: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Klasse

● Ist die grundlegende Beschreibung von gleichartigen Objekten

● Diese teilen sich dadurch– Attribute– Operatoren– Methoden– Beziehungen– Semantik

Page 13: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Klasse

● Es gibt konkrete und abstrakte Klassen● Konkrete Klassen beinhalten

ausprogrammierte Methoden, abstrakte Klassen nicht

● Abstrakte Klassen dienen als Strukturierungsmittel beider Vererbung

● Abtstrakte Klassen heissen in Java Interfaces (bzw. werden als solche verwendet)

Page 14: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Klasse

● Darstellung in UML

Page 15: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Klasse

● ... und in Java

class Mediafile {// Attribute

// Methoden}

Page 16: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Objekt

● Ist die konkrete Ausprägung einer Klasse● Vereinfacht gesagt, die durch den

Objektnamen eindeutig bezeichnete Kopie des Klassenquellcodes im Speicher

● In UML

Page 17: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Objekt

Page 18: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Objekt

● In Java...● ...wird ein Objekt durch den new –

Operator erzeugt– Klasse Objektname = new Konstruktor()– Testclass test = new Testclass();

● Ist in einer Klasse kein dedizierter Konstruktor implementiert, erzeugt Java einen Standardkonstruktor

Page 19: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● Ist ein bennanter Speicherplatz innerhalb einer Klasse

● Beschreibt eine Menge von gültigen Wertebelegungen innerhalb der Objekte

● Diese Mengen werden als Typ des Attributes bezeichnet

● Im Normalfall sind alle Attribute separiert● Sollen Attribute klassenweit für Objekte

gelten, muß dies explizit angegeben werden

Page 20: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● Dies gilt ebenso für eine evt. Konstantenverwendung eines Attributes

● Attribute können in ihrer Sichtbarkeit definiert werden (public, protected, private)

● Zudem gibt es abgeleitete Attribute● Diese werden durch Methoden aus

bestehenden Attributen errechnet

Page 21: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● Attribute in UML

Page 22: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● Attribute in UML– +, - und # bezeichnen die Sichtbarkeit public,

private und protected– [] bezeichnen Multiplizität des Attributes

(Array)– / bezeichnet ein abgeleitetes Attribut– Reihenfolge ist:

● Sichtbarkeit● Multiplizität● Bezeichnung● Typ

Page 23: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● In Java public class TestKlasse { boolean testAttrib1 = false; protected int testAtttrib2 =42; private char testAttrib3; short testArray[]; final double pi = 3.14; static int noOfTestKlasse; }

Page 24: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● Kurzer Einschub über den Scope / Gültigkeitsbereich von Attributen

● Faustregel: Innerhalb des Klammerpaares, das den Bereich umschliesst, in dem das Attribut definiert wurde, gilt das Attribut als sicht- und veränderbar.

● Alle Attribute, die direkt im Körper der Klasse definiert sind, sind demnach für alle Methoden der Klasse sichtbar

Page 25: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● Weiter können aber auch Attribute hier definiert werden:– Methoden– Schleifen– Verzweigungen– Anonymen Blöcken

● Diese sind dann (siehe Faustregel) nur in der jeweiligen Struktur sichtbar

● Doppelte Definitionen sind allerdings verboten

Page 26: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

public class Testclass {

public int number = 5;

public add(int new_number) {number = number + new_number;// eigentlich this.number// kann aber bei Eindeutigkeit entfallen

}

public check() {int check_value = 10;if (number > check_value) {

String output1 = „Is greater than 10“;System.out.println(output1);

} else {String output2 = „Is lesser than 10“;System.out.println(output2);

}System.out.println(output1); // FEHLER, nicht sichtbar!

}

}

Page 27: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Attribut

● Primitive Datentypen in JavaPrimitiver Typ Größe in Bit Wertebereich Wrapper-Typ

boolean 1 - Booleanchar 16 Unicode 0 - Character

Unicode 216-1byte 8 (-128) - (+127) Byteshort 16 (-2^15)-(+2^15-1) Shortint 32 (-2^31)-(+2^31-1) Integerlong 64 (-2^63)-(2^63-1) Longfloat 32 IEEE754 Floatdouble 64 IEEE754 Doublevoid - - Void

● Wrappertypen sind Klassen für prim. Datentypen (Objekt <-> Wert)

Page 28: Java, OO und UML - Informatikaberndt/oojava/Vorlesung/2... · alles Objekt, es gibt keine primitiven Datentypen. Das Objektorientierte Paradigma Um das Paradigma von der reellen Implementierung

Konzepte des Paradigmas - Identität

● Identität unterscheidet Objekte voneinander

● Theoretisch und praktisch können Objekte gleichen Typs zur gleichen Zeit– Gleiche Werte– Gleichen Namen– Gleichen Zustand

● haben. Zur Unterscheidung erzeugt Java den OID (Object identifier) automatisch

● Dieser ist komplett unsichtbar