Docstoc

Java Empowered Design & Implementation

Document Sample
Java Empowered Design & Implementation Powered By Docstoc
					Bachelor: Information & Communications Technology

Afname: 53

Course: Bachelor: Docent: Review:

Java Empowered Design & Implementation Information & Communications Technology D. de Waard

Datum: Tijd: Aantal blz.: Paraaf:

24-03-2006 11:00 - 12:30 7

Opmerking: geen mobiele telefoons gedurende de tentamens! Toegestane hulpmiddelen: Na afloop tentamen:  Geen opgaven WEL/NIET inleveren.

Dit tentamen gaat over softwareontwikkelaar Hans Olo. Hij heeft opdracht gekregen om een nieuw text-based adventure-spel te ontwikkelen genaamd „The World of Death Star (WODS)‟. In dit spel moet de speler door een doolhof van allerlei kamers „wandelen‟, om de reactor te vinden, die hij vervolgens kan uitschakelen. Onderweg komt hij allerlei andere personages tegen, waarmee hij de strijd aanbindt. Met de lessen OOSE nog vers in het achterhoofd weet hij direct dat hij als basis het spel „ The World of Zuul‟ kan nemen, en die vervolgens uitbreiden. Het klassendiagram uit BlueJ weet hij zich nog voor de geest te halen:

Hans begint met het ontwikkelen van de personages. Hij ziet in dat de personages van de speler en zijn vijanden veel met elkaar gemeen hebben, en besluit daarom om hier inheritance te gaan toepassen. Hij stelt het volgend klassediagram op:

(Dit tentamen gaat op de volgende pagina verder)
Tentamen: Java Empowered Design & Implementation afname: 53 Last saved: 28 november 2009
Pagina 1 van 7

Bachelor: Information & Communications Technology

Afname: 53

1.

Stel: de drie hierboven beschreven klassen zijn als volgt geïmplementeerd: Wat verschijnt er op het scherm (console) wanneer de onderstaande codefragmenten worden uitgevoerd? Let op: Één van de volgende antwoorden is hier steeds van toepassing. Schrijf steeds de letter van het gekozen antwoord op je uitwerkingenblad: A. I'm a meaningless character. I'm not able to say anything useful! B. I am the player. The force is strong in me... C. I am the bad guy! I want to destroy you D. Er verschijnt niets, want deze code is fout

1.a.

[5p] 1 Character c = new Enemy(); 2 System.out.println(c.speak()); C (en getest) [5p] 1 Player p = new Enemy(); 2 System.out.println(p.speak()); D (en getest) [5p] 1 Player p = new Player(); 2 Character c = (Character) p; 3 System.out.println(c.speak()); B (en getest)

1.b.

1.c.

(Dit tentamen gaat op de volgende pagina verder)

Tentamen: Java Empowered Design & Implementation afname: 53 Last saved: 28 november 2009

Pagina 2 van 7

Bachelor: Information & Communications Technology

Afname: 53

2.

Aangezien kamers in de echte wereld ook personen bevatten, kiest Hans er voor om dit ook in het programma toe te passen. Dit betekent dat de klasse Room objecten van zowel de klasse Player als de klasse Enemy moet gaan bevatten. [15p] Teken in een klassediagram hoe dit het beste kan worden uitgewerkt. Teken hierin alle relevante klassen, associaties en overervings relaties.
Room Charecters * Character speak()

2.a.

addCharacter(Charecter c);

Player speak()

Enemy speak()

2.b.

[10p] In de klasse Room moet een methode of methoden worden geschreven waarmee je Player of Enemy objecten aan de kamer kunt toevoegen. Schrijf, in java, de signature(s) van die methode(n). De inhoud van die methode(n) hoef je dus niet te schrijven.

Public void addCharacter(Character c){ } 3. Hans wil het spel ook gaan visualiseren met een grafische user interface (GUI). Hij heeft besloten om hiervoor de java Swing library te gebruiken. De klasse Game wordt gewijzigd, zodat dit een JFrame wordt. Hierop wordt een JTextField toegevoegd, die alle textboodschappen zal gaan weergeven. Ten slotte komt er een JTextField waarin de speler zijn commando‟s kan intypen. Een JTextField produceert ActionEvents, zodra de gebruiker op de Enter toets drukt. Hans besluit om de klasse Parser te laten registreren als ActionListener (zie ook de bijlage op het laatste blad van dit tentamen). [5p] Beschrijf wat er aan de declaratie van de klasse Parser (dus in de regel „public class …‟) moet veranderen om dit mogelijk te maken. Hij moet “implements ActionListener” toevoegen. 3.a. 3.b. [5p] Beschrijf wat er aan de interface van de klasse Parser moet veranderen om dit mogelijk te maken.

Er moet een extra methode worden toegevoegd aan de interface van deze klasse die methode is public void actionPerformed(ActionEvent event) { }

Tentamen: Java Empowered Design & Implementation afname: 53 Last saved: 28 november 2009

Pagina 3 van 7

Bachelor: Information & Communications Technology

Afname: 53

3.c.

[5p] Vul het onderstaande codefragment aan om er voor te zorgen dat de Parser de ActionEvents daadwerkelijk gaat ontvangen. 1 2 3 JTextField commandField = new JTextField(); Parser parser = new Parser(); ...

Toevoegen: commandField.addActionListener(parser); 3.d. [5p] Leg uit wat er tijdens de uitvoer van het programma gebeurt (welke methoden op welke objecten worden aangeroepen) als de gebruiker op de Enter toets drukt. Je krijgt extra punten als je hierbij gebruik maakt van een sequence diagram.

De gebruiker klikt op enter dan is er een Event deze komt van het JTextField object met de naam “commandField” zijn action listener wordt geactiveerd en de methode actionPreformed word aangeroepen (deze zit in de klasse parser) dan wordt het Event verwerkt, als dat klaar is wordt het schem geupdate(of weer leeg gemaakt). (http://www.sequencediagrameditor.com/uml/sequence-diagram.htm).

user

commandField

Parser(ActionListener)

Activates by enter

message actionPerformed(Event e) Handel event

Update commandfield

(Dit tentamen gaat op de volgende pagina verder)

Tentamen: Java Empowered Design & Implementation afname: 53 Last saved: 28 november 2009

Pagina 4 van 7

Bachelor: Information & Communications Technology

Afname: 53

4.

Hans bouwt ook nog een „teleport room‟. Als de speler in deze kamer komt, wordt hij naar een willekeurige andere kamer getransporteerd. De klasse TeleportRoom moet hiervoor een verzameling kamers bij gaan houden waar hij een keuze uit kan maken. [10p] Welke verzameling interface (List, Set of Map) kiest Hans hiervoor? Motiveer je antwoord.

4.a.

A Map is a set of mappings, or associations, between objects. A Set is a type of Collection with no duplicates, and a List is a Collection in which the elements are ordered.( http://safari.oreilly.com/0596007736/javanut5-CHP-5-SECT-6). Ik zou voor een List kiezen, omdat er maar 1 keer een add word gedaan en veel vaker een object er uit opgevraagd wordt. En omdat een List geordend is werk het daardoor het snelst en het efficiëntst 4.b. [10p] Stel, Hans kiest de List interface. Motiveer welke implementatie (ArrayList of LinkedList) zou hier het beste uitkomen, als je het programma zo snel mogelijk wilt laten uitvoeren? Ga bij je redenering uit van het feit dat het invoegen van de elementen alleen bij de initialisering van het spel voorkomt, het verwijderen helemaal niet, en dat het opvragen van elementen juist wel vaak voorkomt.

Een arrayList kan in 1 keer een object van de gewenste locatie ophalen en bij een linkedList moet die 1 voor 1 alle objecten af en vragen waar de volgende staat, wat veel tijd kost. En aangezien dit het opvragen van gegevens het vaakste gebeurd. Is een arrayList het de beste en snelst werkende keuze. 5. Hans heeft de applicatie gebouwd op zijn Apple IBook. Nu wil hij het doorsturen naar zijn collega Anna Kin, die het wil gaan testen. Anna heeft echter een Windows machine. Hans ziet in zijn projectfolder een aantal soorten bestanden staan: .java bestanden en .class bestanden. Hans zipt een aantal bestanden en typt instructies voor Anna om het spel te starten. [5p] Welke bestanden stopt Hans in ieder geval in het zip bestand, zodat het met zo min mogelijk stappen op Anna‟s computer aan de gang gaat.

5.a.

Alle .class bestanden en als er sub mappen zijn en plaatje deze ook. Anders moet ze eerst nog gaan compileren enof de imports of package goed gaan zetten. En zonder de nodige plaatjes krijg je alleen maar errors En als ze al die dingen heeft kan ze het snels starten. (Een Java Virtual Machine (JVM) interpreteert gecompileerde Java classes (.class bestanden) en compileert deze in native code, machinetaal, voor het betreffende operating system (OS) waarop de JVM gestart is. Op deze manier kunnen Java programma‟s op vrijwel iedere machine draaien. Javacode wordt standaard door de javac.exe compiler vertaald naar bytecode en deze bytecode kan op ieder systeem met een JVM gestart worden. Er moet wel een JVM beschikbaar zijn voor het OS, en deze JVM moet geïmplementeerd zijn voor de specificatie van Sun).( http://www.devtips.net/article.aspx?id=102)

Tentamen: Java Empowered Design & Implementation afname: 53 Last saved: 28 november 2009

Pagina 5 van 7

Bachelor: Information & Communications Technology

Afname: 53

[5p]

Welke instructies geeft Hans aan Anna? Ga er hier van uit dat de methode public

static void main(String[] args) in de klasse Game is opgenomen.
Via Stap Stap Stap Stap 1 2 3 4 open klatblok typ er in “start java Game” opslaan als in de map waar het spel staat als .bat dubbel klik op het .bat om het te draaien

dos: Stap 1 druk tegelijk op de windos vlag en R Stap 2 typ cmd en druk op enter Stap 3 typ “cd ” + het path naar de map waar het spel in staat Stap4 typ “java Game” en spelen maar

(Einde van dit tentamen)

Tentamen: Java Empowered Design & Implementation afname: 53 Last saved: 28 november 2009

Pagina 6 van 7

Bachelor: Information & Communications Technology

Afname: 53

Bijlage:

Tentamen: Java Empowered Design & Implementation afname: 53 Last saved: 28 november 2009

Pagina 7 van 7


				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:7
posted:11/29/2009
language:Dutch
pages:7
Jun Wang Jun Wang Dr
About Some of Those documents come from internet for research purpose,if you have the copyrights of one of them,tell me by mail vixychina@gmail.com.Thank you!