1 / 21

Klasser och objekt

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.

elma
Download Presentation

Klasser och objekt

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 klassnamn Person 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 objektidentifierare:klassnamn eva : Person födelsedag = ”1980-12-24” namn = ”Eva” telefon = ”021-101300” 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 hjärterDam:Kort färg: hjärter valör: dam ruterKung:Kort färg: ruter valör: kung spaderEss:Kort :Kortlek färg = spader valör = ess korten : Kort[52] En samling av objekt är inte en klassutan det är ett objekt i sig

  10. Samlingar av objekt är inte klasser Ett arrayobjekt ..de är objekt i sig! class Kortlek { Kort[] korten = new Kort[52]; } 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) 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 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 minBil:Bil regnr:string liter:float km:float regnr = ”NHG 084” liter = 2977 km = 61267 Privat minne (för att lagra data) forbrukning():float float forbrukning () { return liter/km*10); } Instruktioner (för att bearbeta data) 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 Vi instantierar ett objekt… Bil minBil = new Bil(“NHG084”); Konstruktorn körs… Bil (string r) { regnr = r;} …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 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); 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 NisseTest main( :string[] ) Person Bil Nisse:Person minBil:Bil class Person { Bil minBil = new Bil(); } primärminnet void åkTillJobbet () { minBil.kör(”fort”); } class Bil { } void kör (string hastighet) {// wrooom... } åkTillJobbet() kör( :string ) class NisseTest {static void Main (string[] args) { Person Nisse = new Person(); } } Nisse.åkTillJobbet();

  20. 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 Objektet sett inifrån :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

More Related