Henrik Hillestad Løvold
Objektorientert programmering med PYTHON

![]()
Henrik Hillestad Løvold

HenrikHillestadLøvold

Copyright © 2024by
Vigmostad&BjørkeAS
AllRightsReserved
1.utgave2024/1.opplag2024
ISBN:978-82-450-5156-8
Grafiskproduksjon:JohnGrieg,Bergen
Omslagsdesign:EndreBarstad
ForfatterenharmottattstøttefraDetfaglitterærefond.
BokenerutgittmedstøttefraKunnskapsdepartementet vedLærebokordningenforhøyereutdanning.
Spørsmålomdennebokenkanrettestil: Fagbokforlaget
Kanalveien51 5068Bergen
Tlf.:55388800
e-post:fagbokforlaget@fagbokforlaget.no www.fagbokforlaget.no
Materialetervernetetteråndsverkloven.
Utenuttrykkeligsamtykkeereksemplarfremstilling baretillattnårdeterhjemletilovelleravtalemedKopinor.
Vigmostad&BjørkeASerMiljøfyrtårn-sertifisert, ogbøkeneerprodusertimiljøsertifisertetrykkerier.

Jegbegyntesåsmåttåprogrammeredajeggikkpåungdomsskolen, dengangiNotepadpåWindows98.MinvennHansPetterogjeg skrevnettsideriHTML3.0,ogselvomminnettside kalkunweb.com ble relativtålreit,forstodjegaldrihvordanhanfikktiltable-tag’en.
Mittførstemøtemedprogrammeringienfagligkontekstvar,utrolignok,iFlash/ActionScript3.0.Heleandreåretmittpåvideregående skrevvimerksnodigeskriptsomutrolignokfikkfigurertilåbevegeseg påskjermen.Detvarogsådetteåretjegforstodatdethet“while-løkker” ogikke“whælløkker”,somminlæreroftesa.
I2012startetjegmittinformatikk-studiumvedUniversitetetiOslo. Studietbødpåmangefagligeutfordringer,ogetterbådeoppturerog nedturer(jegserpådeg, Metoderigrafiskdatabehandlingogdiskret geometri )gikkjegutmedenmastergradi2017.
Detsomfengetmegmestunderstudietvarikkebarestudietselv,men ogsåmittarbeidsomgruppelærerikurseneomobjektorientertprogrammering.Åundervisesammenmeddyktigemedstudentersliksom AstridHeleneHolterogMalinAandahlgamegmotivasjonoginspirasjon.
Medlittflaks,myehjelpfrauniversitetslektorSiriMoeJensenogArbeidsmiljøloven§14-9endtejegtilsluttoppmedenfaststillingved UiO.I2021blejegtilbudtenstillingvedUiTiTromsøsomjegvalgteå tiltre,mensjegbeholdtkontaktenmedUiOgjennomenbistilling.
Idagerjegtakknemligforåfålovtilåunderviseinformatikkogprogrammeringtilbådebachelor-ogmasterstudenter.Åsenyestudenter kommeinniauditorietforførstegang,ogfemårseneresedesamme studenteneforlateuniversitetetmedenmastergradsomjegharbidratt til,gjørmegbådegladoglittvemodig.
Åskriveenbokeretstortarbeid,ogenspesielltakkmårettestilmin kjæreFridaE.Aasenforatjegharfåtttidtilarbeidet.Utenhennes hjelpogstøttevilleikkedetteprosjektetblittnoeav.
EnstortakkmåogsårettestilNorskfaglitterærforfatter-ogoversetterforening,somhargittstøttetilåskrivedenneboken.
Jeghåperdulikerdenneboken,atdenkanvekkenysgjerrighetoggi motivasjontilålære.
Idennebokenharjegtattformegdegrunnleggendekonsepteneiobjektorientertprogrammering,ogbrukerPythonsomprogrammeringsspråkforåvisehvordandukanbrukeobjektorientertprogrammering ipraksis.Dutrengerikkehaprogrammeringserfaringfrafør,forboken startermedeninnføringigrunnleggendeprogrammering.Hvisdukan dettefrafør,ogermerinteressertiåfordypedegidenobjektorienterte delen,såerdetbareåhoppeoverdenførstedelen.
Objektorientertprogrammeringeretprogrammeringsparadigmesom bleutvikletpå60-tallet,ogsomharsittutspringfraUniversiteteti Oslo.ProfessoreneOle-JohanDahlogKristenNygaardønsketåta programmeringennærmeredekonseptenevikjennerfradenvirkeligeverden.Deintrodusertebegrepeneklasserogobjekterforåkunne modellereprogrammerpåennaturligogoversiktligmåte.Idagerobjektorienteringetavdemestbrukteparadigmeneiprogrammeringsom benyttesbådeiforskning,undervisningognæringsliv.
Pythoneretspråksomermyebenyttetiundervisning,ettersomuttrykksformenispråketerrelativtnærtnaturligespråksomvibenytter idetdaglige.Språketbleførstutvikletpåsluttenav80-tallet,oger nåiversjon3.Pythonerbyggetoppsometutelukkendeobjektorientertspråk,ogegnersegderforgodtfordemsomønskeretlettfattelig språksomdekkerdeobjektorienterteprinsippenegodt.Utenomundervisningbenyttesdetmyeiforskningpågrunnavsingodestøttefor matematiskeogstatistiskeapplikasjoner,menogsåinæringslivetialt fraweb-programmeringtilkompleksesystemer.
Dennebokendekkerpensumidegrunnleggendeemneneiobjektorientertprogrammeringsomtypiskgisiløpetavdetførsteåretveduniversiteteroghøgskoler.Denerspesielttilpassetundervisningenslikden gisiNorge,ogharetlettfatteligspråkogkortekapitler.Hvertkapittel oppsummeresieksempeloppgaversomdetkanværenyttigågjørefor åbekrefteatmanharforståttdetmanharlest.
Takk!
HenrikHillestadLøvold,Tromsø,juni2024
1Hvaerprogrammering?15
2Objektorientertprogrammering19
4Utsagn,variablerogdatatyper33
9Løkker73
IIIObjektorientertprogrammering
12Objekter101
13Klasser105 13.1Definereegnedatatyper....................
14Referanser113
15Objektorientertdesign125
16Modelleringogdokumentasjon137
17Etstørreobjektorientertsystem151
IVAvanserteobjektorienterteprinsipper
18Arv171
18.1Superklasserogsubklasser...................
18.1.1Flereklasserarverfrasammesuperklasse......
18.2Polymorfi............................
18.3Multippelarv..........................
18.3.1Diamantproblemet...................
18.3.2Enlitenadvarsel....................
18.4Operatoroverloading......................
18.4.1Likhetmellomobjekter................
19Avansertedesignmønstre189 19.1Arvogkomposisjon.......................
19.1.1Arv...........................
19.1.2Komposisjon......................
19.1.3Arvversuskomposisjon................
20Egnedatastrukturermedklasserogobjekter203 20.1Lenketliste...........................
20.1.1Oppbyggingavenlenketliste.............
20.1.2Fjerneobjekter.....................
20.1.3Andrelisteoperasjoner.................
20.2.1Rekursjonmedobjekter................
20.4Oppgaver............................
21Testingavobjektorienterteprogrammer211 21.1Enhetstesting..........................
21.1.1Åskriveenhetstester..................


Objektorientert programmering med Python er en lett tilgjengelig innføringsbok skrevet for å dekke pensum i grunnleggende objektorientert programmering ved universiteter og høgskoler.
Objektorientert programmering (OOP) organiserer kode rundt objekter, noe som gjør det lettere å modellere virkelige objekter og deres interaksjoner på en naturlig måte. OOP har fordeler som modularitet, gjenbrukbarhet, enkel feilsøking, skalerbarhet og bedre vedlikehold. Det ble utviklet ved Universitetet i Oslo på 60tallet og har nå blitt det mest utbredte programmeringsparadigmet verden over. Python har en enkel og lesbar syntaks som gjør det svært brukervennlig. Det støtter fullt ut OOP og er derfor et velegnet språk for å lære og forstå objektorienterte prinsipper.
Du trenger ingen forhåndskunnskaper i programmering, da boken starter fra grunnleggende konsepter og bygger videre derfra. Så enten du er nybegynner uten programmeringserfaring eller mer erfaren og ønsker å dykke dypere inn i OOP med Python, vil denne boken være for deg. Boken er strukturert med korte og oversiktlige kapitler som følger progresjonen til et typisk grunnkurs i OOP. Hvert kapittel avsluttes med oppsummerende eksempeloppgaver, så du får testet forståelsen.
Henrik Hillestad Løvold er universitetslektor ved UiT – Norges arktiske universitet og Universitetet i Oslo. Han underviser begynneremner i programmering med Python.

