package no.uib.ii.inf101.v07.oblig2.gruppe12.programmet; import no.uib.ii.inf101.basis.IBasis; public class Ord implements IBasis { String ordet, tallkode=""; int frekvens = 0; int antallGangerBrukt = 0; public Ord (String ord) { this.ordet = ord; ordet = ordet.toLowerCase(); this.frekvens = 1; tallkode = lagTallkode(); datainvariant(); } /** * Returnerer ordet til klassen. * @return */ public String ord() { return ordet; } /** * Returnerer tallkoden til klassen, som en string. * @return */ public String tallkode() { return tallkode; } /** * Returnerer frekvensen til ordet i datasettet. * @return */ public int frekvens() { return frekvens; } /** * Returnerer antall ganger ordet er brukt av en bruker. * @return */ public int antallGangerBrukt() { return antallGangerBrukt; } /** * Lager en tallkode til ordet. * @return */ private String lagTallkode() { Bokstaver bokstaver = new Bokstaver(); String tallkoden = ""; int[] temp = new int[ordet.length()]; for (int i = 0; i < ordet.length(); i++) { temp[i] = bokstaver.giIntVerdi(ordet.toCharArray()[i]); } for (int i = 0; i < ordet.length(); i++) { tallkoden += temp[i]; } return tallkoden; } /** * compareTo for Ord klassen. * Naar 1 blir returnert, stiller orginalobjektet sterkere enn objektet * det blir sammenlignet med. */ public int compareTo(Ord obj) { // Sammenligner paa tallkoden. Laveste tallet faar prioritet. //System.out.println("Begynner tallkode sammenligning"); if (tallkode.compareTo(obj.tallkode) < 0) return 1; if (tallkode.compareTo(obj.tallkode) > 0) return -1; // Sammenligner paa frekvensen. Laveste h�yeste tallet faar prioritet. //System.out.println("Begynner frekvens sammenligning"); if (frekvens > obj.frekvens) return 1; if (frekvens < obj.frekvens) return -1; // Sammenligner alfabetisk paa ordet. //System.out.println("Begynner alfabetisk sammenligning"); if (ordet.compareTo(obj.ordet) < 0) return 1; if (ordet.compareTo(obj.ordet) > 0) return -1; return 0; } /** * Datainvarianten til Ord klassen. * Sjekker konsistensen til variablene i klassen. */ public boolean datainvariant() { assert frekvens >= 0; assert antallGangerBrukt >= 0; assert ordet.equals(null) == false; assert tallkode.equals(null) == false; return true; } public Object clone() throws CloneNotSupportedException { Object obj = new Object(); return obj; } /** * Ny equals metode til Ord klassen. * ... */ public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final Ord other = (Ord) obj; if (ordet.equals(other.ordet) == false) return false; if (tallkode.equals(other.tallkode) == false) return false; if ((frekvens == other.frekvens) == false) return false; if ((antallGangerBrukt == other.antallGangerBrukt)==false) return false; return true; } public int hashCode() { return 0; } /** * toString metode for Ord klassen, returnerer ordet, tallkoden, * frekvensen og ant. ganger brukt av bruker. */ public String toString() { return "Ordet: " +ordet+" Tallkode: " +tallkode+" Frekvens: " + frekvens+" Ant. ganger brukt: " +antallGangerBrukt; } }