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