mirror of https://github.com/2martens/uni.git
SE3: Aufgabe 1.3 vervollständigt und 2.3 bearbeitet.
This commit is contained in:
parent
209596e423
commit
7e451ae325
|
@ -259,22 +259,38 @@ Abgebende: Jim 2martens, Britta 2noack, Jan-Simon 0giesel
|
||||||
; Modifikationen überladen zu werden, sondern werden nur
|
; Modifikationen überladen zu werden, sondern werden nur
|
||||||
; ergänzt.
|
; 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)
|
||||||
|
|
||||||
; 2.1
|
; 2.1
|
||||||
|
|
||||||
(defclass fahrzeug ())
|
;(defclass fahrzeug ())
|
||||||
|
|
||||||
(defclass landfahrzeug (fahrzeug))
|
; allgemeine Landfahrzeuge
|
||||||
(defclass schienenfahrzeug (landfahrzeug))
|
;(defclass landfahrzeug (fahrzeug))
|
||||||
(defclass straßenfahrzeug (landfahrzeug))
|
; Schienenfahrzeuge
|
||||||
(defclass wasserfahrzeug (fahrzeug))
|
;(defclass schienenfahrzeug (fahrzeug))
|
||||||
(defclass luftfahrzeug (fahrzeug))
|
; Straßenfahrzeuge
|
||||||
|
;(defclass straßenfahrzeug (fahrzeug))
|
||||||
|
;(defclass wasserfahrzeug (fahrzeug))
|
||||||
|
;(defclass luftfahrzeug (fahrzeug))
|
||||||
|
|
||||||
(defclass amphibienfahrzeug (wasserfahrzeug landfahrzeug))
|
;(defclass amphibienfahrzeug (wasserfahrzeug landfahrzeug))
|
||||||
(defclass amphibienflugzeug (luftfahrzeug wasserfahrzeug straßenfahrzeug))
|
;(defclass amphibienflugzeug (luftfahrzeug wasserfahrzeug straßenfahrzeug))
|
||||||
(defclass zweiwegefahrzeug (schienenfahrzeug straßenfahrzeug))
|
;(defclass zweiwegefahrzeug (schienenfahrzeug straßenfahrzeug))
|
||||||
(defclass zeitzug (schienenfahrzeug luftfahrzeug))
|
;(defclass zeitzug (schienenfahrzeug luftfahrzeug))
|
||||||
|
|
||||||
; 2.2
|
; 2.2
|
||||||
|
|
||||||
|
@ -299,4 +315,73 @@ Abgebende: Jim 2martens, Britta 2noack, Jan-Simon 0giesel
|
||||||
(defgeneric getPassagierzahl ((fz fahrzeug))
|
(defgeneric getPassagierzahl ((fz fahrzeug))
|
||||||
:combination generic-min-combination)
|
: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))
|
Loading…
Reference in New Issue