Upload
zhen
View
23
Download
0
Embed Size (px)
DESCRIPTION
Kapittel 4. Skriving av klasser. 4.1 Anatomien til ein klasse. Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar metoder frå desse klassene - PowerPoint PPT Presentation
Citation preview
Kapittel 4
Skriving av klasser
4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå
klassebiblioteket i Java Vi lagar objekt og brukar metoder frå
desse klassene Vi veit ikkje korleis desse klassene ser
ut “innvendig”, alt vi treng å vite er kva dei tilbyr og korleis vi kan bruke dei
Vi skal no lære å skrive våre eigne klasser i tillegg til slike som berre har ein main() metode
Anatomien til ein klasse Vi treng klasser som representerer
objekt med veldefinert tilstand og oppførsel
Deklarasjoner av data definerer tilstand, metoder definerer oppførsel
Vi kallar data og metoder for medlemmer av klassen
Litt om terning-eksemplet
Anatomien til ein klasse Scope (referanseområde)
Variable på klassenivå er tilgjengelege for alle metodar i klassen
Variable inne i ein metode er ikkje synlege eller tilgjengelege utanfor metoden, dei er sågar ikkje-eksisterande utanfor metoden
Instansdata Alle instanser har eigne data, om vi har fem terning-objekt
har dei kvar sin verdi Når instanser (objekt) blir oppretta, får kvar instans sitt
område i minnet der instansvariable blir lagra UML-diagram
Dette blir sentralt i In212, ikkje fullt så viktig her Nyttig å kunne lese og forstå UML-diagram
4.2 Innkapsling
Innkapsling er eit sentralt prinsipp i objektorientering
Går ut på at objekt skal administrere og kontrollere sine eigne data Kun objektet sjølv skal kunne endre data Kode utanfrå skal ikkje ha direkte tilgang
til dataverdiar Tilgang utanfrå berre via metodar
Innkapsling Vi oppnår innkapsling ved å bruke modifiers
(modifikator, endringsord) Dette er reserverte ord i Java som blir brukt til å
spesifisere spesielle trekk ved konstruksjonar i språket
final – modifier brukt til å deklarere ein konstant Visibility modifiers
private – støttar innkapsling og betyr at medlemmet (variabel eller metode) ikkje er tilgjengeleg utanfrå. Bør alltid brukast for klassevariable
public – medlemmet er tilgjengeleg for alle. Blir brukt for metodar som skal vere tilgjengelege.
protected – dette gjeld arv, som vi kjem tilbake til seinare
Innkapsling Bruk av get- og set-metoder støttar
innkapsling Kan virke overflødig, kvifor ikkje ha
variabelen public i staden for å ha public get- og set-metode? Prinsipielt viktig, lettare å sjå kva vi gjer når
vi brukar ein set-metode objekt.verdi = 7; objekt.setVerdi(7);
Kva om vi vil gi lese, men ikkje skrive-tilgang?
4.3 Innholdet i ein metode Ein metodedeklarasjon består av
Modifier – public, private, static o l Type – void eller type returverdi Identifier – namn på metoden Parameters
Parameterliste som spesifiserer type og namn for verdiar som skal sendast til metoden når han blir kalt
Formelle og verkelege parameter Throws clause – eventuelle exceptions Body – inkludert return
Vi ser på bank account-eksemplet
4.4 Konstruktørar Konstruktøren til ein klasse er ein metode
som blir kalt når eit objekt av klassen blir laga
Konstruktøren må ha same namn som klassen
Konstruktøren har ingen returtype, heller ikkje void
Konstruktøren blir brukt til å initialisere objektet, d v s gi verdi til instansvariable
Default konstruktør som ikkje tek parameter blir brukt om vi ikkje skriv konstruktør
4.5 Grafiske objekt Eksempla SmilingFace og Splat Her lagar vi eigne klasser som arvar JPanel
På denne måten definerer vi tillegg til det som finst i JPanel Vi tegnar på sjølve panelet i staden for å
legge til komponentar i panelet Bruken av super() er kall til JPanel-
klassen, meir om dette når vi kjem til arv
4.6 GUI Viktige konsept når vi skal lage interaktive GUI-
baserte program: Komponentar som viser informasjon eller tilbyr
brukaren å utføre noko Knapper, tekstfelt, menyar
Events er objekt som representerer hendingar vi er interesserte i
Ein knapp som er blitt trykt på genererer eit event-objekt Listeners er objekt som ventar på at ei hending skal
inntreffe, og som reagerer når det skjer Program som er orientert rundt eit GUI og
reagerer på det brukaren gjer, blir kalla event-driven
4.7 Knapper PushCounter
Enkel main() metode som lagar eit JFrame-objekt, legg til eit PushCounterPanel og viser dette
PushCounter-klasse som arvar JPanel Inneheld ein teljar, ein JButton og ein JLabel Legg til ein ButtonListener på JButton-objektet for å
kunne fange opp at brukaren trykker på knappen Indre klasse ButtonListener i PushCounter
Implementerer grensesnittet ActionListener Meir om grensesnitt i kap 6 Bruker indre klasse når ingen andre skal ha tilgang til
klassen
4.8 Tekstfelt
Fahrenheit Bygd på same lest som PushCounter Bruker tekstfelt i staden for knapp I dette tilfellet er det trykk på Enter-
tasten som genererer hendinga vi vil reagere på
actionPerformed() metoden i listener-klassen definerer kva som skal skje