Presentation laddar. Vänta.

Presentation laddar. Vänta.

Klasser och objekt.

Liknande presentationer


En presentation över ämnet: "Klasser och objekt."— Presentationens avskrift:

1 Klasser och objekt

2 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; }

3 Meddelandesändning mellan objekt
a:Person b:Person svar := FrågaNamn() : string [svar] Vad heter Du? Nisse! class Person { string namn; string FrågaNamn() return namn; }

4 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.

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

6 Klass i UML Person klassnamn födelsedag : DateTime namn : string
telefon : string attribut Person(födelsedag : DateTime, namn : string, telefon : string) Telefon() : string Telefon(value : string) Namn () : string Födelsedag () : DateTime DagarTillNästaFödelsedag () : int operationer

7 Objekt i UML eva : Person objektidentifierare:klassnamn
födelsedag = ” ” namn = ”Eva” telefon = ” ” attribut med ev värden

8 Tre instanser ur samma klass
hjärterDam:Kort färg = hjärter valör = dam Kort ruterKung:Kort färg valör färg = ruter valör = kung spaderEss:Kort färg = spader valör = ess

9 Klasser är inte samlingar av objekt
En kortlek är ett objekt i vilken ingår ett antal kort-objekt :Kortlek korten : Kort[52] hjärterDam:Kort färg: hjärter valör: dam ruterKung:Kort färg: ruter valör: kung spaderEss:Kort färg = spader valör = ess En samling av objekt är inte en klass utan det är ett objekt i sig

10 Samlingar av objekt är inte klasser
..de är objekt i sig! class Kortlek { Kort[] korten = new Kort[52]; } Ett arrayobjekt class Kort { string färg; string valör; } Klasser är inte heller samlingar av objekt. Klasser är ”mallar” för objekten.

11 Ett objekt per förekomst

12 Vad är objekt? Data Metoder (algoritmer) Bil class Bil { string regnr;
float liter; float km; } static float förbrukning (Bil b2) { return b2.liter/b2.km*10; } Bil regnr liter km förbrukning()

13 Objektorientering En klass
class Bil { string regnr; float liter; float km; } 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. 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. ... Bil b2 = new Bil(); En klass beskrivs i programkoden medan objekten skapas och existerar under exekveringen av programmet.

14 Objektet Bil regnr:string liter:float km:float forbrukning():float
minBil:Bil Privat minne (för att lagra data) regnr = ”NHG 084” liter = 2977 km = 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()); }

15 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)…

16 Sekvensdiagram i UML X using System; class PersonTest {
public static void Main( ) { } Sekvensdiagram i UML Person evaA = new Person(new DateTime(1980, 12, 24), "Eva", " "); Person evaB = evaA; evaB.Telefon = " "; string tfn = evaA.Telefon; Console.WriteLine("Telefon: " + tfn); PersonTest Console System Main ( ) new(födelsedag : DateTime, namn : string, telefon : string) evaA:Person Telefon(value : string) tfn = Telefon() : string WriteLine( tfn ) X

17 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)

18 Meddelanden i ett objektorienterat system
avsändare Nisse:Person mottagare meddelande argument minBil.kör (”fort”); ”Metoden” är den kod som exekveras när just ”minBil” får meddelandet ”kör” minBil:Bil operation kör(hastighet)

19 Meddelandesändning primärminnet NisseTest Person Bil Nisse:Person
class Person { Bil minBil = new Bil(); } primärminnet main( :string[] ) NisseTest void åkTillJobbet () { minBil.kör(”fort”); } class Bil { } Person Bil void kör (string hastighet) { // wrooom... } åkTillJobbet() kör( :string ) class NisseTest { static void Main (string[] args) { Person Nisse = new Person(); } Nisse:Person minBil:Bil Nisse.åkTillJobbet();

20 Jag har dessa variabler
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 attribut (privat minne) skrivUt() författare() status() Kod för skrivUt() operationer Kod för författare() Kod för status() metoder

21 Attribut Beskriver objektens egenskaper och tillstånd
Ett attribut i en konceptuell modell skall vara enkla attribut eller datavärden Attributens typer kan exempelvis vara av typen: bool, DateTime, Number, string Andra attributtyper kan vara exempelvis: Adress, Personnummer, Telefonnummer


Ladda ner ppt "Klasser och objekt."

Liknande presentationer


Google-annonser