729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Relevanta dokument
729G06 Föreläsning 1 Objektorienterad programmering

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Programmering grundkurs

Objektorienterad programmering

Imperativ programmering. Föreläsning 4

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Classes och Interfaces, Objects och References, Initialization

Objektorienterad programmering. Grundläggande begrepp

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Laboration 1 - Grunderna för OOP i Java

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Programmering, grundkurs

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Programmering för språkteknologer II, HT2011. Rum

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT15

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT14

Föreläsning 15: Repetition DVGA02

Objektorienterad Programmering DAT043

Sätt att skriva ut binärträd

Introduktionsmöte Innehåll

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Programmeringsteknik II

Design och konstruktion av grafiska gränssnitt

Design av en klass BankAccount som representerar ett bankkonto

Kursplanering Objektorienterad programmering

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Föreläsning 1: Intro till kursen och programmering

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Design och konstruktion av grafiska gränssnitt

Klasser och objekt, referenser Grundkurs i programmering med Python

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

TDIU01 (725G67) - Programmering i C++, grundkurs

TUTORIAL: KLASSER & OBJEKT

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT17

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Programmering grundkurs

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Malmö högskola 2007/2008 Teknik och samhälle

Imperativ programmering

Abstrakta datatyper Laboration 2 GruDat, DD1344

Arv och polymorfism i Java

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

729G04 Programmering och diskret matematik. Python'1:'Labbmiljö'och'introduk7on'7ll'Python'

Föreläsning 1: Intro till kursen och programmering

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Objektorienterad Programmering (TDDC77)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Föreläsning 1: Introduktion till kursen

Objektorienterad programmering

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Datastrukturer och algoritmer

Objektorienterad programmering

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

TDDE44 Programmering, grundkurs

Programmeringsteknik I

Programmering för språkteknologer II, HT2014. Rum

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination. 1 Skriftlig tentamen (betyg)

Transkript:

729G06 Programmering och logik Info om pythondelen & introduktion till objektorienterad programmering.

Översikt Kursinformation Vad är objektorienterad programmering Skapa och använda objekt Enstaka objekt Objekt i listor Inför labb 1: lektioner

All kursinfo finns på kurshemsidan http://www.ida.liu.se/~729g06

Personal på Python-delen Kursansvarig, lärare, examinator Jody Foo Labbassistenter Cassandra Svensson [cassv004] Isabella Koniakowski [isako708] Jonas Rybing [jonry16] Sarah Albertsson [saral29] Kursadministratör Annelie Almquist

Programmering (Python) Examinationsmoment LAB1: 1,5hp PRA1: 1,5hp Föreläsningar: 5 st Lektioner: 5 st Handledda labbtillfällen: 17 st

Python-delen: 4 kapitel Kapitel 1: Där vi lär oss vad OOP är Föreläsningar: Intro till OOP (FÖ 1 + FÖ2) Lektioner: Övningar i att skriva OO kod Laborationer: Labb 1, Ninjas vs zombies & Labb 2, Bygga klasser och objekt. Kapitel 2: Där vi oss använda börja använda OOP Föreläsningar: Undandtag, arv, klassdiagram Lektion: modellering och arv, inför labb 3 Laboration: Labb 3 Genetiska algoritmer

Python-delen: 4 kapitel Kapitel 3: Där vi lär oss om GUI-programmering Föreläsning: GUI med Tkinter och Python, eventbaserad programmering. Objektorienterad design, strukturera GUI-kod Laboration: Labb 4: GUI-gränssnitt till sago-generator. Kapitel 4: Där vi tillämpar vad vi lärt oss Lektion: Introduktion och genomgång av projektet Projekt: Individuellt projekt

Labbredovisningar och inlämning Muntlig redovisning innan inlämning vid redovisningstillfällen Inlämning innan muntlig redovisning godkänns ej. Inlämning via RT E-post till 729g06@ida.liu.se varpå en bekräftelse skickas av systemet. Komplettering Skickas in genom att svara på den tidigare bekräftelsen. Riktlinjerna måste följas

Redovisning, inlämning och komplettering Gör klart labben Muntlig redovisning Skicka in till 729g06@ida.liu.se Få bekräftelse på inlämning och sedan återkoppling från labbassisten. Komplettera vid behov Skicka komplettering som svar på bekräftelsemailet

Projektet och delexamination Examination, del 1 Projektbeskrivning som skickas in enligt mall, senast 2016-05-15. Examination, del 2 Redovisning och demonstration för kurskamrater. För att få göra del 2 måste del 1 godkänd inlämning vara gjord (dvs själva inlämnandet av en projektbeskrivning som följer mallen). Examination, del 3 Implementation av projekt.

Upplägg av Python-delen

Classroom Notebook OneNote - hur många använder det? Pilot för att se hur det fungerar Ej obligatorisk användning. Tre delar Gemensam Notebook Kursmaterial Egna Notebooks

Camedin: digital handuppräckning System vi kommer att använda på labbar och lektioner Varje handledare har en kö, ni kan ställa er i köerna och behöver inte hålla upp handen. Mer info kommer skickas ut och komma ut på kurswebben + OneNote

Objektorienterad programmering?

Ni har redan använt objekt... # en lista är ett objekt lista1 = [] # Ett objekt har metoder som man meddelar att man vill köra genom # att använda punktnotation. Vad händer egentligen nedan? lista.append("en sträng")

Ni har redan använt objekt... # en lista är ett objekt a_string = "visst är python roligt!" # Ett objekt har metoder som man meddelar att man vill köra genom # att använda punktnotation. Vad händer egentligen nedan? print(a_string.upper())

Objekt är instanser av klasser-

En klass är en mall som används för att skapa ett objekt objekt kallas också för instanser

Programmeringsparadigm Funktionell programmering Procedurell programmering Logikprogrammering Objektorienterad programmering

Objektorienterad programmering Ett alternativ till att använda funktioner för att strukturera kod: Objekt istället för abstrakt datatyp Bättre sätt att organisera större projekt - återanvändning C++, Objective-C, C# och Java är exempel på andra OO programmeringsspråk

Repetition: Abstrakta datatyper Att modellera ett problem och representera problemet. Fokus ligger inte på implementationsdetaljer utan på att skapa en meningsfull representation av domänen/ problemet. I funktionella och imperativa språk används ofta abstrakta datatyper (ADT) som en abstraktionsmodell.

Varför räcker inte ADT:er? ADT (Abstrakt Datatyp) = datastruktur + funktioner Det finns ingen hård koppling mellan data och dess funktioner - olika data kan skickas till alla funktioner vilket kan orsaka fel och buggar.

Exempel Två abstrakta datatyper: bok och person (t.ex. om vi vill skapa ett bibliotekssystem) Alla funktioner ligger på samma nivå: create_book(), create_contact() borrow_book(), return_book(), change_address() etc. Det är upp till programmeraren att hålla redan på att ingen kan låna en kontakt, eller byta adress på en bok etc.

Objektorienterad programmering (OOP) Objekt är i fokus jämfört med funktioner i fokus som vid funktionell programmering. Man försöker relatera data och metoder till objekt. Både data och metoder kan "ägas"/tillhöra objekt (inkapsling) Objekt, dess egenskaper och beteenden (vad objektet kan göra och vad man kan göra med objektet).

Semiotiska triangeln, Triangle of reference (Ogden & Richards 1923)

I objektorienterad programmering Klass Variabel/Referens Objekt

Klasser jmf med objekt och instanser En klass är en mall, en beskrivning av något som kan finnas i världen. En klass beskriver vilka egenskaper (variabler) klassen har och vilka beteenden (metoder) den har. Det som finns i världen är instanser av klasser, även kallade för objekt.

Hur skapar vi en instans av en klass? Anropa klassens konstruktor, en speciell metod som skapar instanser av en klass. Jämför med create_vertex() när man använder ADT:er. Konstruktorn heter samma sak som klassen. För klassen Turtle heter alltså konstruktorn Turtle() Konstruktorer "returnerar" nya objekt (returnerar egentligen inte eftersom de inte är funktioner, men man kan tänka så)

Exempel från sköldpaddevärlden turtle-modulen i 729G04: funktionell ansats... men man kan också använda modulen på ett objektorienterat sätt Skapa fler än en sköldpadda, fler sköldpaddsobjekt Sköldpaddors egenskaper: position, riktning, färg, form Sköldpaddors beteenden: de kan svänga, gå framåt, bakåt, göra sig osynliga, gå till en plats etc

Demo 1 https://trinket.io/library/ trinkets/c09662b876

Objekt, dess egenskaper och beteenden klassens namn egenskaper beteenden

Objekt, dess egenskaper och beteenden klassens namn variabler metoder

Objekt, dess egenskaper och beteenden stor begynnelsebokstav! Dog name age talk

Definition av en klass class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name)

Punktnotation (modul.)objekt.variabel (modul.)objekt.metod() a = [1 2, 3] a.append(4) s = "hejsan" s.upper()

Vi skapar några hundar class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 Hund name: "Pluto" age: 0 talk hund1 = Dog("Pluto") hund2 = Dog("Lassie") hund2 Hund name: "Lassie" age: 0 talk

Testar hundarna class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 = Dog("Pluto") hund2 = Dog("Lassie") print(hund1.age) print(hund1.name) hund1.talk() print(hund2.age) print(hund2.name) hund2.talk()

Ändra värden hund1 Hund name: "Pluto" age: 4 hund1.age = 4 hund2.age = 8 talk hund2 Hund name: "Lassie" age: 8 talk

Testar hundarna class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 = Dog("Pluto") hund2 = Dog("Lassie") print(hund1.age) print(hund1.name) hund1.talk() print(hund2.age) print(hund2.name) hund2.talk()

Terminologi Klass Objekt / Instans Egenskapsvariabel / Instansvariabel Metod

Metoden str () Metoden str () berättar för python att hur instanser av klassen ska representeras som text Om den inte är definierad returneras en beskrivning av objektets typ samt var i minnet den finns t.ex. '< main.test instance at 0x101c1d290>' Om man definierar str () kan man bestämma hur objekt av en klass ska representeras som sträng

Vi provar lägga till str ()

Några ord om getters/setters Det "pythonska" sättet att koda är att inte använda getters/ setters. Dock är getters/setters vanliga i många objektorienterade språk och ett bra sätt att kapsla in/gömma data i syfte att göra det lättare att omfaktorera kod (t ex byta datatyp från lista till dictionary) Man använder hund1.get_name() istället för hund1.name, och hund1.set_name( Fido ) istället för hund1.name = Fido (även inne i klassens metoder!)

Vi provar lägga till getters och setters