| Makihyppy.java |
1 package demo8;
2
3 /**
4 * Luokkien alut mäkihyppyä varten. Huom! jotakin voi vielä puuttua :-)
5 * Poista rivit @SuppressWarnings("unused")
6 * @author Vesa Lappalainen
7 * @version 1.0, 21.02.2003
8 *
9 *
10 * Demo 8 teht 1 ja 2
11 * @author Antti Myöhänen
12 * @version 0.1
13 *
14 */
15 public class Makihyppy {
16
17 /**
18 * Luokka yhtä mäkihypyn kierrosta varten
19 */
20 public static class Kierros {
21 private final static int TUOMAREITA = 5;
22 private double pituus; // hyppyjen pituudet metreinä
23 private final double tuomarit[] = new double[TUOMAREITA];// tuomaripisteet
24
25
26 /**
27 * Kierroksen alustaminen, kaikkia arvot nolliksi.
28 */
29 public Kierros() {
30 this.pituus = 0;
31 for (int i = 0; i < tuomarit.length; i++) {
32 this.tuomarit[i] = 0;
33 }
34 }
35
36 /**
37 * Pituuden asettaminen
38 *
39 * @param pituus
40 */
41 public void setPituus(double pituus) {
42 this.pituus = pituus;
43 }
44
45
46 /**
47 * Tuomarin pisteiden asettaminen
48 *
49 * @param tuomariNro
50 * @param pisteet
51 */
52 public void setTuomari(int tuomariNro, double pisteet) {
53 this.tuomarit[tuomariNro] = pisteet;
54 }
55
56 /**
57 * Antaa kierroksen tiedot
58 *
59 * @return pituuden ja pisteet Stringinä
60 */
61 public String getTiedot() {
62 StringBuilder s = new StringBuilder();
63 s.append("pituus = " + this.pituus + "\n" + "pisteet:" + "\n");
64
65 for (int i = 0; i < tuomarit.length; i++) {
66 s = s.append(" Tuomari" + (i+1) + " " + tuomarit[i]);
67 }
68 return s.toString();
69 }
70
71 }
72
73 /**
74 * Luokka mäkihypyn yhden kilpailijan tulosta varten.
75 * Sisältää monta kierosta.
76 */
77 public static class Tulos {
78 private final static int KIERROKSIA = 2;
79 private final Kierros kierros[] = new Kierros[KIERROKSIA];
80
81
82 /**
83 * Tuloksen alustaminen
84 *
85 * @param kierrosNro
86 * @param pituus
87 */
88 public Tulos(int kierrosNro, double pituus) {
89 this.kierros[kierrosNro] = new Kierros();
90 }
91
92 /**
93 * Kierroksien alustus.
94 *
95 */
96 public Tulos() {
97 for (int i = 0; i < kierros.length; i++) {
98 this.kierros[i] = new Kierros();
99 }
100 }
101
102
103 /**
104 * Tuomarin pisteiden asettaminen
105 *
106 * @param kierrosNro
107 * @param tuomariNro
108 * @param pisteet
109 */
110 public void setTuomari(int kierrosNro, int tuomariNro, double pisteet) {
111 this.kierros[kierrosNro].setTuomari(tuomariNro, pisteet);
112 }
113
114 /**
115 * Pituuden asettaminen
116 *
117 * @param kierrosNro
118 * @param pituus
119 */
120 public void setPituus(int kierrosNro, double pituus) {
121 this.kierros[kierrosNro].setPituus(pituus);
122
123 }
124
125
126 /**
127 * Palauttaa kierroksien tiedot merkkijonona
128 *
129 * @return merkkijono jossa tiedot
130 */
131 public String getTiedot() {
132 StringBuilder s = new StringBuilder();
133
134 for (int i = 0; i < kierros.length; i++) {
135 s.append("Kierros " + (i+1) + "\n");
136 s.append(kierros[i].getTiedot());
137 s.append("\n\n");
138 }
139
140 return s.toString();
141 }
142
143 }
144
145
146 /**
147 * Luokka yhtä mäkihypyn kilpailijaa varten.
148 * Sisältää mm. tuloksen.
149 */
150 public static class Kilpailija {
151 private String nimi;
152 private int nro;
153 private final Tulos tulos = new Tulos();
154
155
156 /**
157 * Kilpailijan alustaminen
158 *
159 * @param nimi kilpailijan nimi
160 * @param nro kilpailijan numero
161 */
162 public Kilpailija(String nimi, int nro) {
163 this.nimi = nimi;
164 this.nro = nro;
165 }
166
167 /**
168 * Tulostaa kilpailijan tiedot ja tulokset
169 */
170 public void tulosta() {
171 System.out.println(nimi + ", " + nro);
172 System.out.println(this.tulos.getTiedot());
173
174 }
175
176 /**
177 * Pituuden asettaminen
178 *
179 * @param kierrosNro
180 * @param pituus
181 */
182 public void setPituus(int kierrosNro, double pituus) {
183 tulos.setPituus(kierrosNro-1, pituus);
184 }
185
186 /**
187 * @param kierrosNro
188 * @param tuomariNro
189 * @param pisteet
190 */
191 public void setTuomari(int kierrosNro, int tuomariNro, double pisteet) {
192 this.tulos.setTuomari(kierrosNro-1, tuomariNro-1, pisteet);
193 }
194
195
196 }
197
198 /**
199 * Tyhjä aliohjelma kilpailua varten
200 */
201 public void kisa() {
202 Kilpailija toni = new Kilpailija("Toni",3);
203 Kilpailija matti = new Kilpailija("Matti",7);
204 toni.tulosta();
205 matti.tulosta();
206
207 toni.setPituus(1,107);
208 toni.setPituus(2,100);
209 toni.setTuomari(2,1,19.0);
210 toni.setTuomari(2,2,18.0);
211 toni.setTuomari(2,3,19.5);
212 toni.setTuomari(2,4,18.0);
213 toni.setTuomari(2,5,20.0);
214
215 matti.setPituus(1,125);
216 matti.setTuomari(1,1,20.0);
217 matti.setTuomari(1,2,20.0);
218 matti.setTuomari(1,3,20.0);
219 matti.setTuomari(1,4,20.0);
220 matti.setPituus(2,109);
221 matti.setTuomari(2,1,20.0);
222 matti.setTuomari(2,2,20.0);
223 matti.setTuomari(2,3,20.0);
224 matti.setTuomari(2,4,20.0);
225
226 toni.tulosta();
227 matti.tulosta();
228 }
229
230 /**
231 * Testataan luokan kääntymistä
232 * @param args ei käytössä
233 */
234 public static void main(String[] args) {
235 Makihyppy kisa = new Makihyppy();
236 kisa.kisa();
237 }
238
239
240 }
241