L SNINGSF RSLAG TILL TENTAMEN PROGRAMMERING I JAVA, 5P

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

TENTAMEN I DATAVETENSKAP

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

L SNINGSF RSLAG TILL TENTAMEN PROGRAMMERING I JAVA, 5P

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Objekt och klasser - Introduktion. Objekt. Spar_Konto 2. Spar_Konto 1. Konton. Ett objekt har: Ett bankkonto. public void uttag(double belopp)

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Objektorienterad programmering i Java

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

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

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

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

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

List.java. List.java. Printed by Tom Smedsaas

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

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

DAT043 - Föreläsning 7

Konstruktion av klasser med klasser

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

Föreläsning 2, vecka 8: Repetition

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

Föreläsning 3-4 Innehåll

Tentamen FYTA11 Javaprogrammering

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

tentaplugg.nu av studenter för studenter

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

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

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

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 FYTA11 Javaprogrammering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

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.

Klasshierarkier - repetition

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

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

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

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 5-6 Innehåll

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

Tentamen Programmering fortsättningskurs DIT950

Arrayer. results

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

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.

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

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

LULEÅ TEKNISKA UNIVERSITET

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

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

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

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

DAT043 - föreläsning 8

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

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

Typkonvertering. Java versus C

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

Objektsamlingar i Java

Java, klasser, objekt (Skansholm: Kapitel 2)

1 Programmering i Java. Program element - Introduktion. Exempel. Exempel. Kapitel 3:

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

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

Lösningar för tenta 3 DAT043,

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

Tentamen OOP

Tentamen. Lösningsförslag

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

Newtons metod i en och flera variabler

TDDC77 Objektorienterad Programmering

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

TENTAMEN OOP

TDDD78 Viktiga begrepp, del 2

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

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Objekt och klasser - Introduktion

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

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

Föreläsning 13 Innehåll

public boolean containskey(string key) { return search(key, head)!= null; }

Lösningsförslag till tentamen

Lösningsförslag till exempeltenta 2

Enkla variabler kontra referensvariabel

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

OOP Objekt-orienterad programmering

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

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Transkript:

L SNINGSF RSLAG TILL TENTAMEN PROGRAMMERING I JAVA, 5P. 990810 Uppgift 1 (2 pošng) public class Earth public String question; public static int answer; public Earth(String question, int answer) this.question = question; this.answer = answer; //constructor Earth public static void main(string[] args) Earth gaia = new Earth("What do you get when you "+ "multiply six by nine? ",54); Earth terra = new Earth("What do you get when you "+ "multipy six by seven? ",42); System.out.println(gaia.question+" "+gaia.answer); System.out.println(terra.question+" "+terra.answer); // main // class Earth Attributet answer Šr deklarerad static vilket innebšr att den delas av samtliga objekt av denna klass. Earth gaia = new Earth("What do you get when you "+"multiply six by nine? ",54); sštter answer till 54 och Earth terra = new Earth("What do you get when you"+"multipy six by seven? ",42); sštter answer till 42. Eftersom answer delas av alla objekt ( hšr gaia och terra) sœ ger bœda utskrifterna naturligtvis 42. UME UNIVERSITETÊ901Ê87ÊÊUME ÊÊÊTel.:Ê090-786 77 08ÊÊÊFax: 090-786Ê61Ê26ÊÊÊe-mail:Êmarie@cs.umu.se

Uppgift 2 (1+2+1=4 pošng) Besvara kortfattat : a) Vad Šr en konstant i Java, hur skiljer den sig frœn en variabel? En Java konstant deklareras med typ och modifieraren final, samt tilldelas ett všrde. Detta všrde kan sedan inte Šndras under programmets gœng. En variabel dšremot Šr bara begršnsad av sin typ och fœr manipuleras godtyckligt under exekveringen ( sœ lšnge inte typreglerna bryts). b) Fšrklara skillnaden mellan formella och aktuella parametrar. Formell parameter : definierar ett lokalt namn i en metod fšr ett všrde som kommuniceras till metoden. Aktuell parameter : det všrde eller den variabel med vilket en metod anropas. c) Fšrklara begreppet prioritetsordning i samband med operatorer. Prioritetsordningen bland operatorerna avgšr hur ett uttryck evalueras. Regler bestšmmer i vilken ordning operatorerna skall utfšras och om de har samma prioritet vilken som utfšrs fšrst. Uppgift 3 (1+1+1+1=4 pošng) Beskriv den verkan modifieraren har fšr : a) En public metod kan nœs av vem som helst utanfšr och innanfšr klassen b) En private metod Šr bara tillgšnglig inom den egna klassen c) En static variabel Šr knuten till klassen och dšrfšr gemensam fšr alla objekt i klassen. d) En static metod Šr ocksœ knuten till klassen och kan anropas via klassnamnet utan att nœgot objekt skapats explicit. Uppgift 4 (1+1+1+1+2+2+2+2+1=13 pošng) UtgŒ frœn fšljande klassdefinitioner : public class ListNode protected Object myvalue; protected ListNode next; public ListNode(Object o) myvalue = o; next = null; // ListNode-constructor public ListNode(Object o, ListNode nlist) myvalue = o; next = nlist; // ListNode-constructor 2 (8)

public ListNode getnext() return next; // getnext public Object getvalue() return myvalue; // getvalue // class ListNode public class List private ListNode head; // First node private ListNode tail; // Last node private int length; // Number of nodes currently in list public List() length = 0; head = null; tail = null; // List-constructor //various other methods go here É // class List Fšr att gšra List till en anvšndbar generell liststruktur behšver man en uppsšttning servicemetoder. Din uppgift blir att tillhandahœlla implementationen fšr nœgra tšnkbara : a) public Object getfirst() // returnerar det första objektet i listan. return head.getvalue(); // method getfirst b) public Object getlast() // returnerar det sista objektet i listan. return tail.getvalue(); // method getlast c) public int getlength() // returnerar antalet element i listan. return length; // method getlength d) public void appendel(object el) //lägger till ett element sist i listan if (getlength() == 0) head = new ListNode(el); tail = head; else tail.next = new ListNode(el); tail = tail.next; 3 (8)

length++; // method appendel e) public Object atindex(int index) //returnerar objektet med det angivna indexet. ListNode temp = head; for (int i = 1; i <= index; i++) temp = temp.getnext(); return temp.getvalue(); // method atindex f) public void insertat(object el,int index) //skjuter in elementet på angiven plats i listan och utökar därmed listan. if ( index <= 1 ) // Insert as first element of the list head = new ListNode(el, head); length++; else if ( index >= getlength()) // Insert as last element of the list else // method insertat appendel(el); ListNode before = head; for (int i = 1; i < index-1; i++) before = before.getnext(); //Now before is positioned at index-1 ListNode after = before.getnext(); before.next = new ListNode(el, after); length++; 4 (8)

g) public int listtotal() // summerar alla heltalselement i listan och returnerar summan. ListNode temp = head; int sum = 0; for (int i = 1; i <= length; i++) sum = sum + ( (Integer) temp.getvalue() ).intvalue(); temp = temp.getnext(); return sum; // method listtotal h) public Object[] toarray() //går igenom listan och returnerar ett fält av Object med motsvarande innehåll. Object[] temparray = new Object[getLength()]; ListNode temp = head; for (int i = 1; i <= length; i++) temparray[i-1] = temp.getvalue(); temp = temp.getnext(); return temparray; // method toarray i) Visa med en figur vad som hšnder i fšljande kodavsnitt ListNode head = null; int n = 5; head for (; n>=0; n--) head = new ListNode(new Integer(n),head); n=5 head 5 n=4 É head head 4 5 n=0 0 1 2 3 4 5 5 (8)

Uppgift 5 (2 pošng) UtgŒ ifrœn : public class Class1 public class Class2 extends Class1 public class Class3 extends Class2 NŒgonstans gšrs deklarationerna Class1 c1; Class2 c2; Class3 c3; Ange om fšljande tilldelningar dœ Šr korrekta eller ej a) c1 = c2; ok, eftersom c2 "Šr-en" class1 b) c2 = c1; fel c) c1 = c3; ok, eftersom c3 "Šr-en" class2 som "Šr-en" class1 d) c3 = c2; fel En referensvariabel frœn en superklass kan referera till ett objekt av nœgon av dess hšrledda subklasser. T.ex. Fordon Fordon c1; Bat c2; Eka c3; Bat Bil Tag Eka Ubat c1 kan nu referera till ett objekt av typen Bat, Bil, Tag, Eka eller Ubat c2 kan nu referera till ett objekt av typen Bat, Eka eller Ubat Uppgift 6 ( 4+11=15 pošng) a) Beskriv pœ svenska/engelska (inte Java!) pœ vilket sštt nedanstœende kan anvšndas i ditt GUI : Frame Layout-manager MemoryButtons ActionEvents 6 (8)

b) Skriv komplett kod fšr applikationen public class Memory import java.awt.*; import java.awt.event.*; /** * This is the classic game of Memory, implemented as minimally as * possible. It defaults to 4x4 and can't be changed, although * it would take very little to alter the source such that it could * be changed. * * @author Kaolin Fire Stockinger * @version %I%, %G% */ public class Memory implements ActionListener //constants for use elsewhere in the program private final static int XDIM=4, YDIM=4, NSHUFFLE=500; //to remember the first of a pair of clicked buttons private MemoryButton choice; //a minimal main method that doesn't handle arguments... public static void main(string[] args) new Memory(); //the bulk of the work happens here... public Memory() Frame f=new Frame("Memory Game"); choice=null; f.setlayout(new DynamicGridLayout(XDIM,YDIM)); //create a frame //initialize variables //pick a simple layout //enumerate all the ints that will be displayed int[] cards=new int[xdim*ydim]; for (int i=0;i<cards.length;i++) cards[i]=i/2; //randomly swap the ints around, easier and faster than doing it //with placed MemoryButtons... for (int i=0;i<nshuffle;i++) int a=(int)(math.random()*cards.length); int b=(int)(math.random()*cards.length); int temp=cards[a]; cards[a]=cards[b]; cards[b]=temp; //create MemoryButtons from the int[] and add them to the frame //at the appropriate spot for (int i=0;i<cards.length;i++) MemoryButton mb=new MemoryButton(cards[i]); mb.addactionlistener(this); f.add(mb,new Point(i%XDIM,i/YDIM)); //pack, give it a little offset, and make it so! f.pack(); f.setlocation(50,50); f.setvisible(true); 7 (8)

//handle the user's clicks public void actionperformed(actionevent evt) //flip up the button that was clicked on MemoryButton mb=(memorybutton)evt.getsource(); mb.flipup(); //if it's the first of the pair, just set 'choice', otherwise //if they're "equal", get rid of them, otherwise hide them again... if (choice == null) choice=mb; else if (mb.equals(choice)) mb.disappear(); choice.disappear(); else choice.flipdown(); mb.flipdown(); choice=null; // reset variable 8 (8)