Javaprogrammering
för D3 m fl
lördag 15 mars 2008 kl 08:00 - 13:00 i L001
Gäller som tentamen för:
DT3010 Datateknik C, Java för gränssnitt och nätverk, provkod 0100
JAP004 Java-programmering, provkod 0300
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 42.
För godkänt betyg (3 respektive G) krävs 20 poäng. |
Resultat och lösningar: | Meddelas på kursens hemsida eller via e-post senast lördag 5 april 2008. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
Vi ska skriva ett tågspel, där man tävlar med tåg på järnvägen. Tågspelet innehåller följande typer av saker:
Skriv inte svaren till uppgifterna direkt här, utan skriv på lösa blad och lämna in.
Skapa en ny klass som heter Tankvagn, som är en sorts vagn och som kan kopplas på tåget. Den skiljer sig från vanliga vagnar genom att den förutom tomvikt och lastvikt också har en volym, till exempel 17.3 kubikmeter.
b) (1p)
Vi antar att vi inte har tillgång till några .java-filer från uppgift 1, utan bara .class-filerna, till exempel Tåg.class. Vad är skillnaden mellan .java- och .class-filer?
c) (2p)
Vi vill kunna ha med tankvagnar i tågen, trots att vi alltså inte har kvar .java-filerna, utan bara .class-filerna. Går det? Förklara också varför det går, eller inte går.
TÅG 17 Örebro CentralDet betyder att spelaren nu kör ett tåg, vars lok är lok nummer 17, och som står på Örebro Central. Tågen startar alltid på en station.
FLYTTA Örebro SödraServern ska nu flytta spelarens tåg till stationen som heter Örebro Södra. Om det gick bra, svarar servern:
OKOm det inte gick bra, till exempel om det inte finns någon station som heter Örebro Central, svarar servern:
NOK
Klienten ska koppla upp sig mot servern, och spelaren ska kunna ge ett flytta-kommando, som innebär att han eller hon försöker köra tåget till en viss station. Klienten ska hela tiden hålla reda på var spelarens tåg just nu befinner sig.
Här är ett förslag på hur en grafisk klient skulle kunna se ut:
java.lang.Object java.net.ServerSocket
ServerSocket(int port)
Creates a server socket, bound to the specified port.
Socket
accept()
Listens for a connection to be made to this socket and accepts
it.
void
close()
Closes this socket.
java.lang.Object java.net.Socket
Socket()
Creates an unconnected socket, with the
system-default type of SocketImpl.
Socket(InetAddress address,
int port)
Creates a stream socket and connects it to the specified port
number at the specified IP address.
void
close()
Closes this socket.
InputStream
getInputStream()
Returns an input stream for this socket.
OutputStream
getOutputStream()
Returns an output stream for this socket.
java.lang.Object java.io.Reader java.io.BufferedReader
BufferedReader(Reader in)
Create a buffering character-input stream that uses a default-sized
input buffer.
void
close()
Close the stream.
int
read()
Read a single character.
String
readLine()
Read a line of text.
java.lang.Object java.io.Reader java.io.InputStreamReader
InputStreamReader(InputStream in)
Create an InputStreamReader that uses the default charset.
void
close()
Close the stream.
int
read()
Read a single character.
java.lang.Object java.io.Writer java.io.PrintWriter
PrintWriter(OutputStream out)
Create a new PrintWriter, without automatic line flushing, from an
existing OutputStream.
PrintWriter(OutputStream out,
boolean autoFlush)
Create a new PrintWriter from an existing OutputStream.
void
close()
Close the stream.
void
println()
Terminate the current line by writing the line separator string.
void
println(String x)
Print a String and then terminate the line.
java.lang.Object java.net.InetAddress
public static InetAddress getByName(String host) throws UnknownHostExceptionDetermines the IP address of a host, given the host's name.