Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor
Jesper Mosegaard Multimedie Programmering E2003 Tema Sidste gang: Statements i lingo Lister Metoder Klasser Associeringer af klasser Denne gang Nedarvning og polymorfi i Lingo
Jesper Mosegaard Multimedie Programmering E2003 Tema i modelleringsperspektiv Klasser og statements Associeringer A AB A AB 110..* 1 A *
Jesper Mosegaard Multimedie Programmering E2003 Denne gang i et modelleringsperspektiv Specialiseringer arver egenskaber metoder felt-variable A BC D 10..*
Jesper Mosegaard Multimedie Programmering E2003 Hunde-eksempel Antag at vi har lavet Dyr-klassen Se på Hund-klassen Lingo Java Dyr Hund
Jesper Mosegaard Multimedie Programmering E2003 Hunde-eksempel Klasse navnet
Jesper Mosegaard Multimedie Programmering E2003 Hunde-eksempel kælenavn felt-variabel
Jesper Mosegaard Multimedie Programmering E2003 Hunde-eksempel Konstruktør med argumenter
Jesper Mosegaard Multimedie Programmering E2003 Hunde-eksempel Nedarver fra Dyr Lidt anderledes i Lingo end Java
Jesper Mosegaard Multimedie Programmering E2003 Hunde-eksempel extends ~ ancestor
Jesper Mosegaard Multimedie Programmering E2003 Vigtigste forskel i specialisering I Lingo er super-klassen repræsenteret ved en instans af klassen to objekter ved specialisering Associering ancestor I Java arver vi ”blot” egenskaberne. Et objekt ved specialisering Dyr Hund Dyr Hund klasse diagram objekt diagram ancestor
Jesper Mosegaard Multimedie Programmering E2003 Ancestor property property ancestor Indeholder en instans af klassen vi nedarver fra Er en normal property som vi kan skrive til og læse fra. Initialisere ancestor med et objekt På samme måde som vi ellers ville initialisere en property
Jesper Mosegaard Multimedie Programmering E2003 Messages og Handlers Ancestor felt-variablen er speciel på to punkt: Arver felt-variable fra ancestor (som vi kender fra Java) Metode-kald sendes videre til ancestor objektet hvis ikke metoden findes i det aktuelle objekt messages (metode-kald) beskeder til objekter handlers (metoder) håndtere beskeder
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød”
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød” Er der sådan en metode i dette objekt ?
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød” Er der sådan en metode i dette objekt ? nej
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød” Er der sådan en metode i dette objekt ? nej Send metode-kaldet videre til ancestor
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød”
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød” Er der sådan en metode i dette objekt ? nej Send metode-kaldet videre til ancestor
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød”
Jesper Mosegaard Multimedie Programmering E2003 Metode-kald GravhundHundKødæderDyr ancestor> metode-kald ”SpisKød” Er der sådan en metode i dette objekt ? ja ! Udfør metode-kaldet
Jesper Mosegaard Multimedie Programmering E2003 Variabel polymorfi En variabel kan indeholde objekter af en given type, samt alle subtyper. I Lingo kan alle variable indeholde alle typer af objekter (ingen statiske typer)
Jesper Mosegaard Multimedie Programmering E2003 Metode polymorfi Kald af metode svarende til den dynamiske type. I Java, check af metode-signatur på den statiske type. I Lingo, ingen type-check. Vi prøver at kalde på objektet (dynamisk type). fejl: ”handler not defined”
Jesper Mosegaard Multimedie Programmering E2003 Lad os lave et specialiserings hierarki af personer Ja, det betyder DU skal være aktiv og sige noget Begreber ? Egenskaber ?
Jesper Mosegaard Multimedie Programmering E2003 Et større eksempel
Jesper Mosegaard Multimedie Programmering E2003 Model Hvad er der af begreber? Pacman Spøgelse Vej Mur Spilleplade Spisbar ting Hvordan ser modellen ud for pacman?
Jesper Mosegaard Multimedie Programmering E2003 Pacman model
Jesper Mosegaard Multimedie Programmering E2003 Funktionalitet Hvad skal der ske? Spillet skal initialiseres Brættet skal tegnes Der skal placeres ghosts og pacman Der skal placeres points For hver stepframe skal pacman og ghosts flyttes, og der skal checkes om der sker noget ved disse flytninger Hvis pacman og et ghost er på samme felt, dør pacman Hvis pacman er på et felt med et point, skal det spises
Jesper Mosegaard Multimedie Programmering E2003 Initialisering Lav en klasse der styrer spillet - GameController Initialisering Skab pacman Skab spillepladen Skab grafikken Skab ghosts Når to props møde hinanden Check om prop1 kan spise prop2 Check om prop2 kan spise prop1 Et moviescript (on startMovie) skaber et GameController objekt
Jesper Mosegaard Multimedie Programmering E2003 Flytninger Hvad skal der ske? I hver stepframe skal creatures flytte sig og se hvad der sker ved det. Hvordan beskriver vi det? Objekt interaktion!
Jesper Mosegaard Multimedie Programmering E2003 Flyt - Pacman (1)
Jesper Mosegaard Multimedie Programmering E2003 addProp - Hallway