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



Relevanta dokument
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

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

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

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

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

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Föreläsning 5-6 Innehåll

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

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

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

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

Objektorienterad programmering i Java

Malmö högskola 2008/2009 CTS

Föreläsning 3-4 Innehåll

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

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.

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

Konstruktion av klasser med klasser

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Klasshierarkier - repetition

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Instuderingsfrågor, del D

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Objekt och klasser - Introduktion

Föreläsning 2, vecka 8: Repetition

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

Laboration A Objektsamlingar

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

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

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

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

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

Generisk klass med typparameter Inre klass - ListIterator

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

TENTAMEN OOP

Laboration 13, Arrayer och objekt

Classes och Interfaces, Objects och References, Initialization

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

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

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

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

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Föreläsning REPETITION & EXTENTA

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

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

Det finns en referensbok (Java) hos tentavakten 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:

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

Tentamen i Programmering

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

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.

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

JAVA Mer om klasser och objektorientering

LÖSNINGSFÖRSLAG TENTAMEN

Dugga i Grundläggande programmering STS, åk

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

TENTAMEN OOP

Tentamen i Objektorienterad programmering

DAT043 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.

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

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

Modern Programmering (2546) Tentamen lördag

Repetition av OOP- och Javabegrepp

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

Objektorienterad programmering D2

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Typkonvertering. Java versus C

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Repetition av OOP- och Javabegrepp

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Chapter 4: Writing Classes/ Att skriva egna klasser.

Tentamen ID1004 Objektorienterad programmering October 29, 2013

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Tentamen i Programmeringsteknik MN

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

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Transkript:

UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det är inte meningen att klassen skall göra något vettigt; förutom att fungera som tentauppgift). Beskriv för varje fel vad som är fel samt ge ett förslag på vad man skulle kunna göra för att åtgärda det. Radnummren är bara till för att ni skall ha något att hänvisa till och räknas ej som ett fel. Observera också att antal poäng inte med säkerhet har något (direkt iallafall) med antal fel att göra. 1. public class MångaFel extends Object 2. 3. float etttal; 4. final int numfel=5; 5. public MångaFel() 6. 7. numfel=6; //Ändrar värdet på en konstant 8. etttal=1.0; //float tilldelas double 9. 10. public tostring() //Returtyp (String) saknas 11. 12. return("fel"); 13. 14. int enmetod() 15. 16. private int enlokalvariabel=1; 17. 18. //Modifierare på lokal variabel enidentifierare++; //Ej deklarerad variabel 19. return enlokalvariabel/2; 20. 21. UMEÅ UNIVERSITET 901 87 UMEÅ Johan Eliasson Tel.: 070-2378695 e-mail: johane@cs.umu.se

Uppgift 2. (4p) Skriv en metod som vänder på en lista av tal som lagras i ett fält och returnerar listan vänd i samma fält. Om listan tex är 1,2,3, skall den efter exekveringen innehålla 3,2,1. Metoden skall klara av listor av varierande längd. int [] flip(int [] list) int temp; for(int i=0;i<list.length/2;i++) temp=list[i]; list[i]=list[list.length-1-i]; list[list.length-1-i]=temp; return list; Uppgift 3. (2+2=4p) a) Skriv om följande for-loop som en while-loop. for (x=0;x<10;x+=3) System.out.println(x); x=0; while(x<10) System.out.println(x); x+=3; b) Skriv en rekursiv metod som beräknar summan av alla udda tal mellan 0 och n. Talet n skall tas som en parameter av metoden. public int oddsum(int n) if(n<2) return n; else if(n%2==0) n--; return (n+oddsum(n-2); Uppgift 4. (2+2+2+1+2=9p) a) Component och Container är två klasser som finns i AWT paketet. Beskriv syftet med dessa klasser. Component klassen är basklass till de grafiska element som finns i AWT paketet, som tex knappar mm. Och innehåller metoder för att underlätta programering av sådanna klasser. Component klassen är basklass till de klasser som kan innehålla/visa upp komponenter (Component), som tex Frame, Panel mm. Och tillhandahåller metoder som underlättar sådan hantering. b) Ge exempel på minst två stycken olika Layout managers och förklara hur de placerar ut komponenterna. 2

Se boken c) Vad används en konstruktor till? Hur definieras den? Konstruktorn används till att skapa objekt. Den anropas då ett nytt objekt skapas och har då möjlighet att initialisera (sätta startvärden på attribut osv). Den definieras som en metod i klassen med vissa särskilda krav: Namnet måste vara detsamma som klassens och den får inte ha någon returtyp (inte ens void). d) Varför skriver man vanligtvis inte någon konstruktor för applets? Därför att appleten inte är garanterad en korrekt miljö då konstruktorn anropas. Istället fins metoden init, som anropas så snart en korrekt miljö kan garanteras. e) Java-program skall gå att köra på olika datorer och under olika operativsystem utan att behöva kompileras om. Hur åstadkoms detta? Programmet kompileras först till "bytecode" som fungerar på alla plattformar som har en java interpretator. Denna tolkar sedan programmet på de olika plattformarna. Uppgift 5. (6p) Förklara följande begrepp (i java): a) Arv Man skapar en är en relation mellan klasser. Barnet får tillgång till de metoder och attribut i föräldraklassen som inte är deklarerade private (som om de hade varit deklarerade i den egna klassen). Används för att kunna återanvända kod. Man kan bara ärva från en klass i Java. Skrivs med det reserverade ordet extends. b) Interface Ett interface är en samling abstrakta metoder och konstanter. En klass kan implementera ett interface och måste då definiera alla metoderna i interfacet (om klassen inte ska bli abstrakt). Finns bla på grund av att multipelt arv ej är tillåtet i Java, det är dock tillåtet att implementera flera interface. c) Garbage collection Då ett objekt inte längre har någon referens till sig (och alltså inte längre kan nås mer så kommer java att,automatiskt, plocka bort objektet ur minnet för att göra detta tillgängligt för annat. d) Undantag (Exception) Undantag kastas ofta då något oväntat inträffar i programmet. Det normala kontrollflödet avbryts då, och om man för tillfället exekverar inne i ett try-block så kommer exekveringen iställt att fortsätta i catch-blocket (förutsatt att det hanterar eundantag av rätt typ). Finns inget catch bock så fortsätter man att leta efter ett sådant i den anropande metoden. Denna process fortsätter tills dess undantaget når toppnivån, då detta sker avbryts programmet och ett felmeddelande skrivs ut. e) Abstrakt klass En klass som kan innehålla abstrakta metoder (metoder utan definition). Abstrakta klasser kan inte instantieras (man kan ej skapa objekt från dem). Man använder dem genom att ärva dem vidare till andra klasser, som om de inte också skall bli abstrakta måste implementera alla eventuella abstrakta metoder. 3

Används ibland för att markera att en klass är för generell för att kunna användas direkt. f) Paket En samling klasser. Klasserna i paketet måste ligga i samma katalog (med samma namn som paketet). Alla klasser måste också börja med en sats package paketnamn; Oftast sammlar man saker som på ett eller annat sätt hör ihop i ett paket.exempel på paket: java.awt och java.lang. Ett paket kan göras tillgängligt i ett programm (vilket gör att man kan använda klasserna i det) genom att man skriver import paketnamn; i sin klass. Uppgift 6. (3p) Vad skrivs ut då man kör main metoden i klassen Child nedan? Förklara också varför just detta skrivs ut. public class Parent private String attrib; public Parent() this("ett Ord"); public Parent(String attrib) this.attrib=attrib; void printmessage() System.out.println("Här kommer " + attrib); public class Child extends Parent public Child(String arg) super(arg); public static void main(string args[]) Parent hej=new Child("hej"); Parent dej=new Parent("dej"); hej.printmessage(); hej=new Parent(); hej.printmessage(); dej.printmessage(); 4

void printmessage() super.printmessage(); System.out.println("Hur går det?"); (siffrorna är bara till för förklaringen) 1. Här kommer hej 2. Hur går det? 3. Här kommer Ett Ord 4. Här kommer dej 1 och 2: Dessa utskrifter kommer från den första hej.printmessage(). Hejobjektet är denna gång av typen child (trots att referensen är av typen parent. Därför så kommer Childs printmessage metod att anropas. Denna Anropar super.printmessage det första den gör (dvs printmessage metoden i Parent klassen. Därifrån härstammar rad 1. Sedan skrivs rad 2 ut. 3: Denna rad skrivs ut av den andra hej.printmessage anropet. Denna gång så är hej ett objekt av typen parent, så parents metod anropas. Detta objekt skapades mha konstruktorn som inte tar någon parameter i Parentklassen. Denna anropar i sin tur konstruktorn som tar en sträng (med strängen Ett Ord ), därav det som följer efter Här kommer. 4: Härstammar från anropet dej.printmessage. Inte så mkt konstigt med denna utskrift. Dej är av typen Parent och skapades med konstruktorn som tog en sträng. Uppgift 7. (10p) Skriv en klass för att hantera rationella tal (Du minns att rationella tal skrivs som en täljare och nämnare, exempelvis 5/8, eller hur?). Klassen skall åtminstone innehålla metoder för att addera två tal, multiplicera två tal, och jämföra om två tal är lika (tänk på att 1/3=2/6 osv). För att objekt av din klass skall kunna skrivas ut (mha System.out.println tex) så måste du också omdefiniera metoden tostring. Om man försöker skapa ett rationellt tal med 0 i nämnaren skall ett ArithmeticException kastas (ArithmeticException har en konstruktor som inte tar några parametrar). Skriv även ett litet testprogram som testar din klass och de metoder som finns i den. public class Rational private int denom; private int num; public Rational(int num, int denom) if (denom==0) throw(new ArithmeticException()); this.denom=denom; 5

this.num=num; public Rational add(rational second) return (new Rational(denom*second.num+num*second.denom, denom*second.denom)); public Rational multiply(rational second) return (new Rational(num*second.num, denom*second.denom)); public boolean compare(rational second) return (denom*second.num==num*second.denom); public String tostring() return (num+"/"+denom); public static void main(string args[]) Rational test1=new Rational(1,2); Rational test2= new Rational(2,4); System.out.println("Add test: 1?"+test1.add(test2)); System.out.println("Mult test: 1/4?" +test1.multiply(test2)); if(test1.compare(test2)) System.out.println("test1=test2"); 6

Uppgift 8. (3p) Vad skrivs ut när man kör main-metoden i klassen Uppg8? Förklara också hur parametrar av olika typer skickas till metoder. public class Num public int value; public Num (int v) value = v; public String tostring() //Denna metod saknades return (""+v); //Num public class Uppg8 static int x = 1; static int y = 2; static Num z =new Num(3); public static void f(int x,num z) x = 4; z.value=5; y = 6; System.out.println("x = "+x+" y = "+y+" z = "+z); public static void main(string[] args) f(x,z); System.out.println("x= "+x+" y = "+y+" z = "+z); x=4 y=6 z=5 x=1 y=6 z=5 För parametrar som är objekt så kopieras en referens till objektet till metoden För primitiva typer så kopieras värdet på variabeln. 7