Veckoplanering


Vecka 36

Kursmaterial

OOP inkapsling Vad är inkapsling
OOP Abstraktion Vad är abstraktion?
OOP Arv Vad är arv?
OOP Polymorfism Vad är polymorfism?
OOP Polymorfism Kevin från filmen Split Kevin är nån av sina olika personligheter han tar formen av Hedwig, Dennis, Patricia, eller The Beast och beter sig olika mot de kidnappade tjejerna beroende av/på vem han är.
OPP komposition istället för arv Kevin från filmen Split har olika personligheter istället för att han är olika personligheter.

Att göra

  • Till varje uppgift nedan börja med att rita upp dess UML klassdiagram innan ni börjar funderar på hur koden ska implementeras.
  • Inkapsling: Som systemutvecklare vill jag skydda en användares e‑post och lösenord så att de inte kan läsas eller ändras direkt utifrån, så att systemet blir säkert och felaktig data inte kan lagras. Systemet ska ha regler som gör att felaktig data för epost och lös ord int kan sättas. Acceptanskriterier: Klassen ska innehålla: losenord (private), epost (private). Det ska inte vara möjligt att läsa eller ändra dessa direkt utifrån. Det ska finnas metoder för att sätta värden: SetLosenord(), SetEpost(). Metoderna ska innehålla regler: lösenord: minst 8 tecken. e‑post: måste ha giltigt format (t.ex. innehålla @).
  • Abstraktion:Bankomaten Som bankkund vill jag kunna ta ut pengar via en enkel metod (TaUtPengar()), så att jag slipper hantera de komplexa steg som sker bakom kulisserna. Acceptanskriterier:Det ska finnas en klass: ATMMaskin- Klassen ska innehålla en metod:TaUtPengar(double belopp). Användaren ska endast behöva anropa denna metod. Metoden ska internt (dolt för användaren): Kontrollera PIN-kod, kontrollera saldo, verifiera att uttaget är tillåtet, uppdatera kontots saldo, skriva ut kvitto. Dessa steg ska implementeras som separata private metoder, VerifieraPIN(), KontrolleraSaldo(), UppdateraSaldo(), SkrivUtKvitto(). Användaren ska inte behöva veta hur dessa steg fungerar. Uppgift: Implementera klassen enligt beskrivningen. Visa hur ett uttag sker med ett enda metodanrop. Förklara hur abstraktion används
  • Arv och polymorfism: Som spelutvecklare vill jag kunna skapa olika typer av fiender som har ett gemensamt beteende (attack()), så att jag kan behandla alla fiender på samma sätt men ändå få olika attackbeteenden beroende på typ. Acceptanskriterier. Det ska finnas en basklass Fiende (gärna en abstrakt klass). Basklassen ska definiera metoden: attack(). Det ska finnas minst två subklasser: Viking och Indian. Varje subklass ska implementera attack() på sitt eget sätt. Programmet ska visa polymorfism genom att: Använda en lista av typen Fiende, anropa attack() på alla objekt. Rita UML klassdiagram över denna arvs hierarki
  • Arv och polymorfism: I ett bibliotekssystem vill jag hantera olika typer av media med metoden (visaInfo()), så att alla objekt behandlas lika men visar olika information. Acceptanskriterier: Abstrakt klass Media, Metod: visaInfo(). Subklasser: Bok,Film. Polymorfism visa via lista.
  • Arv och polymorfism: Som systemutvecklare vill jag modellera olika transportmedel med metoden (transportera()), så att jag kan använda samma kod men få olika beteenden. Acceptanskriterier: Basklass Transport Metod: transportera(). Subklasser: Båt, Flygplan. Polymorfism visa via lista.
  • Komposition: Som spelutvecklare vill jag kunna konfigurera en fiendes attackbeteende genom komposition istället för arv. Genom att separera attacklogiken till egna klasser kan en och samma fiendeklass ändra beteende dynamiskt under spelets gång (t.ex. byta från Vikingattack till IndianAttack och då attacker på olik sätt)dvs Fienden har olika attack beteenden, utan att vi behöver skapa krångliga arvshierarkier.
  • Komposition: Som systemutvecklare vill jag designa ett flexibelt bibliotekssystem med hjälp av komposition istället för arv. Istället för att låta varje medietyp låsa fast sig i en specifik arvs-klasshierarki (Media, Bok, Film), skapar vi en generisk klass Media som har specifika mediatyp/visningsdetalj som hanteras av fristående klasser (Bok, Film). Det gör det enkelt att lägga till nya mediatyp/visningsdetalj (t.ex. Ljudbok eller E-tidning) utan att behöva ändra eller ärva från existerande klasser. Ett Media har en specifika Media/visningdetalj (Flexibelt och modulärt) som kan bytat ut mot en annan MediaVisningsdetalj.
  • Examination: Se kursrummet

Instuderingsfrågor

  • Vad är inkapsling?
  • Varför är inkapsling viktigt?
  • Vad är skillnaden mellan public och private?
  • Vad är abstraktion?
  • Vad är skillnaden mellan Abstraktion och Inkapsling?
  • Vad är en abstrakt klass?
  • Vilka två typer av metoder kan en abstrakt klass innehålla, och vad skiljer dem åt?
  • Vad är ett interface?
  • Vad är arv?
  • Vad är super/bas klass och vad är en subklass?
  • Vad är en är-en relation?
  • Vad är polymorfism?
  • Vad är dynamisk polymorfism?
  • Vad är statisk polymorfism?
  • Varför är polymorfism viktig?
  • Vad är skillnaden mellan arv och polymorfism?
  • Vad är skillnaden mellan inkapsling, abstraktion, arv och polymorfism?
Vecka 37

Kursmaterial

  • boken sid

Att göra

  • Gör nått
  • Examination: Se kursrummet

Instuderingsfrågor

  • Question 3
  • Question 4

Pär Eriksson

Lärare pei@du.se

Hans Jernberg

Lärare hje@du.se
PROGRAM IT-säkerhet och mjukvarutestning samt Systemvetenskapligaprogrammet
SYFTE Kursen behandlar grundläggande koncept inom objektorienterad design (OOD) och mjukvaruutveckling, såsom välkända design patterns och programmeringsprinciper, syftande till att designa kod som är välstrukturerad, samt förståelig, förvaltnings- och skalbar.
KURSPLAN Gå till kursplan hos DU