160 likes | 271 Views
Nedarvning & polymorfisme. Intro nedarvning (eng.: inheritance ) Nedarvningshierarkier Intro polymorfisme (eng .: polymorphism ) Abstract / virtual / override / sealed Intro interfaces Abstract vs interface Steen Jensen , efterår 2013. Nedarvning (eng.: inheritance ).
E N D
Nedarvning & polymorfisme • Intro nedarvning (eng.: inheritance) • Nedarvningshierarkier • Intro polymorfisme (eng.: polymorphism) • Abstract / virtual / override / sealed • Intro interfaces • Abstractvs interface • Steen Jensen, efterår 2013
Nedarvning (eng.: inheritance) En given klasse kan nedarve fra en anden klasse Forældre-klassen kaldes base class, og børne-klassen kaldes derivedclass (dansk: afledt klasse)
Nedarvningshierarkier Nedarvningshierarkier kan opbygges
Video-øvelse – nedarvning (inheritance) • Gå ind på http://www.youtube.com/watch?v=aKaneSO9HLc • Se videoen igennem (varer ca. 8 min.) – efter du har set videoen, skal du kunne redegøre for følgende i plenum: • Hvordan angiver man, at man ønsker at nedarve fra en anden klasse? • Forklar forskel på private, public og protected • Formål med keywordbase? • Hvilke 2 måder kan man overwritepå?
Polymorfisme (eng.: polymorphism) • Ordet polymorfisme stammer fra græsk og er sammensat af ordene poly(= mange) og morph(= form), altså mange former • Dette svarer til, at et ord kan have flere meninger afhængig af den givne kontekst / situation • I OO-sammenhæng betyder det, at den samme metode og signatur kan udløse forskellige handlinger afhængig af typen af objekt, som metoden kaldes med
Øvelse 1 – polymorfisme (polymorphism) • Gå ind på http://www.slideshare.net/gauravsitu/polymorphism-12270448 • Se slideshowet igennem (17 slides) – efter du har set slideshowet, skal du kunne redegøre for følgende i plenum: • Forklar begrebet methodoverloading • Forklar begrebet methodoverriding • Forklar forskel på compile time polymorphism(statisk polymorfisme) og run time polymorphism(dynamisk polymorfisme)
Øvelse 2 – polymorfisme (polymorphism) • Gå ind på http://www.youtube.com/watch?v=4a_iTOtGhM8 • NB! Derivedclass kaldes her for tailedclass • Se videoen igennem (ca. 14 min.) – efter du har set videoen, skal du kunne redegøre for følgende i plenum: • Forklar formål med virtual + override • Er der tale om statisk eller dynamisk polymorfisme i eksemplet og hvorfor?
Vigtige keywords • Kun metoder erklæret som virtual, overrideeller abstractkan overskrives (eng.: override) i afledte (eng.: derived) klasser • En metode erklæret som sealedi en forældreklasse (eng.: base class) kan ikke overskrives i afledte klasser • Se beskrivelse af abstract + sealedher:http://msdn.microsoft.com/en-us/library/ms173150.aspx
Øvelse 3 – polymorfisme (polymorphism) Gå ind påhttp://www.onlinebuff.com/article_oops-principle-polymorphism-in-c-with-an-example_17.html Læs/kig eksemplerne igennem Klik derefter på Viewsource(NB! flere steder) under ’Simple example of polymorphismusing c sharp’ Copy/paste kode ind i Visual Studio og kør koden Udvid eksemplet, så der også kan beregnes arealet af et kvadrat Slut af med at ændre eksemplet, så brugeren kan indtaste, hvilken figur der skal beregnes areal for, samt en radius/sidelængde. Ud fra de indtastede data beregnes det relevante areal, som udskrives
Interfaces • Interfaces definerer egenskaber (eng.: properties), metoder og hændelser (eng.: events), som tilhører interfacet • Interfaces indeholder kun erklæringen (eng.: declaration) af disse dele • Det er den afledte (eng.: derived) klasses opgave at definere delene • Et interface kan betragtes som en kontrakt
Øvelse 1 – interfaces • Gå ind på http://www.tutorialspoint.com/csharp/csharp_interfaces.htm • Læs/kig eksemplerne igennem – efter du har gjort det, skal du kunne redegøre for følgende i plenum: • Hvad er formålet med interfaces? • Hvordan defineres et interface, og hvordan benytter man det?
Øvelse 2 – interfaces • Gå ind på http://www.youtube.com/watch?v=jh4y8HzGqCQ • Se videoen igennem (ca. 9min.) – efter du har set videoen, skal du kunne redegøre for følgende i plenum: • Hvordan kan interfaces være med til at sikre konsistens mellem forskellige klasser?
Øvelse 3 – interfaces • Gå ind på http://www.youtube.com/watch?v=TZi86NDFwNU • Se videoen igennem (ca. 7min.) – efter du har set videoen, skal du kunne redegøre for følgende i plenum: • Hvordan kan man implementere polymorfisme gennem interfaces?
Abstractvs interface Ovenstående figur samt tommelfingerregler kan ses på http://browse.feedreader.com/c/NET_Concepts_Simplified_For_Interviews/270053544
Programmeringsøvelser – nedarvning & polymorfisme • Resten af dagen + fortsæt torsdag: • Prøv at diskutere, om den hidtidige implementering af Spejdersystemet kan ændres, så der benyttes nogle af principperne fra dagens slides: nedarvning (inheritance) / polymorfisme / interfaces • Når I fortsætter med de nye use cases, så prøv også at bruge principperne fra dagens slides