120 likes | 231 Views
Föreläsning 4. Metoder Metodexempel: slumptal med Math.random() konvertering mellan olika typer Konvertering med cast. Metoder.
E N D
Föreläsning 4 • Metoder • Metodexempel: slumptal med Math.random() konvertering mellan olika typer • Konvertering med cast
Metoder • Vissa beräkningar behöver man göra ofta i ett program. Istället för att skriva satserna som utför beräkningen flera gånger kan man definiera en metod som gör beräkningen. • En metod känner man igen på att den har parenteser efter namnet (t ex println(), sin(0.58)). • Tillhör alltid en klass.
Hur fungerar metoder? • Är som ett recept eller en funktion • Satserna i metoden utförs bara då metoden anropas • Inparametrar – indata, information som behövs i metoden • Returvärde – utdata, metodens resultat
Hur skriver man en metod? • Returvärdets typ/klass • Primitiv typ t ex int, double • Klass t ex String, Color • void om metoden inte returnerar något • Metodens namn • Formella parametrars typ och namn • Skrivs inom parentes • Satser • Retursats (krävs bara för metod som returnerar något) • Det värde som returneras måste vara av samma typ som angavs i början av metoddefinitionen
Att anropa metoder • En metod gör något med objektet. • För att anropa en metod måste man både tala om vilket objekt och vilken metod det gäller. Exempel: bred.grow(8,0); • Mellan objektet (egentligen variabeln som refererar till objektet) och metoden skrivs en punkt. • Metoder skrivs alltid med parenteser i slutet.
Parametrar • När en anropsparameter skickas med vid ett metodanrop kopieras dess värde till den formella parametern. • Kan ett metodanrop ändra på anropsparametern? • Om den är av primitiv datatyp: VÄRDET KAN INTE ÄNDRAS • Om den är en referens till ett objekt: VÄRDEN INUTI OBJEKTET KAN ÄNDRAS • Om den är en referens till en sträng: STRÄNGEN KAN INTE ÄNDRAS
Olika metoder anrop av void-metod med parameter: sparkonto.uttag(100.0); double-metod utan parameter: double s = sparkonto.visaSaldo(); boolean-metod: if(str1.equals(str2)) ... static-metod: double x = Math.random(); anrop av metod i samma klass: double u = uttagsavgift(belopp);
Metodexempel: slumptal • I klassen Math finns en metod, random(), som ger slumptal. • Metoden är static så man behöver inte skapa ett objekt av typen Math för att anropa den: double x = Math.random() ; • Varje anrop ger ett nytt slumptal i intervallet 0<= x <1.
Slumptal i program // Slumpar ett myntkast class Mynt { public static void main(String[] args){ double x = Math.random(); if (x<0.5) System.out.println("KRONA"); else System.out.println("KLAVE"); } //main } // class Mynt
Metodexempel: konvertering • Sträng till heltal int heltal = Integer.parseInt(rad); • Sträng till tecken char tecken = rad.charAt(0);
Typkonvertering (cast) • Används när man explicit vill ändra typen av ett uttryck. • Exempel: double x = 2.75; int i = (int) x; • i får här värdet 2 • Fungerar bara för rimliga konverteringar.
Typkonvertering - exempel class Yatzykast { public static void main(String[] args) { for(int i=0;i<5;i++) { double x = 6*Math.random();//0<=x<6.0 int n = 1 + (int)x; //ett till sex System.out.print(n+" "); } //for System.out.println(); } //main } //class Yatzykast