klasser och objekt

21
Klasser och objekt

Upload: elma

Post on 18-Jan-2016

59 views

Category:

Documents


0 download

DESCRIPTION

Klasser och objekt. Meddelandesändning mellan objekt. a:ClassOne. b:ClassTwo. svar := beräknaSumma(a,b) : int. [svar]. Vad är summan av 2 plus 3?. 5!. class ClassTwo { int beräknaSumma(int a, int b) { return a + b; } }. Meddelandesändning mellan objekt. a:Person. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Klasser och objekt

Klasser och objekt

Page 2: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22

a:ClassOne b:ClassTwo

svar := beräknaSumma(a,b) : int

[svar]

Vad är summan av 2 plus 3?

5!

class ClassTwo { int beräknaSumma(int a, int b) { return a + b; }}

Meddelandesändning mellan objekt

Page 3: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 33

a:Person b:Person

svar := FrågaNamn() : string

[svar]

Vad heter Du? Nisse!

class Person { string namn;

string FrågaNamn() { return namn; }}

Meddelandesändning mellan objekt

Page 4: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 44

Klasser och objekt

• Ett objekt är en instans av en klass.• Hur ett objekt tillhandahåller en specifik tjänst

(operation) definieras av vilken klass objektet är en instans av.

• Samtliga instanser av en specifik klass har samma metod (kod) för en specifik tjänst (operation), men för sina egna data.

Page 5: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 55

Klasser• Det finns ofta många objekt av samma typ• En klass är en beskrivning av objekt av samma

typ

Page 6: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 66

Person

Person(födelsedag : DateTime, namn : string, telefon : string)Telefon() : stringTelefon(value : string)Namn () : stringFödelsedag () : DateTimeDagarTillNästaFödelsedag () : int

födelsedag : DateTimenamn : stringtelefon : string

klassnamn

attribut

operationer

Klass i UML

Page 7: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 77

eva : Person

födelsedag = ”1980-12-24”namn = ”Eva”telefon = ”021-101300”

Objekt i UML

objektidentifierare:klassnamn

attribut med ev värden

Page 8: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 88

hjärterDam:Kort

färg = hjärtervalör = dam

ruterKung:Kort

färg = rutervalör = kung

spaderEss:Kort

färg = spadervalör = ess

Tre instanser ur samma klass

Kort

färgvalör

Page 9: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 99

Klasser är inte samlingar av objekt

• En kortlek är ett objekt i vilken ingår ett antal kort-objekt

hjärterDam:Kort

färg: hjärtervalör: dam

ruterKung:Kort

färg: rutervalör: kung

spaderEss:Kort

färg = spadervalör = ess

:Kortlek

korten : Kort[52]

En samling av objekt är inte en klassutan det är ett objekt i sig

Page 10: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1010

Samlingar av objekt är inte klasser

class Kort {

string färg;string valör;

}

class Kortlek {

Kort[] korten = new Kort[52]; }

..de är objekt i sig!

Klasser är inte heller samlingar av objekt. Klasser är ”mallar” för objekten.

Ett arrayobjekt

Page 11: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1111

Ett objekt per förekomst

Page 12: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1212

Vad är objekt?

Bil

Metoder(algoritmer)

class Bil { string regnr; float liter; float km;}

static float förbrukning (Bil b2) { return b2.liter/b2.km*10;}

regnrliterkm

förbrukning()

Data

Page 13: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1313

Objektorientering

class Bil { string regnr; float liter; float km;

}

float förbrukning () { return liter/km*10;} Ett objekt

innehåller variabler och metoder.Värdet av variablerna definierar objektets tillstånd och metoderna definierar objektets beteende.

En klassär en “ritning” eller en “mall” som beskriver objekten.Klassen reserverar inget minnesutrymme för data utan varje objekt har sitt eget datautrymme.

En klass beskrivs i programkoden medan objekten skapas och existerar under exekveringen av programmet.

... Bil b2 = new Bil(); ...

Page 14: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1414

Objektet

Bil

regnr:stringliter:floatkm:float

forbrukning():float

minBil:Bil

Privat minne (för att lagra data)

regnr = ”NHG 084”liter = 2977km = 61267

Instruktioner (för att bearbeta data)

float forbrukning () { return liter/km*10);}

class BilTest {

public static void Main (string[] args) { Bil minBil = new Bil(); minBil.regnr = ”NHG084”; minBil.liter = 2977; minBil.km = 61267; System.Console.WriteLine(minBil.forbrukning());}

}

Page 15: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1515

Varje objekt har en livscykel

Bil minBil = new Bil(“NHG084”);

Vi instantierar ett objekt…

Bil (string r) { regnr = r;}

Konstruktorn körs…

…och objektet är skapat. Därefter kan objektet förändras…

…och tas bort…

Bil minBil = null;

…fast i Java eller C# tas objektet verkligen bort först när sopgubben (GC) varit framme (I C++ måste du själv agera sophanterare)…

Page 16: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1616

System PersonTest

evaA:Person

X

Main ( )

new(födelsedag : DateTime, namn : string, telefon : string)

Telefon(value : string)

Console

WriteLine( tfn )

tfn = Telefon() : string

Sekvensdiagram i UML

using System;class PersonTest {

public static void Main( ) {

}}

Person evaA = new Person(new DateTime(1980, 12, 24), "Eva", "021-101300");Person evaB = evaA;evaB.Telefon = "016-153600";string tfn = evaA.Telefon;Console.WriteLine("Telefon: " + tfn);

Page 17: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1717

Klasser: Protokoll• Den samling operationer ett objekt har• Endast meddelanden i protokollet får sändas till

ett objekt

:Dokument

skrivUt()författare()status()

protokoll (interface)

Page 18: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1818

Meddelanden i ett objektorienterat system

minBil:Bil

kör(hastighet)

Nisse:Person

minBil.kör (”fort”);

avsändare

mottagare

meddelande

argument

operation

”Metoden” är den kod som exekveras när just ”minBil” får meddelandet ”kör”

Page 19: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1919

Meddelandesändningclass Person {

Bil minBil = new Bil();

}

class NisseTest {

static void Main (string[] args)

{ Person Nisse = new Person(); }

}

void åkTillJobbet () {

minBil.kör(”fort”);}

class Bil {

}

void kör (string hastighet)

{ // wrooom...

}

Nisse.åkTillJobbet();

primärminnet

Person Bil

Nisse:Person minBil:Bil

main( :string[] )

NisseTest

åkTillJobbet() kör( :string )

Page 20: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 2020

Objektet sett inifrån• Varje metod är en sekvens av

instruktioner som exekveras som svar på ett meddelande

• Det finns en metod för varje operation i protokollet

• Med ”objektets protokoll” avses den samling operationer ett objekt har

• Endast meddelanden i protokollet får sändas till ett objekt

:Dokument

Jag har dessa variabler

skrivUt()författare()status()

metoder

attribut (privat minne)

Kod för skrivUt()

Kod för författare()

Kod för status()

operationer

Page 21: Klasser och objekt

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 2121

Attribut

• Beskriver objektens egenskaper och tillstånd

• Ett attribut i en konceptuell modell skall vara enkla attributeller datavärden

• Attributens typer kan exempelvis vara av typen:

bool, DateTime, Number, string

• Andra attributtyper kan vara exempelvis:

Adress, Personnummer, Telefonnummer