• No results found

Lektion 7 - Programmeringsteknik MN1, ht 2003

N/A
N/A
Protected

Academic year: 2022

Share "Lektion 7 - Programmeringsteknik MN1, ht 2003"

Copied!
11
0
0

Loading.... (view fulltext now)

Full text

(1)

Lektion 7 - Programmeringsteknik MN1, ht 2003

Daniel Deogun

danield@it.uu.se

9 november 2003

(2)

Inneh˚ all

1 L¨osningar till Del I, tenta 2003-01-09 3

1.1 Uppgift1 - (a) . . . 3

1.2 Uppgift1 - (b) . . . 4

1.3 Uppgift1 - (c) . . . 4

1.4 Uppgift2 - (a) . . . 5

1.5 Uppgift2 - (b) . . . 6

1.6 Uppgift3 - (a) . . . 7

1.7 Uppgift3 - (b) . . . 7

1.8 Uppgift3 - (c) . . . 7

1.9 Uppgift4 - (a) . . . 8

1.10 Uppgift4 - (b) . . . 9

1.11 Uppgift4 - (c) . . . 9

1.12 Uppgift5 - (a) . . . 10

1.13 Uppgift5 - (b) . . . 10

1.14 Uppgift5 - (c) . . . 10

2

(3)

1 L¨ osningar till Del I, tenta 2003-01-09

1.1 Uppgift1 - (a)

public class Tid {

private int sekunder = 0;

private int minuter = 0;

private int timmar = 0;

public Tid(int tim, int min, int sek) { sekunder = sek;

minuter = min;

timmar = tim;

} //end constructor public Tid(int sek) {

sekunder = sek;

if(sekunder/60 >= 1) { minuter += sekunder/60;

sekunder -= (sekunder/60)*60;

}

if(minuter/60 >= 1) { timmar += minuter/60;

minuter -= (minuter/60)*60;

}

if(timmar > 23)

timmar -= (timmar/24)*24;

} //end constructor public int sekunder() {

return timmar*3600 + minuter*60 + sekunder;

} //end sekunder } //end class

(4)

1.2 Uppgift1 - (b)

import extra.Std;

public class Driver {

public static void main(String[] args) { int timmar, minuter, sekunder;

Std.out.print("Skriv in antalet timmar: ");

timmar = Std.in.readInt();

Std.out.print("Skriv in antalet minuter: ");

minuter = Std.in.readInt();

Std.out.print("Skriv in antalet sekunder: ");

sekunder = Std.in.readInt();

Tid t = new Tid(timmar, minuter, sekunder);

} //end main } //end class

1.3 Uppgift1 - (c)

En konstruktor anv¨ands till att skapa objekt. Konstruktorn tilldelar vanligen instansvariablerna i objektet startv¨arden. Det kan finnas flera konstruktorer i en klass eftersom man kanske vill bygga upp objektet p˚a lite olika s¨att. Dvs vissa instansvariabler kanske skall ha standardv¨arden medan andra best¨ammas av skaparen. Om det inte finns n˚agon konstruktor i en klass tillhandah˚aller Java en sk standardkonstruktor, dvs en konstruktor som bara anv¨ands f¨or att skapa objekt av klassen.

4

(5)

1.4 Uppgift2 - (a)

public static void main(String[] args) {

¨AggLager lager = new ¨AggLager();

for(int i=0; i<100; i++) lager.l¨asIn();

lager.skrivUt();

} //end main

public void l¨asIn() { double weight;

Std.out.print("Skriv in vikten i ounces: ");

weight = Std.in.readDouble();

if(weight > 2.5) Jumbo++;

else if(weight > 2.25) XL++;

else if(weight > 2) L++;

else if(weight > 1.75) M++;

else if(weight > 1.5) S++;

if(weight > max) max = weight;

else if(weight < min) min = weight;

} //end l¨asIn

public void skrivUt() {

Std.out.println(Jumbo + " Jumbo eggs");

Std.out.println(XL + " Extra Large eggs");

Std.out.println(L + " Large eggs");

Std.out.println(M + " Medium eggs");

Std.out.println(S + " Small eggs");

Std.out.println(" Lightest egg: " + min + " ounces");

Std.out.println(" Heaviest egg: " + max + " ounces");

} //end skrivUt

(6)

1.5 Uppgift2 - (b)

En while-stats ¨ar en loop som itererar tills ett villkor inte uppfylls medan en if-sats bara exekverar kroppen en g˚ang om villkoret uppfylls.

Exempel:

while(true) {

... <- Denna kropp kommer att exekveras o¨andligt antal g˚anger }

if(true) {

... <- Denna kropp kommer att exekveras 1 g˚ang }

6

(7)

1.6 Uppgift3 - (a)

public void skrivUt() {

String state = "Trafikljuset har f¨oljande status: ";

if(r¨od)

state += "r¨od ";

if(gul)

state += "gul ";

if(gr¨on)

state += "gr¨on";

Std.out.println(state);

} //end skrivUt

1.7 Uppgift3 - (b)

public boolean kollaFunktion() {

return !((r¨od && gr¨on) || (gr¨on && gul));

} //end kollaFunktion

1.8 Uppgift3 - (c)

Trafikljuset har f¨oljande status: r¨od

(8)

1.9 Uppgift4 - (a)

import extra.Std;

public class Film { private String titel;

private String huvudRollsInnehavare;

private String regiss¨or;

private int pris;

public Film() {

this("Foo","John Doe","Jane Doe",0);

} //end constructor

public Film(String titel, String huvudRollsInnehavare, String regiss¨or, int pris) {

this.titel = titel;

this.huvudRollsInnehavare = huvudRollsInnehavare;

this.regiss¨or = regiss¨or;

this.pris = pris;

} //end constructor

public String getTitel() { return titel;

} //end getTitel

public String getHuvudRollsInnehavare() { return huvudRollsInnehavare;

} //end getHuvudRollsInnehavare public String getRegiss¨or() {

return regiss¨or;

} //end getRegiss¨or public int getPris() {

return pris;

} //end getPris

public void getFilmData() {

Std.out.println("Skriv in Titel Huvudrollsinnehavare Regiss¨or Pris");

titel = Std.in.readWord();

huvudRollsInnehavare = Std.in.readWord();

regiss¨or = Std.in.readWord();

pris = Std.in.readInt();

} //end getFilmData

public String toString() {

return "Filmtitel: " + titel +

" Huvudrollsinnehavare: " + huvudRollsInnehavare +

" Regiss¨or: " + regiss¨or +

8

(9)

" Pris: " + pris;

} //end toString } //end class

1.10 Uppgift4 - (b)

import extra.Std;

public class FilmLager { private Film[] lager;

private int antalFilmer;

public FilmLager(int size) { lager = new Film[size];

antalFilmer = 0;

} //end constructor

public void addFilm(Film film) { if(antalFilmer < lager.length) {

lager[antalFilmer] = new Film(film.getTitel(),

film.getHuvudRollsInnehavare(), film.getRegiss¨or(), film.getPris());

antalFilmer++;

}

} //end addFilm public void print() {

for(int i=0; i<=antalFilmer; i++) Std.out.println(lager[i]);

} //end print } //end class

1.11 Uppgift4 - (c)

Om man bara l¨agger in referensen s˚a kan man “p˚averka” filmen i lagret utifr˚an.

Dvs, trots att filmen ligger i lagret kan den tex tas bort. Om man ist¨allet kopierar referensen s˚a ligger filmen “s¨akert” i lagret.

(10)

1.12 Uppgift5 - (a)

I grund och botten finns en JFrame eller Applet. P˚a denna har man lagt en JPanel som har layouten Gridlayout(2,2), dvs ett “rutn¨at” med 2 rader och 2 kolumner. I ruta (1,1) har en JLabel-komponent placerats med texten “C”. I ruta (1,2) har en JLabel-komponent placerats med texten “F”. I ruta (2,1) har en JTextField-komponent placerats. I ruta (2,2) har en JTextField-komponent placerats.

1.13 Uppgift5 - (b)

Vi m˚aste addera en ActionListener f¨or att f˚a reda p˚a h¨andelser som intr¨affat i textf¨altet.

1.14 Uppgift5 - (c)

import javax.swing.JTextField;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.SwingConstants;

import java.awt.GridLayout;

import java.awt.Container;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class Convert extends JFrame{

private Container sole;

public static void main(String[] args) { new Convert().show();

} //end main public Convert() {

sole = getContentPane();

sole.setLayout(new GridLayout(2,2));

setSize(300,100);

setTitle("C-F konverterare");

addLabels();

addListeners();

} //end constructor

private void addLabels() {

JLabel c = new JLabel("C", SwingConstants.CENTER);

JLabel f = new JLabel("F", SwingConstants.CENTER);

sole.add(c);

sole.add(f);

} //end addLabels

10

(11)

private void addListeners() {

final JTextField c = new JTextField();

final JTextField f = new JTextField();

c.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

double degrees = Double.parseDouble(c.getText());

f.setText(""+(degrees * 1.8 + 32));

} //end actionPerformed });

f.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

double degrees = Double.parseDouble(f.getText());

c.setText(""+(degrees - 32) * 5/9.0);

} //end actionPerformed });

sole.add(c);

sole.add(f);

} //end addListeners } //end class

References

Related documents

Där anropade vi defaultkonstruktorn (den automatiskt genererade) när vi skapade objekt, samt så hade vi en funktion skriv_in_data( ) som vi använde för att lägga in ”värden”

Ett arkivsystem som tillhandah˚ aller metadata enligt en accepterad standard ¨ar en f¨or- uts¨attning f¨or att materialet – eller informationen om materialet – ska kunna sk¨ordas

d) Rektorn, som ¨ ar den akt¨ or som befinner sig under f¨ orvaltningen i den hie- rarkiska kedjan, har en central roll f¨ or styrningens utformning och p˚ averkar l¨

[Tips: Faktorisera polyno-

Endast definitioner och trigonometriska r¨ aknelagar f˚ ar anv¨ andas utan att de f¨ orst bevisas. Sida 2

Po¨ angen p˚ a godk¨ anda duggor summeras och avg¨ or slutbetyget.. L¨ osningarna skall vara v¨ almotiverade och

Ett objekt har förutom ett antal attribut även en samling operationer för att ändra på objektets attribut... Objekt från klassen

* This method checks if &lt;code&gt;exp&lt;/code&gt; is an operator*. * @param exp A string that may be