Klasser och objekt, referenser Grundkurs i programmering med Python

Relevanta dokument
Övning 6. Ali Tofigh 24 Oktober, 2006

Språket Python - Del 2 Grundkurs i programmering med Python

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Objektorienterad programmering

Språket Python - Del 1 Grundkurs i programmering med Python

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Introduktion till programmering SMD180. Föreläsning 12: Klasser och objekt

Klasser och objekt i C#

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

Sätt att skriva ut binärträd

Problemlösning och funktioner Grundkurs i programmering med Python

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Kort om klasser och objekt En introduktion till GUI-programmering i Java

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

Övningar Dag 2 En första klass

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

1 Funktioner och procedurell abstraktion

Classes och Interfaces, Objects och References, Initialization

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

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Lösningsförslag övning 2.

Objektorienterad programmering i Java

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

Objekt och klasser - Introduktion

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

TDIU01 - Programmering i C++, grundkurs

ID1004 Laboration 3, 5-6 November 2012

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

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

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

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

Funktioner. Linda Mannila

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

JAVA Mer om klasser och objektorientering

Abstrakta datatyper Laboration 2 GruDat, DD1344

Övningsuppgifter kapitel 8

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Objektorienterad programmering

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

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Inledande programmering med C# (1DV402) Tärningarna ska kastas

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

Objekt och referenser

Introduktion till arv

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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

Dynamisk bindning och polymorfism

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

tentaplugg.nu av studenter för studenter

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Laboration 1: Figurer i hierarki

Objektorienterad programmering i Java

Text och strängindexerade fält Grundkurs i programmering med Python

TDDD78 Objektorientering: Lagring och livstid

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Föreläsning 3 Programmeringsteknik och C DD1316. Innehåll i listor. Uppdateringsoperatorer. +,* och listor. Listor. Indexering

Lektion 7. Datateknik A, Java I, 5 poäng

Laborationsanvisning. Digital väckarklocka. Steg 2, laborationsuppgift 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

Arrayer. results

TENTAMEN OOP

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.

TDDC76 - Programmering och Datastrukturer

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

TDIU01 Programmering i C++

Programmeringsteknik I. Föreläsning 3: Klasser och arrayer

TDDE44 Programmering, grundkurs

Objektorienterad Programmering (TDDC77)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Programmeringsteknik med C och Matlab

Transkript:

Hösten 2009

Dagens lektion Klasser och objekt Referenser 2

Klasser och objekt 3

KLASSER OCH OBJEKT Relaterat data Information om en fyrkant Bredd Höjd Färg 4

KLASSER OCH OBJEKT Egna datatyper Skapa en egen specialiserad datatyp Kan innehålla variabler Kan ha funktioner knutna till sig Kan använda den som om det vore en egen entitet. Den inbyggda datatypen Tupel lagrar sekvenser av värden Den egna datatypen Rektangel lagrar information om personer 5

KLASSER OCH OBJEKT Klasser och Objekt Om den nya datatypen behöver vi berätta vilket data den har hur man använder den Detta kallas för en klass Värden skapade av en klass kallas objekt 6

KLASSER OCH OBJEKT Skapa ett nytt objekt Vid skapandet behövs oftast ett intialt värde Behöver ange vilket data ett objekt ska innehålla (attribut) Initialt värde på attributen. Konstruktorn anropas vid skapandet 7

KLASSER OCH OBJEKT Exempel på en klass Vi definierar en klass och dess namn Vi definierar en konstruktor och i den, vilka attribut som ska finnas, samt deras initiala värde class Rectangle: def init (self, w, h, color): self.w = w self.h = h self.color = color Notera den första parametern self 8

KLASSER OCH OBJEKT Att skapa ett objekt Vid skapandet av ett objekt används klassens namn samt konstruktorns parametrar förutom self rect = Rectangle(20,30, blue ) print Rektangelns färg är \%s \% rect.color 9

KLASSER OCH OBJEKT Att skapa flera objekt Notera att ett objekts attribut är kopplade till objektet och inte klassen rect1 = Rectangle(20,30, blue ) rect2 = Rectangle(30,10, yellow ) print Första rektangelns färg är \%s \% rect1.color print Andra rektangelns färg är \%s \% rect2.color 10

KLASSER OCH OBJEKT Koppla funktioner till objekt I klassen kan vi skapa funktioner som är kopplade till objekt av den klassen, metoder class Rectangle: def init (self, w, h, color): self.w = w self.h = h self.color = color def resize(self, w, h): self.w = w self.h = h 11

KLASSER OCH OBJEKT Koppla funktioner till objekt I klassen kan vi skapa funktioner som är kopplade till objekt av den klassen, metoder rect = Rectangle(20,30, blue ) print Rektangelns storlek är \%i \%i \% rect.w, rect. rect.resize(10,40) print Rektangelns storlek är \%i \%i \% rect.w, rect. 12

Referenser 13

REFERENSER Vad är en variabel? En variabel skapas i namnrummet Namnet är nyckeln och värdet är en referens till var i minnet datat finns. Variabeln används för att referera data Flera variabler kan referera samma data 14

REFERENSER Vad sker vid tilldelning? Är högerledet data, skapas en referens till datat a = 3 Är högerledet en variabel, kopieras referensen INTE datat. a = 3 # a refererar datat 3 b = a # b refererar samma 3a 15

REFERENSER Är detta ett problem? Kan datat inte förändras är detta inte ett problem heltal, flyttal, tupler, strängar Med förändringsbart data måste vi vara försiktig!!! listor, strängindexerade fält, objekt a = [1, 2, 3] b = a a[1] = -1 print a # [1, -1, 3] print b # [1, -1, 3] OBS!!! 16

REFERENSER Vad sker vid funktionsanrop? Samma sak! en parameter är en lokal variabel som tilldelas vid funktionsanropet med agumentet def foo(param1): print param1 foo(3) # param1 refererar 3 a = 4 foo(a) # param1 refererar samma 4a som a list = [1, 2, 3] foo(list) # param1 och list refererar samma lista 17

REFERENSER Kopiera en lista För att få en kopia av en lista kan vi använda modulen copy from copy import copy a = [1, 2, 3] b = copy(a) a[1] = -1 print a # [1, -1, 3] print b # [1, 2, 3] 18

REFERENSER Fortfarande haveri copy fungerar bara på endimensionella listor vad händer om vi har listor i listor? from copy import copy a = [[1,2], [3,4], [5,6]] b = copy(a) a[1][1] = -1 print a # [[1,2], [3,-1], [5,6]] print b # [[1,2], [3,-1], [5,6]] 19

REFERENSER Djup kopiering Lösningen är deepcopy Gör en kopia även listor av listor from copy import deepcopy a = [[1,2], [3,4], [5,6]] b = deepcopy(a) a[1][1] = -1 print a # [[1,2], [3,-1], [5,6]] print b # [[1,2], [3,4], [5,6]] 20