Versions Compared

Key

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

...

LineEditor-klassen holder rede på en String-verdi og en tekstinnsettingsposisjon og har metoder for å redigere teksten. Tekstinnsettingsposisjonen er et heltall som angir hvor endringer skjer, tilsvarende en (blinkende) cursor som står mellom tegn. Verdien 0 tilsvarer foran første tegn, og høyeste mulige verdi er lengden på teksten, som tilsvarer at cursoren står bak siste tegn. Tilstanden er altså som følger:

  • text (en String-verdi) - teksten
  • cursorIndex insertionIndex - heltall som angir hvor i teksten redigeringer vil skje

...

  • void left() - flytter tekstinnsettingsposisjonen ett tegn til venstre (tilsvarende bruk av venstre piltast)
  • void right() - flytter tekstinnsettingsposisjonen ett tegn til høyre (tilsvarende bruk av høyre piltast)
  • void insertString(String s) - skyter teksten angitt av argumentet s inn i teksten på tekstinnsettingsposisjonen og forskyver tekstinnsettingsposisjonen mot høyre tilsvarende
  • void deleteLeft() - fjerner tegnet til venstre for tekstinnsettingsposisjonen
  • void deleteRight() - fjerner tegnet til venstre høyre for tekstinnsettingsposisjonen
  • String getText() - Returnerer teksten
  • void setText(String) - oppdaterer teksten til å være den nye teksten
  • int getInsertionIndex - returnerer hvor i teksten redigeringer nå skjer 
  • void setInsertionIndex(int) - oppdaterer hvor i teksten redigeringer skal skje

Del 1 -

...

Tilstandsdiagram

Tegn et tilstandsdiagram for en tenkt bruk av LineEditor-klassen, som dekker bruk av alle metodene.

...

Lag en toString()-metode som viser teksten med tegnet '|' skutt inn på tekstinnsettingsposisjonen. Lag så et hovedprogramen main-metode, slik at du kan sjekke at oppførselen stemmer med tilstandsdiagrammet (bruk samme start-tilstand og sekvens av kall).


JExercise-testkode Testkode for oppgaven finner du her: stateandbehavior/LineEditorTest.java

...

. Original-koden (jextest) finner du her: stateandbehavior/LineEditor.jextest.

Ekstraoppgave - frivillige utvidelser

  • Legg til metoden void insert(Object o), som skyter inn en tekstlig representasjon av objektet o som gis som argument.
  • Legg til metoden void left(int n), som flytter tekstinnsettingsposisjonen n tegn til venstre, og skriv om left() til å bruke denne. Hva bør skje dersom tekstinnsettingsposisjonen er mindre enn n?
  • Legg til metoden right(int n), som flytter tekstinnsettingsposisjonen n tegn til høyre, og skriv om right() til å bruke denne. Hva bør skje dersom det er færre enn n tegn til høyre for tekstinnsettingsposisjonen?
  • Utvid tilstanden og legg til metoder for å håndtere markering av region, tilsvarende bruk av shift og piltaster i en vanlig teksteditor. Husk at også de eksisterende metodene må endres til å håndtere dette riktig.

...

Include Page
Bunntekst for JExercise- oppgaver
Bunntekst for JExercise- oppgaver