Vorlesung Informatik II

Inhalt In Java gibt es mehrere Klassenbibliothek-Pakete, die Datenstrukturen und Operationen für die grafische Darstellung von Fenstern und Benutzerin...
7 downloads 2 Views 928KB Size
Inhalt In Java gibt es mehrere Klassenbibliothek-Pakete, die Datenstrukturen und Operationen für die grafische Darstellung von Fenstern und Benutzerinteraktionen erlauben (wie Sie es gewohnt sind)

Vorlesung Informatik II Universität Augsburg Sommersemester 2011

In diesem Kapitel werden wir besprechen: Grundlagen des Pakets java.awt Einfach(st)e Anbindung von Fenstern an Datenklassen

Prof. Dr. Robert Lorenz

Später: Grafische Benutzerschnittstelle und Schichtenarchitektur Paket java.swing

Lehrprofessur für Informatik 07. Java: GUI und Ereignisbehandlung – Teil 1

1

Exkurs: GUI-Elemente

2

Exkurs: GUI-Elemente

Grundbegriffe

Grundbegriffe

Dialog Fenster zur Interaktion mit dem Benutzer

Dialog Fenster zur Interaktion mit dem Benutzer

Primärdialog: zur direkten Aufgabenerfüllung z.B. Editor

modaler Dialog muss beendet werden vor Aktivierung eines anderen Fensters z.B. Speichern unter, Mitteilungen

Sekundärdialog: für situationsabhängige zusätzliche Informationen wird aus Primärdialog gestartet nach Beendigung wird Primärdialog fortgesetzt z.B. Drucken, Speichern unter, Formeln einfügen, Suchen ...

nicht modaler Dialog kann unterbrochen werden z.B. Suchen

3

4

Inhalt

Fenster

Später: Vorgehen zum systematischen Konstruieren der GUI zu vorgegebenen Datenklassen (Erfassungsfenster, Listenfenster, Dialogführung)

Ein leeres Fenster (Klasse Frame) import java.awt.*;//Import aller Klassen des Pakets public class Test { public static void main (String args[]){ Frame F=new Frame(); F.setSize(300,300);//Breite und Höhe in Pixeln F.setVisible(true);//sichtbar machen } }

Jetzt: Vereinfachte Anbindung von Fensterklassen an Datenklassen  Zugriff auf Daten von Objekten einer Klasse  Zugriff auf Beziehungen zwischen Objekten

5

Fenster

6

Fenster

Besser: Entkoppelung der Programmklasse + eigene Fensterklasse als Spezialisierung

Besser: Entkoppelung der Programmklasse + eigene Fensterklasse als Spezialisierung public class MeinProgrammGUI extends Frame { public MeinProgrammGUI (){ super();//Konstruktoraufruf von Frame (opional) setSize(300,300); setVisible(true); } } public class meinProgramm { public static void main (String args[]){ new MeinProgrammGUI();//Anonymes Objekt erzeugen } }

+ Frame

+ MeinProgrammGUI Benutze Konstruktor zur Darstellung des Fensters 7

8

Fenster - Vererbungshierarchie

Fenster

Object

Ausgewählte Klassen und Operationen: Component (Graphische Benutzerschnittstelle)

Frame: Fenster mit Titel void setMenuBar(MenuBar b): Menubar b hinzufügen

Container (kann andere Komponenten enthalten)

MenuBar: Leiste, um Menüs aufzunehmen Menu add(Menu m): Menu hinzufügen

Panel (für Fensterkomponenten)

Window (Primärfenster ohne Rand)

Menu: Menü mit Titel, das verschiedene Menüpunkte enthalten kann MenuItem add(MenuItem i): Menüpunkt hinzufügen

Frame (mit Rand und Titel)

MenuItem: Menüpunkt mit Titel, um Aktionen auszuführen oder Optionen zu setzen oder andere Menüs aufzunehmen (zum Ausklappen)

Dialog (für Dialoge)

9

Fenster

10

Fenster BorderLayout:

Ausgewählte Klassen und Operationen: Frame void setLayout(LayoutManager l): Komponenten durch Layout organisieren Component add(...): Komponenten gemäß Layout hinzufügen

North

West

LayoutManager: Schnittstelle zur Festlegung der Darstellung von Komponenten innerhalb eines Containers BorderLayout: siehe nächste Folie FlowLayout: von links nach rechts (horizontal) fließend Gridlayout: wie Gitter/Tabelle

Center

East

South

Label: Komponente zur Darstellung von Text

11

12

Fenster

Fenster

Ausgewählte Klassen und Operationen:

Ausgewählte Klassen und Operationen:

Panel: Komponente zur Aufnahme weiterer Komponenten nach Layout Voreinstellung: FlowLayout Component add(...): Komponenten gemäß Layout hinzufügen

Frame void setLocation(int x, int y): Linke obere Ecke des Frames void setVisible(true): Frame sichtbar machen void pack(): Optimale Größe zur Darstellung aller Komponenten setzen

Button: Schaltfläche mit Titel, um Aktionen auszuführen

Dialog: Fenster mit Titel zur Darstellung von Dialogen zu einem Frame oder zu einem anderen Dialog modal oder nicht modal Operationen ähnlich wie bei Frame

PopupMenu: über Rechtsmausklick erreichbares Menu wird einer Komponente zugeordnet

13

Fenster

14

Fenster

Ausgewählte Klassen und Operationen:

Ausgewählte Klassen und Operationen:

TextField: Zur Eingabe von Text (einzeilig) String getText(): Eingegebenen Text auslesen void setText(String text): Text setzen

TextArea: Zur Eingabe von Text (mehrzeilig, mit Scrollbar) ähnlich zu TextField

Choice: Ausklappbare Liste von Strings zur Auswahl unter verschiedenen Unterpunkten (Einfach- oder Mehrfachauswahl) void add(String titel): Unterpunkt hinzufügen void select(String titel): Unterpunkt auswählen String getSelectedItem(): Ausgewählten Unterpunkt zurückgeben

15

List: Liste von Strings zur Auswahl unter verschiedenen Unterpunkten (ähnlich zu Choice) void dd(String text): Unterpunkt hinzufügen void remove(String text): Unterpunkt entfernen void removeAll(): alle Unterpunkte entfernenntfernen

16

Fenster

Fenster

Anwendungsfenster

Dialogfenster (vereinfacht, exemplarisch)

Sinnvolle Komponenten: Button close: Schließen des Fensters Menu bearbeiten: Öffnen von Dialogen zur Bearbeitung von Daten PopupMenu bearbeitenPm: dasselbe als Popupmenu

Anbinden von Dialogfenstern an Datenklassen zur Bearbeitung von Daten: Erstellen von Daten Anzeigen von Daten Modifizieren von Daten Löschen von Daten

Komponenten mit Hilfe von Panels organisieren Binde an jede Datenklasse MeineKlasse und ihre Containerklasse ein Dialogfenster MeineKlasseGUI an

Layout hinzufügen

17

Fenster

18

Fenster

Dialogfenster (vereinfacht, exemplarisch)

Dialogfenster (vereinfacht, exemplarisch)

+ Dialog

+ MeineKlasseGUI + MeineKlasseGUI() ... + save() + update() + load()

+ MeineKlasseGUI 0..* 0..1 subject

+ MeineKlasse

0..* container 1..1

Eingegebene Daten an subject übergeben Liste aller Objekte in container neu anzeigen Objektdaten von subject laden

+ MeineKlasseContainer

19

20

Fenster

Fenster

Dialogfenster (vereinfacht, exemplarisch)

Dialogfenster (vereinfacht, exemplarisch)

 Mit passenden grafischen Komponenten zum Eingeben und Anzeigen aller Attributwerte:

 Benutze Konstruktor zum Initialisieren aller grafischer Komponenten

Einwertiges Attribut: TextField Aufzählungs-Attribut: Choice Mehrwertiges Attribut: List

Sollten grafische Komponenten Attribute der Fensterklasse sein? Nur diejenigen zur Aufnahme von Attributwerten (Textfelder,...) sonst: lokale Variablen im Konstruktor (Schaltflächen,...)

 Mit grafischer Komponente zum Anzeigen und Auswählen von erzeugten Objekten: List

21

Fenster

22

Fenster

Dialogfenster (vereinfacht, exemplarisch)

Dialogfenster (vereinfacht, exemplarisch):

Mit Schaltflächen / Menüpunkten zum Ausführen obiger Aktionen und zugehörigen Operationen

Attribute: Referenzattribute & Grafische Komponenten zur Aufnahme von Attributwerten public class MeinKlasseGUI extends Dialog {

keine üblichen Verwaltungsoperationen für die Attribute und Beziehungen (überflüssig)

private MeineKlasse subject;//Referenz Datenobjekt private MeineKlasseContainer container;//Referenz Container private TextField meinAttribut;//Ausgabe Attribut Datenobjekt ... private List alleObjekte;//Ausgabe aller Datenobjekte ...

23

24

Fenster

Fenster

Dialogfenster (vereinfacht, exemplarisch):

Dialogfenster (vereinfacht, exemplarisch):

Konstruktor: Fensteraufbau & Initialisierungen

Operation save(): Auslesen der Werte aus den grafischen Komponenten und Erzeugen eines neuen Objekts mit diesen Werten

public MeinKlasseGUI(Frame f){ super(f,“Objekte verwalten“,false);//Frame-Konstruktor setLayout(new GridLayout(0,1));//eine Spalte,beliebig viele Zeilen Panel p = new Panel(); meinAttribut = new TextField(20); p.add(meinAttribut); Button speichern = new Button(“Speichern"); p.add(speichern); add(p); container = MeineKlasseContainer.instance(); subject = null;//Initialisierung der Referenzen pack(); setVisible(true); }

public void save(){ subject = new MeineKlasse(...); subject.setMeinAttribut(meinAttribut.getText()); ... }

25

Fenster

26

Fenster

Dialogfenster (vereinfacht, exemplarisch):

Dialogfenster (vereinfacht, exemplarisch):

Operation update(): Löschen aller dargestellten Listenelemente und neu Laden aus dem Container

Operation load(): Laden der Werte eines aus der Liste selektierten Objekts

public void update(){ alleObjekte.removeAll(); for(MeineKlasse o:container){ alleObjekte.add(o.toString()); } }

if (alleObjekte.getSelectedItem() != null){ Iterator it = container.iterator(); while (it.hasNext()){ MeineKlasse o = it.next(); String auswahl = alleObjekte.getSelectedItem(); if (o.toString().equals(auswahl)){ subject = o;} } ... meinAttribut.setText(subject.getMeinAttribut()); ... 27

28

Ereignisbehandlung

Ereignisbehandlung

Noch können wir nichts mit dem Fenster anfangen

Benutzeraktionen lösen sog. Ereignisse (Events) aus:

Es lässt sich nicht schließen Dialogfenster lassen sich nicht öffnen Keine Reaktion auf Drücken von Schaltflächen

Klicken auf Schaltfläche: ActionEvent Klicken mit der Maus auf Komponenten: MouseEvent Betätigen von Keyboardtasten: KeyEvent Betätigen von Fensterfunktionen: WindowEvent …

 Es fehlt noch die sogenannte Ereignisbehandlung

Events sind Java-Objekte, die Informationen über Benutzeraktionen kapseln Die Eventklassen bilden eine Vererbungshierarchie (siehe API)

29

Ereignisbehandlung

Ereignisbehandlung Objekte, die auf Benutzeraktionen reagieren sollen (z.B. Fenster), müssen diese Ereignisse abhören können

AWTEvent

ActionEvent

AdjustmentEvent

ConzainerEvent

ComponentEvent

InputEvent

FocusEvent

30

TextEvent

Man kann ereignisempfangende Objekte (Fenster) bei ereignisauslösenden Objekten (Button) als Ereignisabhörer (EventListener) registrieren

WindowEvent

EventListener ist eine Schnittstelle, die festlegt, mit welchen Operationen auf ein Ereignis regiert werden kann

PaintEvent KeyEvent

 Für jede Ereignisart gibt es eine eigene EventListenerSchnittstelle (ActionListener, MouseListener, …)

MouseEvent

31

32

Ereignisbehandlung

Ereignisbehandlung

Für die Ausführung von Benutzeraktionen zuständige Klassen (ereignisempfangende Klassen) müssen die entsprechende EventListener-Schnittstelle implementieren EventListener

Für die Ausführung von Benutzeraktionen zuständige Klassen (ereignisempfangende Klassen) müssen die entsprechende EventListener-Schnittstelle implementieren

addEventListener() removeEventListener()

Ereignisauslösende Objekte benachrichtigen alle bei ihr registrierten Ereignisabhörer … ... durch Aufruf der zum Ereignis gehörenden Operation der Ereignisabhörer-Schnittstelle

EventObject

getSource() ... 33

Ereignisbehandlung

Ereignisbehandlung

Beispiel: ActionEvent, ActionListener (Buttons) ActionListener actionPerformed()

MeinFenster actionPerformed()

34

Beispiel: ActionEvent, ActionListener (Button close) public class meinFenster extends Frame implements ActionListener{ public meinFenster(){ ... Button close = new Button(“close“); add(close); close.addActionListener(this);//Fenster bei Button anmelden ... } public void actionPerformed(ActionEvent e){ if (e.getActionCommand().equals("close")){ dispose();//Fenster schließen System.exit(0);//Anwendungsresourcen freigeben } } }

Button addActionListener() removeActionListener()

ActionEvent getActionCommand() ... 35

36

Ereignisbehandlung

Ereignisbehandlung

Beispiel: WindowEvent, WindowListener (Fenster)

Beispiel: WindowAdapter (mit leeren Implementierungen) WindowAdapter

WindowListener windowClosing() windowClosed() windowOpened() windowActivated()

windowClosing() windowClosed() windowOpened() windowActivated()

MeinFenster addWindowListener() removeWindowListener()

WindowEventHandler

WindowEvent MeinFenster ...

windowClosing()

getWindow() ...

WindowListener MeinFenster addWindowListener() removeWindowListener()

WindowEvent getWindow() ...

37

Ereignisbehandlung

38

Ereignisbehandlung

Beispiel: WindowAdapter (mit leeren Implementierungen)

Beispiel: WindowAdapter (als anonymes Objekt)

public class MeinWindowEventHandler extends WindowAdapter{ MeinFenster f; MeinWindowEventHandler(MeinFenster f) { this.f = f; } public void windowClosing(WindowEvent e){ f.dispose(); System.exit(0); } } public class meinFenster extends Frame { public meinFenster() { ... MeinWindowEventHandler w = new MeinWindowEventHandler(this); addWindowListener(w); ) }

public class meinFenster extends Frame { public meinFenster() { ... addWindowListener(new WindowAdapter{ public void windowClosing(WindowEvent e){ dispose(); System.exit(0); } }); }

39

40

Ereignisbehandlung

Ereignisbehandlung

Event-Klasse

Interface

Methoden

Ereignis- Quellen

Event-Klasse

Interface

Methoden

Ereignis- Quellen

ActionEvent

ActionListener

actionPerformed()

Button MenuItem TextField

MouseEvent

MouseListener

Component

AdjustmentEvent

AdjustementListener

adjustmentValueChanged() Scrollbar

mouseClicked() mouseEntered() mouseExited() mousePressed() mouseReleased()

ItemEvent

ItemListener

itemStateChanged()

KeyEvent

KeyListener

keyPressed() keyReleased() keyTyped()

Checkbox CheckboxMenuItem Choice List

MouseMotionListener mouseDragged() mouseMoved() WindowEvent

WindowListener

Component

Component

windowActivated() Window windowClosed() windowClosing() windowDeactivated() windowDeiconified() windowIconified() windowOpened()

41

42

Motivation Datenbanksysteme als Basis moderner Softwaresysteme

Vorlesung Informatik II

Web-basierte Systeme (eBay, Amazon, Expedia, OnlineBanking)

Universität Augsburg

Unternehmensinformationssysteme(SAP R/3,...)

Sommersemester 2011

Prof. Dr. Robert Lorenz

Grundlage vieler Informatik-Berufe Administration, Planung/Entwurf, Entwicklung, Nutzung

Lehrprofessur für Informatik 08. Exkurs: Datenbanken

1

2

Motivation

Traditionelle Datenverwaltung

Hohe Herausforderungen Verwaltung von Daten im Terabyte-Bereich (1 TB = 1000 GB) Viele Nutzer, parallele Anfragen, hohe Verfügbarkeit, Sicherheit, Konsistenz

Physische Datenabhängigkeit  Änderungen an der Struktur der Daten führen zu Änderungen der Anwendungsprogramme.  Anwendungsprogramme müssen Struktur der Daten kennen Datenredundanz/-inkonsistenz  Anwendungsprogramme/Benutzer haben spezielle Erfordernisse bzgl. der Daten: Dieselben Daten werden in verschiedenen Versionen mehrfach abgespeichert.  Änderungen der Daten können zu Inkonsistenzen zwischen verschiedenen Versionen führen.

Querbezüge zu anderen Informatikbereichen Modellierung, Datenstrukturen, Sicherheit, Theorie, Betriebssysteme, …

3

Traditionelle Datenverwaltung

4

Datenbanksysteme (DBS)

Einbenutzerbetrieb Auf eine Datei kann nur ein Anwendungsprogramm auf einmal zugreifen.

Löse Aufgaben der Beschreibung, des Abspeicherns und des Zugriffs auf Daten aus den Anwendungsprogrammen heraus. Programme

Folgerungen:  hohe Kosten für die Anpassung von Anwendungsprogrammen

Benutzergruppen

DBMS (Datenbankmanagementsystem): Verarbeitung von Anfragen, Zugriff auf gespeicherte Daten

 Unsicherheit bzgl. der Korrektheit der Daten  Effizienzverlust bei Speicherung und Zugriff auf Daten DD (Data Dictionary)

DB (Daten bank)

...

DB (Daten bank)

DBS (Datenbanksystem) 5

6

DBS

DBS

Datenbankmanagementsystem (DBMS) Softwaresystem, das die Definition, Konstruktion (Speichern) und Manipulation (Anfragen, Änderungen, Berichte) von Daten unterstützt.

Eigenschaften

Datenbank Menge der von einem DBMS verwalteten Daten. Sie beschreibt einen wohldefinierten Ausschnitt der realen Welt (Miniwelt).

Integrierte Datenspeicherung für verschiedene Anwendungen: Unterstützung von Sichten/Views

Data Dictionary/Datenbankschema (DD) Legt die Struktur der Daten fest (bzgl. eines Datenmodells).

Redundanz- und Konsistenzkontrolle Datenunabhängigkeit: einheitliche Zugriffs-Schnittstelle auf Daten Schnelle Verarbeitung von DB-Operationen

Mehrbenutzerbetrieb: Unterstützung von Transaktionen und Nebenläufigkeitskontrolle Datensicherheit: Zugriffsverwaltung Datenunversehrtheit: Datenwiederherstellung/Recovery

7

DBS

8

Relationales Datenmodell

Kriterien für den Einsatz von DBS

Jedem DBS liegt ein Datenmodell zugrunde:

Es handelt sich um sehr große Datenmengen

Eigenschaften der Datenelemente Struktur der Datenelemente Konsistenzbedingungen Operationen zum Speichern, Suchen, Ändern Löschen

Datenverlust (nach technischen Fehlern) soll ausgeschlossen werden

Das am meisten verwendete Datenmodell ist das relationale Datenmodell

Anwendungen und Datenstrukturen sind Änderungen unterworfen Mehrere Benutzer/Anwendungen greifen parallel auf die Daten zu

Zugriffsverwaltung ist notwendig

Jetzt: Informale Einführung in dieses Datenmodell anhand von Beispielen

9

10

Relationales Datenmodell

Relationales Datenmodell

Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen:

Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen:

Veranstaltung ID 00001 00002 00003 ...

Name Informatik 2 Java-Programmierkurs Informatik 1 ...

Student Jahr 2009 2009 2010 ...

Semester SS SS WS ...

Matrikelnummer 1045067 ...

Nachname Huber ...

Vorname Markus ...

... ... ...

Das ist die Sicht des Benutzers Mit der physischen Datenhaltung auf der Festplatte hat das nichts zu tun! (siehe Datenbak-Vorlesung) 11

Relationales Datenmodell

12

Relationales Datenmodell

Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen:

Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen:

Daten werden zeilenweise abgespeichert Attribute

Mathematisch formal ist eine Tabelle eine Relation (also eine Menge von Tupeln) Spaltennamen heißen auch Attribute – sie repräsentieren Wertemengen

Relationenname

Relationenschema

Jede Zeile entspricht einem Tupel in dieser Relation

Relation

Tupel

Beispiel: (0001,Informatik 2,2009,SS) ∈ Veranstaltung 13

14

Modellierung

Objekt-Relationale Abbildung

Zur Modellierung von relationalen Datendanken verwendet man i.d.R. Sog. Entity-Relationsship-Modell (ER-Modelle)

Objekte einer Java-Anwendung lassen sich nicht direkt in einer relationalen Datenbank abspeichern

ER-Modelle sind nicht Teil von UML!

Wir werden im Folgenden andeuten, wie man durch Objekte verwaltete Daten in Tabellen abspeichern kann (Objektrelationale ( Abbildung)

ER-Modelle haben konzepzuell eine gewisse Ähnlichkeit zu Klassendiagrammen (aber nicht grafisch!) Wir werden ER-Modelle hier nicht besprechen (siehe DatenbankVorlesung

Dabei lernen Sie nebenbei etwas über Datenbank-Modellierung Details siehe Datenbank-Vorlesung

15

Objekt-Relationale Abbildung

Objekt-Relationale Abbildung

Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden Student matrikelnummer :String

16

Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden Student

Student matrikelnummer

matrikelnummer :String

name

name :String

Student matrikelnummer 1045678

name Huber

name :String

Einwertige Attribute werden Spalten der Tabelle

Objekte werden mit ihren Werten in Zeilen eingetragen

17

18

Objekt-Relationale Abbildung

Objekt-Relationale Abbildung

Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden

Vorlesung

Student matrikelnummer :String

Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden

Student matrikelnummer

name

name

1045678

Huber

jahr

name :String

Vorlesung ID name 00001 Info2

jahr semester 2009 SS

semester

Falls eine Klasse kein Schlüsselattribut besitzt, wird ein solches hinzugefügt  Künstliches Schlüsselattribut (hier: ID)

In der Tabelle soll eine Spalte identifizierend sein (hier: matrikelnummer)  Schlüsselattribut

Werte erhält man durch Durchnummerieren. 19

Objekt-Relationale Abbildung

Objekt-Relationale Abbildung

Beispiel: Beliebig mehrwertige Attribute als Tabelle abbilden Student

Beispiel: Endlich mehrwertige Attribute als Spalten abbilden Student

Student matrikelnummer name

...

20

...

studiengang :String [1..*]

studiengang :String [1..2]

...

Student Studium1 Studium2 Informatik Physik Informatik null

StudiengangStudent Schlüsselattribut Für jeden Wert eine Zeile

matrikelnummer 1045678 1045678 1056904

studiengang Informatik Physik Mathematik 21

22

Objekt-Relationale Abbildung

Objekt-Relationale Abbildung Beispiel: Assoziationen abbilden Referenzattribut

Student

?..1 - ?..? – Assoziationen: Referenzattribut Referenzattribut Vorlesung

... adresse :Adresse [1]

...

ID 0001

Vorlesung ... dozentID 0013

1..*

Adresse

1..1 dozent Professor

strasse plz ...

Professor ID 0013

name

...

... 23

Objekt-Relationale Abbildung

24

Objekt-Relationale Abbildung

Beispiel: Assoziationen abbilden

Beispiel: Generalisierungen abbilden

?..* - ?..* - Assoziationen: Eigene Tabelle

Möglichkeit 1: Alle Attribute in eine einzige Tabelle  unbesetzte Zellen, eine gemeinsame ID, neues Attribut typ

Vorlesung ... 0..* 1..* Student ...

ID 0001

Vorlesung ...



Person name

Vorlesung_Student vorlesungID matrikelnummer 00001 1045678 Student matrikelnummer ... 1045678 25

Student

Mitarbeiter

matnummer

persnummer

Person ID name matnummer persnummertyp

26

Objekt-Relationale Abbildung

Objekt-Relationale Abbildung

Beispiel: Generalisierungen abbilden

Beispiel: Alle Klassenattribute in eigene Tabelle abbilden

Möglichkeit 2: Eigene Tabelle für jede konkrete Klasse  eigene ID für jede Klasse  Übernahme der Attribute abstrakter Oberklassen

Klassenattribute klassenname attributname attributwert

Möglichkeit 3: Eigene Tabelle für jede Klasse  gemeinsame ID  Zuordnung Oberklasse - Unterklasse über diese ID

Beispiel: Containerklassen zur Objektverwaltung werden nicht abbgebildet, denn die verwalten ja keine eigenen fachlichen Daten

27

SQL

28

SQL

Structured Query Language (SQL): Deklarative Datenbanksprache zur Definition, Manipulation und Abfrage von Daten kann interaktiv als auch eingebettet (in eine Programmiersprache) verwendet werden  Einheitliche Schnittstelle für Zugriff auf Datenbanken Jetzt: kurze Einführung mit einfachen Anweisungen am Beispiel 29

Es existieren mehrere SQL-Standards, an die sich existierende DBS nicht 100-prozentig halten → Syntax variiert von DBS zu DBS Wichtige Schlüsselwörter: table record, row field, column

Relation Tupel Attribut

Datentypen ähnlich wie in Programmiersprachen, abhängig vom betrachteten SQL-Standard bzw. DBS 30

SQL

SQL

Definition einer Tabelle: create table Vorlesung ( ID integer name varchar(30) jahr char(4) semester char(2) dozent integer ); Attribute

Datentypen

Löschen Definition einer Tabelle:

Tabellenname Ganze Zahl (4 Byte)

not not not not

null, null, null, null,

drop table Vorlesung

Variabler String der Länge