IOBP 1
Grundlagen der objektorientierten Programmierung. (IUBH-Fernstudium)
Grundlagen der objektorientierten Programmierung. (IUBH-Fernstudium)
Kartei Details
Karten | 106 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Universität |
Erstellt / Aktualisiert | 18.12.2015 / 27.08.2022 |
Weblink |
https://card2brain.ch/box/iobp_1
|
Einbinden |
<iframe src="https://card2brain.ch/box/iobp_1/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Melde dich an, um alle Karten zu sehen.
Ausnahme?
Ein Zustand, der das Programm an der Fortführung des normalen Ablaufs hindert.
Fehlersignal?
Kodiert eine Ausnahme anhand eines Wertes, der außerhalb des fachlich gültigen Wertebereichs liegt. Das aufrufende Programm muss die Kodierung kennen um auf die Ausnahme reagieren zu können.
Der Nachteil bei diesem Vorgehen ist, dass technische fehlersignale und fachliche Rückgabewerte über den gleich Kanal zurückgegeben werten. Diese vermischung führt zu schlechter Softwarequalität und sollte vermieden werden um Programme robuster zu machen.
Klasse Exception?
Objektorientiertes Konzept zur Definiton und Verwendung von Ausnahmen. Enthält eine umfangreiche Sammlung an vordefinierten Standard-Exceptions und liefert spezielle Sprachelemente zum Werfen und Abfangen von Exceptions.
Beispiele für vordefinierte Exceptions sind:
- ArithmeticException
- ArrayIndexOutOfBoundsException
- NullPointerException
Alternativen zum Umgang mit Exceptions?
- Exception wird innerhalb der Methode abgefangen
- Die Exception wird an das aufrufende Programm weitergeleitet.
- Die Exception wird abgefangen und dann mit einer spezifischen Meldung an das aufrufende Programm weitergeleitet.
try/catch-Block?
Dient dem Abfangen von Exceptions. Im try-Block stehen die kritischen Programmanweisungen, im catch-Block werden die Ausnahmen behandelt.
In einem try/catch-Block können auch mehrere catch-Blöcke definiert werden, dies ist sinnvoll, wenn:
- im try-Block unterschiedliche Exceptions auftretetn können und jede seperat behandelt werden soll.
- sichergestellt werden soll, dass neben einer bestimmen Standard-Exception auch alle anderen Exceptions abgefangen werden sollen.
Schlüsselwort throws?
Zeigt in der Methodensignatur an welche Exceptions zuerwarten sind. Der try/catch-Block wird hierdurch in das aufrufende Programm verlagert. Über die Methode getMessage() wird die fehlermeldung ermittelt und auf der Konsole ausgegeben.
Unchecked / Checked Exceptions?
Unchecked Expections müssen nicht abgefangen werden, obwohl mit throws auf sie hingewiesen wurde. Dies gilt für alle Exceptions die Unterklassen von RuntimeException sind. Alle anderen Exceptions, also auch selbst definierte, müssen abgefangen werden.
Schlüsselwort throw?
Diese ermöglicht das Weiterleiten einer spezifischen Fehlermeldung, welche für den Nutzer verständlich ist.
Die Exception muss hierfür innerhalb der Methode mit einem try/catch-Block gefangen werden, um anschließend eine neue Exception zu werfen, die die spezifische Fehlermeldung enthält. Diese wird dem Konstruktor der Fehlermeldung als Parameter übergeben.
Finally-Block?
Hier werden alle Anweisungen festgehalten, die unabhängig vom Auftreten einer Exception, ausgeführt werden sollen.
Eigene Exceptions?
Müssen als Unterklasse der Klasse Exception programmiert werden. Mithilfe der Konstruktoren kann dann festgelegt werden welche Nachrichten von der Exception erzeugt werden. Für den Standardkonstruktor sollte eine Nachricht vordefiniert werden. Hierzu muss der Konstruktor der Oberklasse mit der gewünschten Zeichenfolge aufgerufen werden.
Einsatz von Interfaces?
Zur Trennung von Spezifikation und Implementierung. Man programmiert gegen eine Schnittstelle, statt gegen eine Implementierung. Diese Trennung ermöglicht es die Implementierung bei Bedarf einfach auszutauschen, ohne dass dadurch ein zu großer Anpassungsaufwand entsteht.
Außerdem wird hierdurch die Wiederverwendbarkeit von Klassen oder Paketen erhöht, da diese über die Schnittstelle an vielen Stellen wo sie benötigt wird implementiert werden kann.
Interface?
Werden mit dem Schlüsselwort interface definiert. DIe Syntax ähnelt stark der einer Klasse, mit dem Unterschied dass alle Methoden abstrakt sind. Die Methoden werden erst von den Klassen welche auf dem Interface beruhen implementiert.
Desweiteren ist es, mit Ausnahme von Konstanten, in interfaces nicht erlaubt Attribute zu definieren.
Eine Klasse die ein interface implementiert verwendet das Schlüsselwort implements und den Namen des interface.
use-Assoziation?
Kennzeichnet in der UML, dass eine Klasse eine Schnittstelle verwendet. Besteht aus einem gestricheltem Pfeil mit offener Spitze und wird durch den Stereotyp <<use>> gekennzeichnet. Diese Klasse ruft also mindestens eine Methode der Schnittstelle auf.
Kennzeichnung einer Schnittstelle in der UML?
<<interface>>
Die Vererbungsnotation zur implementierenden Klasse wwird durch einen gestrichelten Pfeil mit geschlossener Pfeilspitze dargestellt.
Vererbung bei Interfaces?
Auch Interfaces können untereinander erben, im Gegensatz zu Klassen unterstützt Java bei Interfaces auch die Vererbung von mehr als einem interface.
Objektorientierung?
Die Objektorientierung ist ein Ansatz in der Softwaretechnik, welche die Erstellung, Weiterentwicklung und Watung von komplexen IT-Systemen unterstützt und vereinfacht. Das IT-System wird als das Zusammenspiel komplexer Objekte beschrieben.
Unterschiedliche Programmierkonzepte?
- Maschinencode
- Assemblercode
- Imperative Programmierung
- Strukturierte Programmierung
- Objektorientierte Programmierung
- Komponentenbasierte Programmierung
- Modellgetriebene Entwicklung
Maschinencode?
- Typische Elemente:
- 1 und 0;
- Einsatzgebiete:
- Nur noch historisch, heute keine Verwendung mehr.
Assemblercode?
Typische Elemente:
- movb $0x61; Prozessorbefehle und direktes Ansprechen von technischen Speicheradressen.
Einsatzgebiete:
- Steuerung für elektronische Geräte, Reaktive Systeme, hardwarenahe Programmierung
Imperative Programmierung?
Typische Elemente:
- WHILE, FOR, GOTO; Weiterentwicklung von Assemblercode, erlauben Schleifen und gezielte Sprünge
Einsatzgebiete:
- Kleine Programme, zur Lösung einfacher Aufgaben.
Strukturierte Programmierung?
Typische Elemente:
- Prozeduren; Strukturierung eines Programms ins Funktionen und Unterfunktionen (Prozeduren & Unterprozeduren)
Einsatzgebiete:
- Einfache Webanwendungen, Technische Steuerkomponenten
Objektorientierte Programmierung?
Typische Elemente:
- Klassen, Objekte, Beziehungen; ein Programm besteht aus koorperierenden Objekten
Einsatzgebiete:
- Große und komplexe Softwaresysteme
Komponentenbasierte Entwicklung?
Typische Elemente:
- Komponenten, Schnittstellen; Teile eines Systems werden zu Komponenten zusammengefasst, die bestimmte Aufgaben erfüllen.
Einsatzgebiete:
- Wiederverwendung von bereits programmierten Funktionen. i.d.R. objektorientrierte Komponenten.
Modellgetriebene Entwicklung?
Typische Elemente:
- Modelle, Code-Generatoren; Programmcode wird mit Hilfe von Code Generatoren automatisch aus Softwaremodellen erzeugt
Einsatzgebiete:
- Wiederverwendung von einfach anpassbaren Querschnittsfunktionen (z.B. Login-Mechanismen), der generierte Code kann der Objektorientierung entsprechen.
Objekt?
Bestandteil eines Systems (objektoriert entwickelte Systeme bestehen fast ausschließlich aus Objekten),
Ein Objekt kann Attribute und Methoden enthalten.
Attribute?
Elemente von Objekten, welche zum Speichern von konkreten Werten verwendet werden. Attribute werden vor einem direkten Zugriff von anderen Objekt versteckt und geschützt. (Prinzip der Datenkapselung).
Methode?
Elemente von Objekten, mit denen Werte von Attributen erstellt, gelesen und verändert, sowie Berechnungen durchgeführt werden können. Methoden ermöglichen es Objekte aufzurufen und mit Attributen zu arbeiten.
Phasen des SW-Prozesses in einem objektorientierten Entwicklungsprozess?
- Objektorientierte Analyse (OOA)
- Objektorientiertes Design (OOD)
- Objekorientierte Programmierung (OOP)
Objekorientierte Analyse?
Ziel ist das umfassende Verständnis dessen was entwickelt werden soll. Es wird ein fachliches Modell gebaut, welches als Grundlage für das Design, sowie für die Kommunikation zwischen Auftraggeber und Auftragnehmer dient.
objektorientiertes Design?
Aufbauend auf dem Analysemodell auf der OOA wird das technische Design des Systems erstellt, auf dessen Grundlage die Entwickler das System implementieren sollen. Diese Aufgabe wird vom Systemarchitekten übernommen.
-
- 1 / 106
-