| Taso.java |
1 package hirsipuu;
2
3 /**
4 * Luokka taso-olion mallintamiseksi. Taso tiet?? tasonumeronsa ja aiheensa.
5 * @author Anna-Leena Latvala, Toni Purontaka
6 * @version 0.5, 9.3.2008
7 *
8 */
9 public class Taso implements Comparable<Taso> {
10
11 private int tasonro; // tason j?rjestysnumero, vaikeusaste
12 private String aihe; // tason aihe, joka on vinkki sen sanojen aihealueesta
13
14 /**
15 * Alustetaan taso-olio olemattomaksi tasoksi. Varsinaisen aiheen ja
16 * tasonumeron taso saa parsimalla rivej?, joita Tasot-olio l?hett??.
17 *
18 */
19 public Taso() {
20 tasonro = 0;
21 }
22
23 /**
24 * Alustetaan taso-oliolle testausta varten suoraan numero ja aihe.
25 * @param nro tason numero
26 * @param kuvaus tason kuvaus
27 */
28 public Taso(int nro, String kuvaus) {
29 tasonro = nro;
30 aihe = kuvaus;
31 }
32
33 /**
34 * Taso parsii tietonsa m??r?muotoisesta merkkijonosta:
35 * esim. "1 | El?imet"
36 *
37 * Mik?li tarjotaan v??r?nlaista syntaksia, palauttaa huomion siit?.
38 *
39 * @param jono parsittava jono
40 * @return true, jos parsiminen onnistui
41 * false, jos jono ei ollut syntaksin mukainen.
42 *
43 * @example
44 * <pre name="test">
45 * Taso taso = new Taso();
46 * taso.parse(" 6 | Kaupunkeja ja n?ht?vyyksi?") === true;
47 * taso.toString() === "(6) Kaupunkeja ja n?ht?vyyksi?";
48 * taso.parse("Kaupunkeja|6") === false;
49 * </pre>
50 */
51 public boolean parse(String jono) {
52 StringBuffer jonotus = new StringBuffer(jono);
53 tasonro = Jono.annaId(jonotus);
54 aihe = Jono.annaMjono(jonotus);
55 return (tasonro > 0 && aihe.length() > 0);
56 }
57
58 /**
59 * Palauttaa tason ominaisuudet merkkijonona muotoa "1 El?imet".
60 * @return taso merkkijonona
61 *
62 * @example
63 * <pre name="test">
64 * Taso taso = new Taso(1,"El?imet");
65 * Taso taso2 = new Taso(5,"Kaupunkeja");
66 * taso.toString() === "(1) El?imet";
67 * taso2.toString() === "(5) Kaupunkeja";
68 * </pre>
69 */
70 public String toString() {
71 return "("+ tasonro + ") " + aihe;
72 }
73
74 /**
75 * Palauttaa tason numeron.
76 * @return tason numero
77 */
78 public int nro() {
79 return tasonro;
80 }
81
82 /**
83 * Palauttaa tason aiheen tulostettavaa vihjett? varten.
84 * @return aihe
85 */
86 public String kuvaus() {
87 return aihe;
88 }
89
90 /**
91 * Vertaa taso-olioita kesken??n pelk?st??n tasonumeroiden perusteella.
92 * @param taso taso, johon t?t? verrataan
93 * @return tasonumeroiden v?linen erotus
94 *
95 * @example
96 * <pre name="test">
97 * Taso taso = new Taso(1,"El?imet");
98 * Taso taso2 = new Taso(5,"Kaupunkeja");
99 * (taso.compareTo(taso2) < 0) === true;
100 * (taso.compareTo(taso2) > 0) === false;
101 * (taso2.compareTo(taso) > 0) === true;
102 * (taso.compareTo(taso) == 0) === true;
103 * </pre>
104 */
105 public int compareTo(Taso taso) {
106 return (tasonro-taso.tasonro);
107 }
108
109
110 }
111