Omentamen FYTA11 Javaprogrammering

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

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

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

Laboration 13, Arrayer och objekt

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Händelsestyrda program

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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

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

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

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

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

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

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

Lösningsförslag FYTA11 Javaprogrammering

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

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

Tentamen 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

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Tentamen FYTA11 Javaprogrammering

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Lösningsförslag tentamen FYTA11 Java

Föreläsning 5-6 Innehåll

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

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.

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. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

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

Föreläsning 2, vecka 8: Repetition

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

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

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

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

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

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

Tentamen. Lösningsförslag

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

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

Tentamen, EDAA10 Programmering i Java

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Objektsamlingar i Java

Tentamen Programmering fortsättningskurs DIT950

Monday, November 16, Senaste Labben

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Tentamen i Objektorienterad programmering

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

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-17, TDA540. Dag: , Tid:

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

Föreläsning 3-4 Innehåll

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

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

Den som bara har en hammare tror att alla problem är spikar

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

2D1339 Programkonstruktion för F1, ht 2004

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

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

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

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

Dugga i Grundläggande programmering STS, åk

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

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

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

TENTAMEN OOP

PROGRAMMERINGSTEKNIK TIN212

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

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

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

Lösningar för tenta 2 DAT043,

Malmö högskola 2008/2009 CTS

Objektorienterad Programmering (TDDC77)

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

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

Föreläsning 6: Metoder och fält (arrays)

Transkript:

Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Omentamen FYTA11 Javaprogrammering Onsdag 4:e februari 2009, 13:00 17:00 Instruktioner Inga hjälpmedel är tillåtna. Behandla högst en uppgift per sida, 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 som alla kan ge upp till tio poäng. Uppgift 1: En liten klasshierarki Nedan visas några enkla klasser för att representera anställda på ett företag. Basklassen är Employee som har ett namn och en lön. En chef, som är också en anställd, representeras av klassen Boss och har, förutom ett namn och en lön, också en månatlig bonus. Skriv färdigt konstruktorn och paycheque metoden i klassen Boss så att de fungerar enligt kommentarerna (Employee klassen får ej modifieras). Klassen PayCheques på nästa sida används för att skriva ut en lönelista i det väldigt lilla företaget PytteMjuk. Vad skrivs ut om man kör main metoden? Skriv om hela klassen PayCheques så att utskriftsmetoden får signaturen. public static void printcheques(collection<employee> payroll); men i övrigt fungerar som innan. Använd en lämplig kontainerklass från standardbiblioteket och använd en iterator eller förenklad for-sats till loopen i utskriftsmetoden. Om du är osäker på hur metoder i standardbiblioteket är deklarerade är det tillåtet att göra välmotiverade och väldokumenterade antaganden. 1

/** This class represents an employee of * a company. public class Employee { private String thename; private double thesalary; /** Create an employee with a name and * a salary. public Employee(String name, double salary) { thename = name; thesalary = salary; /** Return the monthly amount to be payed to * the employee. public double paycheque() { return thesalary; /** Return the name of the employee. public String name() { return thename; /** This class represents an employee of a company * in a managerial position. public class Boss extends Employee { private double thebonus; /** Create an employee with a name, salary and * a monthly bonus. public Boss(String name, double salary, double bonus) { // name och salary ska sättas i superklassen // bonus skall tilldelas denna klass /** Return the monthly amount to be payed to the * employee, which in the Boss case should * include the bonus. public double paycheque() { // returnera bonusen plus lönen från // superklassen. /** Return the bonus. public double bonus() { return thebonus; public class PayCheques { public static void main(string[] args) { Employee[] staff = new Employee[3]; staff[0] = new Employee("John Doe", 10000.0); staff[1] = new Employee("Per Persson", 12000.0); staff[2] = new Boss("Jill Bates", 30000.0, 55000.0); printcheques(staff); /** Write out a payroll given a field of employees. public static void printcheques(employee[] payroll) { for ( int i = 0; i < payroll.length; ++i ) System.out.println("Name: " + payroll[i].name() + ", amount: " + payroll[i].paycheque()); 2

Uppgift 2: Sortera Klassen BubbleSort nedan kan användas för att sortera ett godtyckligt fält med heltal. Skriv om klassen så att den istället sorterar ett fält med godtyckliga objekt med hjälp av ett Comparator objekt. Sorteringsmetoden skall ha signaturen public static void sort(object [] v, Comparator cmp). Gränssnittet Comparator är deklarerat i paketet java.util enl. nedan. Om Comparator argumentet är null ska metoden ändå sortera vektorn under antagandet att objekten i fältet implementerar standardgränssnittet Comparable. public class BubbleSort { public static void sort(int [] v) { for ( int i = v.length - 1; i > 0 ; --i ) for ( int j = 0; j < i; ++j ) if ( v[j] > v[j + 1] ) swap(v, j, j + 1); public static void swap(int [] v, int i, int j) { int tmp = v[i]; v[i] = v[j]; v[j] = tmp; public interface Comparable { /** Jämför detta objekt med objektet o. * @param o objektet att jämföra med. * @return 0 om this är ekvivalent med o, * -1 om this kan anses vara mindre än o, * 1 om this kan anses vara större än o. public int compareto(object o); package java.util; public interface Comparator { /** Jämför två objekt. * @param o1 första objektet i jämförelsen. * @param o2 andra objektet i jämförelsen. * @return 0 om o1 är ekvivalent med o2, * -1 om o1 kan anses vara mindre än o2, * 1 om o1 kan anses vara större än o2. public int compare(object o1, Object o2); Uppgift 3: Medelvärde Skriv ett program som skriver ut medelvärdet och variansen av de argument som ges när det startas. Exempelvis ska % java Medel 0.25 10 3-25 0 ge en utskrift liknande Average: -2.35, Variance: 11.886547017532047 Om ett argument inte är ett tal ska ett snällt felmeddelande skrivas ut men medelvärdet av övriga numeriska argument ska ändå vara korrekt. Följande metod i klassen Double kan vara bra att känna till /** Returns a double value initialized to the value represented by * the specified String. * @param s the string to be parsed. * @return the double value represented by the string argument. * @throws NumberFormatException if the string does not contain a * parsable double. public static double parsedouble(string s) throws NumberFormatException; 3

Uppgift 4: Voff! Följande klass ritar en hundliknande form på en Canvas: import java.awt.*; import java.applet.*; import java.net.*; class Dog extends Canvas { AudioClip bark; Polygon dog; public Dog() { setsize(300,300); int [] x = {100, 100, 110, 110, 115, 115, 120, 120, 125, 125, 180, 180, 185, 185, 190, 190, 195, 195, 200, 190, 120, 115, 110; int [] y = {110, 120, 120, 140, 140, 130, 130, 140, 140, 130, 130, 140, 140, 130, 130, 140, 140, 120, 110, 120, 120, 105, 110; dog = new Polygon(x, y, x.length); try { bark = Applet.newAudioClip(new URL("http://www.dog.org/sounds/bark/wienerdog.au")); catch (MalformedURLException e) { bark = null; addmouselistener(/* lägg till din kod här ); public void paint(graphics g) { g.drawpolygon(dog); g.drawstring("dog", 140, 155); Skapa ett objekt av en anonym klass i anropet till addmouselistener så att hunden skäller varje gång man klickar på den (det räcker altså inte att man klickar i fönstret i allmänhet, man ska behöva klicka på själva hunden). Behövs det någon annan kod för att klassen ska fungera? Det går att lösa uppgiften utan att använda en anonym klass, men då får man inte full poäng. Nedan följer beskrivningar av diverse metoder i diverse klasser som kan vara bra att känna till: 4

package java.applet; public interface AudioClip { /** Starts playing this audio clip. Each time this method is called, the clip is restarted from the beginning. void play(); /** Starts playing this audio clip in a loop. void loop(); /** Stops playing this audio clip. void stop(); package java.awt; public class Polygon implements Shape, java.io.serializable { // Lots of constructors and other methods. /** Determines whether the specified Point is inside this Polygon. public boolean contains(point p); /** Determines whether the specified coordinates are contained in this Polygon. public boolean contains(int x, int y); public class MouseEvent extends InputEvent { // Constructors and other methods. /** Returns the horizontal x position of the event relative to the source public int getx(); /** Returns the vertical y position of the event relative to the source public int gety(); /** Returns the x,y position of the event relative to the source public Point getpoint(); public interface MouseListener extends EventListener { /** Invoked when the mouse has been clicked on a public void mouseclicked(mouseevent e); pressed on a public void mousepressed(mouseevent e); released on a public void mousereleased(mouseevent e); /** Invoked when the mouse enters a public void mouseentered(mouseevent e); /** Invoked when the mouse exits a public void mouseexited(mouseevent e); public abstract class MouseAdapter implements MouseListener { /** Invoked when the mouse has been clicked on a public void mouseclicked(mouseevent e) { pressed on a public void mousepressed(mouseevent e) { released on a public void mousereleased(mouseevent e) { /** Invoked when the mouse enters a public void mouseentered(mouseevent e) { /** Invoked when the mouse exits a public void mouseexited(mouseevent e) { /** Return the number of mouse clicks associated with this event. public int getclickcount(); 5