Alt om uke 10

I uke 10 kommer det to nye tema. F?rst kommer en kort introduksjon til objektorientert programmering (OOP), og s? introduserer vi l?sere programmering av l?sere for ordin?re differensial-likninger (ODEs). Disse to temaene h?rer naturlig sammen fordi OOP gir oss noen praktiske teknikker for ? programmere ODE-l?sere. Begge tema er imidlertid veldig store, og i INF1100 rekker vi bare en kort introduksjon til begge.

Hovedpunkter:
  • Objektorientert programmering er et stort felt, som lett kunne fylt et helt programmeringskurs. I INF1100 fokuserer vi p? to punkter; arv og klasse-hierarkier.
  • Arv bygger direkte p? kapittelet om klasser fra forrige uke. kort fortalt er arv at vi lar en klasse v?re en underklasse av en annen. Underklassen (sub-class) arver alle data og funksjoner (attributter og metoder) fra baseklassen (base class). I tillegg kan underklassen definere sine egne metoder og attributter, eller overskrive metoder fra baseklassen med sine egne spesialversjoner. Dette gir effektive m?ter ? programmere objekter som har en del fellestrekk men som ikke er helt like.
  • Vi kan la flere klasser v?re underklasser av en baseklasse, og vi kan la underklassene ha nye underklasser. Dette kan vi utvide til et hierarki av klasser, med en baseklasse og flere niv?er av underklasser. I programmeringskurs illustreres dette ofte med eksempler fra andre omr?der. F.eks. kan "kj?ret?y" v?re en baseklasse, og naturlige underklasser er "bil", "motorsykkel" etc. Underklassen "bil" kan ha nye underklasser "personbil", "varebil" o.l. Dette gir et naturlig klassehierarki, men likner p? klassehierarkier i programmering ved at alle kj?ret?y har noen felles egenskaper, som samles i baseklassene, og noen spesielle egenskaper, som implementeres i hver enkelt underklasse. I praksis er det imidlertid vanskelig ? finne gode INF1100-eksempler hvor vi har bruk for ? implementere en kj?ret?y-klasse, s? vi skal illustrere klassehierarkier med ODE-l?sere. Dette er sm? programmer som implementerer ulike numeriske metoder for ODEer. De har typisk en del funksjoner som er felles for alle metodene, og noen f? som er spesielle, s? de egner seg godt for ? implementeres som et klassehierarki.
L?ringsm?l for uke 10:
  • Forst? hva arv er, hvordan arv kan brukes til ? lage et hierarki av klasser, og hvorfor dette er nyttig.
  • Kjenne til enkle ODE-l?sere som forlengs Euler og enkle Runge-Kutta metoder, og hvordan de kan implementeres som et hierarki av klasser.
Foiler som ble gjennomg?tt, OOP:
  • Slide 1-20; intro til arv og objektorientert programmering. Viktig stoff.
  • Slide 21-23; ikke viktig.
  • Slide 24-34; OOP for numerisk integrasjon. Ikke gjennomg?tt, ikke pensum, men nyttig lesing for ? forst? OOP og viktige numeriske metoder.
  • Slide 35-42; sammendrag og "summarizing example". Ikke gjennomg?tt, men nyttig ? lese p? egenh?nd.
Foiler som ble gjennomg?tt, ODE-l?sere:
  • 1-26 Introduksjon af Forward Euler-metoden, og implementasjon av denne som en Python-funksjon og som en klasse. Alt dette er veldig viktig stoff som er sentralt i det avsluttende prosjektet og veldig relevant p? eksamen.
  • Vi kom ikke like langt som planlagt i ODE-kapittelet denne uken. Resten vilbli gjennomg?tt tirsdag 8. november.
Av Joakim Sundnes
Publisert 24. okt. 2016 10:00 - Sist endret 4. nov. 2016 13:18