1 Einleitung. 1.1 Definition und Geschichte. Holger Vogelsang und Peter A. Henning



Ähnliche Dokumente
CARL HANSER VERLAG. Peter Henning, Holger Vogelsang. Taschenbuch Programmiersprachen

1 Mathematische Grundlagen

Programmiersprachen und Programmierkonzepte

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Geschichte der Programmiersprachen

10 Erweiterung und Portierung

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Arbeiten mit UMLed und Delphi

Robot Karol für Delphi

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

ObjectBridge Java Edition

Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Hochschule Ravensburg-Weingarten. Technik Wirtschaft Sozialwesen. Projektarbeit

Anleitung über den Umgang mit Schildern

Zulassung nach MID (Measurement Instruments Directive)

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

mobifleet Beschreibung 1. Terminverwaltung in der Zentrale

Professionelle Seminare im Bereich MS-Office

Erstellen von x-y-diagrammen in OpenOffice.calc

1 topologisches Sortieren

Objektorientierte Programmierung für Anfänger am Beispiel PHP

JetSym. Programmierung in Hochsprache ST nach IEC We automate your success.

Abschnitt 16: Objektorientiertes Design

2 Grundlagen der Programmierung

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Objektorientierte Programmierung OOP

Erstellen eigener HTML Seiten auf ewon

Einführung in. Logische Schaltungen

Objektorientierte Programmierung

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Dokumentenverwaltung im Internet

Lehrer: Einschreibemethoden

Modellierung und Programmierung 1

WEBSEITEN ENTWICKELN MIT ASP.NET

ecaros2 - Accountmanager

AutoCAD Dienstprogramm zur Lizenzübertragung

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Die besten Excel-Tastenkombinationen im Überblick

Einrichtung einer eduroam Verbindung unter dem Betriebssystem Android

Kaiser edv-konzept, Inhaltsverzeichnis

Kulturelle Evolution 12

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Installation OMNIKEY 3121 USB

GEVITAS Farben-Reaktionstest

Grundlagen der Theoretischen Informatik, SoSe 2008

4 Aufzählungen und Listen erstellen

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

SMS/ MMS Multimedia Center

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Einführungskurs MOODLE Themen:

IINFO Storyboard

Bedienung des Web-Portales der Sportbergbetriebe

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Terminabgleich mit Mobiltelefonen

Stapelverarbeitung Teil 1

Wie Sie mit Mastern arbeiten

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

V o r w o r t. A n l e i t u n g

Professionelle Seminare im Bereich MS-Office

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Einfaches, integriertes Projektmanagement mit Standard-Tools effizient planen und umsetzen

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Die Entwicklung eines Glossars (oder eines kontrollierten Vokabulars) für ein Unternehmen geht üblicherweise in 3 Schritten vor sich:

Taschenbuch Programmiersprachen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Die Softwareentwicklungsphasen!

Festigkeit von FDM-3D-Druckteilen

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Produktskizze. 28. November 2005 Projektgruppe Syspect

Funktionale Programmierung (in Clojure)

Softwaretechnik (Allgemeine Informatik) Überblick

Anwendungsbeispiele Buchhaltung

Viele Bilder auf der FA-Homepage

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Primzahlen und RSA-Verschlüsselung

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Ausgangslage, Rolle und Auftrag

3 Wie bekommen Sie Passwortlevel 3 und einen Installateurscode?

Zahlen auf einen Blick

Zwischenablage (Bilder, Texte,...)

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

IT-Basics 2. DI Gerhard Fließ

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

VBA-Programmierung: Zusammenfassung

Zeichen bei Zahlen entschlüsseln

Wichtiges Thema: Ihre private Rente und der viel zu wenig beachtete - Rentenfaktor

Transkript:

17 1 Einleitung Holger Vogelsang und Peter A. Henning 1.1 Definition und Geschichte Ein Programm ist eine Abfolge von Daten und Befehlen an einen Prozessor, um diese Daten in andere Daten umzuwandeln. Es wird in einer formal definierten Sprache verfasst, der Programmiersprache. Die erste höhere Programmiersprache war der 1945 von Konrad Zuse entwickelte Plankalkül [Z72, PK]. Konrad Zuse (1910-1995) ist damit nicht nur der Erbauer des ersten Computers mit Von-Neumann-Architektur (1941), sondern auch der Erfinder der Programmiersprachen. Hinweis: Ein im folgenden Text markiert einen Eintrag im Glossar (Abschnitt 1.5) Computer waren lange Zeit nur in Maschinensprache oder Assembler programmierbar, bis 1954 FORTRAN als erste praktisch einsetzbare höhere Programmiersprache entwickelt wurde. Die ersten Programmiersprachen waren problemorientiert und folgten dem prozeduralen Programmierparadigma. Die Blockorientierung kam erst mit ALGOL auf, um 1970 begann sich mit Pascal die so genannte strukturierte Programmierung durchzusetzen. Parallel dazu entwickelte sich ab ca. 1970 das objektorientierte Programmierparadigma, im Wesentlichen über die Stufen der Sprache Smalltalk. Es mündete ab ca. 1990 in die Einbringung objektorientierter Aspekte in die meisten Programmiersprachen. Symbolische Programmierung zur Lösung nicht-nummerischer Probleme begann um 1960 mit LISP und mündet heute in das deklarative Programmierparadigma. Ab 1960 entwickelten sich aus der Job Control Language JCL eine Vielzahl von Skriptsprachen, die eine einfache Integration anderer Programme und Abläufe ermöglichen. Nach 1975 entstanden deskriptive Sprachen, die jeweils mehr oder weniger Programmlogik beinhalten, vgl. Tabelle 1.3 in Abschnitt 1.7. Heute existieren weit über 1000 verschiedene Programmiersprachen, die teilweise nur wenige Jahre en vogue sind [S96].

18 1 Einleitung 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 Deskriptive Sprachen SGML HTML VRML XML BASIC DSL PostScript Perl REXX Tcl JCL Tcl/Tk Maschinensprache Assembler APL FORTH SQL JavaScript PHP COBOL 68 COBOL 74 awk Python VB.NET VBasic FORTRAN COBOL SNOBOL COBOL 85 C Lambda-Kalkül ALGOL 60 ALGOL 68 FORTRAN 77 FORTRAN 90 FORTRAN 95 COBOL 2002 FORTRAN 2000 PL/I Pascal Ada C++ Simula Oberon LOGO Lisp PROLOG MODULA-2 Miranda Object Pascal/ Delphi Ada95 Scheme Logikkalküle CLOS Java C# Dylan Smalltalk 80 Eiffel Haskell Oz Mondrian Smalltalk CSP Occam CLP Bild 1.1: "Stammbaum" der wichtigsten Programmiersprachen und ihrer Abkömmlinge. Vgl. dazu auch Tabelle 1.3

1.2 Programmentwicklung 19 1.2 Programmentwicklung Die Entwicklung von Programmen erfolgt heute als ingenieurmäßige Arbeit (Software Engineering) und besteht aus mehreren Phasen. In der Spezifikationsphase werden die zu lösenden Probleme im Klartext exakt beschrieben und ggf. Eingrenzungen des Lösungsraumes (z.b. durch Limitierung der Hardware, der Kosten oder der Entwicklungszeit) festgelegt. In der Regel wird dabei ein Lastenheft erstellt. In der Konzeptionsphase wird eine Funktionsplanung des Programmes erstellt, gefolgt von einer Aufwands- und Terminplanung für die Entwicklungsarbeit. In der Entwurfsphase erfolgt zunächst der Systementwurf, in welchem Datenstrukturen, Algorithmen und Schnittstellen festgelegt werden. Er wird vom Programmentwurf gefolgt, in dem die Programmstruktur festgelegt und schrittweise verfeinert wird. Oft erfolgt dies durch Formulierung in einer Zwischensprache, z.b. als Programmablaufplan, Struktogramm oder in einer Modellierungssprache. In der Codierungsphase wird Quelltext in der ausgewählten Programmiersprache erzeugt. Dabei werden in der Regel mehrere Edit-Compile- Test-Zyklen durchlaufen. Tests sind in der Regel aber auf syntaktische und semantische Aspekte beschränkt und überprüfen nicht die eigentliche Programmlogik. Diese Überprüfung erfolgt in der Testphase, meist in Form von Moduloder Klassentests sowie Integrationstests. Im Fehlerfall führt dies zum Rücksprung in die Codierungsphase oder gar in eine noch frühere Phase. Letzteres sollte vermieden werden, weil es den Projekterfolg gefährdet. In der Freigabephase oder Releasephase wird das fertige Software- Produkt an den Endanwender ausgeliefert. Selbstverständlich wird der gesamte Arbeitsablauf vollständig in einer Dokumentation niedergelegt, diese ist mindestens in Teilen auch dem Endanwender auszuhändigen und bildet die Basis für Schulungen. 1.2.1 Industrielle Software-Entwicklung Die industrielle Programmentwicklung versucht heute, mehr und mehr standardisierte Verfahren zu verwenden. Ziel ist einerseits, bereits existierende Programmbestandteile ( Unterprogramme, Module, Klas-

20 1 Einleitung sen, Objekte, Bibliotheken) möglichst ohne Anpassung wiede zu verwenden. Andererseits sollen auch bewährte Architekturen von Programmen oder Programmteilen wieder verwendet werden ( Entwurfsmuster). Im industriellen Sektor haben sich deshalb integrierte Entwicklungsumgebungen ( IDE) weitgehend durchgesetzt. Viele dieser Systeme erlauben auch die gemeinsame Bearbeitung großer Projekte durch Zugriff auf ein gemeinsames Code-Repository, welches eine automatisierte Versionskontrolle bietet. Darüber hinaus bieten solche Entwicklungsumgebungen häufig Code-Generatoren und Möglichkeiten zur visuellen Programmierung an, man spricht dann von CASE-Tools (CASE = Computer Aided Software Engineering). Für die industrielle Software-Entwicklung gibt es eine Vielzahl von Vorgehensmodellen, vom Wasserfallmodell [WM] über das V-Modell [VM] bis zum Extreme Programming [XP]. Bisher hat sich kein Verfahren allgemein durchgesetzt. Der Grund dafür ist in der Vielzahl von unterschiedlichen Firmenkulturen zu suchen, sowie in der Tatsache, dass nach wie vor Menschen mit allen individuellen Stärken und Schwächen die Programme schreiben. Näheres siehe in [TBI]. 1.2.2 Open Source-Software Es ist bewiesen, dass kein formales Verfahren zur Verifizierung beliebiger Programme existiert. Damit kann die Fehlerfreiheit von Programmen weitestgehend nur dann gewährleistet werden, wenn seine Bestandteile lange genug der Kritik von Benutzern ausgesetzt waren. Dies gilt insbesondere für Programme, bei denen auch der Quelltext öffentlich zur Verfügung steht: Fehler können nicht nur entdeckt, sondern von einer Vielzahl von Personen auch im Quelltext lokalisiert werden. Die ersten Open Source-Projekte entstanden schon ab 1965, richtig an Boden gewonnen hat dieses Prinzip aber erst mit dem Aufstieg des Internet. Zwei wichtige Beispiele dafür sind das Open Source-Betriebssystem Linux und der Web-Server Apache. Bei großen Open Source-Projekten arbeiten teilweise mehrere hundert Programmierer zusammen, ohne sich jemals persönlich zu treffen. Das Verfahren ist damit von erheblicher Bedeutung für die Zukunft der Programmentwicklung.

1.3 Programmierung 21 1.2.3 Normung Die internationale Normung von Programmiersprachen erfolgt durch verschiedene Gremien, etwa die International Standardization Organisation ISO und die European Computer Manufacturers Association ECMA. Von Bedeutung ist auch das American National Standards Institute ANSI. Die Bedeutung einer solchen Normung ist jedoch zu relativieren: Einerseits dauert es u.u. Jahrzehnte bis zu einer Normung, andererseits unterlaufen Hersteller die geltenden Normen oft durch rasche Weiterentwicklung proprietärer Sprachen. Die Verwendung genormter Sprachen spielt deshalb in der Neuentwicklung oft eine untergeordnete Rolle - sie ist hingegen eminent wichtig bei der Wartung oder gar Wiederverwendung von älterem Programmcode. Die "natürliche Lebensdauer" einer Software steht deshalb in Zusammenhang mit der Normungsfrage. 1.3 Programmierung 1.3.1 Vorgehensweise Unter Programmierung verstehen wir im Speziellen die Entwurfs- und Codierungsphase des in Abschnitt 1.3 beschriebenen Ablaufs, also Systementwurf, Programmentwurf und Codierung. Dabei werden zunächst die Eingabedaten, die zu verarbeitenden Daten und die Ausgabedaten definiert, strukturiert und mit Namen versehen. Als Nächstes müssen die Programmstruktur entsprechend dem Programmierparadigma der ausgewählten Programmiersprache definiert werden sowie für jede zu erstellende Quelltextdatei ein Programmkopf mit Hinweisen auf Autor, Erstellungsdatum etc. eingegeben werden. Bei integrierten Entwicklungsumgebungen ( IDE) und CASE-Tools erfolgt dies in der Regel halbautomatisch. Schließlich sind die Programmkomponenten als Quelltext einzugeben, hierbei kann in integrierten Umgebungen evtl. eine Unterstützung durch visuelle Programmierung erfolgen. Kommentare sind dabei bereits während der Code-Erzeugung einzubauen, erzeugter Code ist - falls dies nicht automatisch geschieht - mit Versionsnummern zu versehen und zu archivieren.

22 1 Einleitung 1.3.2 Regeln guter Programmierung Quelltext muss unbedingt durch Einrückung von Schleifenebenen, Kommentarzeilen und Leerzeilen strukturiert werden. Variablennamen sollen aussagekräftig sein, wenn möglich sollen ihre Namen durch Binnenmajuskeln (Großbuchstaben im Wortinneren) strukturiert werden. Das Grundprinzip des defensiven Sprachgebrauchs ist zu beachten: Nicht der kürzeste und am schwersten lesbare Code ist der Beste, sondern derjenige mit der größten Einfachheit und Klarheit. Code sollte portabel, d.h. keinesfalls auf einen bestimmten Compiler oder eine bestimmte Laufzeitumgebung zugeschnitten sein. Code für eine bestimmte Rechnerarchitektur oder ein bestimmtes Betriebssystem sollte eindeutig als solcher gekennzeichnet und von der Hauptlogik des Programms möglichst trennbar sein. Direkte Sprungbefehle entsprechen nicht mehr dem Stand der Technik und sollten vermieden werden. 1.4 Klassifizierung von Programmiersprachen Tabelle 1.1: Klassifizierung von Programmiersprachen nach Generationen Generation 1 Binäre Maschinensprachen 2 Assemblersprachen 3 Problemorientiert, imperative/prozedurale Sprachen 4 4GL-Sprachen sind anwendungsorientiert, z.b. SQL, Maple 5 Deklarative Programmiersprachen Tabelle 1.2: Klassifizierung von Programmiersprachen nach dem Programmierparadigma. Zur Erklärung siehe Glossar (Abschnitt 1.5) Paradigma Hier behandelt Weitere Beispiele imperativ/ prozedural funktional/ applikativ logisch/ prädikativ Ada83, BASIC, C, COBOL, FORTRAN, MODULA-2, Pascal LISP PROLOG ALGOL, COMAL, ELAN, PL/I, Simula, SNOBOL Scheme, LOGO, ML, Miranda, Erlang, Haskell CLP

1.4 Klassifizierung von Programmiersprachen 23 objektbasiert objektorientiert JavaScript Ada95, C++, C#, Java, Smalltalk AppleScript Self, Oberon, Eiffel Tabelle 1.3: Die wichtigsten Programmiersprachen Sprache Kurzbeschreibung Ada Vgl. Kapitel 9 ALGOL "Algorithmic Language", ab 1960 ANSYS APL APT "Analysis Systems", zur Beschreibung von Berechnung mit der Finite-Elemente-Methode "A Programming Language", spezifiziert 1961 von Iverson "Automatic Programmed Tools", Sprache für Werkzeugmaschinen ab 1959 Assembler Vgl. Glossar in Abschnitt 1.5 AutoCAD awk BASIC Vgl. Kapitel 12 BCL 4GL-Sprache für Copmputer Aided Design Stringverarbeitungssprache im Betriebssystem Unix Vorläufer von C C Vgl. Kapitel 2 C* C-Dialekt für Parallelprogrammierung C# Vgl. Kapitel 5 C++ Vgl. Kapitel 3 CHILL "CCITT HIgh Level Language", ab 1976 für Telekommunikationszwecke entwickelt CLOS Common LISP Object System, 1988 CLP "Constrained Logic Programming Language" ab 1990 COBOL Vgl. Kapitel 11 CSP Delphi DSL Formale Sprache zur Beschreibung paralleler Prozesse Objektorientierter Nachfolger von Pascal Design System Language, Vorläufer von PostScript Dylan "Dynamic Language", Abkömmling von Scheme, 1992 Eiffel Abkömmling von Smalltalk, 1987 Erlang Echtzeitfähige Sprache mit funktionalem Paradigma FORTH Problemorientierte Sprache ab 1971 FORTRAN 1. höhere Programmiersprache ab 1954, vgl. Kapitel 10

24 1 Einleitung Sprache Kurzbeschreibung Haskell Funktionale Programmiersprache, ab 1990 HTML IDL Java Vgl. Kapitel 4 "Hypertext Markup Language", deskriptive Sprache für Web-- Seiten. Vgl. [TBMM] "Interface Definition Language" zur abstrakten Beschreibung von verteilten Objekten JavaScript Vgl. Kapitel 14 JCL "Job Control Language", Skriptsprache ab 1960 LISP "List Processor", symbolorientierte Sprache ab 1960 LOGO LISP-Abkömmling ab 1970 Maple Vgl. Kapitel 23 Mathematica Vgl. Kapitel 22 Matlab Vgl. Kapitel 24 Miranda Funktionale Skriptsprache Modula-2 Vgl. Kapitel 8 Mondrian Oberon Occam Funktionale Sprache ähnlich Haskell Nachfolger von Modula-2 und Pascal Sprache für Parallelprogrammierung von Transputern Pascal Vgl. Kapitel 6 und 7 PEARL Perl Vgl. Kapitel 15 PHP Vgl. Kapitel 17 "Process and Experimental Automation Realtime Language". PL/I "Programming Lanuage I", Vorläufer von C, ab 1964 PostScript PROLOG Vgl. Kapitel 20 Seitenbeschreibungssprache, vgl. [TBMM] Python Skriptsprache, ab 1991 Scheme LISP-Dialekt, 1975 Self Objektorientierte Sprache, ab 1991 SGML "Standard Generalized Markup Language", deskriptive Sprache zur Markierung von Texten ab 1978 Simula Vorläufer von Smalltalk, 1966 Smalltalk Vgl. Kapitel 21 SNOBOL "String oriented Symbolic Language", 1965 SQL "Standard Query Language", Datenbanksprache seit 1980

1.5 Glossar Programmiersprachen 25 Sprache Kurzbeschreibung Tcl Vgl. Kapitel 16 VBasic Visual Basic, vgl. Kapitel 13 VRML XML "Virtual Reality Modeling Language", eine deskriptive Sprache zur Modellierung dreidimensionaler Welten. vgl. [TBMM] "extensible Markup Language", eine Metasprache zur Definition von deskriptiven Sprachen. Vgl. [TBMM] 1.5 Glossar Programmiersprachen Abgeleitete Klasse Eine abgeleitete Klasse ist eine Spezialisierung einer Basisklasse und erbt deren Eigenschaften. Abstrakte Klasse Von abstrakten Klassen können keine Objekte erzeugt werden. Sie dienen dazu, gemeinsam genutzte Funktionalität für abgeleitete Klassen zur Verfügung zu stellen. Weiterhin erlaubt eine abstrakte Klasse die Festlegung einer gemeinsamen Schnittstelle für alle daraus abgeleiteten Klassen. Abstrakte Operation Es handelt sich hierbei um die Festlegung einer Signatur für eine Operation, ohne das Verhalten (die Methode) zu implementieren. Enthält eine Klasse eine abstrakte Operation, so ist die Klasse selbst auch abstrakt. Abstrakte Operationen können in abgeleiteten Klassen überschrieben und damit implementiert werden. Aggregation Die Aggregation beschreibt eine Beziehung zwischen Klassen, die sich in einer Ganzes-Teile-Hierarchie ausdrückt. Eine Klasse als Ganzes setzt sich aus mehreren anderen Klassen, den Teilen, zusammen. Objekte der Teile können auch weiterexistieren, wenn das Ganze gelöscht wurde. Aktive Klasse Jedes Objekt der Klasse besitzt einen eigenen Kontrollfluss (Thread).

26 1 Einleitung Aktives Objekt Objekt einer aktiven Klasse. Algorithmus Rechenvorschrift Anwendungsorientierte Programmiersprache Sprachen der 4. Generation(vgl. Tabelle 1.1) sind in der Regel an spezielle Zwecke angepasst. Die damit erzeugten Programme liegen nicht als Binärcode vor, sondern werden von speziellen Laufzeitumgebungen meist interpretativ abgearbeitet. Applikatives Programmierparadigma Funktionales Programmierparadigma Architektur Die Architektur definiert die grundlegende Struktur eines Softwaresystems, d.h., seine Zerlegung in Module und deren Zusammenwirken. Argument Parameter einer Operation oder Funktion. Assembler Am Prozessor orientierte Programmiersprache, in welcher direkt der ausführbare Maschinencode programmiert wird. Assoziation Eine Assoziation beschreibt eine allgemeine Beziehung zwischen Klassen. Beispielsweise kann eine Klasse Bild eine Beziehung zur Klasse Position haben, die die Position des Bildes auf dem Bildschirm beinhaltet. Objekte beider Klassen dürfen unabhängig voneinander existieren. Assoziationen können gerichtet (unidirektional) sein. Damit kennt beispielsweise das Bild zwar seine Position, die Position aber nicht das Bild. Die Klassen an den Enden einer Assoziation werden Assoziationsrollen genannt. Kardinalitäten an einer Assoziation drücken aus, wie viele Objekte der Klassen untereinander in Beziehung stehen. Assoziationsrolle Beschreibt die Aufgabe, die eine Klasse in einer Assoziation erfüllt.