Skip to content
/ wmc__aufgabe0207 Public template

WMC - Aufgabe 02/07 - COVID-Test

Notifications You must be signed in to change notification settings

spg-puw/wmc__aufgabe0207

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aufgabe COVID-Test

Aufgabe by PUW. Die folgenden Aufgaben wurde aus dem Repository von Koll. Schletz übernommen und um Tests ergänzt.

Aufgabe

In der klassischen objektorientierten Programmierung würde ein kleines Programm, welches den 3G Nachweis von MitarbeiterInnen verwalten kann, so modelliert werden:

Entwickle nun eine JavaScript Lösung für dieses Modell. Dabei müssen natürlich Besonderheiten der Sprache JavaScript berücksichtigt werden:

  • Um eine read-only Collection zu simulieren, kannst du ein get Property für safetyChecks definieren. Es liefert mit function() { return myArray.values(); }; die Elemente als sogenannter iterator.
  • Achte auf die naming conventions der Properties (Kleinschreibung in JavaScript).
  • Es gibt keine Interfaces in JavaScript. Verwende daher normale Klassen, die dann mit extends erweitert werden (siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes). Auch die Antwort von https://stackoverflow.com/questions/29480569/does-ecmascript-6-have-a-convention-for-abstract-classes/30560792 ist hilfreich wenn es darum geht, eine abstrakte Klasse oder ein Interface zu simulieren.
  • Die Methode isValid() im (simulierten) Interface kann in Javascript einfach undefined zurückgeben. Das passiert bei der Deklaration der Funktion ohne Inhalt automatisch.
  • Prüfe bei addSafetyCheck, ob auch ein safety check als Argument übergeben wurde.
  • Deklariere jede Klasse in einem Modul (siehe die Dateien in classes/*.mjs). Die exports und imports sowie die Namensvorgaben sind schon vorhanden.
  • Implementiere die toString Methode für Cured, Test und Vaccination; diese geben jeweils den Klassennamen und das Datum wieder (z.B. Vaccination: DATUM1, DATUM2)
  • Teste die Implementierung in index.mjs mit geeigneten Aufrufen, ein kurzer Democode ist dort schon vorhanden.
  • Führe die Tests (npm run test) durch und behebe alle Fehler in deinem Code.

Die Businesslogik ist einfach:

  • Ein Test ist 48h gültig.
  • Bei Cured (Genesung) liegt die Gültigkeit bei 180 Tagen.
  • Eine Impfung ist bis 270 Tage nach der Zweitimpfung gültig. Achte mit einem set Property darauf, dass secondVaccination nicht überschrieben werden kann wenn es einen Wert besitzt. Außerdem darf es erst gesetzt werden, wenn firstVaccination einen Datumswert besitzt. Ansonsten ist der Wert einfach nicht zu setzen. Auf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set gibt es Informationen über setter.
  • IsSave() liefert true oder false zurück, je nach dem ob der Mitarbeiter zum übergebenen Zeitpunkt mindestens einen gültigen Nachweis in der Collection der Nachweise gespeichert hat.

Testsetup

Es wird jest zum Testen verwendet. Das Setup erfolgt:

npm install

Das Programm selber kann mit folgendem Befehl gestartet werden:

npm run start

Anschließend können die Tests mit folgendem Befehl durchlaufen werden:

npm run test

Releases

No releases published

Packages