Programutvikling V2015 — øvingsoppgaver for uke 11

Oppgave 1

I denne oppgaven skal du programmere dine egne generiske klasser.
Gitt interfacet:

import java.util.*;

public interface Samling < E >
{
  void settInn( E e );
  boolean flereElementer();
  boolean inneholder(E e);
  boolean fjern( E e);
  Iterator iterator();
}

Du får nå i oppgave å programmere klassen MinListe som skal implementere dette interfacet. Klassen har to private klasser, Node og MinIterator.
Nedefor ser du en skisse av klassen:

import java.util.*;

public class MinListe < E > implements Samling 
{
  private class Node < E >
  {
      private E element;

      Node neste;

      public Node( E e )
      {
        element = e;
        neste = null;
      }

     public E getElement()
     {
       return element;
     }

     public String toString()
     {
       return element.toString();
     }
  } // end of class Node


  private Node første;

  < Implementer interfacet Samling. Til dette kan du bruke
    metoder fra den private klassen MinIterator.  >


  public String toString()
  {
	< ... >
  }

  private class MinIterator < E > implements Iterator < E >
  {
    < Klassen skal implementere interfacet Iterator,
      dvs. metodene:
      boolean hasNext();
      E next();
      void remove(); >
  }// end of MinIterator

} // end of MinListe

Erstatt pseudo-koden med java-kode. For å få testet ut metodene kan du bruke utgangspunkt klassen Person:

public class Person
{
  private String fornavn, etternavn;

  // NB! Ingen neste-peker

  public Person( String f, String n )
  {
    fornavn = f;
    etternavn = n;
  }

  public String getEtternavn()
  {
    return etternavn;
  }

  public String getFornavn()
  {
    return fornavn;
  }

  public String toString()
  {
    return etternavn + ", " + fornavn;
  }

  public boolean equals( Object p )
  {
    return ((Person)p).getEtternavn().equals( etternavn ) &&
           ((Person)p).getFornavn().equals( fornavn ) ;
  }
} // end of class Person

Det vil også lette programmeringsarbeidet kan du ta utgangspunkt i, og modifisere, klassen Persontester slik at den passer til ditt program. (Klassen er hentet fra Personsorterings-eksempelet. I tillegg må du legge til en driver-klasse.

Oppgave 2

I Personsorterings-eksempelet er det brukt LinkedList til å lagre Person-objektene i en liste. Du skal nå forandre dette programmet slik at du istedenfor lagrer Person-objektene i en TreeSet-mengde Du skal holde mengden sortert etter regler for norske forhold, men du vil nå ikke lenger trenge noen sort-metode for å få dette til.

Løsningsforslag

Oppgave 1

Person.java
Samling.java
MinListe.java
MinListeTest.java

Oppgave 2

Person.java
Personmengde.java
Personsammenlikner.java
Persontester.java
Personapplikasjon.java