Metoder (funktioner) Murach s: kap Winstrand Development

Relevanta dokument
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Övning. Introduktion och förberedelser

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Exceptions (undantag) Murach s: kap 7

Övningar Dag 2 En första klass

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Konvertering från sträng. Winstrand Development

Java, klasser, objekt (Skansholm: Kapitel 2)

TDDC77 Objektorienterad Programmering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Programmeringsteknik med C och Matlab

Windows Forms Winstrand Development

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Funktionens deklaration

tentaplugg.nu av studenter för studenter

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

TDIU01 - Programmering i C++, grundkurs

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Winstrand Development

TUTORIAL: KLASSER & OBJEKT

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Funktioner. Linda Mannila

Objektorienterad programmering

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Del A (obligatorisk för alla)

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Klassdeklaration. Metoddeklaration. Parameteröverföring

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

2D1339 Programkonstruktion för F1, ht 2004

Laboration 1. Utgåva 1 Gäller från

C++ Objektorientering - Klasser. Eric Elfving

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

TDIU01 - Programmering i C++, grundkurs

Lösningsförslag övning 2.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Användarhandledning Version 1.2

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

tentaplugg.nu av studenter för studenter

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Objektorienterad Programmering (TDDC77)

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

1 Klasser och objektorientering Vad är objektorientering?

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

2D1339 Programkonstruktion för F1, ht 2003

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Tentamen OOP

Objektorienterad programmering Föreläsning 5

Programmering = modellering

2D1342 Programkonstruktion för F1, ht 2006

Objekt och klasser - Introduktion

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Föreläsning 3: Booleans, if, switch

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Objektorienterad Programmering (TDDC77)

Grundläggande programmering med C# 7,5 högskolepoäng

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Systemutvecklare SU13, Malmö

Malmö högskola 2007/2008 Teknik och samhälle

Programmering A. Johan Eliasson

Chapter 4: Writing Classes/ Att skriva egna klasser.

Tentamen i Programmeringsteknik I

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

JavaScript del 5 Funktioner

TENTAMEN OOP

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Objektorientering: Lagring, räckvidd och livstid

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Språket Python - Del 2 Grundkurs i programmering med Python

Föreläsning 2 Programmeringsteknik och C DD1316

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Transkript:

(funktioner) Murach s: kap 6 2013-01-23 1 Winstrand Development

Metoder I C# kan vi dela in koden i block en kodsekvens ska köras likadant på flera ställen i applikationen. Detta block kallas för en metod (ibland även funktion) Exempel på en metod kan vara att: Utföra samma beräkningssteg flera gånger Hämta standardinställningar när programmet startar eller användaren önskar detta Spara ett dokument Hämta data från, eller skriva till, en databas Winstrand Development 2013-01-23 2

Metoder Istället för att skriva samma saker på flera ställen kan man göra en metod av sekvensen och anropa detta när det behövs. Du får en bättre överblick på koden och kan enklare organisera om/ändra funktionalitet. Metoder är en grundläggande faktor för att kunna jobba objektorienterat Winstrand Development 2013-01-23 3

Syntax för metoder: En metod är uppbyggd av fyra delar, varav två är obligatoriska, returntype och MethodName acccessor returntype MethodName([parameterList]) //Skriv kod för metoden här Namn accessor returntype MethodName Beskrivning Metodens åtkomst, synlighet, antingen public eller private. Med public tillåts andra klasser komma åt metoden. Om denna utelämnas blir åtkomsten automatiskt private. Definierar den datatyp som returneras. Kan vara de inbyggda (int, double etc), klasser eller void. Måste anges. Det namn som används för att anropa metoden. Måste anges. parameterlist Ett antal variabler, parametrar, som skickas till metoden. Winstrand Development 2013-01-23 4

Exempel på metoder: private void InitializeWindow() //Beräkningar... public decimal GetDiscountRate(decimal subtotal) decimal discountrate = 0m; //Beräkningar... return discountrate; int Sum(int start, int stop) int result = 0; //Beräkningar... return result; Åtkomst Privat Returtyp Ingen (void) Parametrar Inga Åtkomst Publik Returtyp decimal Parametrar decimal subtotal Åtkomst Privat Returtyp int Parametrar int start int stop Winstrand Development 2013-01-23 5

Returtyp Den del i metoden som betecknas returntype är den datatyp som returneras från metoden. En metod kan returnera ett värde eller inget alls. Om inget returneras så är typen void. Nyckelordet return används i metoden för att returnera värdet. Returtypen är int. I metoden returneras värdet på variabeln result int Sum(int start, int stop) int result = 0; //Beräkningar... return result; Winstrand Development 2013-01-23 6

Returtypen void Om inte metoden ska returnera något värde anges void (tom, ogiltig) framför metodens namn. Nyckelordet return utesluts i metoden då void specificerar att ingenting ska returneras när anropet är klart. Inget returneras return är utelämnat. void InitializeWindow() Console.Clear(); Console.WriteLine("Welcome to my store"); Winstrand Development 2013-01-23 7

Parameterlista I parentesen efter metodens namn finns parameterlistan. En metod kan genom denna lista ta emot ingen, en eller flera parametrar. Parametrarna separeras med kommatecken. En parameter är en variabel som används inuti metoden. Parametrarna skickas med vid anropet av metoden. Winstrand Development 2013-01-23 8

Parameterlista Precis som med vanliga variabler måste både dess datatyp och namn definieras. Variablerna är inom metodens scope de kan inte användas utanför detta public decimal GetDiscountRate(decimal subtotal) decimal discountrate = 0m; // more discount when buying for more if (subtotal >= 1000m) discountrate = 0.2m; else if (subtotal >= 500m) discountrate = 0.1m; return discountrate; Winstrand Development 2013-01-23 9

Exempel Några metoder redo för användning. Metoderna är XML-dokumenterade /// <summary> /// Returns an int and takes 2 ints as parameters /// </summary> /// <param name="start">minimum value</param> /// <param name="stop">maximum</param> /// <returns> /// The sum of the integers between start and stop /// </returns> int Sum(int start, int stop) int result = 0; for (int i = start; i <= stop; i++) result += i; return result; /// <summary> /// Neither returns anything nor takes any parameters. /// </summary> private void InitializeWindow() Console.Clear(); Console.WriteLine("Welcome to my store"); /// <summary> /// Returns a decimal value and takes /// 1 decimal parameter /// </summary> /// <param name="subtotal"> /// The total cost before any discount /// </param> /// <returns>the discount rate</returns> public decimal GetDiscountRate(decimal subtotal) decimal discountrate = 0m; // more discount when buying more if (subtotal >= 1000m) discountrate = 0.2m; else if (subtotal >= 500m) discountrate = 0.1m; return discountrate; Winstrand Development 2013-01-23 10

Anropa metoder För att kunna använda en metod måste den anropas Anropet till en metod sker med hjälp av punktoperatorn (.). Vi har använt flera metoder tidigare via denna operator: //Returnerar inget (void) - tar en parameter Console.WriteLine("Hello"); //Returnerar en string - tar ingen parameter string input = Console.ReadLine(); //Returnerar en decimal - tar en string-parameter decimal value = Convert.ToDecimal(input); Winstrand Development 2013-01-23 11

Anropa metoder Alla metoder tillhör en klass. Så länge metoden vi anropar är i en annan klass måste punkten användas. Är däremot metoden i samma klass kan man använda nyckelordet this eller helt utelämna punkten. Nyckelordet this är bra att använda för att förtydliga att det är just detta objekt som vi arbetar med. Winstrand Development 2013-01-23 12

Anropa metoder /// <summary>en applikation med några metoder/// </summary> public partial class MethodsExampleForm : Form /// <summary> /// Anropas när användaren trycker på knappen btncalculate /// </summary> private void btncalculate_click(object sender, EventArgs e) decimal price, rate; price = Convert.ToDecimal(txtPrice.Text); rate = GetDiscountRate(price); txtrate.text = rate.tostring("p") ; Anrop till en metod i samma klass public decimal GetDiscountRate(decimal subtotal) decimal discountrate = 0m; if (subtotal >= 1000m) discountrate = 0.2m; else if (subtotal >= 500m) discountrate = 0.1m; return discountrate; //Resterande delar är utelämnade... Winstrand Development 2013-01-23 13

Anropa metoder Antalet parameterar i parameterlistan, samt deras datatyper, måste matcha definitionen av metoden. Variablernas namn behöver inte överensstämma med det namn parametern har. Det är utvecklarens (din) uppgift att se till så du skickar rätt parameter på rätt plats! private void btncalculate_click(object sender, EventArgs e) decimal price, rate; price = Convert.ToDecimal(txtPrice.Text); rate = GetDiscountRate(price); txtrate.text = rate.tostring("p"); public decimal GetDiscountRate(decimal subtotal) //... Winstrand Development 2013-01-23 14

Anropa metoder I exemplet nedan anropas metoden Sum. Villkoren för att koden ska kompileras är uppfylld, men resultatet kommer alltid vara 0 då vi skickar parametrarna i fel ordning! private void btnsum_click(object sender, EventArgs e) int max, min, result; min = 0; max = 10; //skickar parametrarna i fel ordning! result = Sum(max, min); //ger alltid värdet 0 txtsum.text = result.tostring(); int Sum(int start, int stop) int result = 0; for (int i = start; i <= stop; i++) result += i; return result; Winstrand Development 2013-01-23 15

Identifiera metoder Ofta finns det delar av koden man skrivit som kan brytas ut till en metod. Upprepas samma rader kod flera gånger är det alltid en bra idé att bryta ut en metod. Om vi vill ändra koden vid ett senare tillfäller kan det räcka att ändra koden i metoden. Har vi inte skapat metoder kan vi vara tvingade att göra samma ändringar på flera ställen i koden. Risken för att vi missar ett ställe är stort risken för buggar ökar! Winstrand Development 2013-01-23 16

Identifiera metoder Exempel Utför samma operation flera gånger. Winstrand Development 2013-01-23 17

Identifiera Metoder Exempel Slutresultatet är det samma Winstrand Development 2013-01-23 18

Riktlinjer för att skapa metoder Varje metod ska utföra en distinkt uppgift samt vara kort Ett bra mått är att en metod inte ska överstiga 20 rader. Om så är fallet ska metoden brytas ner i flera delar. Namnet ska återspegla metodens uppgift Namn på metoder skrivs med stor bokstav i början, så kallad PascalCase. Använd gärna ett verb i namnet ex. GetUserData() och CalculateSubTotal() Metoden ska dokumenteras. Använd XML-dokumentation för alla metoder. Detta skapas genom att använda /// (tre st. slash). Visual Studio genererar automatiskt de taggar som behövs. Använd kommentarer (// eller /* */) där du behöver förtydliga vad som görs. Winstrand Development 2013-01-23 19