Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung” Grundlagen der Informatik I “Programmierung”

22.08.2013 Aufrufe

Man könnte das Objektkonzept von der Modularisierung dadurch unterscheiden, daß bei der Modularisierung die Idee und die Realisierung eins sind. Es gibt ein Konzept und eben nur einen Betrieb nach diesem Konzept. Bei den Klassen gibt es eine Idee und viele Realisierungen dieser Idee. In der Wirtschaft nennt man diese Betriebsform Franchising. Die Klasse ist das Konzept, wie Burger-Betriebe zu betreiben sind. 5 Jeder Betrieb ist ein selbständiges Unternehmen, das aber genau nach dem Konzept betrieben wird. 1.3.6.1 Generizität Bei der Verbreitung der Betriebe nach dem Burger-Konzept wirkt die Starrheit des Konzepts geschäftsbehindernd. Z.B. stellt es sich heraus, daß der Unterschied zwischen Burger-Betrieb und Backhähnchen-Betrieb nur in dem verkauften Produkt besteht. Organisation, Küche, Kasse usw. sind weitgehend identisch. Nichts liegt näher als sich das generelle Konzept solcher Betriebe schützen zu lassen. Erst bei der Neugründung eines Betriebs wird noch vorher festgelegt, welcher Produkttyp tatsächlich von diesem Betrieb angeboten wird. Das bedeutet, das Betriebskonzept, nennen wir es Fast-Food-Betrieb, läßt offen welcher Art das Produkt ist. Im Fast-food-Betrieb werden nur gewisse Einschränkungen für die möglichen Produkte definiert, damit z.B. die Standardküche, die nach dem allgemeinen Konzept eingerichtet ist, das Produkt auch herstellen kann. In der Informatik nennt man diese offengelassene Information Typparameter (in C++ Template). Eine Klasse mit Typparameter bezeichnet man als generische Klasse. Wird ein Objekt einer Klasse mit einem Typparameter aufgebaut, so muß man natürlich vorher den aktuellen Typ bekannt geben. Der Typparameter verwandelt eine Klasse eigentlich in eine Klasse von Klassen. Dadurch bekommen wir eine mächtige Klassifizierungmöglichkeit: Eine Klasse ist eine spezielle Ausprägung der generischen Klasse, in welcher der Typparameter einen festen Wert hat. 1.3.6.2 Vererbung Ein anderes Hemmnis ist die Starrheit des Angebots: Entweder nur Burger oder Backhähnchen. In Hessen ist der zusätzliche Kundenwunsch nach “Handkäs mit Musik”, in Bayern nach Weißwurst, im Rheinland nach Reibekuchen mit Apfelmus, im Ruhrgebiet nach Currywurst, an der Nordsee nach Krabbenbrötchen und in Kärnten nach Kletzenudeln unüberhörbar. Nun ist jedoch das generische Konzept handelsrechtlich geschützt und jede Änderung von hohen Kosten begleitet. Außerdem ist eine generelle Änderung überhaupt nicht erwünscht. Handkäs mit Musik bedeutet in Bayern eine Zumutung für die Urbevölkerung! Daher sind lokale Ergänzungen des bestehenden Konzepts notwendig. Nicht das gesamte Konzept wird geändert, sondern in den verschiedenen Essregionen werden lokale Zusatzleistungen angeboten. Das Konzept der lokalen Zusatzangebote wiederholt nicht das ganze Konzept, es beruft sich nur darauf. Ein Betrieb wird also nach dem lokalen Konzept aufgebaut und “erbt” durch den Verweis auf das Grundkonzept auch dessen Konzept. Der Mechanismus, der diese Spezialisierung oder besser Ergänzung ermöglicht, heißt in der Informatik Vererbung oder Inheritance. Es kann dabei durchaus vorkommen, daß man von verschiedenen Konzepten erbt (Mehrfach Vererbung): Burger-Konzept und Biergarten-Konzept. Die Vererbung erlaubt uns nun eine Klassifizierung der Klassen in Art von Stammbäumen gemäß ihres Angebots: Fast-Food-Betrieb(Produkt) ✘✘❳ ✘✘✘ ❳❳❳ ✘✘✘ ❳❳❳❳ .......... ✘✘ ❳❳❳❳ .......... ✘✘ Fast-Food-Hessem(Produkt) Fast-Food-Bayern(Produkt) Fast-Food-Kärnten(Produkt) ✘✘✘❳ ✘✘ ❳❳ ❳❳❳❳ ✘✘✘ ✘ ❳❳ Weißwurst-mit-süßem-Senf(Produkt) Weißwurst-mit-scharfem-Senf(Produkt) 5 In der Mathematik spricht man statt von Klassen eher von abstrakten Datentypen oder algebraischen Theorien. Generische Klassen sind parametrisierte Theorien und das Vererbungskonzept entspricht der Theorieerweiterung.

Bauen wir nun einen Betrieb nach dem Süßer-Senf(Burger)-Konzept auf, so wird dort Weißwurst mit süßen Senf zusätzlich zum normalen Burger angeboten, und nach dem Scharfer-Senf(Backhuhn)-Konzept würde Weißwürste mit scharfem Senf zusätzlich zu Backhühnern angeboten. Erst durch das Konzept der Vererbung läßt sich die am Anfang angesprochene evolutionäre Entwicklung effizient realisieren. Die Sprachen, die Klassifizierung über Vererbung und Typparameter zulassen, sind Eiffel und C++. In den anderen werden gerade solche Erweiterungen eingebaut. 1.3.7 Zusammenfassung Die obige Reihenfolge der Strukturierungskonzepte gibt ihre geschichtliche Entwicklung wieder. Die Strukturierung, wie sie bei der Systementwicklung durchgeführt wird, erfolgt genau umgekehrt. 6 Zuerst wird die Frage nach der Strukturierung der Daten gestellt, das System grob in Klassen zerlegt und die Beziehung der Klassen (Vererbung und Benutzung) zueinander festgelegt. Anschließend werden für jede einzelne Klasse ihre Leistungen festgelegt und jede Leistung in Form eines Kontraktes beschrieben. Ein Kontrakt ist das Versprechen des Programmierers, daß, wenn die geforderte Eingangsbedingung (Precondition) erfüllt ist, er garantiert, daß die Ausgangsbedingung (Postcondition) ebenso erfüllt ist. Damit ist dann die Entwurfsphase beendet, und es beginnt die Implementierungsphase, in der jede Leistung einer Klasse entsprechend dem Kontrakt programmiert wird. Die Programmierung benutzt dann die schrittweise Verfeinerung im Falle, daß die Implementierungsprache eine imperative oder maschinennahe Sprache ist. Man könnte natürlich auch die einzelnen Leistungen in einer logischen oder funktionalen Sprache realisieren, unter der Beachtung der Verfeinerungkonzepte, die diese Sprachen bieten. Die Fähigkeit zum Umgang mit formalen Systemen ist in allen diesen Phasen unumgänglich. Aus diesem Grunde werden wir zunächst die wichtigsten Teile der Logik und formaler Sprachbeschreibungen besprechen müssen, bevor wir die Konzepte von Programmiersprachen genauer vorstellen. 6 Aus diesem Grunde folgen wir in dieser Vorlesung auch nicht der geschichtlichen Entwicklung sondern steigen “von oben” in die Programmierkonzepte ein.

Man könnte das Objektkonzept von <strong>der</strong> Modularisierung dadurch unterscheiden, daß bei <strong>der</strong> Modularisierung<br />

die Idee und die Realisierung eins sind. Es gibt ein Konzept und eben nur einen Betrieb nach diesem Konzept.<br />

Bei den Klassen gibt es eine Idee und viele Realisierungen dieser Idee. In <strong>der</strong> Wirtschaft nennt man diese<br />

Betriebsform Franchising. Die Klasse ist das Konzept, wie Burger-Betriebe zu betreiben sind. 5 Je<strong>der</strong> Betrieb<br />

ist ein selbständiges Unternehmen, das aber genau nach dem Konzept betrieben wird.<br />

1.3.6.1 Generizität<br />

Bei <strong>der</strong> Verbreitung <strong>der</strong> Betriebe nach dem Burger-Konzept wirkt die Starrheit des Konzepts geschäftsbehin<strong>der</strong>nd.<br />

Z.B. stellt es sich heraus, daß <strong>der</strong> Unterschied zwischen Burger-Betrieb und Backhähnchen-Betrieb<br />

nur in dem verkauften Produkt besteht. Organisation, Küche, Kasse usw. sind weitgehend identisch. Nichts<br />

liegt näher als sich das generelle Konzept solcher Betriebe schützen zu lassen. Erst bei <strong>der</strong> Neugründung eines<br />

Betriebs wird noch vorher festgelegt, welcher Produkttyp tatsächlich von diesem Betrieb angeboten wird. Das<br />

bedeutet, das Betriebskonzept, nennen wir es Fast-Food-Betrieb, läßt offen welcher Art das Produkt ist. Im<br />

Fast-food-Betrieb werden nur gewisse Einschränkungen für die möglichen Produkte definiert, damit z.B. die<br />

Standardküche, die nach dem allgemeinen Konzept eingerichtet ist, das Produkt auch herstellen kann.<br />

In <strong>der</strong> <strong>Informatik</strong> nennt man diese offengelassene Information Typparameter (in C++ Template). Eine Klasse<br />

mit Typparameter bezeichnet man als generische Klasse. Wird ein Objekt einer Klasse mit einem Typparameter<br />

aufgebaut, so muß man natürlich vorher den aktuellen Typ bekannt geben. Der Typparameter verwandelt<br />

eine Klasse eigentlich in eine Klasse von Klassen. Dadurch bekommen wir eine mächtige Klassifizierungmöglichkeit:<br />

Eine Klasse ist eine spezielle Ausprägung <strong>der</strong> generischen Klasse, in welcher <strong>der</strong> Typparameter einen<br />

festen Wert hat.<br />

1.3.6.2 Vererbung<br />

Ein an<strong>der</strong>es Hemmnis ist die Starrheit des Angebots: Entwe<strong>der</strong> nur Burger o<strong>der</strong> Backhähnchen. In Hessen<br />

ist <strong>der</strong> zusätzliche Kundenwunsch nach “Handkäs mit Musik”, in Bayern nach Weißwurst, im Rheinland<br />

nach Reibekuchen mit Apfelmus, im Ruhrgebiet nach Currywurst, an <strong>der</strong> Nordsee nach Krabbenbrötchen<br />

und in Kärnten nach Kletzenudeln unüberhörbar. Nun ist jedoch das generische Konzept handelsrechtlich<br />

geschützt und jede Än<strong>der</strong>ung von hohen Kosten begleitet. Außerdem ist eine generelle Än<strong>der</strong>ung überhaupt<br />

nicht erwünscht. Handkäs mit Musik bedeutet in Bayern eine Zumutung für die Urbevölkerung! Daher sind<br />

lokale Ergänzungen des bestehenden Konzepts notwendig. Nicht das gesamte Konzept wird geän<strong>der</strong>t, son<strong>der</strong>n<br />

in den verschiedenen Essregionen werden lokale Zusatzleistungen angeboten. Das Konzept <strong>der</strong> lokalen Zusatzangebote<br />

wie<strong>der</strong>holt nicht das ganze Konzept, es beruft sich nur darauf. Ein Betrieb wird also nach dem<br />

lokalen Konzept aufgebaut und “erbt” durch den Verweis auf das Grundkonzept auch dessen Konzept.<br />

Der Mechanismus, <strong>der</strong> diese Spezialisierung o<strong>der</strong> besser Ergänzung ermöglicht, heißt in <strong>der</strong> <strong>Informatik</strong> Vererbung<br />

o<strong>der</strong> Inheritance. Es kann dabei durchaus vorkommen, daß man von verschiedenen Konzepten erbt<br />

(Mehrfach Vererbung): Burger-Konzept und Biergarten-Konzept. Die Vererbung erlaubt uns nun eine Klassifizierung<br />

<strong>der</strong> Klassen in Art von Stammbäumen gemäß ihres Angebots:<br />

Fast-Food-Betrieb(Produkt)<br />

✘✘❳<br />

✘✘✘<br />

❳❳❳<br />

✘✘✘<br />

❳❳❳❳<br />

..........<br />

✘✘<br />

❳❳❳❳ ..........<br />

✘✘<br />

Fast-Food-Hessem(Produkt) Fast-Food-Bayern(Produkt) Fast-Food-Kärnten(Produkt)<br />

✘✘✘❳<br />

✘✘<br />

❳❳ ❳❳❳❳<br />

✘✘✘<br />

✘<br />

❳❳<br />

Weißwurst-mit-süßem-Senf(Produkt) Weißwurst-mit-scharfem-Senf(Produkt)<br />

5 In <strong>der</strong> Mathematik spricht man statt von Klassen eher von abstrakten Datentypen o<strong>der</strong> algebraischen Theorien. Generische<br />

Klassen sind parametrisierte Theorien und das Vererbungskonzept entspricht <strong>der</strong> Theorieerweiterung.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!