Python
Objektorienterad programmering (och modellering)
Några frågor innan vi kör igång dagens tillfälle?
Dagensagenda
• Vad är objektorienterad programmering?
• Hur skiljer sig OOP från funktionsdriven programmering?
• Hur ser detta ut i Python?
• Lite snabba exempel!
OOP
Hur går ni till vägaidag?
När ni jobbar med era projekt?
Hur går ni till vägaidag?
När ni jobbar med era projekt?
I Python-kod, beskriv enfilm?
I Python-kod,
beskriv en film med skådespelare?
I Python-kod,
beskriv en film med skådespelare,
regissör, speltid,betyg, språk?
Datatyper?
Vi vill modelleravärlden!
Objektorienterad programmering och modellering
Vadär objektorienteradprogrammering
• En programmeringsparadigm, ett sätt hur man skriver &
strukturerar kod.
• Vi vill kunna efterlikna den ”verkliga världen” så mycket
som möjligt, genom att göra allt till objekt.
• Därför brukar man modellera sitt program innan man
programmerar det.
Att designa ettprogram
Varför inte en filmsamling?
Vad är en film?
Vad är en
skådespelare?
Hur relaterar en
skådespelare till en film?
Vad är en
filmsamling?
Funktionsdrivenprogrammeringär en
metod att skriva mjukvara.Den fokuserar
på en mjukvarudesign som är centrerad på
funktioner och händelser som sker i ett
program.
Funkionsdriven programmeringbestår
av en eller flerafunktioner
• Funktioner arbetar med data som är fristående från
funktionen.
• Data skickas mellan funktioner.
• Fokus är på att bygga funktioner som hanterar en
mjukvaras data.
Ex. Funktioner arbetar med data som är fristående frånfunktionen.
Ex. Data skickas mellanfunktioner.
Objektorienterad programmering
fokuserarpå objekt. Objekt skapas från
abstraktadatatyper och inkapslar data
och funktioner tillsammans.
Objektorienteradprogrammering
• Ett objekt är en datatyp som innehåller både
data och funktioner.
• Data som finns i ett objekt kallas för attribut (eller
egenskaper). Funktioner som finns i ett objekt kallas för
metoder.
En klass är kod som
specificerar en datatyp
med attribut ochmetoder.
VAD ÄR ETT OBJEKT?
Objekt = Individ = Instans
KLASS?
Anton är en människa
Johan är en människa
Objekt/instans Klass
Människa
Människa (klass) – Egenskaper?
Vad har vi gemensamt? > Attribut
- Namn
- Ålder
- Telefonnummer
- Epostadress
- Adress
- Etc.
Människa
Klass
Datatyp
Datatyper
■ Nummer
■ Strängar
■ Boolska värden
■ Listor
■ Lexikon
■ Egna datatyper
1, 5, 7, 234
”Hej”, ”Anton”, ”Pyhton”, ”Glass är gott”
True, False
[1, 2, 3, 4, 5, ”hej”, ”på”, ”dig]
{”namn”: ”Anton”, ”ålder”: 29}
EN KLASS SPECIFICERAR EN
DATATYP MED
ATTRIBUT (egenskaper)
OCH METODER (funktioner).
Övning i grupp!
I klassrummet:
1. Hitta tre klasser, med individer
2. Beskriv klassens egenskaper, och
individernas värde för egenskaperna.
3. Beskriv klassens metoder
Varför OOP?
■ Vi beskriver väldigt ofta ”verkliga” objekt i kod
– Lättare att göra i OOP
– Kan beskriva inte bara hur objekten ser ut, utan även hur de får
agera
■ Källkoden blir ofta enklare att hantera
– All relevant kod på samma ställe
■ Med OOP är det enkelt att återanvända kod
– Vi vill ju inte uppfinna hjulet eller skriva om kod igen…
■ Väldigt många större projekt, byggs enligt OOP
Att jobba med OOP
1. Identifiera en sak
2. Beskriv saken
3. Skapa instanser (objekt) av saken
Blueprint that describes a house
Class _J
lnstances of the house described by the blueprint
3 objects I
instances I
individuals
Att bygga objektorienterade
program
Tillvägagångssätt
1. Identifiera en klass (substantiv), med:
• Attribut
• Metoder
2. Skapa ett klassdiagram
3. Översätt klassdiagram till Python-kod
1. Identifiera en klass, med:
• Attribut
• Metoder
1. Identifiera en klass, med:
• Attribut
• Metoder
2. Skapa ett klassdiagram
Namn på klassen
Klassens attribut
Klassens metoder
+ Publika attribut/metoder
- Privata attribut/metoder
Datatyp för attribut
Parametrar för metoder
Datatyp för returvärde
Konstruktor
Utskriftsversion av instans (Python)
Konstruktor
- Körs när en instans av klassen skapas. Kan t.ex.
bestämma vilka attribut som är obligatoriska för att
skapa en instans av klassen, m.m.
Sträng-funktion
- I Python finns funktionen _ _str_ _ vars uppgift är att
skriva ut en textbaserad beskrivning av instansen.
2. Skapa ett klassdiagram
3. Översätt klassdiagram till
Python-kod
Klassdiagram Python-kod
3. Översätt klassdiagram till
Python-kod
Demo!
Vad är en film?
Vad är en
skådespelare?
Hur relaterar en
skådespelare till en film?
Vad är en
filmsamling?
Demo!
HT24 - DA354B - Introduktion till programmering - OOP
HT24 - DA354B - Introduktion till programmering - OOP

HT24 - DA354B - Introduktion till programmering - OOP