=
TextCell
. Dat is de naam die we verder zullen gebruiken voor onze eigen spreadsheet.01/03/1987
intyp, verschijnt dit als 01/03/87
. Dat komt omdat deze tekst er uitziet als een datum. Terwijl Vincent
ongewijzigd blijft. Dus op zich kan je gewoon tekst ingeven en zaken die er uitzien als getallen of datums behandelen als getallen of datums wanneer nodig. Met andere woorden, we zullen een string[]
gebruiken om ons rooster voor te stellen.string[]
) dat bij opstart wordt aangemaakt. Elke cel bevat op dat moment ""
. Eens dat gebeurd is, tonen we het huidige rooster en wachten we tot de gebruiker een cel aanpast, tot het einde ter tijden, of tot het programma gestopt wordt.null
staat. Lege cellen gedragen zich echter als cellen waarbij we letter per letter een backspace hebben uitgevoerd, dus als een cel met een lege string. Bovendien zullen we null
verderop voor iets anders gebruiken.BerekenEnToonRooster
en WijzigCel
met een lege body implementeren. Zo kan je tenminste het programma compileren.Main
, terwijl het de bedoeling is dat je je spreadsheet kan opstarten van uit je keuzemenu, dus noem je methode TextCellMain
en zet ze in de klasse TextCell
.BerekenEnToonRooster
, omdat we dan zo snel mogelijk onze spreadsheet kunnen zien. We zullen eerst alleen het "toon"-aspect afhandelen. Met andere woorden, we negeren even berekeningen en doen alsof elke cel gewoon een tekstwaarde bevat.GetalVoorstellingNaarLetters
en LetterVoorstellingNaarGetal
. Je moet ze kopiëren uit de tekst en in je klasse zetten. De eerste zet een getal om naar een lettercombinatie (die je boven de cellen kan tonen), de tweede werkt in de omgekeerde richting:Het getal is 4
verschijnt, is dat de methode VeranderGetal
een kopie van de waarde heeft gekregen om mee te werken.WijzigCel
te schrijven.null
staat, de defaultwaarde van een variabele van het type string
. Herinner je dat dit niet hetzelfde is als ""
. Vanaf dan gaan we op zoek naar cellen waarvoor we nog geen resultaat hebben. Als alle nodige inputs voor die cellen al gekend zijn, vullen we ze in. We herhalen dit tot we voor elke cel een resultaat hebben.BerekenOntbrekendeWaardenEenKeer
, die één stapje op de tekening voorstelt, doorlopen we alle reeds berekende cellen. Telkens we een nog niet berekende cel tegenkomen, zoeken we de formule op en proberen we die uit te rekenen voor enkel die cel. De implementatie ziet er zo uit:Split
-methode van een string. Deze breekt een string in stukjes op basis van het meegegeven argument.A
en 1
. We houden het simpel: we kijken gewoon of het stuk tekst begint met een cijfer. Het kan nauwkeuriger, maar omdat formules alleen getallen of cellen kunnen bevatten, is het voor ons voldoende.: