krav
This commit is contained in:
parent
075988f327
commit
fd83e1291d
Binary file not shown.
After Width: | Height: | Size: 163 KiB |
|
@ -17,17 +17,15 @@ bruke. Om dere har tatt eller tar TDT4180 - Menneske-maskin-interaksjon kan det
|
|||
å bruke noen av konseptene dere har lært der (men merk at dere ikke vurderes ut i fra det i dette
|
||||
faget).
|
||||
|
||||
Dere skal også lage Controller- og App-klasser som starter appen og kobler sammen brukergrensesnitt og underliggende klasser. Merk at appen deres skal bygges etter Model-ViewController-prinsippet. Det betyr at det skal være et klart skille mellom modell (model), grensesnitt (view), og kontroller (controller) i appen. Her er grensesnittet definert av FXML-filene deres,
|
||||
Dere skal også lage Controller- og App-klasser som starter appen og kobler sammen brukergrensesnitt
|
||||
og underliggende klasser. Merk at appen deres skal bygges etter Model-ViewController-prinsippet.
|
||||
Det betyr at det skal være et klart skille mellom modell (model), grensesnitt (view), og
|
||||
kontroller (controller) i appen. Her er grensesnittet definert av FXML-filene deres,
|
||||
og modellene er de underliggende klassene. Kontrollerens jobb er å binde sammen grensesnitt og
|
||||
modeller, altså å holde verdiene i grensesnittet oppdatert i forhold til modellene, og å reagere på
|
||||
brukerinput i grensesnittet og kalle passende metoder i modellene.
|
||||
```
|
||||
|
||||
I denne delen har vi laget én Application-klasse som laster én hoved-FXML-fil + kontroller, som internt linker til flere andre fxml filer med hver sine kontrollere. Kontrollerne binder sammen sine relevante grensesnittsparametere med en global [`Model`][Model-file]-klasse og setter opp event-lyttere på de relevante FXML-elementene, i tillegg til å sette opp en eventbus mellom seg og de andre kontrollerne for kommunikasjon dem imellom. Eventbus bruker dataklasser arvet fra [`Event`][Event-file]-klassen, som beskrivelse på hvilken type melding som blir sendt. Basert på typen av meldingen skiller eventbusen hvilke funksjoner som skal fyres av. Dette er en variant av observatør-observert metoden.
|
||||
|
||||
Her er et diagram over koblingene i programmet:
|
||||
|
||||
![TODO: ADD DIAGRAM]()
|
||||
|
||||
### Del 2 - Filbehandling
|
||||
|
||||
|
@ -99,17 +97,27 @@ Controller klasser:
|
|||
Brukergrensesnitt:
|
||||
[resources/fxml/][fxml-folder]
|
||||
|
||||
I denne delen har vi laget én Application-klasse som laster én hoved-FXML-fil + kontroller, som internt linker til flere andre fxml filer med hver sine kontrollere. Kontrollerne binder sammen sine relevante grensesnittsparametere med en global [`Model`][Model-file]-klasse og setter opp event-lyttere på de relevante FXML-elementene, i tillegg til å sette opp en eventbus mellom seg og de andre kontrollerne for kommunikasjon dem imellom. Eventbus bruker dataklasser arvet fra [`Event`][Event-file]-klassen, som beskrivelse på hvilken type melding som blir sendt. Basert på typen av meldingen skiller eventbusen hvilke funksjoner som skal fyres av. Dette er en variant av observatør-observert metoden.
|
||||
|
||||
Her er et diagram over koblingene i programmet:
|
||||
|
||||
<div align="center">
|
||||
<img src=".gitlab/graphics/FXML-diagram.png">
|
||||
</div>
|
||||
|
||||
|
||||
2. **Minimum en av klassene må ha noe funksjonalitet utover ren datalagring, en form for kalkulasjoner (i en utvidet betydning av begrepet).**
|
||||
|
||||
Klassene som blir brukt for kalkulasjon har vi lagt i [app/service][service-folder]
|
||||
|
||||
3. **Det skal implementeres korrekt innkapsling og validering for tilstandene til objektene i appen.**
|
||||
|
||||
Ettersom vi bruker en eventbus, så ligger innkapslingen og valideringen for tilstandene i events og i funksjonene som tar input fra brukergrensesnittet. Eksempler på dette kan dere se her:
|
||||
Ettersom vi bruker en eventbus, så ligger innkapslingen og valideringen for tilstandene i events og i funksjonene som tar input fra brukergrensesnittet. I FileOperations er det lagt inn omfattende
|
||||
Eksempler på dette kan dere se her:
|
||||
|
||||
<!-- TODO: Legg til kodelink her -->
|
||||
<!-- TODO: Legg til kodelink her -->
|
||||
<!-- TODO: Legg til kodelink her -->
|
||||
- [events/LanguageChangedEvent.java][LanguageChangedEvent-file]
|
||||
- [events/EditorChangedEvent.java][EditorChangedEvent-file]
|
||||
- [events/ThemeChangedEvent.java][ThemeChangedEvent-file]
|
||||
|
||||
4. **Appen skal organiseres etter Model-View-Controller prinsippet, som beskrevet ovenfor.**
|
||||
|
||||
|
@ -119,15 +127,18 @@ Hovedbitene med state som skal være global for hele applikasjonen ligger i en k
|
|||
|
||||
1. **Et grensesnitt som minimum har en metode for lesing fra og en for skriving til fil.**
|
||||
|
||||
Dette finner dere i <!-- TODO: Legg til kodelink her -->
|
||||
Dette finner dere i [settings/SettingsProviderI.java][interface-file]
|
||||
Her er metodene for lesing fra og skriving til fil som innebærer programmtilstandene.
|
||||
|
||||
2. **Minimum en ny klasse (altså ikke en av klassene dere har lagd tidligere i prosjketet) som implementerer grensesnittet. Klassen skal altså lagre (deler av) tilstanden til appen deres til et valgfritt format og lese inn det samme formatet til appen.**
|
||||
|
||||
Dette finner dere i <!-- TODO: Legg til kodelink her -->
|
||||
Dette finner dere i [settings/SettingsProvider.java][settings-file]
|
||||
SettingsProvider-filen implementerer grensesnittet og realiserer funksjonaliteten. Her blir tilstandene til innstillingene
|
||||
|
||||
|
||||
3. **Brukergrensesnittet i appen må utvides med mulighet for å skrive tilstanden til og lese fra fil.**
|
||||
|
||||
Dette finner dere i <!-- TODO: Legg til kodelink her -->
|
||||
Dette finner dere i [MenubarController.java][MenubarController-file]
|
||||
|
||||
### Del 3 - Feilhåndtering
|
||||
|
||||
|
@ -135,9 +146,7 @@ Dette finner dere i <!-- TODO: Legg til kodelink her -->
|
|||
|
||||
På lik måte som det er lagt inn innkapsling der hvor programmet får input ifra brukeren, er det er det meste av feilhåndteringen blir gjort.
|
||||
|
||||
I tillegg er det blitt lagt til feilhåndtering for filer
|
||||
|
||||
<!-- - Om dere har en eksepsjonelt stor app, kan dere, etter avtale med studass, slippe unna med å bare feilhåndtere deler av koden. -->
|
||||
I tillegg er det blitt lagt til feilhåndtering for filer.
|
||||
|
||||
### Del 4 - Testing
|
||||
|
||||
|
@ -147,8 +156,6 @@ I tillegg er det blitt lagt til feilhåndtering for filer
|
|||
|
||||
Dere finner testene i [src/test/java/app][tests-folder]
|
||||
|
||||
<!-- - Om dere har en eksepsjonelt stor app, kan dere, etter avtale med studass, slippe unna med å bare teste deler av koden. -->
|
||||
|
||||
2. **Enhetstestene skal skrives i JUnit 5.**
|
||||
|
||||
Alle testene er skrevet i JUnit 5, med hjelp fra et par andre biblioteker og plugins som bygger på toppen av JUnit.
|
||||
|
@ -171,4 +178,12 @@ Disse inluderer:
|
|||
[controllers-folder]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/tree/master/src/main/java/app/controllers
|
||||
[fxml-folder]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/tree/master/src/main/resources/fxml/
|
||||
[tests-folder]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/tree/master/src/test/java/app
|
||||
[interface-file]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/blob/master/src/main/java/app/settings/SettingsProviderI.java
|
||||
[settings-file]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/blob/master/src/main/java/app/settings/SettingsProvider.java
|
||||
[MenubarController-file]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/blob/master/src/main/java/app/controllers/MenubarController.java
|
||||
[LanguageChangedEvent-file]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/blob/master/src/main/java/app/events/LanguageChangedEvent.java
|
||||
[EditorChangedEvent-file]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/blob/master/src/main/java/app/events/EditorChangedEvent.java
|
||||
[ThemeChangedEvent-file]: https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/blob/master/src/main/java/app/events/ThemeChangedEvent.java
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue