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



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

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

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

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

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.

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

Grafiska komponenter.

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

Tentamen, EDAA20/EDA501 Programmering

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.

Lösningar till tentamen i EDAF25

Frames, menyer och GUI-program

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

Tentamen OOP

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

Händelsestyrda program

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Tentamen. Lösningsförslag

OOP Objekt-orienterad programmering

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

OOP Objekt-orienterad programmering

Tentamen i Objektorienterad programmering

Tentamen FYTA11 Javaprogrammering

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

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

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

Lösningsförslag till tentamen

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

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

Föreläsning 7. Träd och binära sökträd

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

Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Objektorienterad programmering i Java

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Lösningsförslag till tentamen

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

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

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

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

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

"if"-satsen. Inledande programmering med C# (1DV402)

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Lösningsförslag till tentamen

FactoryCast HMI. Premium & Quantum PLC. Applets

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Konstruktion av klasser med klasser

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

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

Programmering A. Johan Eliasson

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 )

Lösningsförslag till tentamen

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

Lite logik. Kap 6: Sid 2

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

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

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

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

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

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

trafiksimulering Intro OU5 trafiksimulering

Föreläsning 1 & 2 INTRODUKTION

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Institutionen för TENTAMEN CTH HT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Föreläsning 9: Arv och UML

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

TENTAMEN OOP

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Objektorienterad programutveckling, fk

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

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

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

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

Lösningar till tentamen i EDAF25

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

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

Tentamen, EDA501 Programmering M L TM W K V

Föreläsning 13 Innehåll

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

Objektorienterad programmering D2

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

Lösningsförslag tentamen FYTA11 Java

Laboration 15 Grafiskt användargränssnitt

TENTAMEN OOP

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

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.

LYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH TIN 211. DATAVETENSKAP Göteborg ( ) TENTAMEN

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

Transkript:

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 3 (15p + 20p + 5p = 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 kärlväxter har ett latinskt namn som består av två delar: ett släktnamn (gemensamt för alla arter i en viss släkt) och ett artnamn. Svenska växter har dessutom ett svenskt namn. Hybrider är korsningar mellan 2 arter, de är i regel sterila. Några hybrider med större utbredning behandlas som arter med eget namn, men har då ett x före sitt artnamn. (Källa: Bo Mossberg, Lennart Stenberg, Stefan Ericsson: Den nordiska floran) Modellera i Java med tre klasser denna situation, som den dessutom beskrivs med nedanstående UML-liknade klassdiagram. Klasserna skall dessutom ha lämplig konstruktor som ger instanvariablerna lämpliga värden. Metoden tostring() skall skriva ut en arts svenska namn och fulltständiga latinska namn. För hybrider med eget namn skall dessutom skrivas ut att växten är en hybid och mellan vilka växter den är hybrid och om den är steril.(se även uppgift 1b) 12p) Släkte String namn //släktes latinska namn Klassen Hybrid används för att instansiera hybrider med eget namn. Hybrider har två instansvariber för de arter den hybridiserar. Art Hybrid - Art art1 // - Art art2 - boolean steril Vänd!

b) Skriv ett huvudprogram som instansierar två arter och en hybrid och skriver ut denna text om hybriden: 2p) Strandfräken Equisetum x litorale, steril hybrid mellan Åkerfräken Equisetum arvense och Åkerfräken Equisetum arvense c) Skulle situationen istället kunna modelleras på ett sätt som illustreras med nedanstående UML-liknade diagram? Sämre/ bättre? 1p) Släkte String namn //släktes latinska namn Art Hybrid - Art art2 // - boolean steril Klassen Hybrid används för att instansiera hybrider med eget namn. Hybrider mellan två arter med eget namn ärver den ena arten och har en instansvaribel för den andra arten.

2) När man beställer biljetter till finare biografer och teatrar skall man säga vilken plats i salongen man vill ha och uppge sitt namn. a) Skriv en klass Bioplatser som visar en bild över salongen. På denna bild skall man kunna markera en plats och därefter uppmanas man att skriva in sitt namn. När man i textfönstret sedan ger vagnretur (return) så skrivs biljetten ut (vi simulerar detta med att skriva i terminalfönstret). 15p) Vi förenklar problemet på följande sätt: Platserna bildar en matris. Varje person kan bara markera en plats och köpa en biljett för varje gång hon/han skriver in sitt namn. b) Skriv en Java-applikation som instansierar två objekt av typen Bioplatser. (programmet kan t ex tänkas som arbetsredskap för någon som tar emot telefonbeställningar till de två biograferna) 2p) c) Skulle vi kunna använda vår klass för att kunna boka platser via Internet? Hur? Skriv några rader om hur klassen används/eller ändras för att kunna användas för att kunna boka plats på en biograf. 3p) 3) Beskriv kortfattat vad som menas med dynamiskt bindning i Objekt-inriktade språk. 5p)

Förslag till svar tentamen 2D4134 2001 aug 23. public abstract class Släkte { -- 1a) protected String namn; // latinskt släktnamn public class Art extends Släkte { private String namn; // latinskt artnamn private String svnamn; // svenb skt namn public Art(String isnamn, String ianamn, String isvnamn) { super.namn = isnamn; namn = ianamn; svnamn = isvnamn; public String tostring() { return svnamn + " " + super.namn + " " + namn; public class Hybrid extends Släkte { private String namn; // latinskt artnamn private String svnamn; // svenskt namn private Art art1; // Hybrid mellan ärvd art1 och art 2 private Art art2; // Hybrid mellan ärvd art1 och art 2 private boolean steril; public Hybrid(String isnamn, String ianamn, String isvnamn, boolean isteril, Art iart1, Art iart2) { super.namn = isnamn; namn = ianamn; svnamn = isvnamn; steril = isteril; art1 = iart1; art2 = iart2; public String tostring() { return svnamn + " " + super.namn + " x " + namn + ", " + (steril?" steril ":"") + " hybrid mellan " + art2.tostring() + " och " + art2.tostring(); public class Flora { -- 1b) public static void main(string [] arg) { Art art1 = new Art("Equisetum", "fluviatile", "Sjöfräken"); Art art2 = new Art("Equisetum", "arvense", "Åkerfräken"); Hybrid hybrid = new Hybrid("Equisetum", "litorale", "Strandfräken", true, art1, art2); System.out.println(hybrid.toString()); Jo, det går men är nog lite sämre. -- 1c)

import java.awt.*; import java.awt.event.*; public class Bioplatser extends Frame { private Button [] [] button; private int istorlek; private int jstorlek; String ledig = "0"; String reserverad = "X"; Panel platser = new Panel(); TextField besokare = new TextField(" "); Label info = new Label(" Tryck på en bioplats"); private boolean vantaknapp = true; private int resi; private int resj; -- 2 a public Bioplatser(int irader, int ikolumner) { setlayout(new FlowLayout()); int bredd = ikolumner*23; int hojd = irader*30; setsize(bredd, hojd+70); platser.setsize(bredd, hojd); istorlek = irader; jstorlek = ikolumner; button = new Button [istorlek][jstorlek]; platser.setlayout(new GridLayout(istorlek, jstorlek)); for (int i = 0; i <istorlek; i = i+1) { for (int j = 0; j <jstorlek; j = j+1) { button[i][j] = new Button(ledig); button[i][j].addactionlistener(new ButtonListener(i, j, this)); platser.add(button[i][j]); add(platser); add(new Label("Namn :")); besokare.addactionlistener(new TextFieldListener(besokare, this)); add(besokare); add(info); setvisible(true); public void klickpa(int ii, int ij, String namn) { if (vantaknapp) { if (ii == -1) { info.settext("obs! Tryck på en bioplats"); else { resi = ii; resj = ij; button[ii][ij].setlabel(reserverad); info.settext("skriv in ett namn"); vantaknapp = false; else { if (ii == -1) { System.out.println("Rad "+ (resi+1) + " plats " + ((resi+1)*jstorlek + resj +1) + " reserverad för " + namn); besokare.settext(""); info.settext("tryck på en bioplats"); vantaknapp = true; else { info.settext("skriv in ett namn");

class ButtonListener implements ActionListener { private int i; private int j; private Bioplatser biop; public ButtonListener(int ii, int ij, Bioplatser ib) { i = ii; j = ij; biop = ib; public void actionperformed(actionevent e) { biop.klickpa(i, j, ""); class TextFieldListener implements ActionListener { private TextField besokare; private Bioplatser biop; public TextFieldListener(TextField itf, Bioplatser ib) { besokare = itf; biop = ib; public void actionperformed(actionevent e) { biop.klickpa(-1, -1, besokare.gettext()); public class Sandrews { public static void main(string [] iarg) { Bioplatser astoria = new Bioplatser(30, 20); Bioplatser skandia = new Bioplatser(10, 10); -- 2b <html> -- 2c <body> <applet code = BioApplet.class width = 100 height = 150> </applet> </body> </html> import java.applet.*; public class BioApplet extends Applet{ public void init() { Bioplatser astoria = new Bioplatser(30, 20); Se boken -- 3.