klasser och objekt
Post on 18-Jan-2016
53 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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
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.
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
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
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
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
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
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
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1111
Ett objekt per förekomst
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
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(); ...
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());}
}
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)…
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);
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)
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”
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 )
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
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
top related