Javas klassbibliotek. Kap 7: Sid 2

Storlek: px
Starta visningen från sidan:

Download "Javas klassbibliotek. Kap 7: Sid 2"

Transkript

1 7 Mest om metoder Javas klassbibliotek Allmänt om metoder Metoderna i klassen Math Trigonometriska övningar Experiment med slumptal Förvandla sträng till decimaltal Antal decimaler i utskrift Metoder i en applet Metoder som returnerar värde Egna klassmetoder

2 Kap 7: Sid 2 Javas klassbibliotek Arv När du skapar en klass, MinApplet, ärver du från en redan befintlig klass Applet. Den befintliga klassen Applet ärver i sin tur från en annan befintlig klass som heter Panel. Denna ärver i sin tur från en klass som heter Container, som ärver från en klass vid namn Component, vilken (slutligen) ärver från ur-klassen Object. Så här alltså: Object Component Container Panel Applet java.lang java.awt java.applet MinApplet Alla klasser ärver från klassen Object. För exempelvis klasserna Button, Label och TextField ser hierarkin ut så här: Object Component Button Label TextComponent TextField Java7_MestOmMetoder.doc Ove Lundgren 2

3 Kap 7: Sid 3 Klassbiblioteket, Java API (= Java Application Programming Interface) De "färdiga" java-klasserna följer med JDK och är lagrade i "paket" (packages): Klassen Applet ovan finns i paketet java.applet När man skriver klassens namn tar man ofta med paketets namn också, t ex java.applet.applet Klassen Object ovan finns i paketet java.lang så klassens "fullständiga" namn är java.lang.object Övriga klasser ovan finns i paketet java.awt (awt = Abstract Window Toolkit) Exempelvis skrivs alltså klassen Button med "paket-tillhörighet" så här: java.awt.button Alla klasser måste importeras - utom de klasser som tillhör paketet java.lang Utöver klasserna i JDK finns "färdiga klasser" från andra leverantörer. Övning: Dokumentation Alla JDK:s klasser med tillhörande fält och metoder finns beskrivna i html-dokument som levereras med JDK. I mappen...\jdk...\docs\api\ finns filen packages.html Öppna den i en webläsare! (Se till att du öppnar rätt fil. Det finns många med liknande namn.) En lista över alla paket visas Klicka på package java.applet Innehållet i paketet java.applet visas. Vi känner igen klassen Applet (Vi har också använt interfacet Audioclip ) Klicka Applet En hierarki med alla superklasserna till klassen Applet visas, med klassernas namn och "paket"-tillhörighet. Rulla ned sidan till Method index Vi känner igen ett antal metoder som vi använt, bland andra init()och showstatus() Klicka på showstatus En beskrivning av metoden visas Återvänd till början av Class java.applet.applet-sidan (Övningen fortsätter på nästa sida ) Java7_MestOmMetoder.doc Ove Lundgren 3

4 Kap 7: Sid 4 En applet har, som bekant, metoden paint() Varför hittar vi inte den? Jo den är ärvd från en av superklasserna. På föregående sidan återvände du till java.applet.applet Klicka nu på superklasserna, det vill säga java.awt.panel, java.awt.container osv och ta reda på vilken klass som, "från början", äger metoden paint() Vi hittar paint() i klassen Container Klicka på paint() och läs om den metoden. Återvänd sedan till sidan Java API Packages: Klicka All Packages högst upp till vänster Klicka nu package java.awt Rulla ner till Class index Du känner igen många klasser: Button, Color, Font, Image, Label, TextField med flera Klicka på några kända klasser. Leta upp metoder som vi använt (Under Method index) Ibland hittar man inte en metod. Då får man leta i superklasserna I klasserna Color och Font känner du igen en del av innehållet i Field index Studera också "Constructor index" för några klasser, t ex TextField och Color. När ett nytt objekt skapas (med new, du vet ) så anropas ju konstruktorn som skapar objektet. Man kan ofta välja mellan olika konstruktorer. Det som står efter new kan se lite olika ut beroende på vilken konstruktor vi väljer när vi skapar objektet. Constructor index är en sammanställning över möjliga konstruktorer. Exempel: När vi skapade textfält använde vi t ex konstruktorn TextField(int) - så här: TextField inruta; inruta = new TextField(10); (Detta ger ett textfält som rymmer 10 tecken.) Men ett textfält kan också skapas t ex med konstruktorn TextField(String) - så här: TextField inruta; inruta = new TextField("Kalle"); (Då skapas fältet med texten "Kalle" inlagd och i detta fall 5 tecken brett ) Återvänd till sidan Java API Packages Undersök paketet java.lang. Har vi använt någon klass i det paketet? (Du bör hitta String, Integer, Object) Högst upp på alla sidor i API-dokumentationen finns länken Class Hierarchy Klicka denna. Studera hur sidan Class Hierarchy är uppbyggd. Leta t ex upp klassen Applet och följ dess superklasser ända upp till klassen Object Högst upp på alla sidor i API-dokumentationen finns länken Index Klicka denna. Sidan Index of all Fields and Methods visas (Det kan ta lite tid att ladda in denna sida ) Här finns alla fält och metoder i bokstavsordning I fortsättningen: Ta som vana att gå in i API-dokumentationen när du stöter på en ny klass eller metod och "forska": I vilket paket finns klassen? Vilka klasser är dess superklasser? Vilken klass tillhör metoden? Java7_MestOmMetoder.doc Ove Lundgren 4

5 Kap 7: Sid 5 Allmänt om metoder Vi repeterar olika typer av metoder, vad som menas med överlagring och överskuggning och vad en klassmetod är. Begreppen har behandlats i tidigare kapitel. Metoder av typen void, utan parametrar Metoden utför något - men den är void, den lämnar inte något värde. Metoden är definierad utan parametrar. Den kräver alltså inga argument vid anropet. Exempel: Metoden rulla() definieras i en klass så här: public void rulla() // beskrivning vad som ska göras... Ett objekt (t ex bollen) som skapas utifrån klassen äger förstås metoden. Metoden anropas med bollen.rulla(); Exempel: Metoden show() är definierad i klassen Frame public void show() // definierad av java-konstruktörerna hos Sun Om vi har ett Frame-objekt med referensen f så visas objektet med anropet f.show(); Exempel: Metoden init() definieras i en klass (en applet) så här: public void init() inruta = new TextField(10); roed = new Color(255,0,0); // etc... Metoden anropas automatiskt av webbläsaren när appleten startar (Om vi tänker oss att webbläsaren kallar appletobjektet för x så utförs alltså satsen x.init(); automatiskt vid start ) Java7_MestOmMetoder.doc Ove Lundgren 5

6 Kap 7: Sid 6 Metoder av typen void, med parametrar Metoden utför något - men den är void, den lämnar inte något värde Metoden är definierad med parametrar. Den kräver alltså ett eller fler argument vid anropet Exempel: Metoden rulla() definieras i en klass så här: public void rulla (int n) // beskrivning vad som ska göras... Ett objekt (t ex olle) som skapas utifrån klassen äger metoden. Metoden anropas med argument, t ex: bollen.rulla(12); parameter argument Exempel: Metoden paint() definieras i en klass (en applet) så här: public void paint(graphics g) g.drawstring("hej",50,100); // etc... Metoden paint(grafobj); anropas automatiskt då applet skapas. grafobj är det Graphics-objekt som är knutet till appleten Exempel: Metoden drawoval() definieras i klassen Graphics public void drawoval( int x, int y, int b, int h ) // definierad av java-konstruktörerna hos Sun Om g är ett Graphics-objekt kan metoden anropas med t ex: g.drawoval(50,100,150,150); 4argument 4 parametrar Exempel: Metoden setbackground() definieras i klassen Component (och ärvs sedan av klassen Applet) public void setbackground(color c ) // definierad av java-konstruktörerna hos Sun Metoden kan anropas med: this.setbackground(farg) där farg är ett Color-objekt När ett objekt anropar en egen metod sätter man this framför punkten. ( Ordet this kan utelämnas - det är då underförstått att det är en egen metod som anropas. ) Java7_MestOmMetoder.doc Ove Lundgren 6

7 Kap 7: Sid 7 Icke-void-metoder En icke-void-metod kan vara definierad med eller utan parametrar. En icke-void-metod returnerar alltid ett värde. Icke-void-metoder kallas ofta funktioner. Exempel: Metoden (funktionen) volym() definieras i en klass t ex så här: public double volym(int n) // i detta fall returneras ett flyttal // beskrivning vad som ska göras... return v; Ett objekt (t ex bollen) som skapas utifrån klassen äger metoden. Metoden anropas t ex så här: vol = bollen.volym(12); eller System.out.println( bollen.volym(12)); Exempel: Metoden (funktionen) gettext() definieras i klassen TextComponent (och ärvs av TextField) public String gettext() // definierad av java-konstruktörerna hos Sun return s; // Sträng s är innehållet i det aktuella TextField-objektet Om vi har skapat ett TextField-objekt inruta, och namn är ett String-objekt, så kan metoden anropas: namn = inruta.gettext(); Överskuggning av metoder När vi skriver en applet så ärver vi från klassen Applet. Detta innebär att ett antal metoder redan finns, som paint(), init() med flera Vad händer då om vi definierar en metod paint() i vår applet, så här: public void paint(graphics g) g.drawoval(12,20,30,40); // och så vidare Jo den ursprungliga paint()-metoden ersätts av den nya... Detta kallas överskuggning (override, omdefiniera...) Överlagring av metoder Metoder med samma namn men med olika antal och/eller typ av parametrar kallas överlagrade metoder. Java7_MestOmMetoder.doc Ove Lundgren 7

8 Kap 7: Sid 8 Klassmetoder Normalt anropar vi en metod via ett objekt, exempelvis inruta.gettext(); Här har vi ett TextField-objekt, inruta, och vi använder metoden gettext() som är definierad i den klassen (eller, som i detta fall, i någon av dess superklasser) En klassmetod (ibland kallad statisk metod) är en metod som kan användas direkt, utan att man först har skapat ett objekt. Vi har redan använt några sådana metoder: Integer.parseInt(... ) Prompt.heltal(... ) Vi behöver inte skapa ett Integer-objekt eller Prompt-objekt för att använda metoderna... Man skriver helt enkelt klassens namn följt av metodnamnet (med en punkt emellan) Man kan säga att en klassmetod tillhör klassen som helhet inte de enskilda objekten. Integer är en klass som innehåller en rad metoder för hantering av heltal Prompt är en klass med metoder för inmatning av tal i konsolprogram (Tillhör detta läromedel, ej JDK) En metod blir en klassmetod om den deklareras med nyckelordet static Vi har definierat en statisk metod, main, vid flera tillfällen - när vi skrivit javaprogram: class KonsolProg public static void main( String args[] )... Metoden KonsolProg.main( ) anropas (av tolken java.exe ) vilket innebär att konsolprogrammet startar. Java7_MestOmMetoder.doc Ove Lundgren 8

9 Kap 7: Sid 9 Metoderna i klassen Math Det finns en javaklass som heter Math. Den tillhör java.lang-paketet (Fullständiga klassnamnet är alltså: java.lang.math) (Klassen behöver således inte importeras.) Denna klass innehåller en rad metoder (funktioner) för matematik. Alla metoder är klassmetoder (vi behöver inte skapa Math-objekt först...) Klassen har också två statiska fält (konstanter) för de intressanta talen π och e I sammanställningen nedan är x och y flyttal / decimaltal (double), medan i och j är heltal (int) Du bör kunna använda Math.PI nedan samt de fyra därpå följande metoderna. Lär dig de övriga om du känner till motsvarande begrepp i matematiken. Metod / Fält Returnerar Returtyp Exempel Math.PI talet π ( ) double y = Math.PI*x*x; y är arean hos en cirkel med radien x Math.sqrt(x) Kvadratroten ur talet x double y = Math.sqrt(25.0); y får värdet 5.0 Math.pow(x,y) x upphöjt till y, x y double y = Math.pow(2.0, 3.0); y får värdet 2 3 = 8.0 Math.random() ett slumptal mellan 0 och 1 (egentligen 0 slump < 1) double j = (int)(math.random()*6 ) + 1; j blir här ett av talen 1, 2, 3, 4, 5 eller 6 (En "tärning" alltså! Se avsnitten om slumptal!) Math.exp(x) e upphöjt till x, e x double y = Math.exp(2.0); y får värdet e 2 ( 7,389...) Math.E talet e (2,718...) double y = Math.E; y får värdet e (2,718 ) Math.log(x) naturlig logaritm för x, ln x double y = Math.log(5.0); y = ln 5 (1,609...) Math.sin(v) sinusvärdet, sin v double y = Math.sin(2.0): y = sin 2 (0,909...) OBS! argumentet i radianer! Math.cos(v) cosinusvärdet cos v double Math.tan(v) tangens tan v double Math.atan(x) arctangens arctan v (omvändning till tangens) double y = Math.arctan(1.0) y = arctan 1 (y blir π / 4 rad = 0,785 rad, dvs 45 o ) Vinkeln π / 4 har ju tangensvärdet 1 Math.abs(x) absolutbeloppet x double y=math.abs(-1.75); y får värdet 1,75 Math.abs(i) absolutbeloppet i int i = Math.abs(7); i får värdet 7 Bra att minnas i sammanhanget: Avhuggning till heltal får vi genom att göra en cast: i = (int)x; Gör om en sträng till heltal: t = Integer.parseInt(s) ; Gör om tal till sträng: s = t + ; Java7_MestOmMetoder.doc Ove Lundgren 9

10 Kap 7: Sid 10 Övning: Testa Math // Se till att Prompt.class finns i samma mapp class Mattetest public static void main( String args[] ) double r, x, y, z, rot,area ; int tarning, i, j; System.out.println("Testar pi:"); r = Prompt.decimaltal("Skriv radien "); area= Math.PI*r*r; System.out.println("Arean är " + area); System.out.println(); System.out.println("Testar roten ur:"); x = Prompt.decimaltal("Mata in ett tal "); rot= Math.sqrt(x); System.out.println("Kvadratroten är " + rot); System.out.println(); System.out.println("Testar upphöjt till:"); x = Prompt.decimaltal("Vilken bas? "); y = Prompt.decimaltal("Vilken exponent?"); z = Math.pow(x,y); System.out.println(x +" upphöjt till " + y + " är " + z); System.out.println(); System.out.println("Testar avhuggning till heltal:"); x = Prompt.decimaltal("Skriv ett tal med decimaler "); i = (int)x ; // här görs en cast System.out.println("Närmast mindre heltal är " + i); System.out.println(); System.out.println("Testar talet e:"); System.out.println("Talet e " + Math.E); x = Prompt.decimaltal("Till vilken exponent ska e upphöjas? "); System.out.println("e upphöjt till "+ x + " är " + Math.exp(x) ); System.out.println(); System.out.println("Testar naturliga logaritmen:"); x = Prompt.decimaltal("Skriv ett tal "); System.out.println("Naturl. log. för " + x + " är " + Math.log(x)); System.out.println(); System.out.println("Testar trigonometri:"); x = Prompt.decimaltal("Skriv en vinkel i radianer "); System.out.println("Sinusvärdet är " + Math.sin(x)); System.out.println("Cosinusvärdet är " + Math.cos(x)); System.out.println("Tangensvärdet är " + Math.tan(x)); System.out.println(); System.out.println("Testar absolutbelopp:"); x = Prompt.decimaltal("Skriv ett tal (gärna negativt) "); System.out.println("Talets absolutbelopp är " + Math.abs(x)); i = Prompt.heltal("Skriv ett heltal (gärna negativt)"); System.out.println("Talets absolutbelopp är " + Math.abs(i)); Kopiera (eller skriv av) ovanstående kod. (Ett enkelt konsolprogram för att testa ) Spara som Mattetest.java i mappen X\java\Javagrunder Kompilera och kör. Testkör några gånger. Kom ihåg att använda punkt (och inte komma) som decimaltecken när du skriver in decimaltal. Java7_MestOmMetoder.doc Ove Lundgren 10

11 Kap 7: Sid 11 Övning: Math i API Leta upp klassen Math i API-dokumentationen Läs om ovan nämnda metoder och fält Övning: Rot-tabell Gör en applet som visar kvadratroten ur talen Spara som RotTabell i mappen X\java\RotTabell Försök själv. Kika nedan om du kör fast. import java.applet.*; import java.awt.*; public class RotTabell extends Applet double y; public void paint(graphics g) g.drawstring("x", 50, 50); g.drawstring( "Roten ur x", 100,50); g.drawline(50,55,200,55); for(int x = 1 ; x <= 10; x++) g.drawstring(x + "", 50, * x ); y = (double) x; g.drawstring(math.sqrt( y ) + "", 100, * x ); En kommentar till satsen g.drawstring(x + "", 50, * x ); Första x-värdet (x=1) kommer att skrivas i position (50, 70) (eftersom * 1 =70) Nästa x-värde (x=2) kommer att skrivas i position (50, 90) (eftersom *2 =90) och så vidare Java7_MestOmMetoder.doc Ove Lundgren 11

12 Kap 7: Sid 12 Trigonometriska övningar Övning: Klassen Klocka I nedanstående applet, VisaKlocka, instansieras ett objekt av klassen Klocka Klockan instansieras med mittpunkten (150,150) och diametern 100 pixels. Metoden settid(0) sätter tiden till 0 (noll) sekunder. Metoden visa(g) ritar klockan i appleten. import java.awt.*; import java.applet.applet; public class VisaKlocka extends Applet Klocka k; public void init() k = new Klocka(100, 150,150 ); k.settid(0); public void paint(graphics g) k.visa(g); Klockan har alltså bara en visare (visar sekunder) (som en kronometer) Skriv klassen Klocka. Instansvariabler: diam, x, y, sek Konstruktorn ger värden på x och y (klockans mittpunkt) samt diam (dess diameer) Med metoden settid(int s) sätts det antal sekunder som klockan ska visa. Med metoden visa(graphics g) ska klockan ritas. Se figur: Om klockans medelpunkt är (x,y) och visarens längd är r så får (i matematiken) punkten P koordinaterna: px = x + r * cos v py = y + r * sin v Vinkeln v beror på antalet sekunder. En sekund motsvarar ju 360 o /60 eller 2π/60 Försök skriva klassen Klocka på egen hand (Du får nog trixa lite för att få klockan att gå rätt ) På nästa sida finns ett lösningsförslag (x,y) r v P Java7_MestOmMetoder.doc Ove Lundgren 12

13 Kap 7: Sid 13 import java.awt.*; public class Klocka private int diam, x, y, sek; public Klocka(int d, int a, int b) diam = d; x = a; y = b; public void settid(int s) sek = s; public void visa(graphics g) g.drawoval(x-diam/2,y-diam/2,diam,diam); // klockans periferi g.filloval(x-2,y-2,4,4); // mittpunkten double v = - sek*2*math.pi/60 + Math.PI/2; // se nedan int r = diam/2-3; // visarens längd int px =x + (int)(r*math.cos(v)); // x-koordinat för punkten P int py =y - (int)(r*math.sin(v)); // se nedan g.drawline(x,y,px,py); Satsen double v = - sek*2*math.pi/60 + Math.PI/2; Minustecken här, annars går klockan baklänges! En vridning medurs ger ju en negativ vinkel i matematiken Vi lägger till Math.PI/2, det vill säga 90 o, så att klockan pekar på norr vid tiden noll sekunder Satsen int py = y - (int)(r*math.sin(v)); beräknar y-koordinaten för punkten P Minustecken här eftersom y-koordinater växer nedåt i datagrafiksammanhang Spara filerna VisaKlocka.java och Klocka.java i mappen X\java\Klocka Kompliera. Skriv en html-fil och provkör! Övning: Klockan tickar Lägg till en knapp. Varje gång du trycker på knappen ska klockan ticka fram fem sekunder. Java7_MestOmMetoder.doc Ove Lundgren 13

14 Kap 7: Sid 14 Övning: En Stjärn-klass Studera denna applet: import java.awt.*; import java.applet.*; public class VisaStar extends Applet Star s1, s2; public void init() s1 = new Star(50, 12); // Diameter 50, 12 uddar s2 = new Star(100, 24); // Diameter 100, 24 uddar s1.setpos(50,50); // Stjärnans placering s2.setpos(150,150); // Stjärnans placering public void paint(graphics g) s1.visa(g); // Stjärna visas s2.visa(g); // Stjärna visas Appleten instansierar och visar två objekt av klassen Star, så här: Den lilla stjärnan har diametern 50 pixel och visar 12 uddar Den stora stjärnan har diametern 100 pixel och visar 24 uddar Skriv klassen Star.java r P Använd en loop. Låt vinkeln v öka för varje varv. Rita linje från medelpunkten till punkten P varje varv. P.s koordinater är ( r * cos v, r*sin v ) där r är halva diametern v Java7_MestOmMetoder.doc Ove Lundgren 14

15 Kap 7: Sid 15 Lösningsförslag: import java.awt.*; public class Star private int diam, x, y, antal; public Star(int d, int a) diam = d; antal= a; public void setpos(int x, int y) this.x = x; this.y = y; public void visa(graphics g) for(double v = 0.0; v < 2*Math.PI; v = v + 2 * Math.PI/antal) int a = (int)(diam/2*math.cos(v)); int b = (int)(diam/2*math.sin(v)); g.drawline(x,y, x+a,y-b ); Skriv in, spara och kompilera klasserna Visastar och Star. Spara i mappen X\java\Star Exekvera! Testa olika storlekar och antal uddar på stjärnorna Java7_MestOmMetoder.doc Ove Lundgren 15

16 Kap 7: Sid 16 Experiment med slumptal Övning: Konsolprogram som visar slumptal Skriv in denna kod. Spara som SlumpTest.java i mappen X\java\Slump Kompilera och kör. class SlumpTest public static void main( String args[] ) double slump ; int i; for(i=1;i<=12;i++) slump= Math.random(); System.out.println("Slumptal nummer " + i + ": " + slump); Funktionen Math.random() slumpar ett flyttal. Variabeln slump tilldelas detta flyttal. 0 slump < 1 Satserna ingår i en for-loop. Det hela upprepas 12 gånger. Övning: Tipsrad Ändra koden för klassen SlumpTest. Kalla klassen class Tipsrad. Spara som Tipsrad.java Skriv om koden inne i loopen så att om slump < 0,4 så skrivs strängen "1 " annars om slump < 0,8 så skrivs " X " annars skrivs " 2" Gör så att loopen körs 13 gånger. Spara igen. Kompilera. Kör. Resultatet blir en tipsrad. Experimentera: Ändra t ex så att sannolikheten för bortavinst (2:a) ökar Övning: Applet med tipsrad Bygg en applet som har en knapp. När du trycker på knappen ska en ny tipsrad visas. Java7_MestOmMetoder.doc Ove Lundgren 16

17 Kap 7: Sid 17 Slumpa heltal Betrakta satserna nedan: ( slump är double, t är int ) slump = Math.random(); slump = 6 * Math.random(); ger ett tal i intervallet 0.0 till 0, ger ett tal i intervallet 0.0 till 5, t = (int)(6 * Math.random()); ger ett heltal i intervallet fr o m 0 t o m 5 t = (int)(6 * Math.random()) + 1; ger ett heltal i intervallet fr o m 1 t o m 6 Den sista satsen ger alltså ett heltal som är 1, 2, 3, 4, 5 eller 6. En tärning med andra ord!! Allmänt gäller formeln t = (int)(n * Math.random() ) + a; n = antalet tänkbara slumptal a = det minsta tänkbara slumpade talet Exempel: Slumpa ett tal i intervallet fr o m 0 t o m 255 (det vill säga 256 stycken tänkbara tal). Formel: t = (int)(256 * Math.random() ) ; Övning: Konsolprogram som slumpar heltal Ändra koden för klassen SlumpTest. Kalla klassen class SlumpaHeltal. Spara som SlumpaHeltal.java Deklarera heltalsvariablen t Skriv om koden inne i loopen så att tolv tal i intervallet visas Spara igen. Kompilera. Kör. Övning: Slumpa färg Skriv en applet, Slumpfarg, som har en knapp med tillhörande händelsehantering. I actionperformed-metoden slumpas tre heltal i intervallet Sen skapas ett Color-objekt med de tre heltalen som RGB-komponenter Så sätts den nya färgen till bakgrundsfärg. När man trycker på knappen så byter alltså appleten färg! Spara som Slumpfarg.java i mappen X\java\Slupfarg Övning: Konsolprogram som visar tärning Ändra koden för klassen SlumpTest. Kalla klassen class KonsolTarning. Spara som KonsolTarning.java Deklarera heltalsvariablen t Skriv om koden inne i loopen så att tolv "tärningskast" (tal i intervallet 1-6 ) visas. Spara igen. Kompilera. Kör. Java7_MestOmMetoder.doc Ove Lundgren 17

18 Kap 7: Sid 18 Övning: Applet som visar en tärning En applet, KastaTarning, har en knapp. När man trycker på knappen visas en tärning, t ex: Appleten instanierar ett objekt av typen Tarning med referensen t Tarningsobjektets metod kasta() slumpar och returnerar ett tal i intervallet 1 6 Metoden visa(graphics) visar tärningen med rätt antal prickar Studera appleten och skriva av (eller kopiera) och spara koden. import java.applet.*; import java.awt.*; import java.awt.event.*; public class KastaTarning extends Applet implements ActionListener Tarning t; Button butt; int k; public void init() t = new Tarning(40,40); // tärning i position 40,40 k = t.kasta(); butt = new Button("Kasta!"); butt.addactionlistener(this); add(butt); public void paint(graphics g) t.visa(g); g.drawstring( Tärningen visar: + k, 40, 110 ); public void actionperformed(actionevent e) k = t.kasta(); repaint(); Skriv nu klassen Tarning Försök lösa uppgiften på engen hand (På nästa sida finns ett lösningsförslag..) Spara KastaTarning.java och Tarning.java i mappen X\java\Tarning Java7_MestOmMetoder.doc Ove Lundgren 18

19 Kap 7: Sid 19 import java.awt.*; public class Tarning private Color farg = Color.blue; private Color prickfarg = Color.yellow; private int a, b; private int p = 5; // prickstorlek private int t; // antal prickar public Tarning(int a1, int b1) a = a1; b = b1; public int kasta() t = (int)(6 * Math.random()) + 1; return t; public void visa(graphics g) g.setcolor(farg); g.fillrect(a,b,45,45); g.setcolor(prickfarg); switch (t) case 1: g.filloval(a+20,b+20,p,p); break; case 2: g.filloval(a+10,b+10,p,p); g.filloval(a+30,b+30,p,p); break; case 3: g.filloval(a+10,b+10,p,p); g.filloval(a+30,b+30,p,p); break; case 4: g.filloval(a+10,b+10,p,p); g.filloval(a+10,b+30,p,p); break; case 5: g.filloval(a+10,b+10,p,p); g.filloval(a+20,b+20,p,p); g.filloval(a+30,b+30,p,p); break; case 6: g.filloval(a+10,b+10,p,p); g.filloval(a+30,b+10,p,p); g.filloval(a+20,b+30,p,p); break; g.filloval(a+20,b+20,p,p); g.filloval(a+30,b+10,p,p); g.filloval(a+30,b+30,p,p); g.filloval(a+30,b+10,p,p); g.filloval(a+10,b+30,p,p); g.filloval(a+20,b+10,p,p); g.filloval(a+10,b+30,p,p); g.filloval(a+30,b+30,p,p); Java7_MestOmMetoder.doc Ove Lundgren 19

20 Kap 7: Sid 20 Förvandla sträng till decimaltal I ett tidigare kapitel byggde vi applets där man kunde skriva in tal i textfält (TextFields) I ett textfält är ju allt strängar, så vi fick lov att omvandla en inmatad sträng (t ex "123") till ett heltal (123) Vi använde då metoden Integer.parseInt( ) I en övning gällde det att mata i en cirkels radie i textfältet inruta för att sedan överföra värdet till heltalsvariabeln radie. Satsen kunde se ut så här: radie = Integer.parseInt( inruta.gettext() ); ( java.lang.integer är en klass som innehåller en rad metoder för hantering av heltal ) Vi vill nu kunna mata in en sträng, t ex "123.55" i textfältet inruta och få strängen omvandlad till ett decimaltal (ett flyttal) (123.55) som sedan tilldelas double-variabeln r I Java2 finns en metod för detta. Vi kan vi skriva så här: r = Double.parseDouble( inruta.gettext() ); I Java 1.1 får vi sätta samman fler metoder för samma sak. Vi kan vi skriva så här: r = Double.valueOf(inruta.getText().trim().replace(',','.')).doubleValue(); (Här har vi dessutom utnyttjat metoden replace som byter ut ett tecken mot ett annat: Om man råkar skriva ett kommatecken som decimalttecken så byts det ut mot en punkt. Java kräver ju punkt som decimaltecken) För dig som vill fördjupa dig i satsen följer här en "dissektion". Vi börjar inifrån : inruta är ett TextField-objekt TextField-objekt har en metod (en funktion) gettext() som "fångar" det som står i textfältet och returnerar det som en sträng, ett String-objekt. Så inruta.gettext() är ett String-objekt. String-objekt har en metod (en funktion) trim() som "hugger av" eventuella blanktecken i början och slutet av strängen och returnerar en "trimmad" sträng. Så inruta.gettext().trim() är ett String-objekt. String-objekt har en metod (en funktion) replace(t1,t2) som byter ut eventuella förekomster av tecknet t1 i strängen mot tecknet t2 och returnerar denna nya variant av strängen. Så inruta.gettext().trim().replace(',','.') är ett String-objekt där alla eventuella komma-tecken bytts ut mot punkter. Det finns en klass som heter Double. (Det är inte den primitiva variabeltypen double utan en klass Double) I klassen finns en rad metoder för flyttalshantering. (I klassen Integer finns motsvarande för heltal) Klassen Double har en metod (en funktion) valueof(string) Den funktionen tar ett String-objekt som argument och returnerar ett objekt tillhörigt klassen Double. Så Double.valueOf(inruta.getText().trim().replace(',','.')) är ett Double-objekt. Double-objekt har en metod (en funktion) doublevalue(). Denna returnerar värdet hos Double-objektet och detta är äntligen - vårt eftersökta flyttal av den primitiva datatypen double (puh!) Talet tilldelas variabeln r och kan användas i beräkningar Övning: Cirkel - igen Ta fram filen Cirkel.java Deklarera radie som double i stället för int Använd någon av ovan beskrivan metoder för att ta hand om den radie som matas in i textfältet (Byt alltså ut parseint-metoden) Du använde förut talet pi = Byt ut mot Math.PI Java7_MestOmMetoder.doc Ove Lundgren 20

21 Kap 7: Sid 21 Antal decimaler i utskrift Talformat Vi har hittills fått lov att stå ut med att flyttalen i våra program visat onödigt många decimaler. Det är på tiden att vi själva kan bestämma antal decimaler som ska visas. Dags att införa talformat! Gör så här: Importera: import java.text.decimalformat; // ett nytt paket! Deklarera objekt: DecimalFormat d2, d3, m3; Skapa objekt: d2 = new DecimalFormat("0.00"); // ger 2 decimaler d3 = new DecimalFormat("0.000"); // ger 3 decimaler m3 = new DecimalFormat("0.###"); // ger max 3 decimaler // Ev. nollor på slutet // visas ej... Objekt av klassen DecimalFormat har en metod (en funktion), format(tal) Argumentet (tal) är av typ double Funktionsvärdet blir en sträng som innehåller talet med önskat antal decimaler. Exempel: g.drawstring("arean är " + d2.format(area), 10,90 ); g.drawstring("omkretsen är " + d3.format(omkrets), 10,90 ); System.out.println("Slumptal nr " + i + ": " + m3.format(slump)); Övning: RotTabell - igen Ändra koden i RotTabell.java så att talen visas avrundade till två decimaler: import java.text.*; import java.applet.*; import java.awt.*; public class RotTabell extends Applet double y; DecimalFormat d2; public void init() d2 = new DecimalFormat("0.00"); // ger 2 decimaler public void paint(graphics g) g.drawstring("x", 50, 50); g.drawstring( "Roten ur x", 100,50); g.drawline(50,55,200,55); for(int x = 1 ; x <= 10; x++) g.drawstring(x + "", 50, * x ); y = (double) x; g.drawstring(d2.format( Math.sqrt( y )) + "", 100, * x ); Java7_MestOmMetoder.doc Ove Lundgren 21

22 Kap 7: Sid 22 Metoder i en applet Metoder som körs automatiskt När vi skriver en applet (t ex MinApplet) så ärvs ett antal metoder från klassen Applet. Flera av dessa metoder körs automatiskt vid olika tillfällen under en applets "liv". I kapitel 4 beskrev vi dessa metoder ungefär så här: init() start() Körs med automatik när en applet laddas. Här lägger man kod för initialvärden av olika slag. Körs automatiskt då en applet visas Här skrivs kod som får appleten att göra något. Appletens init-metod körs första gången appleten visas. Appletens start-metod körs första gången samt varje gång du återvänder till sidan med appleten. paint(graphics g) stop() destroy() Metoden exekveras automatiskt varje gång en applet visas. Metoden har en parameter, en referens till ett Graphics-objekt. Då metoden anropas blir argumentet referensen till appletens egna grafikobjekt Körs automatiskt då man lämnar webb-sidan med appleten Exekveras automatiskt när man slutar sitt surfpass. I respektive metod skriver man kod för sådant som man vill ska utföras vid respektive tidpunkt. Hittills har du mest omdefinierat init() och paint()-metoderna. Snart kommer exempel där även övriga metoder överskuggas paint()-metoden anropas med automatk då appleten visas. Ibland behöver man anropa paint() på nytt för att rita om appletytan. Du har redan sett att man då använder en metod som heter repaint(). Nästa avsnitt handlar just om metoderna paint() och repaint() samt om ytterligare en metod som är inblandad, nämligen update() Java7_MestOmMetoder.doc Ove Lundgren 22

23 Kap 7: Sid 23 Metoderna paint(), repaint() och update() Metoden paint(graphics g) är definierad med en parameter som är referens till ett Graphics-objekt. När paint() anropas blir automatiskt argumentet referensen till appletens eget grafiska objekt. (Repetera gärna vad som står om klassen Graphics i kapitel 4) Antag att vi skulle behöva anropa paint(), t ex i actionperformed()-metoden. (Vi kanske vill att appleten ska ritas om - exempelvis efter en knapptryckning. ) Om vi vill skriva kod, en sats som innebär anrop av paint(), vad ska vi då skriva för argument? this.paint(????); Vi känner ju inte namnet på referensen till det appletens grafiska objekt. Det är en intern referens. Appletobjekt har ytterligare en metod, repaint(), som blir vår räddning. Den anropas utan argument: this.repaint(); Metoden utför just vad vi vill: Appleten ritas om! Låt oss se närmare på vad som händer vid ett repaint()-anrop: Vi måste då först bekanta oss med en metod som heter update() Detta är ytterligare en metod som ärvs från klassen Applet. Den har ett Graphics-objekt som parameter, och så här är den definierad (i princip): public void update(graphics g) // Bakgrunden ritas om varvid allt som // eventuellt tidigare uppritats raderas... // paint() anropas: paint(g); update() gör alltså följande: Raderar vad som eventuellt redan ritats på appleten - och anropar sedan paint() När metoden repaint() anropas så anropar denna i sin tur metoden update() Det vill säga, allt som eventuellt är ritat på appleten raderas först, och sedan ritas appleten om. repaint() update() ev. gammalt raderas paint() Java7_MestOmMetoder.doc Ove Lundgren 23

24 Kap 7: Sid 24 Övning: Överskugga update() Ta fram filen FlyttaJumbo.java och påminn dig om hur den fungerade: I action()-metoden finns satsen this.repaint(); Kör appleten. När du trycker på knapparna så försvinner en tidigare ritad Jumbo och en ny Jumbo ritas varje gång! Antag nu att vi vill göra så att en tidigare ritad Jumbo ligger kvar på appleten när en ny Jumbo ritas. Hur ska vi gå till väga? Naturligtvis genom att göra en egen definition av update()! Vi överskuggar update() så att den inte gör något annat än anropar paint() I filen FlyttaJumbo.java gör följande tillägg: public void update(graphics g) paint(g); Spara - kompilera - provkör Java7_MestOmMetoder.doc Ove Lundgren 24

25 Kap 7: Sid 25 Metoder som returnerar värde Vi ska experimentera lite med egendefinierade icke-void-metoder (funktioner) Övning: Kvadrattabell Detta är en applet som skriver ut en kvadrattabell ( x 2 )på talen 1 10 (Påminner mycket om appleten som skrev ut kvadratrötter ) import java.applet.*; import java.awt.*; public class KvadratTabell extends Applet public void paint(graphics g) g.drawstring("x", 50, 50); g.drawstring( "Kvadraten på x", 100,50); g.drawline(50,55,200,55); for(int x = 1 ; x <= 10; x++) g.drawstring(x + "", 50, * x ); g.drawstring( x * x + "", 100, * x ); Skriv in och testa! Spara KvadratTabell.java i mappen X\java\KvadratTabell I klassen Math finns en funktion som beräknar kvadratroten ur ett tal (Math.sqrt) Det finns däremot ingen funktion som beräknar kvadraten på ett tal. Låt oss skriva en egen sådan metod och utnyttja den i appleten ovan! Ändra ovanstående kod till: import java.applet.*; import java.awt.*; public class KvadratTabell extends Applet private int kvadrat(int i) return i * i ; Här deklareras funktionen public void paint(graphics g) g.drawstring("x", 50, 50); g.drawstring( "Kvadraten på x", 100,50); g.drawline(50,55,200,55); for(int x = 1 ; x <= 10; x++) g.drawstring(x + "", 50, * x ); g.drawstring( this.kvadrat(x) + "", 100, * x ); Här sker anropet Här har vi deklarerat en egen private funktion i appleten med namnet kvadrat. Metoden tar ett heltal som parameter och lämnar ett heltalsvärde. Metoden anropas med heltalsargumentet x Java7_MestOmMetoder.doc Ove Lundgren 25

26 Kap 7: Sid 26 Det är vanligt att man på detta sätt skriver egna metoder/funktioner. Antag t ex att samma beräkning ska utföras många gånger i ett program. Då är det bekvämt att lägga beräkningarna i en funktion som sedan anropas varje gång beräkningen behöver utföras. Övning: En värdetabell Här är en variant. Deklarera funktionen f(x) = 0,5x 2 + x 2 Deklarera alltså funktionen double f(double x) som returnerar ovanstående funktionsvärde. Gör en värdetabell som visar funktionsvärden i intevallet 2 x 2 i steg om 0,25 Använd en while-loop. Försök att skriva appleten på egen hand. Kika nedan om du får problem. import java.applet.*; import java.awt.*; public class VardeTabell extends Applet double x, xstart, xslut, steg; int rad; double f(double a) return 0.5 * a * a + a - 2 ; public void init() xstart = -2.0; xslut = 2.0; steg = 0.25; rad = 70; // för radmatning i appeten public void paint(graphics g) g.drawstring("x", 50, 50); g.drawstring( "f(x)", 100,50); g.drawline(50,55,200,55); x = xstart; while(x < xslut + steg/2) g.drawstring(x + "", 50, rad ); g.drawstring( this.f(x) + "", 100, rad ); rad = rad + 20; x = x + steg; // stega fram sist i while-loopen Spara VardeTabell.java i mappen X\java\VardeTabell Visa i en applet som är 400 x 400 pixels Java7_MestOmMetoder.doc Ove Lundgren 26

27 Kap 7: Sid 27 Övning: En funktionskurva Ovanstående program kan du använda som utgångspunkt i ett program som ritar en funktionskurva. Vi behöver då översätta x- och f(x)-värden till punkter på skärmen. Vi inför heltalsvariablerna ox och oy som är koordinater för den punkt på appletytan där origo ska ligga. Vidare införs heltalsvariabeln skala som anger hur många pixels det ska vara mellan två heltal på x- respektive y-axeln. Dessutom behöver vi heltalsvariabler som används när vi ska rita kurvan. Vi kallar dem a1 och b1 (a1,b1) (ox,oy) skala En punkt (x, f(x)) på kurvan motsvaras av punkten (a1, b1) på appletytan. Om exempelvis x = 2 så får vi a1 så här: a1 = ox + 2 * skala Allmänt: a1 = ox + x * skala Eftersom a1 är ett heltal och det ingår ett flyttal (x) i vänsterledet måste vi dessutom göra en cast. Javasatsen blir: a1 = ox + (int)(x*skala); På motsvarande sätt får vi y-koordinaten: b1 = oy (int)( f(x) * skala); Minusteckent kommer sig av att y (tvärtemot i matematiken) växer nedåt i datagrafiska sammanhang. När vi ritar kurvan använder vi drawline()-metoden, så kurvan kommer att byggas upp av korta sträckor. Vi inför därför även heltalskoordinaterna a2 och b2 så att vi kan hålla reda på två punkter åt gången. Skriv appleten Kurva. Du får hjälp med det programavsnitt som ritar kurvan: x = xstart; a1 = ox + (int)(x*skala); // Den första punktens x-koordinat på appleten b1 = oy - (int)(f(x)*skala); // Den första punktens y-koordinat på appleten x = x + steg; // Nästa x-värde ger ny punkt while(x < xslut + steg/2) a2 = ox + (int)(x*skala); // Nya punktens x-koordinat på appleten b2 = oy - (int)(f(x)*skala); // Nya punktens y-koordinat på appleten g.drawline(a1,b1,a2,b2); // Ritar sträckan från gammal till ny punkt a1=a2; b1=b2; // Den nya punkten blir ny gammal punkt x = x + steg; // Stega fram till nästa x-värde sist i while-loopen Spara Kurva.java i mappen X\java\Kurva Gör så att koordinataxlar (och kanske skalstreck) visas! Byt till någon annan funktion. Testa trigonometriska och exponentiella funktioner. Om kurvan blir kantig får man ge variabeln steg ett mindre värde. Genom att ändra variabeln skala får man olika storlek på kurvan. Alternativa värden på xstart och xslut visar kurvan i andra intervall. Java7_MestOmMetoder.doc Ove Lundgren 27

28 Kap 7: Sid 28 Egna klassmetoder En klassmetod (ibland kallad statisk metod) kan användas utan att man först behöver skapa ett objekt. (Motsvarande för klassvariabler) Övning: Klassmetoder I kapitel 2 (avsnittet Klassmetoder och klassvariabler ) fanns en övning där du skulle skriva in följande kod public class Matte public static int sqr(int x) return x*x; public static final double pi = ; Här deklarerade vi den statiska metoden sqr(int x) som (också) beräknade kvadraten på ett heltal. Dessutom deklarerade vi klassvariabeln pi. Denna var dessutom final vilket betydde att den inte kunde ändras (dvs pi är en konstant) Testa metoden sqr() i din applet Kvadrattabell: Kopiera filen Matte.class till mappen där du har appleten KvadratTabell (Om du inte har filen: Skriv in koden ovan, spara och kompilera ) I appleten KvadratTabell: Ersätt metoden this.kvadrat(x) med Matte.sqr(x). Spara kompilera provkör. Klassen Matte fungerar på samma sätt som JDK-klassen Math Andra klasser kan givetvis använda metoden i Matte dock under en förutsättning att de ligger sparade i samma mapp! Om du vill komma åt Matte från andra klasser måste den vara sparad i en mapp som ingår i classpath-listan Java7_MestOmMetoder.doc Ove Lundgren 28

29 Kap 7: Sid 29 Övning: Metod som omvandlar sträng blir flyttal Om du använder Java 1.1: Skriv en metod, toflyttal(string s), som tar en sträng som argument och som returnerar motsvarande flyttal. Metoden ska vara publik och statisk och ligga i klassen Matte. Exempel: Vid anropet ska d få värdet double d = Matte.toFlyttal( ) Utnyttja Double.valueOf(s.trim().replace(',','.')).doubleValue(); Testa din metod i appleten Cirkel: radie = Matte.toFlyttal( inruta.gettext() ); Övning: Max3 Klassen Math har en funktion, max, som returnerar det största av de två tal som anges som argument. Skriv en metod, max3, som returnerar det största av de tre heltal som anges som argument. Metoden ska vara publik och statisk ligga i klassen Matte. Exempel: Vid anropet ska t får värdet 18 int t = Matte.max3(12,5,18); Skriv ett (enkelt konsol-) program, MaxTest.java, för att testa din metod. Spara programmet i X\java\javagrunder Hjälp: Algoritm för att ta fram det största talet av tre: om a > b annars om a>c annars om b > c annars max = a max = c max = b max = c Java7_MestOmMetoder.doc Ove Lundgren 29

30 Kap 7: Sid 30 Paket Om du vill att din klass ska tillhöra en package (ett paket), gör du så här: package mittpaket; // klassen Matte tillhör paketet mittpaket public class Matte public static int sqr(int i) // metoddefinition enligt ovan public static double toflyttal(string s) // metoddefinition enligt ovan public static int max3(int a, int b, int c) // metoddefinition enligt ovan Filen sparas med namnet Matte.java och kompileras till Matte.class Filen Matte.class ska ligga i en mapp med namnet mittpaket. Den mappen ska i sin tur ligga i JDKs lib-mapp eller i en mapp till vilken du satt CLASSPATH När du sen ska använda någon av metoderna måste klassen först importeras. Om t ex en applet använder någon av metoderna måste appletens kod inledas med: eller import mittpaket.matte; import mittpaket.*; Den senare varianten innebär att samtliga paketanslutna klasser i mappen mittpaket importeras (Du kanske har anslutit fler klasser än Matte till paketet ) Java7_MestOmMetoder.doc Ove Lundgren 30

Applets med komponenter

Applets med komponenter 5 Applets med komponenter Knappar Om gränssnitt (interface) Händelser Måla om appletytan Etiketter och textrutor Förvandla strängar till tal Aritmetik Omvandla datatyper med cast Felhantering Kap 5: Sid

Läs mer

Lite logik. Kap 6: Sid 2

Lite logik. Kap 6: Sid 2 6 Loopar och val Lite logik Val mellan två alternativ Val mellan flera alternativ Sammansatta villkor Boolska variabler Jämför strängar While-loopar Do-loopar For-loopar Kortformer Kap 6: Sid 2 Lite logik

Läs mer

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

2D1339 Programkonstruktion för F1, ht 2004

2D1339 Programkonstruktion för F1, ht 2004 2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser? Programmeringsteknik och Matlab Övning 6 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets 1 Läsanvisningar Den här föreläsningen syftar till att ge en bild av vad en Java-Applet är och är ganska fristående från föregående

Läs mer

2D1342 Programkonstruktion för F1, ht 2006

2D1342 Programkonstruktion för F1, ht 2006 2D1342 Programkonstruktion för F1, ht 2006 Lappskrivning 1 Tisdag 7/11 2006 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Att använda Java SE JDK 6

Att använda Java SE JDK 6 Att använda Java SE JDK 6 Programmeringsspråket Java är utvecklat av det amerikanska företaget Sun Microsystems. Sun erbjuder gratis en utvecklingsmiljö för java-programmering, Java 2 SE (Standard Edition).

Läs mer

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. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F4:1 OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder Metoder - subrutiner OOP F4:2 Kod som utför en viss operation. Ligger i olika klasser och anropas via operatorn.

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

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

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...

Läs mer

DD1342 Programkonstruktion för F1, ht 2007

DD1342 Programkonstruktion för F1, ht 2007 DD1342 Programkonstruktion för F1, ht 2007 Lappskrivning 1 Torsdag 22/11 2007 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar markerats räknas det som fel svar. Alla skriftliga

Läs mer

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Kontrollskrivning 1 Onsdag 19/11 2003 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print. 1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i java med hjälp av objekten System.out och System.in. Dessa båda objekt är exempel på strömmar. En ström är en typ som

Läs mer

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Datateknik A, Syfte: Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Att läsa: Lektion 2 Uppgifter:

Läs mer

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

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 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 riktiga provet tar 45 minuter (en lektionstimme) och det

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Frames, menyer och GUI-program

Frames, menyer och GUI-program 15 Frames, menyer och GUI-program Frames En frame-klass Om konstruktorer - igen Funktionella fönster Menyer Popupmenyer GUI-applikationer Dialogrutor Printerutskrift Kap 15: Sid 2 Frames Redan i kapitel

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Chapter 3: Using Classes and Objects

Chapter 3: Using Classes and Objects Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016 Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

Läs mer

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv

Läs mer

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

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

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

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Lösningsförslag, tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Astronomi och Teoretisk fysik HT 12 Lösningsförslag, tentamen FYTA11 Javaprogrammering Onsdag 9 januari 2013, 10:15 14:15 Instruktioner Hjälpmedel: Papper och

Läs mer

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

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

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 3 (15p + 20p + 5p = 40 p) Lärare, jourhavande lärare

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

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

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

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

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)

Läs mer

Tentamen på kursen DA7351, Programmering 1. 051102, kl 08.15-12.15. Malmö högskola Teknik och samhälle. DA7351, Programmering 1 1 051102

Tentamen på kursen DA7351, Programmering 1. 051102, kl 08.15-12.15. Malmö högskola Teknik och samhälle. DA7351, Programmering 1 1 051102 Tentamen på kursen DA7351, Programmering 1 051102, kl 08.15-12.15 Tillåtna hjälpmedel: Valfri bok om Java. Vid bedömning av lösningarna tas hänsyn till om dessa uppfyller de krav på programkvalitet (strukturering,

Läs mer

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack 725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den

Läs mer

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 11 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 11 I måndags: programmera effektivt planera skriv tydlig kod använd felsökning teori inkapsling referenser static new, konstruktorer

Läs mer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

Läs mer

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm. Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills

Läs mer

Grafiska komponenter.

Grafiska komponenter. Grafiska komponenter. Kap J5-1 Grafiska användargränssnitt är det moderna alternativet till traditionell terminal-i/o. GUI-programmering bygger på en händelsestyrd flödeskontroll. I Java utförs GUI-programmeringen

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

Läs mer

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass. public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private

Läs mer

Tentamen. Grundläggande programmering i Java A 5p, DTAA32 2003-03-21

Tentamen. Grundläggande programmering i Java A 5p, DTAA32 2003-03-21 Mitthögskolan ITM Institutionen för Informationsteknologi och medier. Bertil Danielsson 060-14 86 82 Jan-Erik Jonsson 060-14 87 90 Tentamen i Java A Sida 1/6 Tentamen Grundläggande programmering i Java

Läs mer

Objekt och klasser - Introduktion

Objekt och klasser - Introduktion Objekt och klasser - Introduktion Begreppet objekt Hur klasser används för att skapa objekt Fördefinierade klasser Metoder och parameteröverföring Definiera klasser Modifierare Statiska variabler och metoder

Läs mer

System.out.println("Jaså du har "+ antaldollar + " stycken.");

System.out.println(Jaså du har + antaldollar +  stycken.); 1 Vad vi vet Vi har tidigare sett exemplet med inmatning från tangentbordet. Exemplet innehåller flera aspekter av klasser och objekt. import java.util.*; class KeyboardReading { public static void main(string

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Laboration 10 - NetBeans

Laboration 10 - NetBeans Laboration 10 - NetBeans Avsikten med laborationen är att du ska träna på att använda paket, att du ska packa några klassfiler i en jar-fil och slutligen använda innehållet i en jar-fil från en annan klass

Läs mer

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den. Arv och polymorfi Arv och polymorfi är två centrala begrepp i objektorientering. Arvsmekanismen innebär att vi kan skapa nya klasser utifrån redan existerande klasser. Man gör detta med hjälp av nyckelordet

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Iteration while-satsen

Iteration while-satsen Datatypen double TDA143 I1 Programmerade system Föreläsning 3 (OH-bilder 3) Iteration while-satsen Christer Carlsson I en dator kan man inte lagra hur stora eller hur små tal som helst. De enkla datatyperna,

Läs mer

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Rita Egna Bilder, Timer

Rita Egna Bilder, Timer Rita Egna Bilder, Timer Josef Svenningsson November 27, 2012 Grafik Varje gång ett fönster behöver ritas om, pga av att det flyttas eller varit övertäckt, anropas automatiskt en metod som har namnet paintcomponent.

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel

Läs mer

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall

Läs mer

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Föreläsning 3. Iteration while-satsen

Föreläsning 3. Iteration while-satsen Föreläsning 3 Iteration while-satsen Datatypen double I en dator kan man inte lagra hur stora eller hur små tal som helst. De enkla datatyperna, som används för att lagra tal (t.ex. int och double), har

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

5 Grundläggande in- och utmatning

5 Grundläggande in- och utmatning 5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta

Läs mer

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

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 7 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Konstanter och readonly Statiska klasser Standardklassen Math Parameteröverföring Referensen

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing Föreläsning 15 (16) Introduktion till Swing Historik (java.awt) JDK 1.0 AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del nackdelar: Använder s.k. native code Stödjer endast komponenter

Läs mer

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera

Läs mer

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28 FactoryCast HMI Premium & Quantum PLC Applets 2004-10-28 INNEHÅLLSFÖRTECKNING 1 OM DETTA DOKUMENT...3 2 FÖRUTSÄTTNINGAR...3 3 PROJEKT I J++...4 3.1 LÄSA PLC-VARIABLER...4 3.1.1 Gränssnittet...4 3.1.2 Upprätta

Läs mer

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad

Läs mer

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics

Läs mer

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER Logiska uttryck datatypen boolean Logiska uttryck kan ha två möjliga värden, true eller false. Variabler av typen boolean kan tilldelas

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

Exempel på användning av arv: Geometriska figurer

Exempel på användning av arv: Geometriska figurer (9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014

Läs mer