summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/examples/Gehaltsberechnung.java
blob: 71e6d830f8c56fb829e7cd113a1be5af75f23ae1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/* Gehaltsberechnung.java */

import java.util.Date;

abstract class Mitarbeiter
{
  int persnr;
  String name;
  Date eintritt;

  public Mitarbeiter()
  {
  }

  public abstract double monatsBrutto();
}

class Arbeiter
extends Mitarbeiter
{
  double stundenlohn;
  double anzahlstunden;
  double ueberstundenzuschlag;
  double anzahlueberstunden;
  double schichtzulage;

  public double monatsBrutto()
  {
    return stundenlohn*anzahlstunden+
           ueberstundenzuschlag*anzahlueberstunden+
           schichtzulage;
  }
}

class Angestellter
extends Mitarbeiter
{
  double grundgehalt;
  double ortszuschlag;
  double zulage;

  public double monatsBrutto()
  {
    return grundgehalt+
           ortszuschlag+
           zulage;
  }
}

class Manager
extends Mitarbeiter
{
  double fixgehalt;
  double provision1;
  double provision2;
  double umsatz1;
  double umsatz2;

  public double monatsBrutto()
  {
    return fixgehalt+
           umsatz1*provision1/100+
           umsatz2*provision2/100;
  }
}

public class Gehaltsberechnung
{
  private static final int ANZ_MA = 100;
  private static Mitarbeiter[] ma;
  private static double bruttosumme;

  public static void main(String[] args)
  {
    ma = new Mitarbeiter[ANZ_MA];

    //Mitarbeiter-Array f�llen, z.B.
    //ma[0] = new Manager();
    //ma[1] = new Arbeiter();
    //ma[2] = new Angestellter();
    //...

    //Bruttosumme berechnen
    bruttosumme = 0.0;
    for (int i=0; i<ma.length; ++i) {
      bruttosumme += ma[i].monatsBrutto();
    }
    System.out.println("Bruttosumme = "+bruttosumme);
  }
}