Zeitwert eines Autos

Ein mathematisches Modell für ein Auto finden

Unter preise.autoscout24.de lässt sich der durchschnittliche Inseratspreis verschiedener Autos recherchieren. Betrachtet man sich die Preise z.B. für einen VW Golf ergibt sich folgendes Bild:

Golfwert nach Alter Golfwert nach Alter

Ob man nun das Alter, die Laufleistung, die Zahl der Vorbesitzer oder andere Faktoren betrachtet: Der Marktwert verringert sich immer, wenn einer dieser Faktoren wächst. Dabei ist der Wertverlust am Anfang eher hoch, wird dann aber immer kleiner. Ob ein Auto 0km oder 10.000km gefahren ist macht einen großen Unterschied im Preis aus, während der Wertverlust zwischen 240.000km oder 250.000km Fahrleistung beinahe vernachlässigbar ist. Analog verhält es sich mit dem Alter oder der Zahl der Vorbesitzer. Für den Anfang reicht es, das Alter des Autos zu berücksichtigen. Wenn man den Restwert eines Autos in Abhängigkeit vom Neupreis und dem Alter berechnen möchte, benötigt man also eine Funktion, die ungefähr folgendermaßen aussieht:
Funktionsplot

Aufgabe 1

Finde eine Funktion f, die folgenden Zusammenhang näherungsweise erfüllt:

restwert = neupreis * f(alter)

Beachte: Die Funktion schneidet die y-Achse. (Warum muss das so sein?)
Tipp: Du kannst Deine Ideen auch mit einem Funktionsplotter oder Geogebra online testen.

Ein objektorientiertes Modell für ein Auto finden

Um ein Auto im Computer darstellen zu können, müssen wir (z.B.) ein objektorientiertes Modell dazu finden. Dazu müssen wir uns fragen:

Oder anders ausgedrückt:

Wesentliche Eigenschaften sind sicher: Der Neupreis und das Alter eines Autos. Wesentliche Fähigkeiten sind sicher: "Berechne den aktuellen Marktwert", "Berechne den Wertverlust" oder "Berechne den zu erwartenden Händler-Einkaufspreis". Letzterer liegt sicher unter dem Marktwert, da der Händler an dem Auto ja auch verdienen möchte.

Ein Klassendiagramm könnte also folgendermaßen aussehen:

Klassendiagramm Auto

Beachte: Methoden, die Werte berechnen und zurück geben, werden üblicherweise mit get... begonnen. Der Datentyp double wird für Kommazahlen benutzt.

Aufgabe 2

Betrachte die verwendeten Datentypen und die Signatur der Methoden. Begründe die Auswahl. Welche Alternativen hätte es noch gegeben? Warum benötigen die Methoden hier keine Parameter, z.B. für das Alter?

Ein Automodell objektorientiert implementieren

Wie man das Klassendiagramm mit Hilfe von BlueJ und Java umsetzt, zeigt Dir der Screencast:

Aufgabe 3

Objekte initialisieren

Das Auto besitzt noch nicht das gewünschte Verhalten. Es muss möglich sein die Attribute, z.B. bei der Erzeugung des Objektes, mit entsprechenden Werten zu belegen. Dies erreicht man durch Einführung eines Konstruktors. Man kann diesen auch im Klassendiagramm darstellen. Dort ordnet man ihn dann bei den Methoden ein. In manchen Sprachen spricht man auch von der "Konstruktormethode". In Java ist das eher unüblich, da es (unabhänig von Java) einige Unterschiede zwischen gewöhnlichen Methoden und Konstruktoren gibt.

Klassendiagramm Auto mit Konstruktor

Im Quellcode wird der Konstruktor - üblicherweise zwischen Attributen und Methoden - folgendermaßen ergänzt:

Konstruktor - Code

Aufgabe 4

Attributwerte verändern

Wirklich nützlich wird das Programm erst, wenn man auch mit den Attributwerten experimentieren kann, und testen kann wie sich z.B. eine Veränderung des Alters auf den Wert des Autos auswirkt.

Wenn Du den Objektinspektor aufrufst, wirst Du allerdings merken, dass Du dort den Wert der Attribute nur sehen, aber nicht verändern kannst. Normalerweise greift man auf Attribute nur indirekt über Methoden zu. Warum das so ist, wirst Du im nächsten Projekt genauer erfahren. Du benötigst also eine Methode, die nichts anderes macht, als den Attributwert für das Attribut alter zu verändern. Der folgende Screencast demonstriert dies:

Das Klassendiagramm hat nun folgende Gestalt:

Klassendiagramm Auto mit setAlter-Methode

Aufgabe 5

Probiere das selbst aus.

Grenzen von Modellen

Wir haben oben Modelle entwickelt, um den Wert eines Autos zu berechnen. Modelle vereinfachen dabei sehr häufig die zu beschreibende Realität.

Aufgabe 6

Welche Grenzen hat das bisher benutzte Modell? Wie könnte man das Modell verbessern?
X

Fehler melden

X

Suche