Lær Python - Dag 4, modul 1 Objektorienteret programmering

Relaterede dokumenter
Lær Python - Dag 4, modul 2 Objektorienteret programmering

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser

Klasser og Objekter i Python. Uge 11

Introduktion til funktioner, moduler og scopes i Python

It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen. Indlejring og Nedarvning

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

DM507 Algoritmer og datastrukturer

Lær Python dag 1 - modul 1

Skriftlig eksamen i Datalogi

Aarhus Universitet, Science and Technology, Computer Science. Mock Exam. Wednesday 27 June 2018, 9:00-11:00

Lær Python - Dag 3, modul 1 Læse og skrive filer

Introduktion til programmering. UML, Uge 45 Computer science, kap 7, særl. 7.4 og 7.5. Martin Fowler: UML distilled, kap. 3. Addision-Wesley, 2004.

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Introduktion til programmering. Uge 38.1 Python 2 Learning Python, kap 8-12.

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

Datatekniker med programmering som speciale

Anvendelse af metoder - Programmering

DM507 Algoritmer og datastrukturer

Undervisningsbeskrivelse

Database for udviklere. Jan Lund Madsen PBS10107

Analyse, problemområde, anvendelsesområde

Programmering i C. Lektion september 2009

Skriftlig eksamen i Datalogi

Udvikling af DOTNET applikationer til MicroStation i C#

Programmeringscamp Opbygning og specialisering af klassehierarki. Simulering af en kasselinje

Programmering og Problemløsning, 2017

SWC eksamens-spørgsmål. Oversigt

Indhold. Side 2 af 26

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Introduktion til programmering. Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14.

Python programmering. Per Tøfting. MacFest

Videregående Programmering for Diplom-E Noter

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Forelæsning Uge 1 Torsdag

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Databaser. Område / Specialefag nr Database, design og programmering Datatekniker Infra & Prog IT-Supporter AMU Kursister

Skriftlig Eksamen Diskret Matematik (DM528)

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Programmering og Problemløsning, 2017

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Datatekniker med programmering som speciale

DM507 Algoritmer og datastrukturer

Kursusarbejde 3 Grundlæggende Programmering

Abstrakte datatyper C#-version

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Kursusarbejde 2 Grundlæggende Programmering

Python 3 kursus lektion 1:

DM507 Algoritmer og datastrukturer

Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Datamatiske principper

Sammenlign og byt. Et eksempel på dokumentering af et program

Klasser og objekter. (Afsnit i manualen)

Skriftlig eksamen i Datalogi

Multiparadigme Programmering

4 Basal Objekt-orienteret Programmering I.

Jeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.

It og informationssøgning Forelæsning 5 4. oktober 2006 Nils Andersen. Tilfældige tal. Statistisk test. Sæt og associationslister.

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september (Tak til Jakob Bardram for nogle slides) Dagens begreber

Online billede filtrering

Singleton pattern i Java

Datalogi C + Datastrukturer og Algoritmer

Introduktion Til Konkurrenceprogrammering

14.1 Internationale programmer

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

It og informationssøgning Forelæsning 1 6. september 2006 Nils Andersen. Beregning på computer

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni jun 2011 MapBasic &.

IT sikkerhed Whitelist

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Bypassing the. Brian Marick

Forelæsning Uge 1 Torsdag

Et udtryk er (som bekendt?) lineært hvis den differentierede er en konstant funktion, dvs. at den ikke afhænger af x. Betragt f lgende værdiprocedurer

Object-Relational Mapping

Programmering for begyndere Lektion 2. Opsamling mm

DM507 Algoritmer og datastrukturer

Vejledning Post modul

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

BackEnd Programmering PHP

Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012

Dynamisk programmering

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

I3PRG3+I3DTM3+I3ISY1-3. semester

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

UNI Login. Licens webservice. ws-03

DM507 Algoritmer og datastrukturer

Design af genbrugeligt objektorienteret software

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

At klippe en streng over på det mest hensigtsmæssige sted

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

SFI-model _1441

Register-databasen med.net

Hvad er Objekter - Programmering

Objektorienteret Programmering

Modern Concurrency Abstractions for C#

Transkript:

Lær Python - Dag 4, modul 1 Objektorienteret programmering Simon J. Larsen 28. oktober 2017 Institut for Matematik og Datalogi

Objektorienteret programmering

Hvad er objektorienteret programmering? Vi har stiftet bekendskab med værdier og funktioner. Objektorienteret programmering (OOP) baseret på konceptet om objekter. Et objekt kan indeholde både værdier (attributter) og kode (metoder). Et objekt beskriver et koncept, ikke en datatype. Objekter har ansvar for deres egen kode. OOP er ét af mange programmeringsparadigmer: imperativ prog., funktionel prog., logisk prog., symbolsk, etc. 1

Datatyper vs. objekter Datatyper: int, str, bool, list, Kan bruges til at repræsentere koncepter, f.eks. penge = int, navn = str. Objekter: Typer vi definerer, der repræsenterer noget virkeligt. Person: Navn, alder, forældre (Person) Produkt: Navn, pris, vægt Butik: Navn, åbningstider, produkter (Produkt) 2

Datatyper vs. objekter Antag vi gerne vil programmere en webshop. Vi skal kunne repræsentere varer, indkøbsvogn, kunder, osv. Kan repræsentere en Vare som et dictionary med nøglerne navn, pris, beskrivelse. Butik kan gemme alle varer i en liste. Indkøbsvogn kan også være en liste med varer. Kunder kan repræsenteres med dictionary med nøglerne navn, adresse, 3

Datatyper vs. objekter Med OOP vil vi definere nye klasser Vare, Kunde, Indkøbsvogn til at repræsentere disse. Vare: Klasse med attributterne navn, pris og beskrivelse. Indkøbsvogn: Klasse med attribut varer der er en liste af Vare-objekter. Kunde: Klasse med attributterne navn, adresse og indkøbsvogn (objekt af typen Indkøbsvogn). Butik: Klasse med attributterne navn og varer (liste af Vare-objekter). 4

Datatyper vs. objekter Illustreres ofte med klasse-diagrammer: 5

Klasser og objekter

Klasser og objekter Vi har allerede brugt klasser uden at vide det. >>> x = "test" >>> type(x) <class 'str'> >>> x.lower <built-in method lower of str object at 0x7fefd63d1bc8> Vi kan dog ikke rigtig kalde disse for objekter i en OOP-forstand. 6

Klasser og objekter Vi kan definere vores egne klasser med def-nøgleordet: class Person: def init (self, navn, alder): self.navn = navn self.alder = alder init er en særlig funktion (metode) som kaldes når et nyt objekt af klassen Person oprettes. Bemærk første argument altid skal være self. 7

Klasser og objekter class Person: def init (self, navn, alder): self.navn = navn self.alder = alder Vi kan oprette et nyt Person-objekt ved at kalde Person(...): >>> john = Person("John Mogensen", 42) >>> type(john) <class ' main.person'> Og tilgå attributter med. (punktum): >>> john.navn 'John Mogensen' >>> john.alder 42 8

Klasser og objekter Vi kan lave flere objekter (instanser) af samme klasse: >>> john = Person("John Mogensen", 42) >>> lise = Person("Lise Rønne", 34) >>> print(john.navn, john.alder) John Mogensen 42 >>> print(lise.navn, lise.alder) Lise Rønne 34 9

Klasser og objekter Objekter er mutable. Dvs. vi kan ændre attributter for et objekt efter det er oprettet. >>> john = Person("John Madsen", 42) >>> print(john.alder) 42 >>> john.alder = 43 >>> print(john.alder) 43 10

Klasser og funktioner

Klasser og funktioner Ligesom alle andre værdier, kan vi: Give objekter som argumenter til en funktion. Returnere objekter fra en funktion. 11

Klasser og funktioner Lad os lave en klasse der gemmer tid: class Tid: def init (self, timer, minutter, sekunder): self.timer = timer self.minutter = minutter self.sekunder = sekunder 12

Klasser og funktioner Lad os lave en klasse der gemmer tid: class Tid: def init (self, timer, minutter, sekunder): self.timer = timer self.minutter = minutter self.sekunder = sekunder Vi kan lave en funktion der printer tiden: def print_tid(t): fmt = "{}:{:02}:{:02}" print(fmt.format(t.timer, t.minutter, t.sekunder)) Test: >>> t = Tid(2, 15, 6) >>> print_tid(t) 2:15:06 12

Klasser og funktioner Funktioner kan også ændre objekter: def vent_10min(t): t.minutter += 10 if t.minutter >= 60: t.timer += 1 t.minutter -= 60 Test: >>> t = Tid(2, 53, 23) >>> print_tid(t) 2:53:23 >>> vent_10min(t) >>> print_tid(t) 3:02:23 13

Klasser og funktioner Funktioner kan også oprette og returnere nye objekter: def sum_tid(t1, t2): timer = t1.timer + t2.timer minutter = t1.minutter + t2.minutter sekunder = t1.sekunder + t2.sekunder if sekunder >= 60: minutter += 1 sekunder -= 60 if minutter >= 60: timer += 1 minutter -= 60 return Tid(timer, minutter, sekunder) 14

Klasser og funktioner Test af sum_tid-funktionen: >>> t1 = Tid(2, 56, 23) >>> t2 = Tid(4, 35, 41) >>> t3 = sum_tid(t1, t2) >>> print_tid(t3) 7:32:04 15

Objektorienteret programmering Vi har endnu ikke set på methoder Efter frokost skal vi se hvordan man rent faktisk laver objektorienteret programmering! 16