1 / 14

Kapittel 8

Kapittel 8. Arv. 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

monita
Télécharger la présentation

Kapittel 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related