LÖSNINGSFÖRSLAG TENTAMEN

Relevanta dokument
LÖSNINGSFÖRSLAG TENTAMEN

TENTAMEN OOP

TENTAMEN OOP

TENTAMEN OOP

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

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

Tentamen. Lösningsförslag

Objektorienterad programmering i Java I

Tentamen OOP

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

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

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

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Laboration 1 - Grunderna för OOP i Java

Malmö högskola 2008/2009 CTS

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

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

Objektorienterad programmering i Java

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

OOP Tentamen

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

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.

OOP Tenta

Klassdeklaration. Metoddeklaration. Parameteröverföring

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

JAVA Mer om klasser och objektorientering

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

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

TDDC77 Objektorienterad Programmering

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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

Tentamen i Programmering

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

OOP Objekt-orienterad programmering

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

OOP Exempel Tentamen 2007

DD1342 Programkonstruktion för F1,

Föreläsning 3: Booleans, if, switch

Användarhandledning Version 1.2

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

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

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

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Del A (obligatorisk för alla)

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

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

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

OOP Objekt-orienterad programmering

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

TUTORIAL: KLASSER & OBJEKT

OOP Objekt-orienterad programmering

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

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

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Föreläsning 3-4 Innehåll

Tentamen i Programmeringsteknik I

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

OOP Omtenta

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

Konstruktion av klasser med klasser

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

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

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

Föreläsning 5-6 Innehåll

Tentamen i Programmeringsteknik I, ES,

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

Klasshierarkier - repetition

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

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

DAT043 - Föreläsning 7

Java, klasser, objekt (Skansholm: Kapitel 2)

Instuderingsfrågor, del D

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

Föreläsning 2, vecka 8: Repetition

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Systemutvecklare SU13, Malmö

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Laboration 3, uppgift En klass för en räknare

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

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

Transkript:

LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND 3 4 5 0-19 20 27 28-36 37-43 ANVISNINGAR: INGA HJÄLPMEDEL TILLÅTNA (EGEN RÄKNARE OCH LINJAL ÄR OK) ALL KOD DU SKRIVER SKA VARA LÄTTLÄST OCH INDENTERAD KOMMENTERA KODEN VID BEHOV SKRIV ENDAST EN UPPGIFT PÅ VARJE BLAD SKRIV EJ PÅ BAKSIDAN AV BLADET! BÖRJA MED ATT LÄSA IGENOM ALLA UPPGIFTER KURSANSVARIG KOMMER CA 09.00 FÖR ATT SVARA PÅ EVENTUELLA FRÅGOR LYCKA TILL!

Uppgift 1 (7p) Nedan följer 7 påståenden som antingen är sanna eller falska. För varje påstående ska du svara sant om du tror påståendet är sant, falskt om du tror påståendet är falskt, eller vet ej om du inte vet svaret. a) Med instanceof kan vi kontrollera vilken superklass ett objekt är av! FALSKT Vi kan kontrollera vilken instans ett visst objekt är av, dvs vilken klass ett objekt är av. b) I Java är det möjligt med multipelt arv, dvs ärva från mer än en klass! FALSKT En klass i Java kan endast ärva från en annan klass. c) Alla klasser i Java ärver på ett eller annat sätt egenskaper från klassen Object! SANT Klassen Object är superklass till alla andra klasser i Java i ett eller flera led. d) String är en av Javas primitiva typer! FALSKT String är en klass i Java, men som har stora likheter med de primitivatyperna. e) Parametrar till en metod överförs i Java via s.k. värdeanrop! SANT Värdeanrop innebär att det är en kopia på parametern som skickas. f) Vid en metoddeklaration måste en åtkomstmodifierare alltid anges! FALSKT Normalt använder vi någon åtkomstmodifierare (private, public, protected) vid en metoddeklaration, men utesluter vi den erhåller vi paketåtkomst. g) En klass deklarerad som abstract innehåller minst en abstrakt metod! FALSKT En abstrakt klass behöver inte innehålla någon abstrakt metod (men gör oftast det). Däremot om det finns en abstrakt metod måste klassen vara abstrakt. Uppgift 2 (3p) Förklara/redogör kortfattad vad det innebär för en: a) klass som är deklarerad som final (ex. public final class SomeClass) b) metod som är deklarerad som final (ex. public final void somemethod()) c) fält som är deklarerad som final (ex. private final int somefield=12) SVAR: En klass som är deklarerad som final kan inte ärvas av andra klasser. En metod som är deklarerad som final kan inte omdefinieras (överskuggas) i subklasser. Ett fält som deklarerats som final kan inte tilldelas ett värde efter att fältet är initierat. Uppgift 3 (3p) Följande skrivs ut på skärmen: sida 2 av 7

Rad1: 2 delat med 4 är normalt 0.5, men i och med att båda operanderna är heltal utförs heltalsdivision. Detta innebär att resultatet av 2 / 4 är 0. Andra divisionen är väldigt svår att beräkna i huvudet, men vad kvoten blir här spelar ingen roll eftersom det ska multipliceras med 0. Och 0 gånger något annat är alltid 0 (noll). Rad2: Här blandar vi addition av strängar samt heltal. Viktigt att komma ihåg att ett uttryck kräver att båda operanderna är av samma typ. Här konverteras därför heltalen till strängar innan additionerna utförs. 2 + 3 blir därför 23 och inte heltalet 5. Rad3: Beräkningen börjar i parentesen och där har division högre prioritet än addition. 8 delat med 4 (variabeln d) är 2. Detta adderas sen med 4 (variabeln d) och resultatet är 6. Återstår är 2 multiplikationer med variabeln i. i++ innebär att använd värdet på i (2) först och öka sen värdet med 1. 2 gånger minus 6 är -12. Detta multipliceras återigen med variabeln i, som nu har värdet 3. Resultatet är -36.0 (observera att decimaldelen skrivs ut eftersom typen är double). Rad4: Här är det logiskt-eller som ska utföras. Första operanden är i == d, vilket är 3 == 4, vilket är falskt. Andra operanden är!b, vilket är!true, vilket är falskt. Dvs till slut kollar vi: falskt eller falskt, vilket är falskt (false). Rad5: Här blandas en jämförelser med eller-operatorn och och-operatorn. Operatorn && har högre prioritet och därför börjar vi att beräkna b && false, vilket är true && false, vilket är false. De övriga operanderna är även dessa false, och eftersom eller ( ) kräver att åtminstone en operand ska vara sann för att uttrycket ska vara sant, så därför är resultatet falskt (false).. Rad6: Börja med den inre parentesen där vi kollar om!b && i-d < 0. Ingen av dessa operander är sanna så därför är hela uttrycket falskt. Eftersom vi har satt ett icke (!) framför parentesen så blir dock resultatet av uttrycket sant. Sen återstår ett elleruttryck, men eftersom första operanden redan är sann vet vi att hela uttrycket också är sant, dvs true skrivs ut. Uppgift 4 (3p) Skriv en metod med namnet minstatalet som tar tre heltal (int) som parametrar och returnerar det heltal som har minsta värdet. public int minstatalet(int tal1, int tal2, int tal3) if (tal1 < tal2 && tal1 < tal3) // Är tal1 mindre än både tal2 och tal3? // I så fall returnerar vi tal1 return tal1; else if (tal2 < tal1 && tal2 < tal3) // Om inte, är tal2 mindre än både tal1 och tal3? // I så fall returnerar vi tal1 return tal2; // Har vi kommit hit måste tal3 vara minst return tal3; sida 3 av 7

Uppgift 5 (4p) Följande skrivs ut på skärmen: SVAR: Vi har en for-loop där loopvariabeln i sätts till 0. Denna loop ska snurra så länge som i < 100. För varje varv i loopen ökar sen loopvariabeln med 10 (i+=10). For-loopen kommer totalt att snurra 10 varv (i = 0, 10, 20,, 90). Inuti for-loopen finns en if-sats där första villkoret är om i är mindre än 50 och i är större än 20. Dvs om i är 30 eller 40 kommer System.out.println(i/10) att köras. Om inte det villkoret uppfylls kontrolleras om i är lika med 70. Om så är fallet körs satsen break som kommer att avbryta hela loopen och i det här fallet av sluta programmet. Om i varken är 30, 40 eller 70 så kommer en utskrift av värdet på i att ske med System.out. Uppgift 6 (6p) Skriv en metod med namnet vokaler som ska skriva ut vokalerna i en sträng på skärmen. Metoden ska ta en array av typen String som parameter. public void vokaler(string[] s) // Deklarerar en sträng som innehåller alla vokaler String vokaler = "AOUÅEIYÄÖ"; // Vi loopar igenom alla strängar som kommer i arrayen for (int i = 0; i < s.length; i++) // Börjar med att konvertera strängen till STORA bokstäver String s1 = s[i].touppercase(); // Loppar sen igenom alla tecken i strängen för att // jämföra varje tecken mot vokalerna for (int j = 0; j < s1.length(); j++) // Kollar om något av tecknen finns i strängen med vokaler // Använder metoden indexof som returnerar -1 om inget finns if (vokaler.indexof(s1.charat(j))!= -1) System.out.print(s1.charAt(j)); // Radbrytning inför nästa sträng System.out.println(); sida 4 av 7

Uppgift 7 (10p) a) (6p) Skriv en klass Myra som representerar en myra (ett djur). Klassen ska innehålla uppgifter om namnet på myran, vilken typ av myra samt antal barr myran har släpat hem till stacken. Det ska finnas en konstruktor för att skapa en myra samt set- och get metoder för alla fälten. En kontroll ska ske så att en giltig typ av myra anges. Det ska även finnas en metod med namnet print som skriver ut information om myran på skärmen enligt formatet: namn_på_myran, typ_av_myra antal_barr barr public class Myra private String namn; // Namnet på myran private String typ; // drottning, arbetare eller soldat private int antalbarr; // Antalet barr myran släpat hem // Konstruktorn public Myra(String namn, String typ, int antalbarr) this.namn = namn; this.antalbarr = antalbarr; // Anropar metoden settyp() så att vi kontrollerar // att rätt typ av myra har angets settyp(typ); // Metoder för att sätta data public void setnamn(string namn) this.namn = namn; public void settyp(string typ) // Kontroll om giltig typ if (!(typ.equals("drottning") typ.equals("soldat"))) this.typ = "Arbetare"; else this.typ = typ; public void setantalbarr(int antalbarr) this.antalbarr = antalbarr; // Metoder för att returnera data public String getnamn() return namn; public String gettyp() return typ; public int getantalbarr() return antalbarr; sida 5 av 7

// Metod för att skriva ut information om myran på skärmen public void print() System.out.println(namn + ", " + typ + " - " + antalbarr + " barr"); b) (4p) Skriv en testklass som du döper du till MyrTest. I denna testklass skapar du ett objekt av klassen Myra och anger lämpliga värden i konstruktorn. Därefter demonstrerar du klassens metoder enligt: 1. Skriv ut information om aktuell myra på skärmen 2. Öka antalet barr med 1 (ej hårdkodat) genom att använda get- och set-metoder 3. Skriv ut endast namnet på myran på skärmen public class MyrTest public static void main(string[] args) // Skapar ett objekt av klassen Myra Myra m = new Myra("Myrran", "Drottning", 5215); // Skriver ut information om myran på skärmen m.print(); // Ökar antal barr med 1 m.setantalbarr(m.getantalbarr()+1); // Skriver ut namnet på myran System.out.println(m.getNamn()); Uppgift 8 (7p) I denna uppgift ska du utgå från den klass du skrev (eller skulle skriva) i uppgift 7 samt klassen MyrStack. Klassen MyrStack representerar en myrstack och de myror som lever i denna stack. Av klassen kan man skapa nya myrstackar och lägga till de myror som ska bo i stacken. Det går även begära att totala storleken på myrstacken ska beräknas (totala antalet barr), samt erhålla det Myra-objekt vars typ är en drottning. Som du ser saknas konstruktorn och metoderna getdrottning() samt storlek(). Din uppgift är att skriva denna konstruktor samt de två metoderna. sida 6 av 7

Konstruktorn ska ta en parameter som innehåller antalet myror som bor i stacken. En Vector (myror) som är tillräckligt stor för att rymma alla myror ska skapas. // Klassens konstruktor public MyrStack(int antalmyror) // Skapar Vectorn 'myror' så att kapaciteten blir // densamma som antalet myror stacken ska ha. myror = new Vector(antalMyror); Metoden getdrottning() ska leta igenom alla myror som finns inlagda och returnera första myran vars typ är Drottning. Metodens returtyp ska alltså vara Myra. Om myrstacken inte innehåller någon drottning ska null returneras. // Metod som returnerar första drottningen som är // inlagd i myrstacken. public Myra getdrottning() // Loopar igenom alla element i Vectorn for (int i = 0; i < myror.size(); i++) // Plockar ut och konverterar elementen i Vectorn Myra m = (Myra)myror.elementAt(i); // Kollar om typen är Drottning if ((m.gettyp()).equals("drottning")) return m; // Har vi kommit hit finns ingen drottning vi returnerar null return null; Metoden storlek() ska returnera ett heltal som innehåller det totala antalet barr som alla myror i stacken har släpat hem.. // Metod som beräknar stackens storlek (antal barr) public int storlek() // Deklarerar variabel för totala antalet barr int totalt = 0; // Vi loopar igenom alla myror, dvs alla element i Vectorn for (int i = 0; i < myror.size(); i++) // Konverterar till ett objekt av klassen Myra Myra m = (Myra)myror.elementAt(i); // Anropar metoden getantalbarr() och adderar till totalt totalt += m.getantalbarr(); // returnerar antalet return totalt; sida 7 av 7