Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

Like dokumenter
Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

Objektorientert programmering i Python

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

Læringsmål uke 7. Introduksjon til objektorientert programmering. Paradigmet objektorientering. Objektreferanser. INF1001 Høst 2016 Uke 7

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Hvorfor objektorientert programmering?

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

UNIVERSITETET I OSLO

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Seminaroppgaver IN1010, uke 2

Informasjon Prøveeksamen i IN1000 høsten 2018

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

UNIVERSITETET I OSLO

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Håndtere mange verdier

Velkommen! I dag. Viktige beskjeder. Studieadministrasjonen. IN Høst Siri Moe Jensen Geir Kjetil Sandve Henrik Hillestad

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

Klasser og objekter. Tuva Kristine Thoresen 21. oktober Institutt for Informatikk

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1


Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Informasjon Eksamen i IN1000 høsten 2017

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Løse reelle problemer

Klasser og objekter. Tuva Kristine Thoresen 4. november Institutt for Informatikk

Eksamensoppgaver 2014

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

INF1000 Prøveeksamen Oppgave 7 og 9

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Introduksjon til objektorientert programmering

INF1000: Forelesning 7. Konstruktører Static

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Innhold. IN1000 Høst Hva skal evalueres? Fra kurssidene. Uke 12: Pensumgjennomgang og eksamenstips

Løkker og lister. Løse problemer med programmering. INF1001, uke3 Geir Kjetil Sandve

Hvordan løse problemer med programmering?

I denne oppgaven skal vi gi en enkel innføring til klasser og objekter (ordene forklares senere i teksten).

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

INF1000: Forelesning 7

IN våren 2019 Onsdag 16. januar

INF1000 Eksamen 2014 (modifisert)

IN våren 2018 Tirsdag 16. januar

INF1000 Eksamen 2014 (modifisert)

INF Ekstrainnlevering

EKSAMENSOPPGAVE. : INF-1400 Objektorientert programmering. Oppgavesettet er på 5 sider inklusiv forside

Innhold. Hva skal evalueres? Fra kurssidene. Kapittel 1: Introduction

UNIVERSITETET I OSLO

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Innhold. INF1001 Høst Hva skal evalueres? Fra kurssidene. Uke 13: Repetisjon og pensumgjennomgang

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Løse reelle problemer

TDT4110 IT Grunnkurs Høst 2015

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

IN1010 Objektorientert programmering Våren 2019

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Velkommen til. IN1010 Objektorientert programmering Våren 2018

INF våren 2017

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: NEI

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte

IN uke 2. Presis forståelse av programmering

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

IN1000 Obligatorisk innlevering 7

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Python: Mengder og Dictionaries 3. utgave: Kapittel 9

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

Innhold. INF1000 Høst Hva skal evalueres? Fra kurssidene. Hvorfor har vi en lærebok? Uke 11: Repetisjon og pensumgjennomgang

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

TDT4110 IT Grunnkurs Høst 2016

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

Forkurs i informatikk Python. Andreas Færøvig Olsen

Semantisk Analyse del III

TDT4110 IT Grunnkurs Høst 2014

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

Oppgave 1.1 (1 poeng) Oppgave 1.2 (2 poeng) Oppgave 1.3 (2 poeng) 1.1

INF Obligatorisk innlevering 7 - Hangman

Ch.7: Innføring i klasser

UNIVERSITETET I OSLO

Innføring i Python. Steinar Knutsen

UNIVERSITETET I OSLO

Kap 2: Løkker og lister

Transkript:

Objektorientert programmering i Python IN1000 Høst 2017 uke 9 Siri Moe Jensen Innhold uke 9 Tema: Mer komplekse strukturer Referanser versus objekter Referanser mellom objekter Lister av objekter inkl lister Ordbøker med referanser til objekter Ordbøker med lister Om ukens pensum Ingenting helt nytt (mht Python elementer)! MEN Mer detaljer om hva som faktisk skjer Nye kombinasjoner av elementer og mekanismer dere har sett og brukt før Referanser og objekter En variabel som lagrer objekter er som alle andre variabler, men: Innholdet i variabelen er ikke det objektet vi er ute etter men adressen dit (en referanse, ofte tegnet som en pil) Printer vi referansen, får vi en (litt kryptisk) melding ut Vanskelig? To angrepsmåter Intuisjon, gjenkjenning, se på eksempler Forståelse, detaljkunnskap, «code tracing» antall 5 Teori & praksis (programmering): Må kombineres! Resten av semesteret handler om dette => Mengde, mengde, mengde print() 1

Referanser og objekter Når vi tilordner noe til en heltallsvariabel, får den en ny verdi (heltall) antall = 3 «dot notasjon» For å endre (eller lese av) innholdet i objektet, kaller vi på metoder for det objektet vi er interessert i. Metoden adresserer vi med «dot notasjon» på referansevariabelen. Når vi tilordner noe til en referansevariabele, får den en ny verdi (referanse til et nytt objekt evt None). = rek2 # objektene endres ikke.reduser(1,1) print(.areal()) # angir objekt og metode antall 53 rek2 rek2 _lengde = 35 _bredde= 510 _lengde = 35 4 _bredde= 510 9 «dot notasjon» i flere ledd For å aksessere et objekt trenger vi altså en referanse, og en "public" metode som er tilgjengelig i grensesnittet til objektet (som definert av klassen) Referansen kan ligge i en variabel (som ) eller være en returverdi fra en funksjon eller metode (som igjen kan være kallt på en referanse som var returverdi fra en metode osv osv) Samlinger av verdier Beholdere (containers) er viktige verktøy i programmering Gjør det mulig å organisere samlinger av ulike typer verdier Containere tilbyr ulike egenskaper velger ut fra behov from rektangel import Rektangel print(rektangel(10,15).areal()) # Oppretter nytt Rektangel objekt og # kaller på metoden areal for dette, # printer til slutt returverdi fra areal Så langt har vi sett på Lister (List). Rekkefølge, nummerert Mengder (Set). Unummerert, uten dubletter Ordbøker (Dictionary). Par av nøkkel (typisk tekst) verdi _lengde = 10 _bredde= 15 2

Liste av lister: Referanser i flere ledd counts inneholder en referanse til en liste listen inneholder referanser til andre lister innholdet i disse listene hentes ut med f eks counts[5][0] Liste av lister: Indeksering Vi kan tenke oss strukturen som en tabell med generiske indekser 10/17/2017 Page 9 Eksempel: Informatikk emner (kurs) Vi skal lage et program for å velge informatikk emner Initielle krav: Kunne liste opp alle emner med id (emnekode), antall poeng og høst eller vår semester Designer en klasse Emne med instansvariable som over Bruker en liste for å organisere Emne objekter En klasse for emner class Emne : def init (self,emnekode,sem, stp) : self._semester self._emnekode = sem emnekode self._emnekode self._semester = emnekode sem self._studiepoeng = stp*2 def skrivut (self) : linje = (self._emnekode "(" + "(" + self._semester + "): " + \\ str(self._studiepoeng) + " studiepoeng") print(linje) 3

Samlinger av objekter Mer presist: Samlinger av objekt referanser. Objektene kan også være av klasser vi har skrevet selv (ikke bare f eks lister) Eks: En liste av Emne objekter (referanser til) Dictionaries (ordbøker, maps) kan også ha referanser som verdier, typisk med en instansvariabel fra objektet som nøkkel Eks: Dictionary med Emne objekter Nøkkel: Emnekode Verdi: Referanse til objektet for det emnet Liste med objekter av egen klasse Eksempel: ifiemner Hvert element i listen er (en referanse til) et emne objekt ifiemner = [] ifiemner.append(emne("in1000","host",10)) ifiemner.append(emne("","var",10)) #..osv osv for ettemne in ifiemner : ettemne.skrivut() ifiemner :List 0 1 IN1000 Opprette Dictionary (ordbok) Et program som slår opp telefonnummer Bruker en ordbok der navn er nøkkel, og telefonnummer er verdien contacts = { "Fred": 7235591, "Mary": 3841212, "Bob": 3841212, "Sarah": 2213278 } Ordbok med referanser Verdiene i en ordbok (dictionary) kan være referanser til objekter Eksempel: Ordbok ifiemner med emner Nøkkel (entydig): Emnekode Verdi: Referanse til et Emne objekt 10/17/2017 Page 15 4

Ordbok med referanser II ifiemner = {} #opprettet tom katalog while <flere emner> : <les inn emnekode, semester og poeng> nytt = Emne(emnekode,semester,poeng) ifiemner [emnekode] = nytt ifiemner :Dictionary IN1001 IN2220 IN1001 IN2220 5