1 / 13

Kapittel 9

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 = new ChessPiece(); Men det må ikkje nødvendigvis vere slik ChessPiece bishop; ... bishop = new Bishop();

badru
Download Presentation

Kapittel 9

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 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å

More Related