Intrinsische Datentypen (
int, float, double, string, ...)
sind unzureichend für die allermeisten praktischen Probleme.
Offensichtlich im Bereich Verwaltung, Wirtschaft, Handel, ...
- Studenten–Daten an der LMU
- Fahrscheine buchen bei DB
- Ebay Auktionen, ...
Praktisch immer komplexe
Datenmodelle, d.h. zusammengesetzt aus
Strings, int und float Zahlen, Arrays, Querverweise auf weitere
Infos, usw.
Aber auch im naturwissenschaftlich/technischen Umfeld – mit
überwiegend numerischen Informationen – sind
Messdaten keine isolierten Zahlenkolonnen
sondern i.d.R. komplex strukturiert und ergeben nur
im Kontext mit dem Experiment
(Aufbau, Parameter,
äussere Bedingungen) einen Sinn.
- Spuren im Detektor sind 3er oder 4er Vektoren,
bestehen aus Hits, gehören zu einem Sub–Detektor, ...
- Fluoreszenz–Spektrum: Wertepaare
(Frequenz, Intensität)
plus Zusatzinfo zu Probe, Apparatur, Kalibration, äussere
Parameter, ...
- ...
Beliebig komplexe Datenstrukturen auch schon mit C
struct
möglich. C++ Klassen zusätzlich Verknüpfung Daten und
Funktionen.
Historische Entwicklung:
- Unstructered Programming:
- Ein Hauptprogamm + Daten
- Procedural Programming:
- Ein Hauptprogamm + globale Daten + kleinere Funktionen (prozedures)
- Modular Programming:
- Ein Hauptprogamm + globale Daten + Module mit lokalen
Daten und Unterprozeduren
- Object-oriented:
- Daten und Prozeduren integriert in Klassen, keine globalen Daten, kein
eigentliches Hauptprogramm, Objekte kommunizieren direkt
Im Prinzip natürlicher & intuitiver Ansatz:
Alltag
Datum &
Methode verknüpft
Auto |
..., Fahren, Schalten, Blinken, ... |
Wiesn |
..., Maß, Schunkeln, Brechen, ... |
Fußball |
..., Blutgrätsche, Schwalbe, ... |