Mer grafik. Jan Erik Moström

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

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Sätt att skriva ut binärträd

Databaser. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

Hos vad? och bör därför vara instanseller klassvariabel i vilken klass?

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Grundläggande datalogi - Övning 1

Föreläsning 13 och 14: Binära träd

Grundläggande datalogi - Övning 3

Programmering grundkurs

Övning 6. Ali Tofigh 24 Oktober, 2006

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 16

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

Länkade listor, stackar och köer

Lektion 1 - Programmeringsteknik F1, ht 2003

Mer till P-uppgiften: Dokumentation. Nyheter. Algoritm för sökning. Mer hjälp. DD1311 Programmeringsteknik med PBL

Strängar. TDDD64 Programmering i Python Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Grundläggande datalogi - Övning 2

TDP002 - Imperativ programmering

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Lite skoj - typ. 5DV085 - Programspråk. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Skillnader mellan Python och Java

Omprov 11/11. på förmiddagen.

Föreläsning 5 Mer om funktioner, villkor

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

Övning 1 - Abstrakta datatyper

Programmering grundkurs

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

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Övning 1. Abstrakta datatyper. 1. Stacken. class Stack: """A representation of a last-in-first-out (LIFO) stack of objects."""

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

Arv. Objektorienterad och komponentbaserad programmering

Uppgifter teknik HT17 (uppdaterad v. 40)

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

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

Sekvensdatatyper, ASCII och chiffer. Linda Mannila

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

Datalogi för E Övning 3

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

Föreläsning 9: Arv och UML

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

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

Dugga Datastrukturer (DAT036)

PYTHON SNABBREPETITION MEN FÖRST LITE ALLMÄNT OM PROGRAMMERING 729G04 PYTHON 2. Dagens Python

Föreläsning 12: Exempel och problemlösning

Dagens föreläsningar

1. Klass med en dynamiskt allokerad variabel, definitionsfilen-del Klass med en dynamiskt allokerad variabel, inkluderingsfilen.

v. 42 Python HT17 En introduktion Oscar Bergqvist

DD1314 Programmeringsteknik

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Programmering grundkurs

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Fredag 10 juni 2016 kl 8 12

v. 43 Python HT17 En introduktion Oscar Bergqvist

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

Klasser och objekt, referenser Grundkurs i programmering med Python

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Laboration: Whitebox- och blackboxtesting

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Programmering grundkurs

Listor. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 7. Peter Dalenius Institutionen för datavetenskap

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Haskell forts. 5DV085 - Programspråk. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OOP Omtenta

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Objektsamlingar i Java

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Dugga i Grundläggande programmering STS, åk

Grundläggande databehandling ht 2005

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Föreläsning 13 Datalogi 1 DA2001

Grundläggande programmering med C# 7,5 högskolepoäng

Hur man programmerar. Exempel på problemlösning i Python

Transkript:

Mer grafik

from Tkinter import * root = Tk() mf = Frame(root) mf.pack() cv = Canvas(mf) o1 = cv.create_oval(100,100,80,80,outline="red",fill="blue", width=2) o2 = cv.create_oval(10,10,80,80,outline="red",fill="green", width=2) o3 = cv.create_oval(60,70,80,80,fill="yellow", width=1) p1 = cv.create_polygon(5,5,50,100,50,200,100,50,fill="",outline="black") l1 = cv.create_line(100,100,80,120,150,200) txt = cv.create_text(150,100,text="hello world",justify="left") cv.pack() root.mainloop()

http://infohost.nmt.edu/tcc/help/pubs/tkinter/index.html http://infohost.nmt.edu/tcc/help/pubs/tkinter/canvas.html

Objektorienterad programmering, Department of Computing Science, Umeå University - jem@cs.umu.se

Vilket problem löser man? Data abstraktion Namn Adress Adress Namn membernames = ['Kalle Anka','Knatte Anka','Tjatte Anka','Fnatte Anka'] membernames.sort() print membernames ['Fnatte Anka', 'Kalle Anka', 'Knatte Anka', 'Tjatte Anka']

Enheter Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress

Enheter

Enheter

Enheter

Begrepp Objektorienterad programmering Klasser Objekt

Python class Member: pass x = Member() x.name = 'Kalle Anka' x.email = 'kalle@ankeborg.se' y = Member() y.name = 'Tjatte Anka' y.email = 'tjatte@ankeborg.se' print x.name print x.email print y.name print y.email # Kalle Anka # kalle@ankeborg.se # Tjatte Anka # tjatte@ankeborg.se

Abstraktion class Member: def setname( self, newname ): self.name = newname def getname( self ): return self.name def set( self, new ): self.email = new def get( self ): return self.email x = Member() x.setname('kalle Anka') x.set('kalle@ankeborg.se') print x print x.getname() print x.get() print x.name print x.email

class Member: def setname( self, newname ): self._name = newname def name( self ): return self._name def set( self, new ): self._email = new def email( self ): return self._email x = Member() x.setname('kalle Anka') x.set('kalle@ankeborg.se') print x print x.name() print x.email() print x._name print x._email y = Member() print y.name() Traceback (most recent call last): File "x.py", line 70, in <module> print y.name() File "x.py", line 51, in name return self._name AttributeError: Member instance has no attribute '_name'

class Member: def init (self): self._name = '' self._email = '' ordf = Member() ordf.setname("kalle Anka") print ordf.name() def setname( self, newname ): self._name = newname def name( self ): return self._name def set( self, new ): self._email = new def email( self ): return self._email

class Member: def init (self, name, email): self._name = name self._email = email def setname( self, newname ): self._name = newname def name( self ): return self._name def set( self, new ): self._email = new def email( self ): return self._email ordf = Member("Kalle Anka",'kalle@ankeborg.se') print ordf.name() # Kalle Anka print ordf.email() # kalle@ankeborg.se

class Name: def init (self, first, last): self._first = first self._last = last def first(self): return self._first def last(self): return self._last def setfirst(self, first): self._first = first def setlast(self, last): self._last = last def firstlast( self ): return self._first + ' ' + self._last def lastfirst( self ): return self._last + ', ' + self._first

class Member: def init (self, name, email): self.setname(name) self._email = email def setname( self, newname ): [first,last] = newname.split() self._name = Name(first,last) def name( self ): return self._name.lastfirst() def set( self, new ): self._email = new def email( self ): return self._email x = Member("Kalle Anka",'kalle@ankeborg.se') print x.name() # Anka, Kalle

x = Member("Kalle Anka",'kalle@ankeborg.se') print x.name() # Anka, Kalle memberlist = [Member("Kalle Anka",'kalle@ankeborg.se')] memberlist.append( Member('Knatte Anka','knatte@ankeborg.se') ) memberlist.append( Member('Tjatte Anka','tjatte@ankeborg.se') ) memberlist.append( Member('Fnatte Anka','fnatte@ankeborg.se') ) print memberlist [< main.member instance at 0x100492e18>, < main.member instance at 0x100492ea8>, < main.member instance at 0x100492f38>, < main.member instance at 0x100492fc8>] for member in memberlist: print member.name() Anka, Kalle Anka, Knatte Anka, Tjatte Anka, Fnatte memberlist.sort() for member in memberlist: print member.name() Anka, Kalle Anka, Knatte Anka, Tjatte Anka, Fnatte

class Name:... def compare( self, other ): if self._last < other._last: return -1 elif self._last > other._last: return 1 else: if self._first < other._first: return -1 elif self._first == other._first: return 0 else: return 1 class Member:...... def compare( self, other ): return self._name.compare(other._name) def comparemembers( one, two ): return one.compare(two) memberlist = [Member("Kalle Anka",'kalle@ankeborg.se')] memberlist.append( Member('Knatte Anka','knatte@ankeborg.se') ) memberlist.append( Member('Tjatte Anka','tjatte@ankeborg.se') ) memberlist.append( Member('Fnatte Anka','fnatte@ankeborg.se') ) memberlist.sort(comparemembers) for member in memberlist: print member.name()