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



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

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

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

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

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

Omentamen FYTA11 Javaprogrammering

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)

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

PROGRAMMERING-Java TENTAMINA

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

PROGRAMMERING-Java Omtentamina

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

PROGRAMMERING-JAVA TENTAMINA

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

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.

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

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

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

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

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

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

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

Del A (obligatorisk för alla)

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

PROGRAMMERINGSTEKNIK TIN212

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Föreläsning 2, vecka 8: Repetition

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

Föreläsning 1, vecka 8: Att förbereda sig för tentan

Laboration 4: Game of Life

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

Tentamen FYTA11 Javaprogrammering

Monday, November 16, Senaste Labben

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

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

Konstruktion av klasser med klasser

TENTAMEN OOP

Tentamen, EDAA20/EDA501 Programmering

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

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

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.

Lösningsförslag tentamen FYTA11 Java

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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

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

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

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

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

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

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

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

Laboration 15 Grafiskt användargränssnitt

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

Klasshierarkier - repetition

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Lösningsförslag till tentamen

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Lösningar för tenta 3 DAT043,

DAT043 - föreläsning 8

Exempel på användning av arv: Geometriska figurer

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

Tentamen i Objektorienterad programmering

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Laboration 1 - Grunderna för OOP i Java

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

TENTAMEN OOP

TDDD78 Viktiga begrepp, del 2

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

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

tentaplugg.nu av studenter för studenter

DAT043 Objektorienterad Programmering

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

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

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

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

Tentamen i Objektorienterad programmering

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

Laboration 13, Arrayer och objekt

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

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

Transkript:

Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Onsdag, 2015-08- 26, 08:30-12:30, byggnad M Ansvarig lärare: Magnus Myréen (besöker tentan) Vitsords gränser: 3=28p, 4=38p, 5=48p, max 60p Hjälpmedel: på sista sidan av dokument finns ett utdrag ur Javas API Resultat: skickas per epost från Ladok Lösningar: kommer att finnas på kurshemsidan Granskning av rättning: tider för detta kommer att finnas på kurshemsidan Kom ihåg att inte fastna på en uppgift. Bestäm i förväg din egen tidsgräns per uppgift. Lycka till! Uppgift 1: [9 poäng totalt] variabler, typer, klasser För varje exempel nedan, förklara varför Java kompilatorn (compiler) inte kommer att accepterar koden. a) Typfel. int a = "1"; int b = "45"; System.out.println(a + b); [1 poäng] b) Det finns ingen konstruktör som tar int, int. [2 poäng] public class Test1 { public static Test1 pass(int x, int y) { return new Test1(x,y); c) Det finns ingen variabel a utanför test metoden. [2 poäng] public class Test2 { public int test(int a) { return this.a; d) Klassmetoden (static) försöker använda instansvariablen a. [2 poäng] public class Test3 { private int a; public static int geta() { return a; e) Metoden returnerar inte en int. [2 poäng] public class Test4 { public static int add(int x, int y) { System.out.println (x + y);

Uppgift 2: [20 poäng totalt] att skriva klass, rekursion, arrays Tips. Läs igenom hela uppgiften innan du börjar. a) Denna uppgift handlar om en klass som representerar lådor. Varje låda har ett namn som ges via konstruktören. Varje låda kan innehålla ett antal lådor. Man anger innehållet med setcontent- metoden. public class Box { public Box (String name) { public void setcontent (Box[] contents) { public void print (String prefix) { Skriv kod som implementerar allt utom print- metoden. [7 poäng] public class Box { private String name; private Box[] content; public Box(String name) { this.name = name; public void setcontent(box[] content) { this.content = content; public void print(string prefix) { b) Implementera Box klassens print- metod så att koden nedan Box red = new Box ("röd"); Box blue = new Box ("blå"); Box green = new Box ("grön"); Box yellow = new Box ("gul"); Box fuchsia = new Box ("magenta"); Box[] red_content = {blue, green, yellow; red.setcontent(red_content); Box[] blue_content = {fuchsia; blue.setcontent(blue_content); red.print(" "); skriver följande utskrift på terminalen. - en röd låda som innehåller: - en blå låda som innehåller: - en magenta låda som är tom - en grön låda som är tom - en gul låda som är tom [9 poäng]

Tips. Man skapar lätt indenteringen genom att sätta " man anropar print- metoden rekursivt. " till prefixen när public void print(string prefix) { System.out.print(prefix); System.out.print(" - en " + name + " låda "); if (content == null) { System.out.println("som är tom"); else { System.out.println("som innehåller:"); for (int k=0; k < content.length; k++) { content[k].print(prefix + " "); c) Skriv en kodsnutt som skapar en låda som heter black (av typ Box). Lådan bör orsakar en oändlig utskrift när man anropar black.print(" "). Förklara varför utskriften upprepar sig. Exempel [4 poäng] Box black = new Box ("svart"); Box[] black_content = {black; black.setcontent(black_content); black.print(" "); Förklaring: den svarta lådan skapas. Sedan skapas en array som består av den nya svarta lådan. Jag använder setcontent metoden så att denna array används som innehåll för den svarta lådan som skapades först. När print anropas, kör den in i en oändlig loop för att print kallar rekursivt på print för varje element som finns i contents, men där finns ju samma låda igen. Utskriften fastnar i en loop.

Uppgift 3: [5 poäng] loopar, utskrift Skriv ett program som skriver ut multiplikationstabellerna upp till tio. Exempel 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 public class Mult { public static void main (String[] args) { for (int k = 1; k <= 10; k++) { for (int l = 1; l <= 10; l++) { System.out.print(" "); System.out.print(k * l); System.out.println();

Uppgift 4: [9 poäng totalt] exceptions a) Förklara begreppet exceptions. Hur fungerar exceptions i Java? När bör man använda exceptions? När bör man undvika dem? [2 poäng] Javas exceptions används för att ta hand om sådana situationer som normalt inte skall inträffa och som är krävande att hela tiden kolla med if- statser. En exception är ett objekt som man kan kasta. När man kastar en exception slutar den normala körningen och programmet hoppar istället ut till den senaste try- catch statsen som kan fånga denna typs exception. Exceptions bör användas för ovanliga fall. Det går att skriva program så att exceptions används för normala returvärden, och andra hopp, men det skall man vara försiktig med för att exceptions är långsammare än vanliga metodreturer. b) Definiera en egen exception typ som kallas IntIntEx. Denna exception bör innehålla två int värden. [4 poäng] class IntIntEx extends Exception { private int x; private int y; public IntIntEx(int x, int y) { this.x = x; this.y = y; public int getx() { return x; public int gety() { return y; c) Ge exempelkod som visar hur man skapar (create), kastar (throw) och fångar (catch) den nya IntIntEx exception typen. [3 poäng] public class Test { public static void main(string[] args) { try { IntIntEx i = new IntIntEx(3,4); if (1 + 1 == 2) { throw i; System.out.println("This is never printed."); catch (IntIntEx j) { System.out.println(j.getX());

Uppgift 5: [17 poäng] händelsehantering, swing, grafik Skriv ett program som visar ett fönster med följande funktionalitet: när man klickar på fönstrets yta bör en liten rektangel ritas vid koordinaterna där man klickade. Om man klickar flera gånger bör endast den senaste rektangeln synas. Förklara hur ditt program implementerar denna funktionalitet. Tips. Använd metoden addmouselistener, klassen MouseEvent och gränssnittet MouseListener. Ett utdrag ur Javas API finns på nästa sida. public class Click extends JPanel implements MouseListener { private int x = - 500 ; private int y = - 500 ; public static void main(string[] args) { new Click(); public Click() { addmouselistener(this); JFrame f = new JFrame(); f.add(this); f.setvisible(true); public void paintcomponent(graphics g) { g.fillrect(x- 5,y- 5,11,11); public void mouseclicked(mouseevent e) { x = e.getx(); y = e.gety(); repaint(); public void mousepressed(mouseevent e) { public void mousereleased(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) {

Utdrag ur Javas API. Obs. Man behöver inte använda alla dessa klasser. Man får också använda annat från Javas API. Interface MouseListener void mouseclicked(mouseevent e) Invoked when the mouse button has been clicked (pressed and released) on a component. Class MouseEvent extends Object int getx() Returns the horizontal x position of the event relative to the source component. int gety() Returns the vertical y position of the event relative to the source component. Class String extends Object int length() Returns the length of this string. Class Component extends Object void addmouselistener(mouselistener l) Adds the specified mouse listener to receive mouse events from this component. int getheight() Returns the current height of this component. int getwidth() Returns the current width of this component.. void setvisible(boolean b) Shows or hides this component depending on the value of parameter b. Class Container extends Component extends Object Component add(component comp) Appends the specified component to the end of this container. void repaint() Repaints this component. Class Graphics extends Object void drawrect(int x, int y, int width, int height) Draws the outline of the specified rectangle. abstract void fillrect(int x, int y, int width, int height) Fills the specified rectangle. Class JButton extends AbstractButton extends JComponent extends Container extends Component JButton(String text) Creates a button with text. Class JComponent extends Container extends Component extends Object protected void paintcomponent(graphics g) Calls the UI delegate's paint method, if the UI delegate is non- null. Class JFrame extends Frame extends Window extends Container extends Component extends Object Container getcontentpane() Returns the contentpane object for this frame. Class JPanel extends JComponent extends Container extends Component extends Object JPanel() Creates a new JPanel with a double buffer and a flow layout. Interface LayoutManager Class Object boolean equals(object obj) Indicates whether some other object is "equal to" this one. String tostring() Returns a string representation of the object. Class Random extends Object Random() Creates a new random number generator. int nextint() Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence. int nextint(int n) Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. Class Window extends Container extends Component extends Object void setvisible(boolean b) Shows or hides this Window depending on the value of parameter b.