Tentamen FYTA11 Javaprogrammering

Relevanta dokument
Lösningsförslag till tentamen FYTA11 Javaprogrammering

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

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

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

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

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

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

Omentamen FYTA11 Javaprogrammering

Lösningsförslag tentamen FYTA11 Java

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

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

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

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

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

Grafiska komponenter.

Tentamen FYTA11 Javaprogrammering

Lösningsförslag FYTA11 Javaprogrammering

PROGRAMMERING-Java TENTAMINA

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

Tentamen FYTA11 Javaprogrammering

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

Tentamen Grundläggande programmering

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

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

PROGRAMMERING-JAVA TENTAMINA

TENTAMEN OOP

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

TENTAMEN OOP

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Konstruktion av klasser med klasser

DAT043 Objektorienterad Programmering

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 )

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

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

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

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

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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

Del A (obligatorisk för alla)

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

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.

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Tentamen i Programmering

Chapter 4: Writing Classes/ Att skriva egna klasser.

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Applets med komponenter

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Tentamen i Grundläggande programmering STS, åk 1 fredag

PROGRAMMERING-Java Omtentamina

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

TENTAMEN OOP

Klasshierarkier - repetition

LULEÅ TEKNISKA UNIVERSITET

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Mer om grafiska komponenter. Händelsestyrda program

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

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

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

Objektorienterad programutveckling, fk

Föreläsning 3-4 Innehåll

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

Instuderingsfrågor, del D

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

Föreläsning 12: Exempel och problemlösning

TDDD78 Viktiga begrepp, del 2

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

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

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

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Laboration 24 Databasen MySQL och java

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Tentamen OOP

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

Lösningar för tenta 3 DAT043,

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

OOP Tentamen

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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

Föreläsning 8: Exempel och problemlösning

Tentamen, EDAA10 Programmering i Java

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

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

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

Transkript:

Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Tentamen FYTA11 Javaprogrammering Fredag 9:e januari 2009, 09:00 13:00 Instruktioner Inga hjälpmedel är tillåtna. Behandla högst en uppgift per papper, skriv bara på ena sidan och sätt ditt namn och personnummer på varje sida. Skriv läsligt och kommentera utförligt vad du gör det kan ge dig poäng även om resultatet blir fel. Tentamen omfattar fyra uppgifter på fem sidor som alla kan ge upp till tio poäng. Uppgift 1: Leta buggar Titta på klasserna A, B, C samt D nedan. På nästa sida finns klassen ABCD. Om man kommentera bort de satser i main metoden i ABCD som ger kompileringsfel eller exekveringsfel, vad kommer då att skrivas ut om metoden exekveras? Förklara varför de bortkommenterade satser var felaktiga. Nedan visas också relevant information om standardklasen Vector. public abstract class A { public abstract String tostring(); return 0; public abstract class B extends A { return 1; public class C extends B { public String tostring() { return "C"; public class D extends C { return 3; package java.util; public class Vector<E> implements Collection<E> { /** Constructs an empty vector. */ public Vector(); /** Constructs a vector containing the elements * of the specified collection. */ public Vector(Collection<? extends E> c); /** Appends the specified element to the end of * this Vector. */ public boolean add(e e); //... 1

import java.util.*; public class ABCD { public static void main(string [] arg) { long l1 = 1; // 01 double x1 = 10.0; // 02 A a1 = new A(); // 03 B b1 = new B(); // 04 C c1 = new C(); // 05 D d1 = new D(); // 06 Object o1 = new C(); // 07 A a2 = new B(); // 09 B b2 = new C(); // 10 C c2 = new D(); // 11 D d2 = new C(); // 12 A a3 = (A) c1; // 14 B b3 = (B) d1; // 15 C c3 = (C) b2; // 16 D d3 = (D) b2; // 17 A a4 = o1; // 19 D d4 = (D) c2; // 20 long l2 = x1; // 22 double x2 = c1.tolong(); // 23 double x3 = (double) l1; // 24 long l3 = (long) x1; // 25 System.out.println(b1); // 27 System.out.println(c1); // 28 System.out.println(d1); // 29 System.out.println(b2 + " " + l1 + x1); // 30 System.out.println(b2 + l1 + " " + x1); // 31 System.out.println(c2 + " " + x1 + l1); // 32 System.out.println(d1 + " " + x1); // 33 System.out.println(a2.toLong()); // 34 System.out.println(b2.toLong()); // 35 System.out.println(c2.toLong()); // 36 Vector<D> vd = new Vector<D>(); // 38 vd.add(d1); // 39 vd.add(c2); // 40 vd.add(d4); // 41 Vector<A> va = vd; // 42 Vector<B> vb = new Vector<B>(vd); // 43 Vector<C> vc = vb; // 44 2

Uppgift 2: Personnummer Ett svenskt personnummer består av tio siffror (numera egentligen tolv efter som hela årtalet ska skrivas ut, men det bryr vi oss inte om här), där de sex första är födelsedatum på formen yymmdd och de fyra sista består av ett tre-siffrigt löpnummer (där den tredje siffran är udda för män och jämn för kvinnor) samt en kontrollsiffra. Kontroll siffran kan räknas ut på följande sätt. Multiplicera de enskilda siffrorna omväxlande med två eller ett enl. y y m m d d - n n n 2 1 2 1 2 1-2 1 2 Om en multiplikation blir större än eller lika med tio, lägg ihop siffrorna (t.ex. 8 2 = 16 1+6 = 7). Summera alla de resulterande siffrorna och ta 10 minus det resulterande entalet. Detta ger kontrollsiffran. Om entalet är noll blir även kontrollsiffran noll. Här är ett helt exempel: 8 1 2 2 2 8-9 8 7 x 2 1 2 1 2 1-2 1 2 16 1 4 2 4 8 18 8 14 7 1 4 2 4 8 9 8 5 : 48 10 8 x = 2 Skriv en klass med en metod som tar ett argument av typen int[]. Metoden ska kontrollera att heltalsfältet innehåller precis nio siffror mellan noll och nio. Under antagandet att dessa siffror är de första nio siffrorna i ett personnummer ska sedan kontroll siffran returneras som ett heltal. Om det upptäcks något fel med argumenten (fel antal, större än nio,...) ska ett exception av typen PNrException (se nedan) genereras. Notera att modulusoperatorn (%) som ger heltalsresten vid heltalsdivision, är mycket användbar här. public class PNrException extends Throwable { public PNrException() { super("the given numbers do not correspond to a personnummer."); Uppgift 3: Personnummer igen Lägg till en main metod i klassen från den förgående uppgiften som, för varje argument, skriver ut huruvida det är ett giltigt personnummer eller inte. Endast argument på formen yymmddnnnn, yymmdd-nnnn eller yymmdd nnnn accepteras och det ska kollas att sista siffran är korrekt. Notera att metoden public char charat(int i) ger tecknet med ett givet tecken, och att det som returneras är ett heltal motsvarande tecknets UTF8 kod. Notera också att koderna för tecknen 0,..., 9 är i nummerordning. 3

Uppgift 4: Personnummer igen igen Antag att klassen PNr nedan är den i vilken du har implementerat metoderna i de förgående två uppgifterna. Ett objekt av klassen skapar ett fönster med ett textfält (TextField), en etikett (Label) och en liten checkbox (Checkbox). Om man trycker på retur knappen i textfältet genereras en händelse av klassen ActionEvent för TextField objektet. När man klickar i checkboxen ändras den från markerad till omarkerad eller tvärt om, och en händelse av klassen ItemEvent genereras för Checkbox objektet. När objektet och fönstret skapas visar textfältet och etiketten de strängar som angetts i konstruktorerna. På samma sätt får checkboxen en text och visas omarkerad. Skriv de ändringar som krävs för att programmet ska fungera så att om man skriver in ett födelsedatum i textfältet och trycker på returtangenten, så ändras texten på etiketten och föreslår fyra sista siffror som ger ett korrekt personnummer. Om checkboxen är markerad ska de fyra siffrorna motsvara en kvinna, annars ska de motsvara en man. På nästa sida finns en del metoder i relevanta klasser och gränssnitt beskrivna. 4

import java.awt.*; public class PNr extends Frame { TextField textfield = new TextField("yymmdd"); Label label = new Label("nnnn"); Checkbox checkbox = new Checkbox("Female", false); public PNr() throws ArithmeticException { super("personnummer generator"); setlayout(new FlowLayout()); add(textfield); add(label); add(checkbox); pack(); setvisible(true); // metoderna som implementerats i uppgift 2 och 3. public class Label extends Component { /** Initializes a new instance of Label * with no text. */ public Label(); /** Initializes a new instance of Label * with the given text. * @param text The text for this label. */ public Label(String text); /** Sets the text in this label to the specified * value. * @param text The new text for this label. */ public synchronized void settext(string text); public class TextField extends TextComponent { /** get the text from the field */ public String gettext(); /** Assign an ActionListener to the field */ public void addactionlistener(actionlistener l); package java.awt.event; public interface ActionListener extends EventListener { /** Invoked when an action occurs. */ public void actionperformed(actionevent e); // Lots of other stuff... package java.awt.event; public class Checkbox extends Component { /** Create a checkbox with a given label * and a given state. */ public Checkbox(String label, boolean state); /** Get the current state of the checkbox. */ public boolean getstate(); /** Add an ItemListener which gets notified if * the state changes. */ public void additemlistener(itemlistener l); // Lots of other stuff... public interface ItemListener extends EventListener { /** Invoked when an item state is changed. */ public void itemstatechanged(itemevent e); public final class Math { /** Returns a double value with a positive sign, * greater than or equal to 0.0 and less than * 1.0. Returned values are chosen * pseudorandomly with (approximately) uniform * distribution from that range. */ public static double random(); 5