1   package kanta;
2   
3   /**
4    * Rajapinta tietueen yhdelle kentälle.
5    * @author vesal
6    *
7    */
8   public interface Kentta extends Cloneable, Comparable<Kentta>{
9   
10      /**
11       * kentän arvo merkkijonona.
12       * @return kenttä merkkkijonona
13       * @example
14       * <pre name="test">
15       *  IntKentta kentta = new IntKentta("määrä");
16       *  kentta.aseta("12") === null;
17       *  kentta.toString() === "12";
18       * </pre>
19       */
20      @Override
21      String toString();
22  
23      /**
24       * Palauttaa kentään liittyvän kysymyksen.
25       * @return kenttän liittyvä kysymys.
26       * @example
27       * <pre name="test">
28       *  IntKentta kentta = new IntKentta("määrä");
29       *  kentta.getKysymys() === "määrä";
30       * </pre>
31       */
32      String getKysymys();
33  
34      /**
35       * Asettaa kentän sisällön ottamalla tiedot
36       * merkkijonosta.
37       * @param jono jono josta tiedot otetaan.
38       * @return null jos sisältö on hyvä, muuten merkkijonona virhetieto
39       * @example
40       * <pre name="test">
41       *  IntKentta kentta = new IntKentta("määrä");
42       *  kentta.aseta("12") === null; kentta.getValue() === 12;
43       *  kentta.aseta("k") === "Ei kokonaisluku (k)"; kentta.getValue() === 12;
44       * </pre>
45       */
46      String aseta(String jono);
47  
48  
49      /**
50       * Palauttaa kentän tiedot veratiltavana merkkijonona
51       * @return vertailtava merkkijono kentästä
52       * @example
53       * <pre name="test">
54       *  IntKentta k1 = new IntKentta("määrä");
55       *  IntKentta k2 = new IntKentta("määrä");
56       *  k1.aseta("12"); k2.aseta("5");
57       *  k1.getAvain().compareTo(k2.getAvain()) > 0 === true;
58       * </pre>
59       */
60      String getAvain();
61  
62  
63      /**
64       * @return syväkopio kentästä, tehtävä jokaiseen luokkaa toimivaksi
65       * @throws CloneNotSupportedException
66       * @example
67       * <pre name="test">
68       * #THROWS CloneNotSupportedException
69       *  IntKentta k1 = new IntKentta("määrä");
70       *  k1.aseta("12");
71       *  IntKentta k2 = k1.clone();
72       *  k1.toString() === k2.toString();
73       *  k1.aseta("5");
74       *  k1.toString() == k2.toString() === false;
75       * </pre>
76       */
77      Kentta clone() throws CloneNotSupportedException ;
78  
79      
80      /**
81       * @return vaakasuuntainen sijainti kentälle
82       * @example
83       * <pre name="test">
84       * #import javax.swing.SwingConstants;
85       *  IntKentta k1 = new IntKentta("määrä");
86       *  k1.getSijainti() === SwingConstants.RIGHT; 
87       * </pre>
88       */
89      int getSijainti();
90      
91  }
92