150 likes | 335 Views
Operationer och metoder. Objekt: data och metoder. Dataorienterad programmering. Funktionsorienterad programmering. Data. Metoder. Objekt. Objektorienterad programmering. Data. Metoder. Metodens signatur.
E N D
Objekt: data och metoder Dataorienterad programmering Funktionsorienterad programmering Data Metoder Objekt Objektorienterad programmering Data Metoder
Metodens signatur Ordet public anger att metoden är synlig utifrån, dvs att även andra program (klasser) kan anropa den. Ordet static anger att metoden är en klassmetod (statisk metod). Detta nyckelord utelämnas helt, om vi vill använda det för objekt. Om en metod skall returnera något måste rätt datatyp anges här. Om metoden inte lämnar något returvärde skriver man istället void. Parametrar till metoden. Dessa fungerar inom metoden som lokala variabler. Metodens namn public static int minstaTalet (int a, int b) { if (a < b) return a; return b; } Kombinationen utav metodnamn, formella parametrar och returtyp, kallas för metodens ”signatur”
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
Objekt i UML objektidentifierare:klassnamn eva : Person födelsedag = ”1980-12-24” namn = ”Eva” telefon = ”021-101300” attribut med ev värden
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()
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.
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()); } }
Operationer och metoder Klassnamn operation (argumentlista): returtyp • operation – ”deklarationen” • metod - operationens kropp (koden, ”definitionen”) • en operation kan motsvaras av flera metoder (polymorfism) • Metoderna beskrivs med algoritmer på ”vanligt” sätt: • pseudokod/strukturerad svenska • flödesdiagram eller JSP
new, konstruktor Deklaration och initiering av en värdevariabel tal av datatypen int int tal = 4; Deklaration och initiering av en referensvariabel ruta av klassen Rektangel Rektangel ruta = new Rektangel(5,6); Initieringen sker genom operatorn new och en konstruktor i klassen Rektangel
konstruktor En konstruktor är en speciell metod, som endast används för att initiera objekt. Den har samma namn som klassen. Att skapa ett objekt är samma sak som att skapa en ny instans av klassen. Själva objektet saknar namn. Det är referensen som heter ruta. Man når objektet via referensen. Om man deklarerar en egen konstruktor och dessutom vill ha tillgång till ”den tomma konstruktorn” (utan argument, vilken man annars ärver från Object) så måste man deklarera även denna.
Algoritmer Interaktionsdiagram • En interaktion är en beskrivning av en följd av åtgärder som vidtas på grund av en händelse • Realisera händelsernas respons med operationer och meddelanden mellan objekten (klasserna) • Interaktionen beskriver ett dynamiskt förlopp • Använd flera diagram för att visa olika utfall vid komplexa scenarion
Sekvensdiagram a:ClassA b:ClassB message1() message2() message3()
Interaktionsdiagram class ClassB { void message2() {} void message3() {} } class ClassA { ClassB b = new ClassB(); void message1() { b.message2(); b.message3(); } }
this vid åtkomst av attribut Närhelst du vill vara säker på att du använder objektets instansattribut, kan du ange this som prefix till attributet. class A { int a; void function(int a) { this.a = a; } }