Versions Compared

Key

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

...

Vi ser at det er litt mer kode, men i praksis skjer det samme: Teksten i valueTextField blir lengre og lengre. Fordelen med den høyre varianten er at vi deler koden opp i mer håndterlige deler (metoder) med logiske navn. Etterhvert som vi legger til mer logikk, så utvider vi kanskje med flere variabler og metoder og/eller vi utvider metodene vi allerede har laget. et Et viktig prinsipp å skille mellom metoder som endrer på variabler og metoder som oppdaterer det som vises i app-vinduet. Siden vi bare har ett tekstfelt, så trenger vi faktisk bare én metode for å oppdatere app-vinduet, nemlig updateTextField.

For å få oversikt over all logikken som trengs, så er det lurt å prøve å tenke på hva som skal skje for ulike rekkefølger av tastetrykk. Vi har allerede sett hva som skjer hvis en trykker på tall-knappene: valueText blir lengre og lengre. Men hva skal skje når du så trykker på +-knappen? Det er klart at KalkulatorController-en på en eller annen måte må huske det, så den vet at den må utføre +-operasjonen når en senere trykker på =-knappen. Hvis en tenker på mange nok ulike tilfeller, så vil en til slutt ha oversikt over alt kalkulatoren må kunne huske, dvs. lagre i variabler og hvordan disse endre for hvert tilfelle. Det kan være greit å sette opp hvert tilfelle i en tabell, som en så bruker som en slags oppskrift når en begynner på koden.

I tabellen under så har vi laget fem kolonner. Den første, Tastetrykk, viser hva som er tastet så langt. Den andre, Logikk, forklarer med tekst hva som gjøres. De tre neste er variablene som trengs: valueText er tallet en er i ferd med å legge inn, memory er tallet en allerede har skrevet inn eller regnet ut, og operator er den siste operasjonen en trykket på. Verdien i hver variabel-kolonne er resultatet av å utføre det som er beskrevet i Logikk-kolonnen. Den siste er teksten som vises i tekstfeltet. Merk at en for String-variabler skiller mellom null, som du kan tenke på som ingenting og "", som er en tom tekst. 

TastetrykkLogikkString valueTextdouble memoryString operatorvalueTextField.text
(før noen knapper er trykket)memory vises i tekstfeltetnull0.0null"0.0"
1Bygger opp ny valueText, som vises i tekstfeltet"1"0.0null"1"
1, 2Legger nytt siffer bakerst i valueText"12"0.0null"12"
1, 2, +

Gjør om valueText til et tall og legger det i memory.
Blanker valueText og lagrer +-operasjonen i operator

null12.0"+""12.0"
1, 2, +, 3Bygger opp ny valueText"3"12.0"+""3"
1, 2, +, 3, 4Legger nytt siffer bakerst i valueText"34"12.0"+""34"
1, 2, +, 3, 4, =Gjør om valueText til et tall og utfører operator-operasjonen på memory og det nye tallet.
Resultatet legges i memory, og så blankes operator og valueText
null46.0null"46.0"




 

Hva har du lært?

  • å koble FXML-koden til Java-koden med fx:id- og onAction-attributter

...