Download
kapittel 8 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Kapittel 8 PowerPoint Presentation

Kapittel 8

114 Views Download Presentation
Download Presentation

Kapittel 8

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Kapittel 8 Arv

  2. 8.1 Subklasser • Arv er å lage klasser som er basert på eksisterande klasser • Arv er eit sentralt og viktig konsept i oo • Som regel vil vi lage ein ny klasse som er ei spesialisering av ei anna • Den nye klassen skal ha alt den andre har, pluss litt til • Det er dette tillegget som gjer klassen til ein spesiell variant av “foreldreklassen” • is-a forhold

  3. Subklasser • Vi bruker arv for å • Støtte gjenbruk av programvare • Lage god design • Superklasse – subklasse • Bruk av det reserverte ordet extends for å indikere arv • Ein subklasse inneheld automatisk alle variable og metoder som finst i superklassen • Vi ser på Words-eksemplet

  4. Subklasser • Bruk av protected • Subklassen arver alt, men har ikkje direkte tilgang til det som er private • Bruk av public bryt med innkapsling • Det som er protected er synleg kun for subklasser

  5. Subklasser • Bruk av super • Kall til superklassen sine metoder • Blir ofte brukt til å kalle konstruktøren i superklassen • Kun i subklassen sin konstruktør • Alltid første kodelinje • Vi kan også kalle andre metoder (og variable) i superklassen • super.paintComponent(page); • Multippel arv – arv frå fleire klasser samtidig • Blir ikkje brukt i Java

  6. 8.2 Redefinering (overriding) av metoder • Ein subklasse kan redefinere metoder som finst i superklassen • Subklassen kan ha sin eigne implementasjon av metoden • Eventuelt kall til super() og eit tillegg • Viktig med logisk samanheng, slik at den redefinerte metoden har same meinigsinnhold i begge klasser • Skyggevariable • Ikkje bruk slike!

  7. 8.3 Klassehierarki • Ofte er det nok med to klasser, der den eine arver den andre • Til andre formål treng vi fleire klasser, kanskje med arv i fleire ledd • Dette gir eit hierarki av klasser • Object klassen er øverst i alle hierarki • Blir automatisk arva • toString() er definert her

  8. Klassehierarki • Abstrakte klasser • Representerer eit generelt konsept som ikkje er fullstendig nok til å lage objekt av • Kan ikkje instansierast • Blir brukt som superklasse • Bruk av det reserverte ordet abstract • Klasser • Metoder • Inneheld vanlegvis abstrakte metoder • Kan elles innehalde det ein vanleg klasse har

  9. Klassehierarki • Alle klasser med ein eller fleire abstrakte metoder må deklarerast som abstrakte • Abstrakte metoder må implementerast i subklassen • Abstrakte klasser kan samanliknast med interface • Arv kan også brukast for interface • Hierarki også av interface

  10. 8.4 Synlegheit • Alt blir arva • private medlemmer kan ikkje refererast av subklassen • public medlemmer kan refererast av alle • Vi kan bruke protected • FoodAnalyzer – eksemplet • Pizza arver FoodItem • Bruk av private medlemmer i FoodItem skjer kun inne i klassen • Vi får likevel ut det vi treng av informasjon • Ingen objekt av klassen FoodItem blir laga

  11. 8.5 Design og arv • Arv er ein viktig del av objektorientert utvikling og programmering • Pass på at vi får is-a forholdet mellom superklasse og subklasse • Subklassen skal vere ei spesialisering • Lag klassehierarki, plasser fellestrekk langt opp • Redefiner metoder etter behov, unngå skyggevariable • Bruk interface for å imitere multippel arv • Tenk på korleis abstract, public, protected, private bør brukast • Vi kan hindre arv ved å deklarere ein klasse som final

  12. 8.6 Klassehierarki for GUI • Alt er utvikla frå Component • Ein del av hierarkiet er vist i fig 8.7 • Mange abstrakte klasser • Arv i mange ledd • To måtar å lage GUI-komponentar • Bruke ferdigdefinerte klasser som f eks JRadioButton eller JLabel • Lage klasser som arver f eks JApplet eller JPanel • Bruk det som passer til situasjonen, dvs problemet

  13. 8.7 Arv frå adapter - klasser • Alternativ teknikk for å lage listener-klasser • I staden for å implementere interface kan vi arve frå adapter – klasser • Unngår å skrive inn tomme metoder for events vi ikkje er interesserte i • Som vanleg – bruk det som passer best

  14. 8.8 Timer • Finst i javax.swing – pakken • Ein slags usynleg GUI-komponent vi bruker for å generere hendingar over tid • Vi spesifiserer intervall og listener-objekt når vi opprettar Timer-objekt • Koden i actionPerformed() i listener-klassen avgjer korleis vi vil reagere på det som skjer • Rebound - eksemplet