Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop.

Liknende presentasjoner


Presentasjon om: "Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop."— Utskrift av presentasjonen:

1 Kapittel 9 Polymorfi

2 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop = new ChessPiece(); Men det må ikkje nødvendigvis vere slik ChessPiece bishop;... bishop = new Bishop(); Dette er OK dersom Bishop arvar ChessPiece

3 Sein binding Polymorfi betyr ‘ha mange former’ Ein polymorf referanse er ein som kan referere til objekt av ulike klasser over tid På denne måten kan to metodekall for same variabel gi ulik oppførsel ved at ulike versjonar av same metode blir kjørt

4 Sein binding Binding refererer til tidspunktet når eit metodekall blir kopla til koden som skal kjørast Kan skje under kompilering dersom alt er kjent Skjer under kjøring når polymorfe referanser er i bruk Late binding, dynamic binding Kopling til kode kan ikkje skje før vi veit kva klasse det er snakk om Kan vere avhengig av inn-data og bli avgjort under kjøring To måtar å oppnå polymorfi: arv og interface

5 9.2 Polymorfi ved arv Vi deklarerer ein variabel med eit spesielt klassenamn Variabelen kan referere til objekt av denne spesielle klasen Han kan også referere til objekt av klasser som arver denne spesielle klassen Eksempel side 483 Vi må bruke cast om vi vil tilordne eit Mammal - objekt til Horse -referansen Lite aktuelt i praksis

6 Polymorfi ved arv Firm -eksemplet Klassehierarki der StaffMember er abstrakt Arv i fleire ledd Alle har pay() som returnerer ein double Ekstra data og metoder etter behov Merk at vi må bruke cast for å kalle metoder som er definert i subklasser

7 9.3 Polymorfi ved interface I staden for arv kan vi bruke interface for å oppnå polymorfi Variable kan deklarerast med namn på eit interface Ein slik variabel kan referere til objekt av alle klasser som implementerer interfacet Cast når vi kaller på metoder som er definert på klassenivå (ikkje i interfacet) Namn på interface kan også brukast som type på parameter til metoder

8 9.4 Sortering Typisk område der vi bruker polymorfi Vi bryr oss ikkje om kva klasse objekta vi sorterer, tilhøyrer Poenget er at vi kan samanlikne dei Dermed bruker vi Comparable -interfacet som argumenttype Sortering er algoritme-stoff som blir behandla grundigare i In295 Vi går fort gjennom Selection Sort og Insertion Sort

9 9.5 Søking Same argument for bruk av polymorfi som ved sortering Lineært søk Binærsøk Kompleksitet? Meir i In295 og MAT200

10 9.6 Å designe for polymorfi Oppførsel varierer med type Ulike typer kan utføre det same, men på ulike måtar Polymorfi, arv og interface heng tett saman Det er ofte liten vits i å bruke arv utan samtidig å legge opp til polymorfi

11 9.7 Event processing Korleis blir polymorfi brukt? Vi lagar ein listener og legg denne til eit grafisk objekt for å fange opp events generert av objektet, f eks ein JButton Metoden addActionListener() har ingen kjennskap til vår listener-klasse Interfacet ActionListener er spesifisert som parametertype Referanser til objekt av alle klasser som implementerer interfacet kan dermed brukast Om vi lagar ein listener ved arv, så arver vi ein klasse som implementerer ActionListener

12 9.8 og 9.9 Fleire dialogboksar File choosers og color choosers er ferdiglaga komponentar for spesielle formål File chooser for å finne og velge ei fil frå harddisk, cd eller diskett Color chooser for å velge farge frå ein palett

13 9.10 Slider Vi kan bruke ein slider for å la brukaren velge ein verdi innanfor bestemte grenser Praktisk, sidan vi unngår mange feilsituasjonar Slideren genererer change events som vi kan fange opp og reagere på


Laste ned ppt "Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop."

Liknende presentasjoner


Annonser fra Google