Top Banner
Java, OO und UML
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

Aug 08, 2019

Download

Documents

doantuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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