| Jasen.java |
1 package kerho;
2
3 import java.io.*;
4
5 import static kanta.HetuTarkistus.*;
6
7 /**
8 * Kerhon jäsen joka osaa mm. itse huolehtia tunnusNro:staan.
9 *
10 * @author Vesa Lappalainen
11 * @version 1.0, 22.02.2003
12 */
13 public class Jasen {
14 private int tunnusNro;
15 private String nimi = "";
16 private String hetu = "";
17 private String katuosoite = "";
18 private String postinumero = "";
19 private String postiosoite = "";
20 private String kotipuhelin = "";
21 private String tyopuhelin = "";
22 private String autopuhelin = "";
23 private int liittymisvuosi = 0;
24 private double jmaksu = 0;
25 private double maksu = 0;
26 private String lisatietoja = "";
27
28 private static int seuraavaNro = 1;
29
30
31 /**
32 * @return jäsenen nimi
33 * @example
34 * <pre name="test">
35 * Jasen aku = new Jasen();
36 * aku.vastaaAkuAnkka();
37 * aku.getNimi() =R= "Ankka Aku .*";
38 * </pre>
39 */
40 public String getNimi() {
41 return nimi;
42 }
43
44
45 /**
46 * Apumetodi, jolla saadaan täytettyä testiarvot jäsenelle.
47 * @param apuhetu hetu joka annetaan henkilölle
48 */
49 public void vastaaAkuAnkka(String apuhetu) {
50 nimi = "Ankka Aku " + rand(1000, 9999);
51 hetu = apuhetu;
52 katuosoite = "Ankkakuja 6";
53 postinumero = "12345";
54 postiosoite = "ANKKALINNA";
55 kotipuhelin = "12-1234";
56 tyopuhelin = "";
57 autopuhelin = "";
58 liittymisvuosi = 1996;
59 jmaksu = 50.00;
60 maksu = 30.00;
61 lisatietoja = "Velkaa Roopelle";
62 }
63
64
65 /**
66 * Apumetodi, jolla saadaan täytettyä testiarvot jäsenelle.
67 * Henkilötunnus arvotaan, jotta kahdella jäsenellä ei olisi
68 * samoja tietoja.
69 */
70 public void vastaaAkuAnkka() {
71 String apuhetu = arvoHetu();
72 vastaaAkuAnkka(apuhetu);
73 }
74
75
76 /**
77 * Tulostetaan henkilön tiedot
78 * @param out tietovirta johon tulostetaan
79 */
80 public void tulosta(PrintStream out) {
81 out.println(String.format("%03d", tunnusNro, 3) + " " + nimi + " "
82 + hetu);
83 out.println(" " + katuosoite + " " + postinumero + " " + postiosoite);
84 out.println(" k: " + kotipuhelin +
85 " t: " + tyopuhelin +
86 " a: " + autopuhelin);
87 out.print(" Liittynyt " + liittymisvuosi + ".");
88 out.println(" Jäsenmaksu " + String.format("%4.2f", jmaksu) + " e." +
89 " Maksettu " + String.format("%4.2f", maksu) + " e.");
90 out.println(" " + lisatietoja);
91 }
92
93
94 /**
95 * Tulostetaan henkilön tiedot
96 * @param os tietovirta johon tulostetaan
97 */
98 public void tulosta(OutputStream os) {
99 tulosta(new PrintStream(os));
100 }
101
102
103 /**
104 * Antaa jäsenelle seuraavan rekisterinumeron.
105 * @return jäsenen uusi tunnusNro
106 * @example
107 * <pre name="test">
108 * Jasen aku1 = new Jasen();
109 * aku1.getTunnusNro() === 0;
110 * aku1.rekisteroi();
111 * Jasen aku2 = new Jasen();
112 * aku2.rekisteroi();
113 * int n1 = aku1.getTunnusNro();
114 * int n2 = aku2.getTunnusNro();
115 * n1 === n2-1;
116 * </pre>
117 */
118 public int rekisteroi() {
119 tunnusNro = seuraavaNro;
120 seuraavaNro++;
121 return tunnusNro;
122 }
123
124
125 /**
126 * Palauttaa jäsenen tunnusnumeron.
127 * @return jäsenen tunnusnumero
128 */
129 public int getTunnusNro() {
130 return tunnusNro;
131 }
132
133
134 /**
135 * Testiohjelma jäsenelle.
136 * @param args ei käytössä
137 */
138 public static void main(String args[]) {
139 Jasen aku = new Jasen(), aku2 = new Jasen();
140 aku.rekisteroi();
141 aku2.rekisteroi();
142 aku.tulosta(System.out);
143 aku.vastaaAkuAnkka();
144 aku.tulosta(System.out);
145
146 aku2.vastaaAkuAnkka();
147 aku2.tulosta(System.out);
148
149 aku2.vastaaAkuAnkka();
150 aku2.tulosta(System.out);
151 }
152
153 }
154