Applets med komponenter

Storlek: px
Starta visningen från sidan:

Download "Applets med komponenter"

Transkript

1 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

2 Kap 5: Sid 2 Knappar Vi skapar en knapp I en applet (och i en frame) kan man lägga in komponenter av olika slag. En knapp är ett exempel på en komponent. Varje komponent-typ har en egen klass i Java. Knappar beskrivs i klassen Button. En komponent som vi lägger ut i t ex en applet är ett objekt instansierat från klassen Button. Klassen Button, och andra klasser som beskriver komponenter, finns i klassbibliotekets paket java.awt (Där fanns ju också bl a klassen Graphics som vi redan har använt ) Vi skapar ett objekt med ordet new. Härvid anropas, som du vet, en speciell metod i klassen som kallas konstruktorn. (Konstruktormetoden har samma namn som klassen.) Du har sett att man ofta skriver in argument i konstruktormetoden. Argumenten överförs till egenskaper hos objektet. När vi skapar en knapp är argumentet en sträng som innehåller den text som ska stå på knappen. När man ska lägga ut en knapp i en applet måste man: Importera klassen Button (alla komponentklasser finns i paketet java.awt ) Deklarera komponenten (t ex Button knapp; ) Skapa komponentobjektet (t ex med b = new Button( Tryck på mig! );) Lägga ut komponenten i appleten. Detta sker med en appletmetod som heter add, så här: add(knapp); Övning: Knapp-test Skriv denna kod i en editor. Spara som KnappTest.java i mappen X\java\KnappTest import java.applet.*; import java.awt.*; // Här importeras bl a klassen Button public class KnappTest extends Applet Button knapp; public void init() knapp = new Button("Tryck på mej!"); add(knapp); public void paint(graphics g) g.drawstring( Vi testar knappar!, 50,100); Kompilera. Skriv en html-fil som startar appleten och kör! Knappen visas - men om du trycker på knappen så händer inget. Vi ska strax gå igenom hur man får något att hända då knappen trycks (händelsehantering). Vi kommer då att behöva använda gränssnitt, så vi börjar med att repetera vad ett gränssnitt är

3 Kap 5: Sid 3 Om gränssnitt (interface) I kapitel 3 (om Arv) sa vi att man i Java inte kan ärva från två (eller fler) klasser. Detta fungerar alltså inte: Klass A Fält Metoder: metod1() met2od() metod3() Klass B Fält Metoder: metoda() metodb() metodc() Klass C Fält Metoder: Däremot kan man implementera (ett eller flera) gränssnitt eller interface. Ett gränssnitt är en speciell slags klass som bara innehåller tomma metoder avsedda att omdefinieras. Klass A Fält Metoder: metod1() metod2() metod3() Interface B Metoder: metoda() metodb() metodc() Klass C Fält Metoder: metod1() metod2() metod3() metoda() metodb() Med ordet implements implementeras gränssnittets metoder i vår nya klass. I java-kod ser det ut så här: public class C extends A implements B I händelsehanteringen nedan behöver vi metoder som inte finns i klassen Applet. Vi kommer att implementera ett gränssnitt som har de önskade metoderna.

4 Kap 5: Sid 4 Händelser Händelseobjekt och metoden actionperformed Naturligtvis vill vi att något ska hända när vi trycker på knappen! När någon trycker på en knapp skapas ett händelseobjekt (ett objekt ur en klass vid namn ActionEvent) Objektet låter vi vara argument i en metod som heter actionperformed och i den metoden beskriver vi vad som ska hända. En metod som beskriver vad som ska hända kallas allmänt för händelsehanterare. Metoden actionperformed finns tyvärr inte deklarerad i applets. Vi implementerar därför ett gränssnitt, ActionListener där metoden actionperformed finns. Ett Button-objekt har en metod som heter addactionlistener() Den metoden måste anropas för att associera knappen till actionperformed()-metoden. Den gör så att knappen lyssnar på en knapptryckning och anropar actionperformed()-metoden då knappen trycks. Övning: Testa händelser Vi ska komplettera appleten KnappTest med kod så att knappen blir aktiv. Fyra saker måste göras: Klasser som har med händelsehantering att göra finns i ett paket som heter java.awt.event, så det paketet måste importeras. Vi implementerar gränssnittet ActionListener (så att vi kan använda metoden actionperformed) Vi sätter en lyssnare på knappen: Med satsen knapp.addactionlistener(this); anger vi att knappen knapp ska lyssna på en knapptryckning och anropa metoden actionperformed. Parametern this anger att actionperfomed är definierad i denna (this) applet. (Ibland kan nämligen händelsehanteraren vara definierad i en annan klass) Vi omdefinierar metoden actionperformed. Där beskrivs vad som ska ske när knappen trycks. Metoden actionperfomed startar när den mottar ett ActionEvent-objekt, det vill säga när det har inträffat en händelse (någon trycker på knappen ) I vårt fall ska vi låta appleten byta bakgrundsfärg (till röd) när knappen trycks, så metoden actionperformed kommer att innehålla en enda sats, nämligen setbackground(color.red); Så här blir appleten när den kompletterats med händelsehantering:

5 Kap 5: Sid 5 import java.applet.*; import java.awt.*; import java.awt.event.*; Nytt paket för händelsehantering! Implementera gränssnittet Actionlistener! public class KnappTest extends Applet implements ActionListener Button knapp; public void init() knapp = new Button("Tryck på mej!"); add(knapp); knapp.addactionlistener(this); Sätt lyssnare på knappen! public void paint(graphics g) g.drawstring("vi testar knappar!", 50,100); public void actionperformed(actionevent e) setbackground(color.red); Skriv in metoden actionperformed! Komplettera appleten på detta sätt. Spara kompilera provkör! Övning: Starta ljud med en knapp Öppna filerna Bilder.java och Bilder.html (från bild- och ljudövningarna i Kapitel 4 ) (Det ska vara den senare versionen - den du gjorde i övningen med ljud ) Gör följande kompletteringar i klass-filen. Importera: import java.awt.*; import java.awt.event.*; Implementera gränssnittet ActionListener - lägg till:... extends Applet implements ActionListener Deklarera: I init-metoden: Button knapp; knapp = new Button("Spela!"); this.add(knapp); knapp.addactionlistener(this); Skriv actionperfomed-metoden och flytta this.ljud1.play(); från paint-metoden: public void actionperformed(actionevent e) this.ljud1.play(); Spara filen kompilera kör! Nu startar ljudet när du trycker på knappen!

6 Kap 5: Sid 6 Övning: Två knappar Deklarera ytterligare en knapp (med namnet knapp2) i KnappTest.java Button knapp, knapp2; Skapa knappobjektet i init-metoden: knapp2 = new Button("Blå"); Lägg ut den på appleten: add(knapp2); Se till att även knapp2 "lyssnar" på actionperformed-metoden: knapp2.addactionlistener(this); Gör tillägg i actionperformed-metoden: public void actionperformed(actionevent e) if (e.getsource() == knapp) setbackground(color.red); if (e.getsource() == knapp2) setbackground(color.blue); Metoden e.getsource() känner av vilken knapp som har tryckts. Trycker du på knapp blir appletens bakgrund röd. Trycker du på knapp2 blir den blå! Du kommer väl ihåg if-satsen från kapitel 1? Satsen setbackground(color.red); i exemplet ovan utförs endast om villkorssatsen (e.getsource() == knapp ) är sann Övning: Ljud igen Du arbetade förut med ett ljudobjekt, ljud1 i övningen Bilder.java Ljudet kunde startas med ljud1.play(); Det kan stoppas med ljud1.stop(); Ljudet spelas kontinuerligt med ljud1.loop(); Ta fram övningen Bilder.java Gör så att ljudet spelas kontinuerligt när man trycker på knappen. Lägg in ytterligare en knapp. När man trycker på denna ska ljudet upphöra.

7 Kap 5: Sid 7 Måla om appletytan Övning: Metoden repaint() Skriv in följande applet och spara den som KnappTest2.java i mappen X\java\KnappTest import java.applet.*; import java.awt.*; import java.awt.event.*; public class KnappTest2 extends Applet implements ActionListener Button knapp; String s; Color farg; public void init() knapp = new Button("Tryck"); add(knapp); knapp.addactionlistener(this); s = "Hej!"; farg = Color.green; public void paint(graphics g) g.setcolor(farg); g.filloval(100,100,80,80); g.drawstring(s, 50,70); public void actionperformed(actionevent e) s = "Du har tryckt på knappen!"; farg = Color.red; Strängen s ger vi från början värdet Hej! Color-objektet farg ger vi värdet Color.green I actionperformed()-metoden ändras värdet hos s och hos farg. Spara filen som KnappTest2.java. Kompilera. Starta appleten med en html-fil. Tryck på knappen. Inget händer Vi måste på något sätt få metoderna i paint()-metoden att utföras igen! Applets har en metod som heter repaint(). Den metoden anropar paint()-metoden på nytt. Lägg till metoden i repaint() sist i actionperformed()-metoden: public void actionperformed(actionevent e) s = "Du har tryckt på knappen!"; farg = Color.red; repaint(); Spara kompilera kör! Appletytan målas om med de nya värdena på s och farg!

8 Kap 5: Sid 8 Övning: Flytta på Jumbo Skapa mappen X\java\Jumbo Skriv nedanstående kod. Spara den som FlyttaJumbo.java //Övning FlyttaJumbo import java.awt.*; import java.awt.event.*; import java.applet.*; public class FlyttaJumbo extends Applet implements ActionListener // Deklarationer Label ledtext; Button knapp1, knapp2; Image jumbo; int x,y ; public void init() ledtext = new Label("Tryck på knapparna - flytta bilden"); jumbo = this.getimage(getcodebase(),"jumbo.gif"); knapp1 = new Button("Vä"); knapp2 = new Button("Hö"); add(ledtext); add(knapp1); add(knapp2); knapp1.addactionlistener(this); knapp2.addactionlistener(this); x = 100; y = 100; public void paint(graphics g) g.drawimage(jumbo,x,y,this); public void actionperformed(actionevent e) if (e.getsource() == knapp1) x = x - 10; if (e.getsource() == knapp2) x = x + 10; repaint(); Skriv också en enkel HTML-fil (FlyttaJumbo.html) som startar appleten. Kompilera och kör. (Genom att trycka på knapparna kan man flytta på figuren ) Läs kommentarer till koden på nästa sida!

9 Kap 5: Sid 9 Det mesta är bekant i koden. I actionperformed-metoden exekveras satsen x = x + 10; då man trycker på knapp2 Satsen x = x + 10; fungerar så här: Antag att x har värdet 100 från början Det nya värdet på x blir då det gamla värdet (100) plus 10, dvs 110 Nästa gång man trycker på knapp2 så blir x-värdet , dvs 120 osv, osv Varje gång man trycker på en knapp utförs metoden repaint(), (appleten ritas om) I paint-händelsen beskrivs Jumbos position av koordinaterna x och y, dvs Jumbo flyttar på sig Trycker man på knapp1 minskas i stället x-värdet (Jumbo flyttas åt vänster) Komplettera koden: Lägg in två nya knappar så att Jumbo även kan förflyttas vertikalt. Övning: Flytta objekt Skriv en applet där du, med samma teknik som ovan, kan flytta ett objekt ur någon av de klasser som du själv har skrivit (t ex Asteroid )

10 Kap 5: Sid 10 Etiketter och textrutor Skapa etiketter och textrutor Textrutor används när vi vill kunna mata in värden (texter och tal) i en applet. Etiketter (eller labels) är fasta texter som vi inte kan ändra värdet på. Textrutor beskrivs i klassen TextField, etiketter i klassen Label. Alla klasser som beskriver komponenter finns, som sagt, i klassbibliotekets paket java.awt Övning: Komponent-test Skriv denna kod i en editor. Spara som KompoTest.java i mappen X\java\KompoTest // En övning med komponenter import java.awt.*; import java.applet.*; public class KompoTest extends Applet // Deklarationer Label ledtext; // Här deklareras komponent-objekt TextField inruta; Button knapp; public void init() ledtext = new Label("Detta är skrivet i en label");// Här skapas inruta = new TextField(10); // komponent-objekt knapp = new Button("Tryck här!"); // this.add(ledtext); // Här läggs this.add(inruta); // komponenterna ut this.add(knapp); public void paint(graphics g) g.drawstring("detta är skrivet med drawstring", 10,70); Vi skapar här en label, en textruta och en knapp. Vi gör (som förut) alla deklarationer först. I metoden init skapar vi objekten (med new) och lägger ut komponenter med metoden add() Vi låter också paint()-metoden skriva ut en text. Kompilera! Skriv en HTML-fil som anropar appleten KompoTest.class Se på appleten med hjälp av appletviewer Testa att variera storleken hos fönstret som visar appleten. Du ser att labelns, textrutans och knappens lägen förändras. (Vi ska senare se hur man kan påverka placeringen av komponenter )

11 Kap 5: Sid 11 Övning: Ta hand om inmatade värden Det som matas in i en textruta ska kunna överföras till en variabel för fortsatt bearbetning (utskrift eller beräkning). Vi ska bygga vidare på appleten KompoTest och göra så att knappen blir aktiv. När vi trycker på knappen ska det som matats in i textrutan överföras till en strängvariabel vars värde skrivs ut på appleten. Komplettera / skriv om klassen KompoTest på följande sätt: // En övning med komponenter import java.awt.*; import java.awt.event.*; import java.applet.*; public class KompoTest extends Applet implements ActionListener // Deklarationer Label ledtext; TextField inruta; Button knapp; String namn; public void init() ledtext = new Label("Skriv ditt namn "); inruta = new TextField(10); knapp = new Button("Tryck här!"); add(ledtext); add(inruta); add(knapp); knapp.addactionlistener(this); namn = ; // två citationstecken, inget emellan public void paint(graphics g) g.drawstring("hej " + namn + "!",10,90); public void actionperformed(actionevent e) namn = inruta.gettext(); repaint(); Spara filen och kompilera Kör appleten med hjälp av appletviewer (eller genom att öppna HTML-filen i en web-läsare). Testa genom att skriva in ett namn (förslagsvis ditt eget) i textrutan - och trycka på knappen! Läs kommentarerna till koden på nästa sida!

12 Kap 5: Sid 12 För att knappen ska bli aktiv gör vi som förut: Importerar paketet java.awt.event. Implementerar gränssnittet ActionListener Sätter en lyssnare på knappen: knapp.addactionlistener(this); Skriver actionperformed()-metoden Vidare: Vi deklarerar ett strängobjekt som vi kallar namn I init()-metoden ser vi till att strängen namn från början är tom: namn = ; I metoden paint() står denna sats: g.drawstring("hej " + namn + "!",10,90); Här är ett exempel på konkatenering (sammanfogning) av strängar. Vi har tre strängar: - den konstanta strängen "Hej " - strängvaraibeln namn - den konstanta strängen "!" De sammanfogas med plustecken. Om namn har värdet "Pelle" kommer utskriften att bli: Hej Pelle! I metoden actionperformed(): Objektet inruta har en metod, gettext, som lämnar det värde som matas in i textrutan. (gettext är förstås definierad i klassen TextField) Satsen namn = inruta.gettext(); gör alltså att strängen namn tilldelas det som matas in. Metoden repaint() används för att på nytt rita upp det som metoden paint() beskriver. Övning: Metoden settext() Klassen TextField har en metod, settext(), med vilken man kan tilldela en textruta ett värde. Testa: I init()-metoden (efter att inruta instansierats) skriv satsen inruta.settext("olle"); Kompilera och kör. Nu visar inrutan från början texten Olle Övning: Textfältet kan lyssna! Lägg in en lyssnare även på textfältet: Skriv in denna sats i init()-metoden inruta.addactionlistener(this); Spara, kompilera, kör appleten. Skriv in ett namn i textfältet och tryck på ENTER. Du får samma reaktion som om du tryckt på knappen. Övning: Snyggare utskrift Gör så att utskriften i appleten KompoTest får större storlek och skrivs i färg.

13 Kap 5: Sid 13 Förvandla strängar till tal Övning: Matte1 Skriv in följande kod och spara den som Matte1.java i mappen X\java\Matte1 //Övning Matte1 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Matte1 extends Applet implements ActionListener // Deklarationer Label ledtext; TextField inruta1, inruta2; Button knapp; int x, y, sum ; public void init() ledtext = new Label("Skriv ett tal i varje ruta - tryck knappen"); inruta1 = new TextField(10); inruta2 = new TextField(10); knapp = new Button("Tryck här!"); add(ledtext); add(inruta1); add(inruta2); add(knapp); knapp.addactionlistener(this); inruta1.addactionlistener(this); inruta2.addactionlistener(this); x = 0; y = 0; sum = 0; public void paint(graphics g) g.drawstring("summan är " + sum,10,90); public void actionperformed(actionevent e) x = Integer.parseInt( inruta1.gettext() ); y = Integer.parseInt( inruta2.gettext() ); sum = x + y; repaint(); Kommentar: Vi deklarerar tre variabler av primitiv datatyp (heltal, dvs int). De heter x, y och sum I metoden init tilldelas dessa ett initialvärde (noll) Två inmatningsrutor (TextField-objekt) är deklarerade: inruta1 och inruta2 I metoden paint står det: g.drawstring("summan är " + sum,10,90); Om man konkatenerar en sträng med ett tal på detta sätt så blir resultatet en sträng. Om variabeln sum har värdet 375 så kommer strängen Summan är 375 att skrivas ut.

14 Kap 5: Sid 14 I metoden actionperformed finns en ny metod, parseint(): Du vet sedan förra exemplet att metoden gettext() ger den text (de bokstäver eller siffror) som skrivs in i en textruta. Om vi t ex matar in en 1:a, en 2.a och en 3:a får vi textsträngen "123" Ibland (som här) vill vi tolka en textsträng (t ex "123") som ett tal istället ( talet 123 ) (Det går ju exempelvis inte att räkna med textsträngar - vare sig de består av bokstäver eller siffror!) Metoden Integer.parseInt(sträng) gör denna förvandling från en textsträng till ett tal! En textsträng! Integer.parseInt( "123" ) Resultatet blir ett tal: 123 Integer är en klass och parseint() är en metod i denna klass. parseint() är en klassmetod (eller statisk metod). En klassmetod är (som du förhoppningsvis minns) en metod som kan användas "direkt" - utan att man behöver skapa ett objekt. Man skriver helt enkelt klassens namn, en punkt samt metodnamnet. Alltså: Integer.parseInt( ) Nu: Kompilera och kör! Summan beräknas om du trycker på knappen, eller om du trycker på ENTER då markören står i någon av inmatningsrutorna! Hur gör man om ett tal till en sträng? Nu vet du hur man gör om en sträng till ett tal. Tvärtom då? Hur gör man om ett tal till en sträng? Vi har redan sett att vi får en sträng om vi konkatenerar en sträng med ett tal. I exemplet ovan: "Summan är " + sum blir en sträng. Man gör om ett tal till en sträng helt enkel genom att sammanfoga talet med en tom sträng! (En tom sträng är två citationstecken utan något däremellan) Exempel: Låt x vara ett (hel- eller flyt-)tal. Motsvarande sträng är x +

15 Kap 5: Sid 15 Aritmetik Aritmetiska operatorer Vi tog upp aritmetiska operatorer redan i kapitel 2. Vi repeterar och gör några tillägg: Antag att x, y och z är heltalsvariabler (int) och att x = 14 och y = 3 Räkneoperation Operator Java-sats z får värdet Benämning Addition + z = x + y; 17 summa Subtraktion - z = x - y; 11 differens Multiplikation * z = x * y; 42 produkt Division / z = x / y; 4 kvot Modulus (se nedan) % z = x % y; 2 rest Heltalsdivision ger 14 3 = Rest Kvot Modulus ger resten vid en heltalsdivision Antag nu att x, y och z är flyttalsvariabler (double) och att x = 14.0 och y = 3.0 Räkneoperation Tecken Java-sats z får värdet Addition + z = x + y; 17.0 Subtraktion - z = x - y; 11.0 Multiplikation * z = x * y; 42.0 Division / z = x / y; (Modulus används ej) Dessutom kan parenteser användas så som i matematiken. Exempel: z = (x + y) * 5 ; Övning: Matte2 Skapa mappen X\java\Matte2 Utgå från klassen Matte1 och skriv klassen Matte2 där du utöver x, y och sum även deklarerar heltalsvariablerna diff, produkt, kvot och rest. Gör så att de inmatade talens summa, differens, produkt, kvot och rest visas då du trycker på knappen. Spara som Matte2.java Kompilera och kör. Övning: Cirkel Skapa mappen X\java\Cirkel Använd samma metodik som i Matte1 för att skriva klassen Cirkel Deklarera variablerna, area, omkrets och pi som flyttal (double) och radie som heltal (int) I init-metoden tilldelas pi = Gör så att radien hos en cirkel kan inmatas i en textruta och då man trycker på en knapp, eller trycker på ENTER, ska cirkelns area och omkrets skrivas ut. Spara som Cirkel.java Kompilera och kör. (Integer.parseInt fungerar så länge du matar in heltalsvärden på radien. Vi återkommer till hur man kan mata in decimaltal ) Komplettera koden så att en cirkel ritas ut i appleten. Låt gärna cirkelns storlek bero av den inmatade radien.

16 Kap 5: Sid 16 Övning: En knapp som tömmer inmatningsrutorna Deklarera ytterligare en knapp (med namnet knapp2 ) i Matte1.java (eller Matte2.java) Button knapp2; Skapa knappobjektet i init()-metoden: knapp2 = new Button("Rensa"); Lägg ut den på appleten: add(knapp2); Se till att även knapp2 "lyssnar" på actionperformed()-metoden: knapp2.addactionlistener(this); Ändra actionperformed()-metoden så här: public void actionperformed(actionevent e) if (e.getsource() == knapp) x = Integer.parseInt( inruta1.gettext() ); y = Integer.parseInt( inruta2.gettext() ); sum = x + y; if (e.getsource() == knapp2) inruta1.settext(""); inruta2.settext(""); sum = 0; Om du trycker på knapp sker tilldelning av variabler och beräkning som tidigare. Om du trycker på knapp2 raderas inmatningsrutorna och variabeln sum sätts till noll repaint(); I if-satsen vill man ofta att flera satser ska utföras om det boolska uttrycket är sant. Då skriver man dessa satser i ett block (inom "krullparenteser) som i exemplet ovan. En utförlig genomgång av if-satsen kommer i nästa kapitel Övning: Stapel igen Öppna Stapeldiagram.java (en övning i kapitel 4) Lägg in tre textrutor och två knappar. När man skrivit in heltal i textrutorna och tryckt på ena knappen ska staplarna få den höjd som talen anger. Om man trycker på den andra knappen ska staplarnas höjd sättas till 0 (noll). (Du ska förstås utnyttja klassen Stapel för att rita staplarna )

17 Kap 5: Sid 17 Omvandla datatyper med cast Antag att du deklarerat följande: int i = 7; double d = i; Normalt måste variabeln som tar emot ett värde vara av samma datatyp som värdet. Dock kan en flyttalsvariabel ta emot ett heltal. (Ett flyttal rymmer mycket mer information än ett heltal) Flyttalet d ovan kommer att få värdet 7.0 Antag nu att du deklarerat följande: double d = 26.87; int i = d; // Fungerar inte! Heltalet i kan inte ta emot ett flyttal. (Ett flyttal rymmer mycket mer information än ett heltal) Hur ska vi göra? I Java kan man få en tillfällig kopia, med annan datatyp, av en variabel: double d = 26.87; int i = (int) d; (int) d är en heltalskopia av flyttalet d. Eftersom heltal inte kan hantera decimaler sker en avhuggning till heltal. i kommer alltså att få värdet 26 Detta förfarande, att arbeta med en tillfällig kopia med annan datatyp, kallas för att man gör en cast I övningen Matte2 ovan arbetar vi med två heltal, x och y Vi utför en heltalsdivision och bestämmer kvoten med satsen kvot = x / y; Om x = 13 och y = 3 blir kvoten 4 eftersom 13/3 = 4 1/3 Antag nu att vi vill utföra beräkningen x/y för att få ett decimaltal. Ett sätt är att först lagra heltalsvärdet x i en flyttalsvariabel och sedan utföra divisionen. Det är elegantare att utföra operationen med hjälp av en cast: Heltalsvariabeln är alltså x Om jag skriver (double)x så skapas en tillfällig flyttalskopia av heltalsvariabeln x Satsen dec_kvot = (double)x / y (där dec_kvot är en flyttalsvariabel) ger då dec_kvot värdet Övning: Matte2 igen Deklarera flyttals(double)variabeln dec_kvot Låt dec_kvot tilldelas enligt ovan. Se till att värdet på dec_kvot skrivs ut Spara kompilera provkör

18 Kap 5: Sid 18 Felhantering Övning: try - catch Kör appleten Matte1 (eller Matte2) igen i appletviewer. Denna gång: Mata av misstag in bokstäver i stället för siffror i inmatningsrutorna och tryck på knappen. I DOS-fönstret som visas bakom appleten anmäls då ett fel att ett NumberFormatException har inträffat. Integer.parseInt()-metoden klarar förstås inte att översätta bokstäver till ett tal I Java kan man fånga upp sådana här fel ( = onormala händelser = undantag = exceptions ) Det sker med hjälp av en så kallad try catch konstruktion. Ändra i koden. Bädda in tilldelnings- och beräkningssatserna i ett try-block, så här: try x = Integer.parseInt( inruta1.gettext() ); y = Integer.parseInt( inruta2.gettext() ); sum = x + y; catch(numberformatexception nfe) Spara kompilera. Provkör dels med siffror i inmatningsrutorna, dels med bokstäver i åtminstone den ena rutan. Om allt fungerar i try-blocket så är det frid och fröjd. Om något går galet i try-blocket så tas felet om hand (inget meddelande i DOS-fönstert), och det som står i catch-blocket utförs. (För närvarande är catch-blocket tomt) Låt oss göra så att ett felmeddelande skrivs ut om vi matar in något som inte är siffror. Deklarera variabeln String felmedd = ; Lägg in kod i catch-blocket: catch(numberformatexception nfe) sum = 0; felmedd = "Du har inte matat in tal!"; Lägg in denna sats i paint()-metoden: g.drawstring(felmedd, 10,120); Lägg till denna sats allra först i actionperformed()-metoden: felmedd = ""; Spara kopilera provkör!

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

GUI-program med Swing

GUI-program med Swing Swing * Eclipse * Midlets * Android 4 GUI-program med Swing Javas AWT- och Swing-paket Ett GUI-program En JLabel En JButton Om gränssnitt Händelsehantering Skriv in text Mata in tal Aritmetik Typomvandling

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

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

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

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

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

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

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

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

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Övningsuppgifter till föreläsning 2 Variabler och uttryck Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna

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

Föreläsning 3: Händelsestyrda program och användargränssnitt

Föreläsning 3: Händelsestyrda program och användargränssnitt (2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september

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

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

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

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

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

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

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering 1 DSV Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste åren I Java finns

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

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

Kurs i programmering Java Uppgifter

Kurs i programmering Java Uppgifter And Action Nu när du skapat olika komponenter ska vi se till att något händer det då vi exempelvis trycker på en knapp. För att hantera det som sker kommer vi använda Actionlistener Övningarna som följer

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

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

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

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

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

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

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 18 Igår: Genomgång av dugga Rekursion Idag och på måndag: Om essän Lite, lite teori om konstanter Grafiska användargränssnitt Grundläggande

Läs mer

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

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

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson Lösningar till TENTAMEN I IXC003 SYSTEMUTVECKLING MED INTERNET/INTRANET, del 1 (5p) för IT3 och INTERNETPROGRAMMERING MED JAVA

Läs mer

Javas klassbibliotek. Kap 7: Sid 2

Javas klassbibliotek. Kap 7: Sid 2 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

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

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

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 Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Hur vi jobbar med ett program. 1. Vad vi skriver (med hjälp av redigeringsprogrammet Emacs) på datorn: // Fig. 2.1: Welcome1.java // A first program in

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Programmering för språkteknologer I, VT2012. Rum

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer

Läs mer

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

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

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

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator Programmering C: Tentamen 2008-05-31 1 of 5 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se) Tentamen i Programmering grundkurs och Programmering

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

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets GUI (forts) Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets Sven-Olof Nyström Uppsala Universitet 18 mars 2005 Skansholm: Kapitel 6 Användaren kan kommunicera med programmet

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

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

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på

Läs mer

Grundläggande programmering

Grundläggande programmering 1 Grundläggande programmering Javaprogram Talvariabler Selektioner Teckenvariabler Strängar Iterationer Sammanfattning Övningar Kap 1: Sid 2 Observera! För övningarna i detta kapitel: Skapa en mapp med

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

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

Lektion Händelsehanterare

Lektion Händelsehanterare Lektion Händelsehanterare Händelsehanterare kallas även lyssnare. En lyssnare har som uppgift att ta hand om olika händelser som kan inträffa. För att lyssnaren skall reagera på händelser måste den registreras

Läs mer

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC lektion 1 PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC VB är ett applikationsutvecklingsverktyg med programmeringsspråket är basic, gränssnittet är grafiskt och man arbetar hela tiden

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

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

Läs mer

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

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

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

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java bild 1 Objektorienterad programmering i Java Föreläsning 1 Kapitel 1-3 i kursboken Java Software Solutions bild 2 Läsanvisningar Kapitel 1 är en repetition av det ni förväntas kunna sedan tidigare. Det

Läs mer

Lösningar för tenta 3 DAT043,

Lösningar för tenta 3 DAT043, Lösningar för tenta 3 DAT043, 2018-08-22. Uppgift 1 class Person{ public String förnamn; public String efternamn; public int ålder; private double längd; private double vikt; public Person(String förnamn,

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Lösningsförslag till tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Lösningsförslag till tentamen FYTA11 Javaprogrammering Fredag 9:e januari 2009, 09:00 13:00 Uppgift 1: Leta buggar Titta på klasserna A,

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. 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

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

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

Mer om grafiska komponenter. Händelsestyrda program

Mer om grafiska komponenter. Händelsestyrda program Layout Managers TDA143 I1 Programmerade system Föreläsning 14 (OH-bilder 10) Mer om grafiska komponenter. Händelsestyrda program Utplaceringen av komponenter i en behållare styrs med en Layout Manager.

Läs mer

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ ETT Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. Ett av dem är Python, som du ska få

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

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering 2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste

Läs mer

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

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

Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016 Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

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

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

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 3 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Operatorer Java Standard Library Inmatning Operatorer operatorer En operator är en

Läs mer

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler 1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp

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

Klassen javax.swing.timer

Klassen javax.swing.timer Klassen javax.swing.timer I Swing finns en klass Timer som man kan använda för att upprepa en vis kodsekvens med jämna tidsmellanrum. Ett objekt av klassen Timer exekveras som en egen tråd. Ett objekt

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer