Aufgabe 3
This commit is contained in:
@ -1,15 +0,0 @@
|
||||
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
|
||||
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
//TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text
|
||||
// to see how IntelliJ IDEA suggests fixing it.
|
||||
System.out.printf("Hello and welcome!");
|
||||
|
||||
for (int i = 1; i <= 5; i++) {
|
||||
//TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
|
||||
// for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
|
||||
System.out.println("i = " + i);
|
||||
}
|
||||
}
|
||||
}
|
2
src/module-info.java
Normal file
2
src/module-info.java
Normal file
@ -0,0 +1,2 @@
|
||||
module tinf24cs1.fix {
|
||||
}
|
63
src/personen/Angestellter.java
Normal file
63
src/personen/Angestellter.java
Normal file
@ -0,0 +1,63 @@
|
||||
package personen;
|
||||
|
||||
/**
|
||||
* Die Klasse Angestellter repräsentiert einen Angestellten einer Firma.
|
||||
* Sie erbt von der abstrakten Klasse Person und implementiert das Interface IMitarbeiter.
|
||||
*/
|
||||
public class Angestellter extends Person implements IMitarbeiter {
|
||||
|
||||
/**
|
||||
* Die Personalnummer des Angestellten
|
||||
*/
|
||||
private Integer personalNr;
|
||||
|
||||
/**
|
||||
* Konstruktor für einen Angestellten
|
||||
* @param name Der Name des Angestellten
|
||||
* @param personalNr Die Personalnummer des Angestellten
|
||||
*/
|
||||
public Angestellter(String name, Integer personalNr) {
|
||||
super(name);
|
||||
this.personalNr = personalNr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Überschreibt die ererbte Methode druckeObjekt
|
||||
*/
|
||||
@Override
|
||||
public void druckeObjekt() {
|
||||
System.out.println("Der Angestellte heisst " + this.name + ", hat die Personalnr. " +
|
||||
this.personalNr + " und ist einer von " + Person.anzahl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementiert die Methode aus dem Interface IMitarbeiter
|
||||
*/
|
||||
@Override
|
||||
public void arbeitenOhneMurren() {
|
||||
System.out.println("Ich bin Angestellter " + this.name + " und arbeite ohne Murren und Knurren!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Personalnummer des Angestellten aus
|
||||
*/
|
||||
public void druckePersonalNr() {
|
||||
System.out.println("Personalnr. " + this.personalNr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter-Methode für die Personalnummer
|
||||
* @return Die Personalnummer des Angestellten
|
||||
*/
|
||||
public Integer getPersonalNr() {
|
||||
return personalNr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter-Methode für die Personalnummer
|
||||
* @param personalNr Die neue Personalnummer
|
||||
*/
|
||||
public void setPersonalNr(Integer personalNr) {
|
||||
this.personalNr = personalNr;
|
||||
}
|
||||
}
|
120
src/personen/DHStudent.java
Normal file
120
src/personen/DHStudent.java
Normal file
@ -0,0 +1,120 @@
|
||||
package personen;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* DHStudent-Klasse repräsentiert einen DH-Studenten (Dualer Hochschule Student)
|
||||
* Erbt von Student und implementiert IMitarbeiter
|
||||
*
|
||||
* @author Ihr Name
|
||||
* @version 1.0
|
||||
*/
|
||||
public class DHStudent extends Student implements IMitarbeiter {
|
||||
|
||||
/**
|
||||
* Der Kurs des DH-Studenten
|
||||
*/
|
||||
private String kurs;
|
||||
|
||||
/**
|
||||
* Konstruktor für DHStudent
|
||||
*
|
||||
* @param name Der Name des DH-Studenten
|
||||
* @param kurs Der Kurs des DH-Studenten
|
||||
*/
|
||||
public DHStudent(String name, String kurs) {
|
||||
super(name);
|
||||
this.kurs = kurs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementierung der Methode arbeitenOhneMurren aus dem Interface IMitarbeiter
|
||||
*/
|
||||
@Override
|
||||
public void arbeitenOhneMurren() {
|
||||
System.out.println("Ich bin der DHStudent " + this.name + " und gehe daher immer freudig meine Arbeit an!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Namen des Kurses ohne Zeilenumbruch aus und ruft die ererbte Methode druckeObjekt mit Parameter true auf
|
||||
*/
|
||||
public void druckeKurs() {
|
||||
System.out.print(this.kurs);
|
||||
this.druckeObjekt(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter-Methode für den Kurs
|
||||
*
|
||||
* @return Der Kurs des DH-Studenten
|
||||
*/
|
||||
public String getKurs() {
|
||||
return kurs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter-Methode für den Kurs
|
||||
*
|
||||
* @param kurs Der neue Kurs des DH-Studenten
|
||||
*/
|
||||
public void setKurs(String kurs) {
|
||||
this.kurs = kurs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Überschreibt die toString-Methode für bessere Ausgabe
|
||||
*
|
||||
* @return String-Repräsentation mit Kurs, Name und Semester
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.kurs + " " + this.name + " " + this.semester + ".Sem.";
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementierung der default-Methode inKantineEssen aus IMitarbeiter
|
||||
*/
|
||||
@Override
|
||||
public void inKantineEssen() {
|
||||
System.out.println("Wie lecker doch das Essen bei meiner Ausbildungsfirma schmeckt!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Innere Klasse für Sortierung nach Kurs und Name
|
||||
*/
|
||||
public class ComparatorKursName implements Comparator<DHStudent> {
|
||||
@Override
|
||||
public int compare(DHStudent dhs1, DHStudent dhs2) {
|
||||
int kursVergleich = dhs1.kurs.compareTo(dhs2.kurs);
|
||||
if (kursVergleich != 0) {
|
||||
return kursVergleich;
|
||||
}
|
||||
return dhs1.name.compareTo(dhs2.name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Innere Klasse für Sortierung nach Semester, Name und Kurs
|
||||
*/
|
||||
public class ComparatorSemesterNameKurs implements Comparator<DHStudent> {
|
||||
@Override
|
||||
public int compare(DHStudent dhs1, DHStudent dhs2) {
|
||||
int semesterVergleich = Integer.compare(dhs1.semester, dhs2.semester);
|
||||
if (semesterVergleich != 0) {
|
||||
return semesterVergleich;
|
||||
}
|
||||
int nameVergleich = dhs1.name.compareTo(dhs2.name);
|
||||
if (nameVergleich != 0) {
|
||||
return nameVergleich;
|
||||
}
|
||||
return dhs1.kurs.compareTo(dhs2.kurs);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Statische Methode druckeAnzahl (für spätere Aufgabenteile)
|
||||
*/
|
||||
public static void druckeAnzahl() {
|
||||
System.out.println("DHStudent.anzahl = " + Person.anzahl);
|
||||
}
|
||||
}
|
32
src/personen/Firma.java
Normal file
32
src/personen/Firma.java
Normal file
@ -0,0 +1,32 @@
|
||||
package personen;
|
||||
|
||||
/**
|
||||
* Die Klasse Firma repräsentiert eine Firma mit einem Namen.
|
||||
* Sie stellt Methoden zur Ausgabe des Firmennamens zur Verfügung.
|
||||
*
|
||||
* @author [Ihr Name]
|
||||
* @version 1.0
|
||||
*/
|
||||
public class Firma {
|
||||
|
||||
/**
|
||||
* Der Name der Firma
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* Konstruktor zur Erstellung einer neuen Firma
|
||||
*
|
||||
* @param name Der Name der Firma
|
||||
*/
|
||||
public Firma(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Text "Der Firmenname lautet" sowie den Firmennamen aus
|
||||
*/
|
||||
public void druckeName() {
|
||||
System.out.println("Der Firmenname lautet " + this.name);
|
||||
}
|
||||
}
|
13
src/personen/IKlausurSchreiber.java
Normal file
13
src/personen/IKlausurSchreiber.java
Normal file
@ -0,0 +1,13 @@
|
||||
package personen;
|
||||
|
||||
/**
|
||||
* Interface für Klausurschreiber
|
||||
* Definiert die Fähigkeit, eine Klausur zu schreiben
|
||||
*/
|
||||
public interface IKlausurSchreiber {
|
||||
|
||||
/**
|
||||
* Methode zum Schreiben einer Klausur
|
||||
*/
|
||||
void klausurSchreiben();
|
||||
}
|
13
src/personen/IMitarbeiter.java
Normal file
13
src/personen/IMitarbeiter.java
Normal file
@ -0,0 +1,13 @@
|
||||
package personen;
|
||||
|
||||
/**
|
||||
* Interface für die Mitarbeiter
|
||||
* Definiert die Fähigkeit, ohne Murren zu arbeiten
|
||||
*/
|
||||
public interface IMitarbeiter {
|
||||
|
||||
/**
|
||||
* Methode für die Arbeit ohne Murren
|
||||
*/
|
||||
void arbeitenOhneMurren();
|
||||
}
|
59
src/personen/Lehrbeauftragter.java
Normal file
59
src/personen/Lehrbeauftragter.java
Normal file
@ -0,0 +1,59 @@
|
||||
package personen;
|
||||
|
||||
/**
|
||||
* Klasse für Lehrbeauftragte, die Klausuren durchführen können
|
||||
*/
|
||||
public class Lehrbeauftragter {
|
||||
|
||||
/**
|
||||
* Name des Lehrbeauftragten
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* Array der Prüflinge für die nächste Klausur
|
||||
*/
|
||||
private IKlausurSchreiber[] prueflinge;
|
||||
|
||||
/**
|
||||
* Konstruktor für Lehrbeauftragter
|
||||
* @param name Name des Lehrbeauftragten
|
||||
*/
|
||||
public Lehrbeauftragter(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Namen des Lehrbeauftragten zurück
|
||||
* @return Name des Lehrbeauftragten
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public IKlausurSchreiber[] getPrueflinge() {
|
||||
return prueflinge;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt das Array der Prüflinge für die nächste Klausur
|
||||
* @param prueflinge Array mit den zu prüfenden Studenten
|
||||
*/
|
||||
public void setPrueflinge(IKlausurSchreiber[] prueflinge) {
|
||||
this.prueflinge = prueflinge;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lässt alle im Array prueflinge aufgeführten Studenten eine Klausur schreiben
|
||||
*/
|
||||
public void lasseKlausurSchreiben() {
|
||||
// Enhanced for-loop (for-each) ab Java 5
|
||||
for (IKlausurSchreiber pruefling : prueflinge) {
|
||||
pruefling.klausurSchreiben();
|
||||
}
|
||||
}
|
||||
}
|
47
src/personen/Person.java
Normal file
47
src/personen/Person.java
Normal file
@ -0,0 +1,47 @@
|
||||
package personen;
|
||||
|
||||
/**
|
||||
* Abstrakte Klasse Person als Basisklasse für verschiedene Personentypen.
|
||||
* Verwaltet eine Klassenvariable zur Zählung aller erstellten Personen.
|
||||
*/
|
||||
public abstract class Person {
|
||||
|
||||
/**
|
||||
* Klassenvariable zur Zählung aller erstellten Personen
|
||||
*/
|
||||
private static int anzahl = 0;
|
||||
|
||||
/**
|
||||
* Name der Person
|
||||
*/
|
||||
protected String name;
|
||||
|
||||
/**
|
||||
* Konstruktor der abstrakten Klasse Person
|
||||
* @param name Der Name der Person
|
||||
*/
|
||||
public Person(String name) {
|
||||
this.name = name;
|
||||
Person.anzahl++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Abstrakte Methode druckeObjekt - muss in abgeleiteten Klassen implementiert werden
|
||||
*/
|
||||
public abstract void druckeObjekt();
|
||||
|
||||
/**
|
||||
* Klassenmethode zur Ausgabe der aktuellen Personenanzahl
|
||||
*/
|
||||
public static void druckeAnzahl() {
|
||||
System.out.println("Person.anzahl: " + Person.anzahl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter-Methode für den Namen
|
||||
* @return Der Name der Person
|
||||
*/
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
129
src/personen/Student.java
Normal file
129
src/personen/Student.java
Normal file
@ -0,0 +1,129 @@
|
||||
package personen;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* Die Student-Klasse erbt von Person und implementiert IKlausurSchreiber.
|
||||
* Studenten haben eine zufällige Semesterzahl und BAfG-Schulden.
|
||||
*/
|
||||
public class Student extends Person implements IKlausurSchreiber, Cloneable {
|
||||
|
||||
/** Die Semesterzahl des Studenten */
|
||||
protected int semester;
|
||||
|
||||
/** Die BAfG-Schulden des Studenten */
|
||||
protected double bafoegSchulden;
|
||||
|
||||
/**
|
||||
* Konstruktor für Student
|
||||
* @param name Der Name des Studenten
|
||||
*/
|
||||
public Student(String name) {
|
||||
super(name);
|
||||
|
||||
// Zufallsgenerator mit verzögertem Startwert
|
||||
try {
|
||||
Thread.sleep(10);
|
||||
} catch (InterruptedException e) {
|
||||
// Exception wird abgefangen
|
||||
}
|
||||
|
||||
Random random = new Random(System.currentTimeMillis());
|
||||
|
||||
// Semesterzahl zuweisen: normale Studenten 1-12, DH-Studenten 1-6
|
||||
if (this instanceof DHStudent) {
|
||||
this.semester = random.nextInt(6) + 1;
|
||||
this.bafoegSchulden = 0.00;
|
||||
} else {
|
||||
this.semester = random.nextInt(12) + 1;
|
||||
this.bafoegSchulden = this.semester * 3000.00;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Überschreibt die abstrakte Methode aus Person
|
||||
*/
|
||||
@Override
|
||||
public void druckeObjekt() {
|
||||
System.out.println("Der Student heisst " + this.name + ", ist im " +
|
||||
this.semester + ". Sem. und hat " + this.bafoegSchulden +
|
||||
" EUR Schulden wegen Bafoeg.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Überladene Version von druckeObjekt
|
||||
* @param kurz Bei true wird nur Name und Semester ausgegeben
|
||||
*/
|
||||
public void druckeObjekt(boolean kurz) {
|
||||
if (kurz) {
|
||||
System.out.println("Der Student heisst " + this.name + " " +
|
||||
this.semester + ". Sem.");
|
||||
} else {
|
||||
druckeObjekt();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementierung der Methode aus IKlausurSchreiber
|
||||
*/
|
||||
@Override
|
||||
public void klausurSchreiben() {
|
||||
String dh = (this instanceof DHStudent) ? "DH-" : "";
|
||||
System.out.println("Ich bin ein " + dh + "Student namens " + this.name +
|
||||
" und schreibe meine Klausuren perfekt!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter-Methode für das Semester
|
||||
* @return Die Semesterzahl
|
||||
*/
|
||||
public int getSemester() {
|
||||
return this.semester;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Semesterzahl aus
|
||||
*/
|
||||
public void druckeSemester() {
|
||||
System.out.println("Semesterzahl: " + this.semester);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clone-Methode für das Klonen von Studenten
|
||||
* @return Ein geklonter Student
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
try {
|
||||
Student geklonterStudent = (Student) super.clone();
|
||||
Person.anzahl++; // Nur bei erfolgreichem Klonen erhöhen
|
||||
return geklonterStudent;
|
||||
} catch (CloneNotSupportedException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter für BAfG-Schulden (wird später für GUI benötigt)
|
||||
* @return Die BAfG-Schulden
|
||||
*/
|
||||
public double getBafoegSchulden() {
|
||||
return this.bafoegSchulden;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter für BAfG-Schulden (wird später für GUI benötigt)
|
||||
* @param bafoegSchulden Die neuen BAfG-Schulden
|
||||
*/
|
||||
public void setBafoegSchulden(double bafoegSchulden) {
|
||||
this.bafoegSchulden = bafoegSchulden;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter für Semester (wird später für GUI benötigt)
|
||||
* @param semester Das neue Semester
|
||||
*/
|
||||
public void setSemester(int semester) {
|
||||
this.semester = semester;
|
||||
}
|
||||
}
|
1
src/personen/package-info.java
Normal file
1
src/personen/package-info.java
Normal file
@ -0,0 +1 @@
|
||||
package personen;
|
Reference in New Issue
Block a user