1 / 12

Arv

Arv. Idéen i arv et at kunne genbruge gennem generalisering Når der nedarves vil såvel data som metoder ”følge” med i den nye klasse uden at disse dele skal kodes igen

adin
Télécharger la présentation

Arv

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. Arv • Idéen i arv et at kunne genbruge gennem generalisering • Når der nedarves vil såvel data som metoder ”følge” med i den nye klasse uden at disse dele skal kodes igen • Da objekter ”fødes” som en bestemt klasse og kan ikke ændre klasse. Klassen skal selv have en constructor til initiering, der dog kan udnytte constructoren for den nedarvede base klasse.

  2. Polymorfi • Idéen i polymorfi er, at man kan anvende et objekt, der er baseret på arv på et højere abstaktionsniveau (baseret på den overordnede klasse) og alligevel lade det være metoder implementeret på den konkrete klasse der bliver udført. • Behandles en samling objekter med samme metode, kan disse altså give forskellige udførsel afhængig af hvilke klasser de konkret er baseret på. • Metoder af denne type kaldes ofte virtuelle metoder.

  3. C# metod modifier

  4. C# metod modifier

  5. Eksempler på strukturer med arv Det er ikke altid nemt med arve-hirakier Som det ses her kan figurer opdeles i 2-d og 3-d, men hvor skal et punkt nu placeres, idet det jo både kan optræde i forbindelse med 1-d, 2-d og 3-d…. Et andet eksempel er her at der er flere felter knyttet til en elipse end der er behov for til en cirkel (2 punkter og en radius eller 2 radiuser). Det kunne derfor være fristende at lade elpise være en specialisering af en cirkel, men det er ikke matematisk korrekt, idet cirklen her er en speciel elipse. Samme problem vil være omkring et rektangel og et kvadrat. Her kan interfaces være en løsning i stedet.

  6. Eksempler på strukturer med arv

  7. Eksempler på strukturer med arv

  8. Eksempler på strukturer med arv

  9. Eksempler på strukturer med arv

  10. Eksempler på strukturer med arv

  11. Eksempler på strukturer med arv

  12. Eksempler på strukturer med arv Opgave Følgende laves i et consolapplikation projekt. Implementer Kæledyr: • Klassens 3 felter • Constructor til initiering af de 3 felter • Hentalder som en virtual metode, der returner alderen • Fældhår metode der udskriver at hår fældes på consollen • SigNoget som en abstrakt metode • ToString, der returnerer tekst med klassens felter Implementer Kat som nedarver fra Kæledyr: • Constructor til initiering af de 3 felter, ved brug af baseklassens constructor • SigNoget metoder der udskriver Miav på consollen Implementer Hund som nedarver fra Kæledyr: • Klassens ”ekstra” felter • Constructor til initiering af klassens 4 felter, ved brug af baseklassens constructor • Hentalder som returnerer alderen ganget med 7 • SigNoget metoder der udskriver Wow på consollen • ToString, der returnerer tekst med klassens felter I program-klassens Main metode afprøves klasserne. Lav en List<Kæledyr> og tilføj nogle hunde og nogle katte. Lav herefter et gennemløb med foreach og prøv mesom kæledyr. Lav herefter et nyt gennemløb hvor du tester om det er en hund eller kat med is-operatoren og brug as-operatoren eller typecast til hunde-klassen eller katte-klassen for at kunne bruge dennes specielle metoder.

More Related