Programmierung Modellierung mit Vererbung Goedicke Programmierung: Modellierung mit Vererbung
Mac Moneysacs Firma FilthyRichINC ist inzwischen zu einem Konzern angewachsen. Der Konzern hat eine Steuernummer und einen Namen. Der Konzern hat mehrere diese konnen eine eigene Steuernummer haben oder die des Konzerns verwenden. Jedes Unternehmen muss seine sowie seinen Namen ausgeben konnen. Jedes Unternehmen besitzt eine Rechtsform. Damit sich Mac Moneysac nicht alle moglichen Rechtsformen merken muss, haben
Unternehmen
Steuernummer
seine Unternehmen nur eine dieser drei Rechtsformen: Die Mitarbeiter der Unternehmen haben einen
.
und jeder muss naturlich . Die Mitarbeiter
. Jedem
in dem Unternehmen arbeiten. Das Unternehmen kann
. Mac Moneysac mochte auf Knopfdruck wissen wie
werden unterschieden in und ist eingetragen welche
. Dabei gibt ein
.
Jeder Mitarbeiter hat ein .
Jeder Mitarbeiter kann sein
Klassen Attribute Methoden Hinweise
Konzern
Steuernummer
Name
Unternehmen
Name
Steuernummer (entweder eigene oder von Konzern) Rechtsform (GmbH, OHG, AG)
Liste von Mitarbeitern
gibNameAus gibSteuernummerAus arbeitetAlle() gibGesamtesGehaltAus()
Mitarbeiter
Vorname Nachname Grundgehalt
arbeiten() nenneGehalt Facharbeiter
Ich arbeite jetzt fur das Unternehmen NAME.
Teamleiter
Liste von Facharbeitern
Ich leite ein Team im Unternehmen NAME.
import java.util.ArrayList; import java.util.List;
public class Konzern {
protected String steuernummer = 1A;
protected String name;
/* ware Name hier eingetragen, wurde dieser durch Konstruktor immer
* uberschrieben werden */
private List
public Konzern(String name) { this.name = name;
}
public void gibSteuernummerAus() { System.out.println(steuernummer);
. In jedem
Ich leite ein Team im Unternehmen NAME
GmBH, OHG, AG
Vor- und Nachnamen
Facharbeiter aus Ich arbeite jetzt fur das Unternehmen NAME und ein Teamleiter
arbeiten
Facharbeiter
Teamleiter
Teamleiter sind Facharbeiter unterstellt
Unternehmen
Mitarbeiter
alle Mitarbeiter
zum Arbeiten auffordern
Grundgehalt
Bei Teamleitern kommen zum Grundgehalt noch 10 Euro pro unterstelltem
Facharbeiter hinzu.
aktuelles Gehalt nennen
viel Gehalt er allen Mitarbeiter eines Unternehmens zahlen muss.
Seite 1 von 4
Programmierung Modellierung mit Vererbung Goedicke
}
public void addUnternehmen(Unternehmen unternehmen) { listeDerUnternehmen.add(unternehmen);
} }
import java.util.ArrayList; import java.util.List;
public class Unternehmen extends Konzern{ private Rechtsform rechtsform;
private List
public Unternehmen(String name, Rechtsform rechtsform) { super(name);
this.rechtsform = rechtsform;
}
public Unternehmen(String name, Rechtsform rechtsform, String steuernummer) { super(name);
this.rechtsform = rechtsform;
this.steuernummer = steuernummer;
}
public void gibNameAus() { System.out.println(name);
}
public void arbeitetAlle() {
for (Mitarbeiter mitarbeiter : listeDerMitarbeiter) {
/* Name der Variable, die nacheinander jeden einzelnen Eintrag in
* der Liste oder dem Array durchgeht: lesende Schleife */
System.out.println(mitarbeiter.getVorname() + + mitarbeiter.getNachname() +
sagt: +mitarbeiter.arbeite() + this.name); }
}
public int gibGesamtesGehaltAus() {
int gesamtkosten = 0;
for (Mitarbeiter mitarbeiter : listeDerMitarbeiter) {
gesamtkosten += mitarbeiter.nenneGehalt();
}
return gesamtkosten; }
}
public enum Rechtsform {GmbH, OHG, AG}
public abstract class Mitarbeiter { protected String vorname; protected String nachname; protected int grundgehalt;
// protected String unternehmensname;
/* protected, damit Subklassen die Attribute erben konnen;
* nicht private + Getter und Seter, weil Fachleiter und Teamleiter von Mitarbeiter
* erben sollen. */
/* Abstrakte Klasse, weil jeder Mitarbeiter entweder Teamleiter oder Fachleiter ist * Es gibt keine Mitarbeiter, die nur Mitarbeiter sind. */
Seite 2 von 4
Programmierung Modellierung mit Vererbung Goedicke
abstract public int nenneGehalt(); abstract public String arbeite();
public Mitarbeiter(String vorname, String nachname, int grundgehalt) { this.vorname = vorname;
this.nachname = nachname;
this.grundgehalt = grundgehalt;
}
public String getVorname() { return vorname;
}
public String getNachname() { return nachname;
} }
public class Facharbeiter extends Mitarbeiter {
public Facharbeiter (String vorname, String nachname, int grundgehalt) { super (vorname, nachname, grundgehalt);
}
/* Durch Erstellung eines Konstruktors in Mitarbeiter, ist der
* default-Konstruktor nicht mehr vorhanden in Teamleiter und
* Facharbeiter. */
@Override
public int nenneGehalt() { return grundgehalt;
}
@Override
public String arbeite() {
return Ich arbeite fur das Unternehmen.;
} }
import java.util.ArrayList;
// import java.util.* importiert alles aus java.util, aber unschon import java.util.List;
public class Teamleiter extends Mitarbeiter {
/* private int gesamtGehalt = grundgehalt + 10 * anzahlFacharbeiter.size(); Problem, dass es nur einmal am Anfang passieren wurde. */
private List
public Teamleiter(String vorname, String nachname, int grundgehalt) { super(vorname, nachname, grundgehalt);
}
public void addFacharbeiter(Facharbeiter facharbeiter) { anzahlFacharbeiter.add(facharbeiter);
}
@Override
/* Methode die in Mitarbeiter vorhanden ist, wird in
den spezifischen Klassen uberschrieben / implementiert.
Optional. */
public int nenneGehalt() {
return grundgehalt + 10 * anzahlFacharbeiter.size();
}
Seite 3 von 4
Programmierung Modellierung mit Vererbung Goedicke
@Override
public String arbeite() {
return Ich leite ein Team im Unternehmen ;
} }
Seite 4 von 4
Reviews
There are no reviews yet.