Skip to content

Instantly share code, notes, and snippets.

@MartinIngesen
Last active August 29, 2015 14:02
Show Gist options
  • Save MartinIngesen/9640655cc1a5ca48c676 to your computer and use it in GitHub Desktop.
Save MartinIngesen/9640655cc1a5ca48c676 to your computer and use it in GitHub Desktop.

Eksamen PG2100 2012

Oppgave 1

a)

Det vil være naturlig å la Fremkomstmiddel være forelderen til Bil og Sykkel (arv). Bil naturlig ha Pedal og Motor (komposisjon), og Sykkel vil ha Pedal (komposisjon).

På samme måte vil Bosted vil naturlig være en parent for Hus og Hytte, hvorpå både Hus og Hytte har ett eller flere Rom.

Det er til tross for oppgavens enkelhet flere spørsmål man kan spørre seg i forhold til diverse definisjoner.

  1. Sykkel kan med dagens teknologi inneholde en Motor (El-sykkel).

    Hvis dette er noe man har lyst til å ta videre kan man med enkelhet la Sykkel ha en Motor.

  2. Bil også inneholder flere forskjellige Rom (bagasjerom, hanskerom, motorrom, etc).

    Dette er igjen noe man enkelt kan legge til rette for, da man kan la Bil ha et ellere flere Rom.

  3. Bil kan være et Bosted (bobil etc).

    Dette kan bli mer komplisert å utføre, med tanke på at man i Java kun kan arve fra én klasse. Dermed kan ikke Bil arve fra både Fremkomstmiddel og Bosted. Det mest naturlige ville vært å droppet Bosted, men hvis man absolutt vil kunne man gjort feks. Bosted om til en interface, slik at alle klassene ikke extends men heller implements Bosted.

b)

Det vil være naturlig å deklarere Fremkomstmiddel og Bosted abstract, da dette er "abstrakte" objekter som bare er en overordnet term. Verken Fremkomstmiddel eller Bosted er noe håndfast, men heller en overordnet betegnelse som kan kan benytte til å gruppere andre klasser under. Derfor er disse perfekte kandidater til å deklareres abstract.

c)

abstract class Fremkomstmiddel{}
abstract class Bosted{}

class Motor{}
class Pedal{}
class Rom{}

class Bil extends Fremkomstmiddel{
	private Motor motor;
	private Pedal[] pedal;
	// Kan potensielt også ha Rom
	private Rom[] rom;
}
class Sykkel extends Fremkomstmiddel{
	private Pedal[] pedal;
	// Kan potensielt ha Motor
	// private Motor motor;
}
class Hus extends Bosted{
	private Rom[] rom;
}
class Hytte extends Bosted{
	private Rom[] rom;
}

Oppgave 2

a)

package Eksamen2012;

import javax.swing.*;
import java.awt.*;

public class Oppgave2 extends JFrame{

    public Oppgave2(){
        super("FINN SKATTEN!");
        
        JPanel knapper = new JPanel(new GridLayout(4,4));

        for(int i = 0; i < 16; i++){
            knapper.add(new JButton("Kanskje her?"){{
                setBackground(Color.LIGHT_GRAY);
            }});
        }

        add(knapper, BorderLayout.NORTH);

        JPanel bunnKnapper = new JPanel(new GridLayout(1,2));
        add(bunnKnapper, BorderLayout.SOUTH);
        bunnKnapper.add(new JButton("Start på nytt"));
        bunnKnapper.add(new JButton("Avslutt"));

        pack();
        setVisible(true);
    }
    
    public static void main(String[] args){
        new Oppgave2();
    }
}

b)

@Override
public void actionPerformed(ActionEvent a){
    JButton button = (JButton) a.getSource();
    button.setText("Ikke her!");
    button.setBackground(Color.WHITE);
}

c)

@Override
public void actionPerformed(ActionEvent a){
    switch(a.getActionCommand()){
        case "Kanskje her?":
            JButton button = (JButton) a.getSource();
            button.setText("Ikke her!");
            button.setBackground(Color.WHITE);
            break;
        case "Start på nytt":
            this.dispose();
            new Oppgave2();
            break;
        case "Avslutt":
            System.exit(0);
            break;
    }
}

Oppgave 3

a)

public class Gjenstand {
    private String beskrivelse;
    private int regNr;
    private int dimension;

    public Gjenstand(){
        this("", 0, 0);
    }

    public Gjenstand(String beskrivelse, int regNr, int dimensjon) {
        setBeskrivelse(beskrivelse);
        setRegNr(regNr);
        setDimension(dimensjon);
    }

    public void setBeskrivelse(String beskrivelse) {
        this.beskrivelse = beskrivelse;
    }
    public String getBeskrivelse(){
        return beskrivelse;
    }

    public void setRegNr(int regNr) {
        this.regNr = regNr;
    }

    public int getRegNr() {
        return regNr;
    }

    public void setDimension(int dimension) {
        this.dimension = dimension;
    }

    public int getDimension() {
        return dimension;
    }

    public String toString(){
    	return getRegNr() + ": " + getBeskrivelse() + " (" + getDimension() + ")";
	}

    public boolean equals(Object object){
        if(!(object instanceof Gjenstand)) return false;
        if(object == this) return true;

        return getRegNr() == ((Gjenstand) object).getRegNr();
    }
}

b)

public class GjenstandKlient {

    public static void main(String[] args){
        Gjenstand bok = new Gjenstand("Bok", 1, 1);
        Gjenstand kopp = new Gjenstand("Kopp", 2, 1);
        Gjenstand bord = new Gjenstand("Bord", 3, 1);
        Gjenstand boks = new Gjenstand("Boks", 4, 1);
        Gjenstand ark = new Gjenstand("Ark", 5, 1);

        ArrayList<Gjenstand> gjenstander = new ArrayList<Gjenstand>();
        gjenstander.add(bok);
        gjenstander.add(kopp);
        gjenstander.add(bord);
        gjenstander.add(boks);
        gjenstander.add(ark);

        for (Gjenstand gjenstand : gjenstander){
            System.out.println(gjenstand.toString());
        }

        System.out.println(gjenstander.contains(new Gjenstand("", 1, 0)));

        // fjerner kopp
        gjenstander.remove(kopp);

        // fjerner ark
        ArrayList<Gjenstand> nyeGjenstander = new ArrayList<Gjenstand>();
        for (Gjenstand gjenstand : gjenstander){
            if(!gjenstand.equals(ark)){
                nyeGjenstander.add(gjenstand);
            }
        }
        gjenstander = nyeGjenstander;


        for (Gjenstand gjenstand : gjenstander){
            System.out.println(gjenstand.toString());
        }
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment