Oppgave 1 class Mobiltelefon { protected int id; // lite pluss å ha protected, // med private ingen subklasseadgang Mobiltelefon(int ident ) { id = ident; } int ident(){return id;} } interface Musikkspiller { int mByte (); } interface Kamera { int punkter (); } class MobMus extends Mobiltelefon implements Musikkspiller { int mB; MobMus(int ident, int b) { super(ident); // pluss å huske på dette mB= b; } public int mByte () { return mB; } } class MobKa extends Mobiltelefon implements Kamera { int pix; MobKa(int ident, int p) { super(ident); // pluss å huske på dette pix = p; } public int punkter () {return pix;} } class MobMusKa extends Mobiltelefon implements Kamera, Musikkspiller { int pix, mB; MobMusKa(int ident, int p, int b) { super(ident); // pluss å huske på dette pix = p; mB= b; } public int punkter () {return pix;} public int mByte () { return mB; } } Oppgave 2 void settInnIArray (Mobiltelefon mob) { boolean funnet = false; if (antall == maxAntall) dobleA(); for (int i = antall-1; i >= 0 & ! funnet; i -- ) { if (alleTlf[i].id < mob.id) { alleTlf[i+1] = mob; funnet = true; } else alleTlf[i+1] = alleTlf[i]; } if (! funnet) alleTlf[0] = mob; antall++; } Oppgave 3 long antallKameraer () { long ant = 0; for (int i= 0; i< antall; i++) if (alleTlf[i] instanceof Kamera) ant+=((Kamera)alleTlf[i]).punkter(); return ant; } Oppgave 4 void lageOgLagreTlf(int id, int pi, int bt ) { Mobiltelefon denne = null; if (bt != 0 & pi != 0) denne = new MobMusKa(id, pi, bt); else if (pi != 0) denne = new MobKa(id,pi); else if (bt != 0) denne = new MobMus(id,bt); else denne = new Mobiltelefon(id); settInnIArray(denne); } Oppgave 5. class Vindu extends JFrame { Kontroll kntrl; private JButton knapp; private Lytter knappelytter; JLabel mobLede, kameraLede, musikkLede; JTextField mobTekst, musikkTekst, kameraTekst; public Vindu( Kontroll k) { super("Mob test"); kntrl = k; Container samling = getContentPane(); samling.setLayout(new GridLayout(4,2)); setSize(300,200); mobLede = new JLabel("Telefonnens id : "); samling. add(mobLede); mobTekst = new JTextField(10); samling. add(mobTekst); musikkLede = new JLabel("Antall Mbyte: "); samling. add(musikkLede); musikkTekst = new JTextField(10); samling. add(musikkTekst); kameraLede = new JLabel("Antall Pixler: "); samling. add(kameraLede); kameraTekst = new JTextField(10); samling. add(kameraTekst); knapp = new JButton("Ferdig"); samling. add(knapp); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); knappelytter = new Lytter( ); knapp.addActionListener(knappelytter); } // slutt Vindu konstruktør class Lytter implements ActionListener { public void actionPerformed(ActionEvent e) { int moi=0,mui=0,ki=0; String tmo = mobTekst.getText(); String tmu = musikkTekst.getText(); String tk = kameraTekst.getText(); mobTekst.setText(""); musikkTekst.setText(""); kameraTekst.setText(""); if (!tmo.equals("")) moi = Integer.parseInt(tmo); if (!tmu.equals("")) mui = Integer.parseInt(tmu); if (!tk.equals("")) ki = Integer.parseInt(tk); kntrl.lagTlf(moi,mui,ki); } } // slutt class Lytter } // slutt class Vindu Oppgave 6. public int compareTo(Object lmPek) { LM b = (LM) lmPek; if (denne.id < b.denne.id) return -1; else if (denne.id == b.denne.id) return 0; else return 1; } Oppgave 7. Datastruktur: LM forste = null; void settInnIListe( Mobiltelefon tlf) { LM denne , nest = null; LM ny = new LM(tlf); if(forste == null) forste = new LM(tlf); else { if(ny.compareTo(forste) < 0) { ny.neste = forste; forste = ny; } else { denne = forste; while (denne.neste != null && ny.compareTo(denne.neste)> 0) denne= denne.neste; nest = denne.neste; denne.neste = ny; ny.neste = nest; } } } Oppgave 8 class IngenIdException extends Exception { } i klassen Mobiltelefon: Mobiltelefon(int ident ) throws IngenIdException { if (ident == 0) throw new IngenIdException(); id = ident; } På samme måte i subklasene: MobMus(int ident, int b) throws IngenIdException { MobKa(int ident, int p) throws IngenIdException { MobMusKa(int ident, int p, int b) throws IngenIdException{ og her: void lageOgLagreTlf(int id, int pi, int bt ) throws IngenIdException { Resten som før } public void lagTlf(int id, int pi, int bt) { try{ mdl.lageOgLagreTlf(id, pi, bt); } catch (IngenIdException e) { System.out.printl (" Feil i mobiltelefonidentifikasjon, 0 er ulovlig"); } } SLUTT