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
|
||||
; 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))
|
Loading…
Reference in New Issue