SE3: Aufgabe 1.3 vervollständigt und 2.3 bearbeitet.

This commit is contained in:
Jim Martens 2014-01-13 11:57:06 +01:00
parent 209596e423
commit 7e451ae325
1 changed files with 96 additions and 11 deletions

View File

@ -259,22 +259,38 @@ Abgebende: Jim 2martens, Britta 2noack, Jan-Simon 0giesel
; Modifikationen überladen zu werden, sondern werden nur
; ergänzt.
; Ergänzungsmethoden könnten dazu genutzt werden die Basis-cite
; Methode zu ergänzen, sodass nicht eine Methode für jede Publikationsform
; von Nöten ist. Dabei könnten die Informationen schrittweise
; aufgebaut werden. Allgemeine Information zu Beginn, dann buchspezifische,
; dann sammelbandspezifische. Für Zeitschriften würde eine alternative
; Reihenfolge von allgemeinen und zeitschriftenspezifischen
; Informationen genutzt werden.
; Allerdings käme es dort zu Problemen, wo Informationen zwischendrin
; eingefügt werden müssen. Die Sammelbandseitenangabe zum Beispiel erfolgt
; am Schluss, die restlichen Informationen jedoch in der Mitte vor den
; Buchinformationen wie Reihe und Verlag.
; 2)
; 2.1
(defclass fahrzeug ())
;(defclass fahrzeug ())
(defclass landfahrzeug (fahrzeug))
(defclass schienenfahrzeug (landfahrzeug))
(defclass straßenfahrzeug (landfahrzeug))
(defclass wasserfahrzeug (fahrzeug))
(defclass luftfahrzeug (fahrzeug))
; allgemeine Landfahrzeuge
;(defclass landfahrzeug (fahrzeug))
; Schienenfahrzeuge
;(defclass schienenfahrzeug (fahrzeug))
; Straßenfahrzeuge
;(defclass straßenfahrzeug (fahrzeug))
;(defclass wasserfahrzeug (fahrzeug))
;(defclass luftfahrzeug (fahrzeug))
(defclass amphibienfahrzeug (wasserfahrzeug landfahrzeug))
(defclass amphibienflugzeug (luftfahrzeug wasserfahrzeug straßenfahrzeug))
(defclass zweiwegefahrzeug (schienenfahrzeug straßenfahrzeug))
(defclass zeitzug (schienenfahrzeug luftfahrzeug))
;(defclass amphibienfahrzeug (wasserfahrzeug landfahrzeug))
;(defclass amphibienflugzeug (luftfahrzeug wasserfahrzeug straßenfahrzeug))
;(defclass zweiwegefahrzeug (schienenfahrzeug straßenfahrzeug))
;(defclass zeitzug (schienenfahrzeug luftfahrzeug))
; 2.2
@ -299,4 +315,73 @@ Abgebende: Jim 2martens, Britta 2noack, Jan-Simon 0giesel
(defgeneric getPassagierzahl ((fz fahrzeug))
:combination generic-min-combination)
; 2.3
; 2.3
; Implementation zur Abfrage des Mediums
(defclass fahrzeug ()
:printer #t)
(defclass landfahrzeug (fahrzeug)
(check
:reader landfahrzeug-check
:initvalue #t
)
:printer #t)
(defmethod getMedium ((fz landfahrzeug))
'Land)
(defclass schienenfahrzeug (fahrzeug)
:printer #t)
(defmethod getMedium ((fz schienenfahrzeug))
'Schiene)
(defclass straßenfahrzeug (fahrzeug)
:printer #t)
(defmethod getMedium ((fz straßenfahrzeug))
'Straße)
(defclass wasserfahrzeug (fahrzeug))
(defmethod getMedium ((fz wasserfahrzeug))
'Wasser)
(defclass luftfahrzeug (fahrzeug))
(defmethod getMedium ((fz luftfahrzeug))
'Luft)
(defclass amphibienfahrzeug (wasserfahrzeug landfahrzeug))
(defclass amphibienflugzeug (luftfahrzeug wasserfahrzeug straßenfahrzeug))
(defclass zweiwegefahrzeug (schienenfahrzeug straßenfahrzeug))
(defclass zeitzug (schienenfahrzeug luftfahrzeug))
; Die Funktion getMedium wird bei ampFahrzeug zunächst für
; Wasserfahrzeuge aufgerufen, da nach der Klassenpräzedenz-
; liste Wasserfahrzeug vor Landfahrzeug kommt.
; Anschließend wird die Funktion für Landfahrzeuge aufgerufen.
; Da die generische Funktion getMedium mit der list combination
; verwendet wird, werden die Ausgaben der einzelnen Funktionsaufrufe
; in eine Liste kombiniert und zurückgegeben. Das wären in diesem
; Fall also 'Wasser und 'Land, die insgesamte Rückgabe sieht dann
; so aus: '(Wasser Land)
; Da Fahrzeug die generische Funktion nicht implementiert,
; bleibt es bei den beiden Funktionsaufrufen.
; Bei ampFlugzeug funktioniert es analog und es wird
; '(Luft Wasser Straße) zurückgegeben.
; Bei schienenbus verhält es sich analog und die Rückgabe
; ist '(Schiene Straße).
; Für zug wird '(Schiene Luft) zurückgegeben.
; Die Klassenpräzedenzliste ist hier unerlässlich, um die Reihenfolge
; der Funktionen zu bestimmen. Wenn die combination der jeweiligen
; generischen Funktion nur ein Ergebnis zurückgibt (bspw. begin combination),
; dann bestimmt die Liste auch das Ergebnis.
; Ohne eine combination wird auch nur die Funktion ausgeführt,
; deren zugehörige Klasse in der Präzendenzliste ganz vorne steht.
(define ampFahrzeug (make amphibienfahrzeug))
(define ampFlugzeug (make amphibienflugzeug))
(define schienenbus (make zweiwegefahrzeug))
(define zug (make zeitzug))