lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

Relevanta dokument
Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Lösningsförslag till tentamen

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

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

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

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

Exempel på användning av arv: Geometriska figurer

Rita Egna Bilder, Timer

PROGRAMMERINGSTEKNIK för F1 och TM1 (TIN212)

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Mer om grafiska komponenter. Händelsestyrda program

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Grafiska komponenter.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Lösningsförslag till tentamen

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Objektorienterad programutveckling, fk

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen FYTA11 Javaprogrammering

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

Föreläsning 14: Grafik & mera händelsehantering

Lösningsförslag till tentamen

Föreläsning 13: Swing (GUI), händelser, timer

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

DAT043 Objektorienterad Programmering

Lösningar för tenta 3 DAT043,

Laboration 15 Grafiskt användargränssnitt

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

Lösningsförslag till tentamen

Examination i PROGRAMMERINGSTEKNIK F1/TM1 TIN212. Dag: Måndag Datum: Tid: (OBS 5 tim) Rum: V+M

OOP Objekt-orienterad programmering

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

Tentamen. Lösningsförslag

OOP Objekt-orienterad programmering

LYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH TIN 211. DATAVETENSKAP Göteborg ( ) TENTAMEN

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Föreläsning 14. Filhantering

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP och DSV1:P2

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP och DSV1:P2

Lösningsförslag till tentamen

Laboration 4: Game of Life

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

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

OOP Objekt-orienterad programmering

JAVAUTVECKLING LEKTION 4

Lösningar för tenta 2 DAT043,

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Lösningsförslag till tentamen

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

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

Lösningsförslag tentamen FYTA11 Java

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

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

Laboration 24 Databasen MySQL och java

kl

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

JAVAUTVECKLING LEKTION 11

Lösningar till tentamen i EDAF25

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

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Objektorienterad programmering i Java

Tentamen FYTA11 Javaprogrammering

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Lektion Händelsehanterare

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Properties. Användbara metoder som kan anropas i propertychanged:

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Rörliga figurer Klassen Timer Testning av program Något om applets

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.

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

Tentamen FYTA11 Javaprogrammering

Tentamen i Objektorienterad programmering E

Parallellism, återblick

Tentamen, EDAA20/EDA501 Programmering

Tentamen i Objektorienterad programmering E

Föreläsnings 9 - Exceptions, I/O

Transkript:

// Lösningar till gammal tentamen // Uppgift 1 a /* Felet beror på att det är klassen på referensen som avgör vilka metoder man får köra på ett objekt, inte klassen på objektet. På rad 5 i klassen C har referensen x klassen A, trots att den i detta specifika fall egentligen refererar till ett objekt av klassen B. I klassen A finns inte metoden b och därför får vi felmeddelande när vi försöker köra x.b(). Lösningen på detta är att skriva om rad 5 i klassen C så att den faktiskt ändrar referensens klass med en typomvandling: System.out.println(((B) x).b()); */ // Uppgift 1 b /* raden med l1: new List() är fel eftersom List är ett gränssnitt raden med l3: new List() är fel eftersom List är ett gränssnitt raden med l4: det är olika typer till vänster och höger om likhetstecknet raden med l6: new Collection() är fel eftersom Collection är ett gränssnitt raden med l7: det är olika typer till vänster och höger om likhetstecknet (ingen downcasting) */ // Uppgift 2 public class Personnummer { private String nr; private int toint(string str, int i) { if (Character.isDigit(str.charAt(i))) return Integer.parseInt(str.substring(i, i+1)); else public Personnummer(String s) { // Kontrollera att numret är korrekt int k = s.indexof('-'); if (k!= 6 s.length()!= 11) String t = s.substring(0,6) + s.substring(7); // beräkna kontrollsumman int sum = 0; for (int i=0; i<9; i++) { int tal = toint(t, i); // ta bort tecknet '-' int j = tal * (2-i%2); // multiplicera med 2 eller 1 sum += j/10 + j%10; // addera siffrorna i resultatet till summan sum %= 10; if ((toint(t,9) + sum) % 10!= 0) // Korrekt! nr = s; public String tostring() { return nr; public boolean ärkvinna() { return toint(nr, 9) % 2 == 0; Page 1

public boolean ärman() { return!ärkvinna(); // Uppgift 3 a public class Abonnemang { private String namn; private double permån; private double permindag; private double perminövr; private double friadag; private double friaövr; // Konstruktor public Abonnemang(String na, double pmån, double pmindag, double pminövr, double frdag, double frövr) { if (na == null pmån<0 pmindag<0 pminövr<0 frdag<0 frövr<0) namn = na; permån = pmån; permindag = pmindag; perminövr = pminövr; friadag = frdag; friaövr = frövr; // Metoder public String avläsnamn() { return namn; public double totkostnad(double mindag, double minövr) { if (mindag<0 minövr<0) double antaldag = Math.max(minDag-friaDag,0); double antalövr = Math.max(minÖvr-friaÖvr,0); return permån + antaldag*permindag +antalövr*perminövr; // Uppgift 3 b import java.util.*; import java.io.*; public class JfrAbonnemang { public static void main(string[] arg) throws IOException { // skapa fältet med abonnemang Abonnemang[] a = new Abonnemang[100]; Locale.setDefault(Locale.US); // decimalpunkter i filen Scanner sc = new Scanner(new File("mobildata.txt")); int n = 0; // antal olika abonnemang while (sc.hasnext()) a[n++] = new Abonnemang(sc.next(), sc.nextdouble(), sc.nextdouble(), sc.nextdouble(), sc.nextdouble(), sc.nextdouble()); // Gör beräkningar för olika abonnemang while (true) { String s = JOptionPane.showInputDialog ("Hur många minuter ringer du per månad\n" + "under dagtid respektive övrig tid?"); if (s == null) Page 2

break; Scanner sc2 = new Scanner(s); double mindag = sc2.nextdouble(); double minövr = sc2.nextdouble(); double billigast = Double.MAX_VALUE; // hittills int index = 0; // för det billigaste alternativet for (int i=0; i<n; i++) { // beräkna total kostnad per månad double kostnad = a[i].totkostnad(mindag, minövr); if (kostnad < billigast) { billigast = kostnad; index = i; // visa den lägsta kostnaden JOptionPane.showMessageDialog(null, a[index].avläsnamn() + " är billigast.\n" + "Kostnad: " + billigast + " kr / månad"); System.exit(0); // Uppgift 4 import java.awt.*; import java.awt.event.*; public class Rotate extends JFrame { public Rotate() { add(new DiskPanel(100, Color.red, 10)); setsize(200, 200); setvisible(true); setdefaultcloseoperation(exit_on_close); public static void main(string[] args) { Rotate d = new Rotate(); class DiskPanel extends JPanel implements ActionListener { private int maxdiameter; // Skivans höjd private Color color; // Skivans färg private int wait; // Väntetid mellan bilder private int diameter; // Synlig bredd int warp = 2; public DiskPanel(int size, Color color, int wait) { Timer t = new Timer(10,this); maxdiameter = size; this.wait = wait; this.color = color; setbackground(color.white); diameter = maxdiameter / 2; t.start(); public void actionperformed(actionevent e) { if (diameter <= 0 diameter >= maxdiameter) warp = -warp; diameter += warp; repaint(); public void paintcomponent(graphics g) { Page 3

super.paintcomponent(g); int width = getsize().width; int height = getsize().height; g.setcolor(color); g.filloval(width/2 - diameter/2, height/2 - maxdiameter/2, diameter, maxdiameter); // Uppgift 5 import java.awt.*; import java.awt.event.*; public class Push extends JFrame implements ActionListener { JButton[] b; JLabel lab = new JLabel("Poäng: 0"); JButton nytt = new JButton("Nytt spel"); javax.swing.timer t1 = new javax.swing.timer(30000, this); javax.swing.timer t2; int poäng, aktiv, antal; // 30 sek public Push(int n, int tid) { antal = n; t2 = new javax.swing.timer(tid, this); JPanel p1 = new JPanel(), p2 = new JPanel(); setlayout(new GridLayout(2,1)); add(p1); add(p2); b = new JButton[antal]; for (int i=0; i<antal; i++) { b[i] = new JButton("Knapp " + (i+1)); b[i].setforeground(color.red); b[i].setenabled(false); b[i].addactionlistener(this); p1.add(b[i]); p2.add(lab); p2.add(nytt); nytt.addactionlistener(this); setdefaultcloseoperation(exit_on_close); pack(); setvisible(true); private void nyttspel() { poäng = 0; lab.settext("poäng: 0"); aktiv = (int) (Math.random() * antal); b[aktiv].setenabled(true); t1.restart(); t2.restart(); private void stoppa() { t1.stop(); t2.stop(); b[aktiv].setenabled(false); private void bytknapp() { b[aktiv].setenabled(false); aktiv = (aktiv + (int) (Math.random() * (antal-1)) + 1) % antal; b[aktiv].setenabled(true); public void actionperformed(actionevent e) { if (e.getsource() == t1) stoppa(); else if (e.getsource() == t2) Page 4

bytknapp(); else if (e.getsource() == nytt) nyttspel(); else if (e.getsource()== b[aktiv]) { Toolkit.getDefaultToolkit().beep(); lab.settext("poäng: " + ++poäng); bytknapp(); t2.restart(); public static void main(string[] arg) { new Push(Integer.parseInt(arg[0]), Integer.parseInt(arg[1])); Page 5