1   // Välikokeen Luokkatehtävän (minimi)mallivastaus.
2   // tekijä: Risto Moilanen
3   class Sotilas{
4     private String nimi;
5     private Sotilas esimies;
6     private int alaisia = 0;
7     public Sotilas(String n) {
8       nimi = n;
9     }
10  
11    public String getNimi() { return nimi; }
12  
13    // Eli kaksi seuraavaa metodia tekevät saman asian..
14    public void lisääAlainen(Sotilas s) {
15      s.esimies = this;
16      alaisia++;
17    }
18  
19    public void setEsiMies(Sotilas s) {
20      s.alaisia++;
21      esimies = s;
22    }
23  
24    public void tulosta() {
25      System.out.print("Olen " + nimi);
26      if ( esimies != null )
27        System.out.print(", esimieheni on " + esimies.getNimi());
28      if ( alaisia > 0 )
29        System.out.println(" ja minulla on " + alaisia + " alaista.");
30      else System.out.println(" ja minulla ei ole yhtään alaista.");
31    }
32  
33    public static void main(String[] args) {
34      Sotilas tarja = new Sotilas("Tarja");
35      Sotilas kentsu = new Sotilas("Kentsu Kenokaula");
36      Sotilas luutnantti = new Sotilas("Luti Luutnantti");
37      Sotilas korppi = new Sotilas("Korppi Korpraali");
38      Sotilas alokas = new Sotilas("Alokas Nönnönnöö");
39      // Piirrä ensimmäinen kuva tästä vaiheesta
40      tarja.lisääAlainen(kentsu);    // Voisi kutsua myös kentsu.setEsiMies(tarja):
41      luutnantti.setEsiMies(kentsu);
42      korppi.setEsiMies(luutnantti);
43      alokas.setEsiMies(luutnantti);
44      // Piirrä toinen kuva tästä vaiheesta
45      tarja.tulosta();
46      kentsu.tulosta();
47      luutnantti.tulosta();
48      korppi.tulosta();
49      alokas.tulosta();
50    }
51  }
52  
53