Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Excerpt

I denne oppgaven skal du lære hvordan du kan koble FXML-kode opp mot Java-kode og gjøre applikasjoner interaktive! Målet med denne oppgaven er å lage en enkel kalkulator-applikasjon.

Steg 1: Opprette app-

...

klasse, FXML-fil og controller-klasse

Filene i denne øvingen skal ligge i ovinger/src/encapsulation. Lag først en ny klasse med navnet KalkulatorApp. Åpne KalkulatorApp-klassen og rediger slik at du får følgende kode:

...

ProblemKodeForklaring
Gjøre om fra tekst (String) to (desimal)tall (double)Double.valueOf(text)Du kaller Double-klassen sin valueOf-metode, for å konvertere en tekst til en double.
Gjøre om fra (desimal)tall til tekstString.valueOf(num) eller "" + numDu kaller enten String.valueOf, eller legger num til "", som konverterer num i samme slengen
Sjekke om en String-variabel er ingentingif (text != null) { ... }En bruker != null for å sjekke om er variabel er ingenting
Sjekke om en String-variabel er tomif (text.length() == 0) { ... }text.length() gir deg antall bokstaver i en String, så her sjekker vi om antall bokstaver er 0

 

Steg 4: Innkapsling og utskilling

I det siste steget skal du innkapsle programmet du har laget så langt. Dette gjøres blant annet med en kalkulator-klasse med lese- og endringsmetoder, i tillegg til synlighetsmodifikatorer.

Kalkulator-klasse
I applikasjoner er det vanlig å dele programmet opp i model, view og controller (MVC-arkitektur). I denne oppgaven vil vi dele det opp slik:

  • Model: Kalkulator-klasse som håndterer lesing og endring av tilstanden til kalkulatoren
  • Controller: KalkulatorController-klasse som tar i mot inputs fra viewet og får kalkulator-objektet til å endre tilstand tilsvarende, samt gir tilstanden til kalkulator-objektet til viewet, slik at det kan vises til brukeren av programmet.
  • View: kalkulatorApp.fxml som viser tilstanden til kalkulator-objektet slik vi vil, og som lar brukeren gi inputs.

Til nå har du laget view (kalkulatorApp.fxml) og controller (KalkulatorController). Modellen vil da være en egen klasse, Kalkulator, som skal ta for seg alt som har med tilstanden til selve kalkulatoren å gjøre, dette krever innkapslede metoder for lesing og endring av attributter innen kalkulator-klassen.

Du skal altså

  • Flytte logikk fra KalkulatorController til en Kalkulator-klasse som endrer tilstanden til en kalkulator, som for eksempel memory-feltet og metoder som endrer tilstanden til kalkulatoren.
  • Innkapsle kalkulatoren for å sørge for at den har gyldig tilstand, med både lese- og endringsmetoder, samt synlighetsmodifikatorer.

PS: Husk at hva som skrives inn i selve tekstfeltet er en grafisk del og trenger ikke være en del av kalkulatoren før en har trykket på en operator.