SlideShare a Scribd company logo
1 of 44
Download to read offline
Python
Objektorienterad programmering (och modellering)
Alumn – och
examensmiddag VT20
Dagens agenda
• Vad är objektorienterad programmering?
• Hur skiljer sig detta från funktionsdriven programmering? (det vi gjort hittills)
• Hur ser detta ut i Python?
• Lite snabba exempel!
Hur går ni till väga idag?
När ni jobbar med era projekt?
I Python-kod, beskriv en film?
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 modellera världen!
Objektorienterad programmering och modellering
Vad är objektorienterad programmering
• 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 ett program
Varför inte en filmsamling?
Funktionsdrivenprogrammeringär en metod att skriva
mjukvara. Den fokuserar på en mjukvarudesign som är
centrerad på funktioneroch händelser som sker i ett
program.
Funkionsdriven programmering består
av en eller flera funktioner
Funktioner arbetar med data som är fristående från funktionen
Data skickas mellan funktioner
Fokus är på att bygga funktioner som hanterar enmjukvaras data
Objektorienterad programmering fokuserar på
objekt. Objekt skapas från abstrakta datatyper
och inkapslar data och funktioner tillsammans.
Objektorienterad programmering
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 och metoder.
Att modellera en stad
Tänk er typ ”sim city”
Vad hittar vi för saker?
• Människa
• Attribut:
• Namn
• Ålder
• Kön
• Pengar
• Metoder:
• Gå
• Shoppa
• Prata
• Åka taxi
• Byggnad
• Attribut:
• Gata
• Nummer
• Storlek
• Våningar
• Ålder
• Metoder:
• Bygga ut
• Rasera
• Renovera
• Affär
• Attribut:
• Namn
• Typ av affär
• Adress
• Telefonnummer
• Metoder:
• Öppna
• Stänga
• Sälja
• Inventera
Låt oss fokusera på taxibilen…
• Taxibil
• Attribut:
• Förare
• Aktiv
• Passagerare
• Plats
• Metoder:
• Hämta folk
• Lämna folk
• Byt chaufför
• Byt passagerare
Vi har skapat datatypen:
Taxi
Vad är då en klass?
• En klass är en beskrivning av hur ett objekt (t.ex. en taxi-bil, en affär, en människa)
ser ut. Alltså:
• Vilka attribut som finns
• Vilka metoder som finns
• Man brukar rita upp detta i ett så kallat klassdiagram.
• Taxibil
• Attribut:
• Förare
• Aktiv
• Passagerare
• Plats
• Metoder:
• Hämta folk
• Lämna folk
• Byt chaufför
• Byt passagerare
Hur skiljer sig detta från det vi gjort
hittills?
• Funktionsdriven programmering
• Skapar ett steg-för-steg program (funktioner som kallar på varandra i en viss ordning)
• Vi är väldigt öppna med vilken data som finns – och hur denna skickas runt i programmet
• Objektorienterad programmering
• Fokuserar på att modellera världen på ett sätt som är enkelt att förstå för människan
• Istället för att man skickar data mellan olika funktionen har varje objekt sina egna funktioner och
attribut – som ibland är hemliga, och objekten visar bara det som de vill visa.
Vi kollar hur detta ser ut
Men detta hade vi kunna göra innan ju!
HT19 - DA354A - OOP Intro

More Related Content

Similar to HT19 - DA354A - OOP Intro

Kravhantering i praktiken publikt
Kravhantering i praktiken publiktKravhantering i praktiken publikt
Kravhantering i praktiken publiktLars Blixt
 
Innehåll först med innehållsprototyper
Innehåll först med innehållsprototyperInnehåll först med innehållsprototyper
Innehåll först med innehållsprototyperPer Axbom
 
Ux som strategi_lina_westerling_med_anteckningar_komprimerad
Ux som strategi_lina_westerling_med_anteckningar_komprimeradUx som strategi_lina_westerling_med_anteckningar_komprimerad
Ux som strategi_lina_westerling_med_anteckningar_komprimeradChalmers Library
 
Lean UX i Agila Team
Lean UX i Agila TeamLean UX i Agila Team
Lean UX i Agila TeamMia Kolmodin
 
SFIS: Mobila tjänster Stockholms stadsbibliotek
SFIS: Mobila tjänster Stockholms stadsbibliotekSFIS: Mobila tjänster Stockholms stadsbibliotek
SFIS: Mobila tjänster Stockholms stadsbibliotekElisabet Fornell
 

Similar to HT19 - DA354A - OOP Intro (6)

Kravhantering i praktiken publikt
Kravhantering i praktiken publiktKravhantering i praktiken publikt
Kravhantering i praktiken publikt
 
Innehåll först med innehållsprototyper
Innehåll först med innehållsprototyperInnehåll först med innehållsprototyper
Innehåll först med innehållsprototyper
 
JavaScript - Intro
JavaScript - IntroJavaScript - Intro
JavaScript - Intro
 
Ux som strategi_lina_westerling_med_anteckningar_komprimerad
Ux som strategi_lina_westerling_med_anteckningar_komprimeradUx som strategi_lina_westerling_med_anteckningar_komprimerad
Ux som strategi_lina_westerling_med_anteckningar_komprimerad
 
Lean UX i Agila Team
Lean UX i Agila TeamLean UX i Agila Team
Lean UX i Agila Team
 
SFIS: Mobila tjänster Stockholms stadsbibliotek
SFIS: Mobila tjänster Stockholms stadsbibliotekSFIS: Mobila tjänster Stockholms stadsbibliotek
SFIS: Mobila tjänster Stockholms stadsbibliotek
 

More from Anton Tibblin

2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdf2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdfAnton Tibblin
 
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbteknikerVT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbteknikerAnton Tibblin
 
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingVT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingAnton Tibblin
 
DA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object modelDA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object modelAnton Tibblin
 
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbteknikerVT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbteknikerAnton Tibblin
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonAnton Tibblin
 
HT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhanteringHT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhanteringAnton Tibblin
 
HT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikonHT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikonAnton Tibblin
 
HT23 - DA354A - Kursintroduktion
HT23 - DA354A - KursintroduktionHT23 - DA354A - Kursintroduktion
HT23 - DA354A - KursintroduktionAnton Tibblin
 
HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)Anton Tibblin
 
HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1Anton Tibblin
 
HT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & BibliotekHT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & BibliotekAnton Tibblin
 
HT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptHT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptAnton Tibblin
 
HT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutvecklingHT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutvecklingAnton Tibblin
 
HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)Anton Tibblin
 
HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)Anton Tibblin
 
Introduktion till CSS
Introduktion till CSSIntroduktion till CSS
Introduktion till CSSAnton Tibblin
 
HTML - Tabeller och formulär
HTML - Tabeller och formulärHTML - Tabeller och formulär
HTML - Tabeller och formulärAnton Tibblin
 
Introduktion till HTML
Introduktion till HTMLIntroduktion till HTML
Introduktion till HTMLAnton Tibblin
 

More from Anton Tibblin (20)

2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdf2024 - Localstorage & cookies Geolocation Mediahantering.pdf
2024 - Localstorage & cookies Geolocation Mediahantering.pdf
 
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbteknikerVT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
 
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutvecklingVT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutveckling
 
DA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object modelDA395A - VT24 - JavaScript & Document object model
DA395A - VT24 - JavaScript & Document object model
 
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbteknikerVT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
VT24 - DA395A - Kursintroduktion: Flerplattformsapplikationer med webbtekniker
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med Python
 
HT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhanteringHT23 - DA354A - Fil- och felhantering
HT23 - DA354A - Fil- och felhantering
 
HT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikonHT23 - DA354A - Listor och lexikon
HT23 - DA354A - Listor och lexikon
 
HT23 - DA354A - Kursintroduktion
HT23 - DA354A - KursintroduktionHT23 - DA354A - Kursintroduktion
HT23 - DA354A - Kursintroduktion
 
HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)HT23 - DA106A - Användbarhet (2)
HT23 - DA106A - Användbarhet (2)
 
HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1HT23 - DA106A - Användbarhet 1
HT23 - DA106A - Användbarhet 1
 
HT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & BibliotekHT23 - DA106A - Ramverk & Bibliotek
HT23 - DA106A - Ramverk & Bibliotek
 
HT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptHT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScript
 
HT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutvecklingHT23 - DA106A - Responsiv webbutveckling
HT23 - DA106A - Responsiv webbutveckling
 
HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)HT23 - DA106A - Layout (2)
HT23 - DA106A - Layout (2)
 
HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)HT23 - DA106A - Layout med CSS (1)
HT23 - DA106A - Layout med CSS (1)
 
Introduktion till CSS
Introduktion till CSSIntroduktion till CSS
Introduktion till CSS
 
HTML - Tabeller och formulär
HTML - Tabeller och formulärHTML - Tabeller och formulär
HTML - Tabeller och formulär
 
Introduktion till HTML
Introduktion till HTMLIntroduktion till HTML
Introduktion till HTML
 
Kursintroduktion
KursintroduktionKursintroduktion
Kursintroduktion
 

HT19 - DA354A - OOP Intro

  • 3. Dagens agenda • Vad är objektorienterad programmering? • Hur skiljer sig detta från funktionsdriven programmering? (det vi gjort hittills) • Hur ser detta ut i Python? • Lite snabba exempel!
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Hur går ni till väga idag? När ni jobbar med era projekt?
  • 11.
  • 12.
  • 13.
  • 14.
  • 16. I Python-kod, beskriv en film med skådespelare?
  • 17. I Python-kod, beskriv en film med skådespelare, regissör, speltid, betyg, språk?
  • 18.
  • 20. Vi vill modellera världen! Objektorienterad programmering och modellering
  • 21. Vad är objektorienterad programmering • 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.
  • 22. Att designa ett program Varför inte en filmsamling?
  • 23.
  • 24. Funktionsdrivenprogrammeringär en metod att skriva mjukvara. Den fokuserar på en mjukvarudesign som är centrerad på funktioneroch händelser som sker i ett program.
  • 25.
  • 26. Funkionsdriven programmering består av en eller flera funktioner Funktioner arbetar med data som är fristående från funktionen Data skickas mellan funktioner Fokus är på att bygga funktioner som hanterar enmjukvaras data
  • 27. Objektorienterad programmering fokuserar på objekt. Objekt skapas från abstrakta datatyper och inkapslar data och funktioner tillsammans.
  • 28. Objektorienterad programmering 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
  • 29.
  • 30. En klass är kod som specificerar en datatyp med attribut och metoder.
  • 31.
  • 32.
  • 33.
  • 34. Att modellera en stad Tänk er typ ”sim city”
  • 35.
  • 36. Vad hittar vi för saker? • Människa • Attribut: • Namn • Ålder • Kön • Pengar • Metoder: • Gå • Shoppa • Prata • Åka taxi • Byggnad • Attribut: • Gata • Nummer • Storlek • Våningar • Ålder • Metoder: • Bygga ut • Rasera • Renovera • Affär • Attribut: • Namn • Typ av affär • Adress • Telefonnummer • Metoder: • Öppna • Stänga • Sälja • Inventera
  • 37.
  • 38. Låt oss fokusera på taxibilen… • Taxibil • Attribut: • Förare • Aktiv • Passagerare • Plats • Metoder: • Hämta folk • Lämna folk • Byt chaufför • Byt passagerare
  • 39. Vi har skapat datatypen: Taxi
  • 40. Vad är då en klass? • En klass är en beskrivning av hur ett objekt (t.ex. en taxi-bil, en affär, en människa) ser ut. Alltså: • Vilka attribut som finns • Vilka metoder som finns • Man brukar rita upp detta i ett så kallat klassdiagram. • Taxibil • Attribut: • Förare • Aktiv • Passagerare • Plats • Metoder: • Hämta folk • Lämna folk • Byt chaufför • Byt passagerare
  • 41. Hur skiljer sig detta från det vi gjort hittills? • Funktionsdriven programmering • Skapar ett steg-för-steg program (funktioner som kallar på varandra i en viss ordning) • Vi är väldigt öppna med vilken data som finns – och hur denna skickas runt i programmet • Objektorienterad programmering • Fokuserar på att modellera världen på ett sätt som är enkelt att förstå för människan • Istället för att man skickar data mellan olika funktionen har varje objekt sina egna funktioner och attribut – som ibland är hemliga, och objekten visar bara det som de vill visa.
  • 42. Vi kollar hur detta ser ut
  • 43. Men detta hade vi kunna göra innan ju!