CS计算机代考程序代写 Java ER Programmierung Modellierung mit Vererbung Goedicke Programmierung: Modellierung mit Vererbung
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 können eine eigene Steuernummer haben oder die des Konzerns verwenden. Jedes Unternehmen muss seine sowie seinen Namen ausgeben können. Jedes Unternehmen besitzt eine Rechtsform. Damit sich Mac Moneysac nicht alle möglichen Rechtsformen merken muss, haben
Unternehmen
Steuernummer
seine Unternehmen nur eine dieser drei Rechtsformen: Die Mitarbeiter der Unternehmen haben einen
.
und jeder muss natürlich . Die Mitarbeiter
. Jedem
in dem Unternehmen arbeiten. Das Unternehmen kann
. Mac Moneysac möchte 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 für 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;
/* wäre Name hier eingetragen, würde dieser durch Konstruktor immer
* überschrieben 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 für 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 können;
* 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 für das Unternehmen.”;
} }
import java.util.ArrayList;
// import java.util.* importiert alles aus java.util, aber unschön import java.util.List;
public class Teamleiter extends Mitarbeiter {
/* private int gesamtGehalt = grundgehalt + 10 * anzahlFacharbeiter.size(); Problem, dass es nur einmal am Anfang passieren würde. */
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 überschrieben / 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