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:

...

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.
Synlighetsmodifikatorer
I denne delen skal du gi attributter og metoder synlighetsmodifikatorer, slik at ikke alle klasser kan endre tilstanden til hverandre, uten at det er hensikten.

Du skal altså

  • Flytte logikk fra KalkulatorController til en Kalkulator-klassen 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.

...