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



Relevanta dokument
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Föreläsningar nov 19, nov 20 v 47.

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Observera : Lämna in svaren på frågorna på detta blad genom att lämna in detta blad!

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

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

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

Objektorienterad programmering i Java

Tentamen OOP

Lösningsförslag till tentamen

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

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

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Konstruktion av klasser med klasser

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

Frames, menyer och GUI-program

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

Lösningar för tenta 3 DAT043,

Tentamen, EDAA20/EDA501 Programmering

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

Tentamen i Objektorienterad programmering

kl

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.

Klasshierarkier - repetition

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Concurrency Saker händer samtidigt. Process En instans av ett program

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

DAT043 Objektorienterad Programmering

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

Tentamen. Lösningsförslag

Föreläsning 9: Arv och UML

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

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

Lösningar till tentamen i EDAF25

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

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

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Parallellism, återblick

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

Tentamen FYTA11 Javaprogrammering

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

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

Laboration 24 Databasen MySQL och java

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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.

Grafiska komponenter.

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Lösningsförslag till tentamen

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

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

Lösningsförslag till tentamen

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

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

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

OOP Objekt-orienterad programmering

Objektorienterad programmering D2

Programmering för språkteknologer II, HT2014. Rum

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

LÖSNINGSFÖRSLAG

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TENTAMEN OOP

Introduktion till arv

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.

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

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

Laboration 13, Arrayer och objekt

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Språkkonventioner och redigering av tal.

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Mer om grafiska komponenter. Händelsestyrda program

TENTAMEN OOP

Övningar Dag 2 En första klass

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

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Tentamen, EDA501 Programmering M L TM W K V

Lösningsförslag övning 2.

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

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:

Lösningsförslag tentamen FYTA11 Java

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

Lösningsförslag till tentamen

Transkript:

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare : Leif Kusoffsky ------------------------------------------------------------------------------------------------------------------ Tillåtna hjälpmedel: Läroboken: En Java-bok, t ex Skansholm: Java Direkt. ----------------------------------------------------------------------------------------------------------------- 1 a). Alla länder har ett namn och ett namn på sin valuta. Vissa länder är medlemmar i EU och blev medlemmar ett visst år. Vissa av EU-länderna har en gemensam valuta med namnet "euro". Vissa länder (t ex Sverige som är ett EU-land, Frankrike som är ett Euro-EU-Land och Norge som bara är ett Land, men inte Storbrittanien som är ett EU-land) är med i Shengen-samarbetet. Dessa länder har tillgång till ett polisregister register som dessa staters polismyndigheter kan söka i. Modellera i Java med sex klasser och ett gränsnitt denna situation, som den dessutom beskrivs med nedanstående UML-liknade klassdiagram. Samtliga klasser skall dessutom ha lämplig konstruktor som ger instanvariablerna lämpliga värden. 9p) Land - String namn //landets namn - String valuta //valutans namn Shengen public Object searchfor(string iperson) EULand - int inträdesår ShengenLand - Map register EuroEULand ShengenEULand - Map register ShengenEuroEULand - Map register Vänd!

Tips: Implementeringen av metoden searchfor(string iperson) görs med metoden get i Map, se t ex Skansholm sid 498. Metoden deklareras alltså i gränsnittet Shengen,och skall implementeras av "Shengen-klasserna". Konstruktorn för Shengenländer har en parameter för att instansiera registret av typen Map. Euroländer får valutanamnet "euro" automatiskt utan medverkan av konstruktorerna för dessa sorts länder. b). Kan man i Java förenkla problemet i 1 a) genom att använda multipelt arv? 1p) c). d). e). f). Vilka av namnen Land, EULand, EuroEULand, Shengen, ShengenLand, ShengenEULand, ShengenEuroEULand och Map kan användas som typnamn? 1p) Skulle man kunna ha en Vector där elementen skull kunna vara instanser av vilken som helst av de sex klasserna? Hur deklarerar man i så fall en sådan Vector, och hur tillfogas i så fall några länder, t ex Sverige och Frankrike och Norge till vektorn? 1p) Förse de av de sex klasserna där det behövs med en metod String tostring() som returnerar landets namn, namnet på valutan och i förekommande fall inträdesår i EU samt om landet är ett Shengenland. 3p) Skriv en metod void printinfo(vector länder) som med en slinga (snurra, loop) skriver ut information om alla länder i vectornländer med hjälp av tostring() i uppgift e. 3p) g) Förklara vad som menas med dynamisk bindning. 2p) 2) En Teknologtamagotchi är ett datorprogram som fungerar som ett lite gosedjur (en cirkel) som man skall försöka få så stort som möjligt. Genom att trycka på knapparna kan man tillfredställa dess behov och på så sätt få den att växa. Vissa sekvenser av knapptryckningar skall var bättre än andra. Till exempel är sekvensen sova - tenta - festa en kombination som premieras med extra stor tillväxt medan sekvensen festa - sova - tenta är en dålig kombination som leder till minskad storlek. Om samma sak händer tre gånger i rad blir tamagotchin uttråkad och minskar sin radie till hälften - Teknolog-tamagotchi. Tenta Festa Sova Plugga Vänd!

a) Skriv Teknolog-tamagotchin som en Java-applikation. 15p) Hjälp: För att det inte skall bli så mycket att skriva kan man använda följande klass om man vill. Tanken är att i ett sekvens-objekt kan man minnas de tre senaste knapptryckningarna. En ny tryckning tillfogas till ett sekvens-objekt med med add( s ) för sova, add( t ) för tenta, add( p ) för plugga, add( f ) för festa. Anrop av getfactor() returnerar med vilken faktor tamagotchins radie skall förändras. class Sequence { private char vold; private char old; private char act; public void add(char ib) { vold = old; old = act; act = ib; public double getfactor() { if (vold == old && vold ==act) { return 0.5; //Har tråkigt else if (vold == s && old == t && act == f ) { return 1.5; else if (vold == f && old == s && act == t ) { return 0.5; else if (vold == f && old == f && act == t ) { return 0.1; else if (vold == p && old == s && act == t ) { return 2.0; else { return 1.0; b) Gör så att tamagotchin blir uttråkad och drar ihop sig om inget händer inom 6 sekunder. 5p)

Förslag till svar tentamen 2D4134 2001 maj 19. public class Land { protected String valuta = ""; protected String namn = ""; public Land(String inamn, String ivaluta) { namn = inamn; valuta = ivaluta; return (namn + ": valuta " + valuta); //1a, 1e public interface Shengen { public Object searchfor(string iperson); import java.util.*; public class ShengenLand extends Land implements Shengen { private Map register; public ShengenLand(String inamn, String ivaluta, Map iregister) { super(inamn, ivaluta); register = iregister; public Object searchfor(string iperson){ return register.get(iperson); return super.tostring() + " i Shengen"; public class EULand extends Land { protected int inträdesår; public EULand(String inamn, String ivaluta, int iinträdesår) { super(inamn, ivaluta); inträdesår = iinträdesår; return super.tostring() + " i Eu år " + inträdesår; import java.util.*; public class ShengenEULand extends EULand implements Shengen { private Map register; public ShengenEULand(String inamn, String ivaluta,

int iinträdesår, Map iregister) { super(inamn, ivaluta, iinträdesår); register = iregister; public Object searchfor(string iperson){ return register.get(iperson); return super.tostring() + " i Shengen"; public class EuroEULand extends EULand { public EuroEULand(String inamn, int iinträdesår) { super(inamn, "euro", iinträdesår); import java.util.*; public class ShengenEuroEULand extends EuroEULand { private Map register; public ShengenEuroEULand(String inamn, int iordförandeår, Map iregister) { super(inamn, iordförandeår); register = iregister; public Object searchfor(string iperson){ return register.get(iperson); return super.tostring() + " i Shengen"; Multipelt arv är inte tillåtet i Java. Det vore bekvämt här Alla // 1b // 1c import java.util.*; // public class TestLander { public static void main(string [] args) { Vector lv = new Vector(); //1d Map m = new Hashtable(); lv.add(new ShengenEULand("Sverige", "krona", 1995, m)); lv.add(new ShengenEuroEULand("Frankrike", 1955, m)); lv.add(new EULand("Storbrittanien","pund", 1965)); lv.add(new Land("Norge","krona")); printinfo(lv);

public static void printinfo(vector v) { // 1f for(int i = 0; i < v.size(); i = i+1) { System.out.println(v.elementAt(i)); Beroende på objektets typ används korrekt version av en metod, t ex tostring() ovan. Detta fungerar eftersom metodrna hittas i minnet via objekten, som innehåller referenser till adekvat version //1g import java.awt.*; import java.awt.event.*; public class PlayTamagotchi { public static void main(string [] arg) { Tamagotchi t = new Tamagotchi(); TView tv = new TView(t); class Tamagotchi { private int radie = 40; private Sequence seq = new Sequence(); private CPanel cpanel; private LKClock clock; private int count = 0; public Tamagotchi() { clock = new LKClock(this); clock.aktivitet.start(); public void gets(char b) { if (b == c ) { count = count + 1; if (count == 6) { count = 0; radie = (int) (((double) radie)*0.3); cpanel.update(radie); else { count = 0; seq.add(b); radie = (int) (((double) radie)*seq.getfactor()); cpanel.update(radie); public void setview(cpanel icp) { cpanel = icp; class TView extends Frame implements ActionListener{ private Tamagotchi t; private CPanel cpanel;

private Button tenta = new Button("Tenta"); private Button festa= new Button("Festa"); private Button sova= new Button("Sova"); private Button plugga= new Button("Plugga"); public TView(Tamagotchi it) { t = it; setsize(400,400); setlayout(new BorderLayout()); cpanel = new CPanel(); add("center", cpanel); add("north", tenta); add("west", festa); add("east", sova); add("south", plugga); tenta.addactionlistener(this); festa.addactionlistener(this); sova.addactionlistener(this); plugga.addactionlistener(this); setvisible(true); t.setview(cpanel); t.gets( ); public void actionperformed(actionevent e) { if (e.getsource() == tenta) { t.gets( t ); else if (e.getsource() == festa) { t.gets( f ); else if (e.getsource() == sova) { t.gets( s ); else if (e.getsource() == plugga) { t.gets( p ); else { class CPanel extends Panel { private int r = 10; public CPanel() { setvisible(true); public void paint(graphics g) { g.setcolor(color.red); g.filloval(150-r, 150-r, 2*r, 2*r); public void update(int ir) { r = ir; repaint();

class LKClock implements Runnable { public Thread aktivitet = new Thread(this); private Tamagotchi t; public LKClock(Tamagotchi it) { t = it; public void run() { while (true) { try { Thread.sleep(1000); catch (InterruptedException e) { t.gets( c );