Advertisement
Guest User

Java Beispiel Beziehungen

a guest
Jan 27th, 2016
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.90 KB | None | 0 0
  1. /**
  2.  *
  3.  * @author Knusperpudding
  4.  */
  5. public class Examples {
  6.  
  7.     static class Klasse {
  8.  
  9.         private String bezeichnung;
  10.         private List<Schueler> schueler;
  11.  
  12.         // Klassenkonstruktor: Es wird die Bezeichnung gesetzt und die Schülerliste initialisiert.
  13.         public Klasse(String bezeichnung) {
  14.             this.bezeichnung = bezeichnung;
  15.             this.schueler = new ArrayList<>();
  16.         }
  17.  
  18.         /**
  19.          *
  20.          * @return Gibt die Klassenbezeichnung zurück.
  21.          */
  22.         public String getBezeichnung() {
  23.             return bezeichnung;
  24.         }
  25.  
  26.         /**
  27.          * Fügt einen Schüler einer Klasse hinzu
  28.          *
  29.          * @param schueler hinzuzufügender Schüler
  30.          */
  31.         public void addSchueler(Schueler schueler) {
  32.  
  33.             // Ist ein Schüler noch keiner Klasse zugewiesen oder befindet er sich in einer anderen Klasse
  34.             if (schueler.getKlasse() == null || !schueler.getKlasse().equals(this)) {
  35.  
  36.                 // Der Schüler wird der neuen Klasse zugewiesen
  37.                 this.schueler.add(schueler);
  38.  
  39.                 // Dannach Wird die setKlasse Methode aufgerufen, die ihn aus seiner alten Klasse entfernt und ihm die neue mitteilt
  40.                 schueler.setKlasse(this);
  41.  
  42.             }
  43.         }
  44.  
  45.         public Schueler getSchueler(int i) {
  46.             return schueler.get(i);
  47.         }
  48.  
  49.         public List<Schueler> getSchueler() {
  50.             return schueler;
  51.         }
  52.  
  53.         /**
  54.          * Entfernen eines Schülers aus einer Klasse
  55.          *
  56.          * @param schueler der zu entfernende Schüler
  57.          */
  58.         public void removeSchueler(Schueler schueler) {
  59.  
  60.             // Der Schüler wird aus der Klasse entfernt
  61.             this.schueler.remove(schueler);
  62.             // Und setKlasse teilt es dem Schüler mit
  63.             schueler.setKlasse(null);
  64.         }
  65.  
  66.         /**
  67.          * ermittelt einen Schüler anhand von Vorname und nachname
  68.          *
  69.          * @param vorname Vorname des Schülers
  70.          * @param nachname Nachname des Schülers
  71.          * @return Schüler
  72.          */
  73.         public Schueler getSchueler(String vorname, String nachname) {
  74.             for (Schueler schueler : this.schueler) {
  75.                 if (schueler.getNachname().equals(nachname) && schueler.getVorname().equals(vorname)) {
  76.                     return getSchueler(this.schueler.indexOf(schueler));
  77.                 }
  78.             }
  79.             return null;
  80.         }
  81.     ;
  82.  
  83.     }
  84.  
  85. static class Schueler {
  86.  
  87.         private String vorname;
  88.         private String nachname;
  89.         private Klasse klasse;
  90.  
  91.         /**
  92.          * Konstruktor setzt Vor und Nachname des Schülers
  93.          *
  94.          * @param vorname
  95.          * @param nachname
  96.          */
  97.         public Schueler(String vorname, String nachname) {
  98.             this.vorname = vorname;
  99.             this.nachname = nachname;
  100.         }
  101.  
  102.         /**
  103.          * Setzt die Klasse eines Schülers.
  104.          *
  105.          * @param klasse
  106.          */
  107.         public void setKlasse(Klasse klasse) {
  108.  
  109.             // Ist der Schüler bereits einer Klasse zugewiesen
  110.             if (this.klasse != null) {
  111.                 //  wird der Schüler in der Klasse ermittelt
  112.                 Schueler schueler = this.klasse.getSchueler(this.getVorname(), this.getNachname());
  113.  
  114.                 // Wird er dort gefunden
  115.                 if (schueler != null) {
  116.                     // Wird er dort entfernt
  117.                     this.klasse.removeSchueler(schueler);
  118.                 }
  119.             }
  120.  
  121.             // Ist die neue Klasse eine Klasse und in dieser existiert der Schüler noch nicht
  122.             if (klasse != null && klasse.getSchueler(this.getVorname(), this.getNachname()) == null) {
  123.                 // Wird er dort hinzugefügt
  124.                 klasse.addSchueler(this);
  125.             }
  126.  
  127.             // und dem Schüler wird die Klasse mitgeteilt
  128.             this.klasse = klasse;
  129.         }
  130.  
  131.         public Klasse getKlasse() {
  132.             return this.klasse;
  133.         }
  134.  
  135.         public String getNachname() {
  136.             return nachname;
  137.         }
  138.  
  139.         public String getVorname() {
  140.             return vorname;
  141.         }
  142.  
  143.     }
  144.  
  145.     public static void main(String[] args) {
  146.         Klasse zehnteKlasse = new Klasse("10A");
  147.         Klasse elfteKlasse = new Klasse("11B");
  148.         Schueler schueler1 = new Schueler("Klaus", "Muster");
  149.         Schueler schueler2 = new Schueler("Klara", "Hampelmann");
  150.         zehnteKlasse.addSchueler(schueler1);
  151.         zehnteKlasse.addSchueler(schueler2);
  152.  
  153.         System.out.println("Zehnte Klasse: " + zehnteKlasse.getBezeichnung());
  154.         System.out.println("Schüler:");
  155.         for (Schueler schueler : zehnteKlasse.getSchueler()) {
  156.             System.out.println(schueler.getVorname() + " " + schueler.getNachname());
  157.         }
  158.         System.out.println("");
  159.         System.out.println("Elfte Klasse: " + elfteKlasse.getBezeichnung());
  160.         System.out.println("Schüler:");
  161.         for (Schueler schueler : elfteKlasse.getSchueler()) {
  162.             System.out.println(schueler.getVorname() + " " + schueler.getNachname());
  163.         }
  164.         System.out.println("");
  165.         System.out.println("******");
  166.         System.out.println("Schuljahreswechsel");
  167.         System.out.println("******");
  168.         System.out.println("");
  169.         elfteKlasse.addSchueler(schueler1);
  170.  
  171.         System.out.println("Zehnte Klasse: " + zehnteKlasse.getBezeichnung());
  172.         System.out.println("Schüler:");
  173.         for (Schueler schueler : zehnteKlasse.getSchueler()) {
  174.             System.out.println(schueler.getVorname() + " " + schueler.getNachname());
  175.         }
  176.         System.out.println("");
  177.         System.out.println("Elfte Klasse: " + elfteKlasse.getBezeichnung());
  178.         System.out.println("Schüler:");
  179.         for (Schueler schueler : elfteKlasse.getSchueler()) {
  180.             System.out.println(schueler.getVorname() + " " + schueler.getNachname());
  181.         }
  182.  
  183.         System.out.println("");
  184.         System.out.println("******");
  185.         System.out.println("Nachträgliche Klassenänderung");
  186.         System.out.println("Klara wird doch in die 11B Versetzt");
  187.         System.out.println("******");
  188.         System.out.println("");
  189.  
  190.         schueler2.setKlasse(elfteKlasse);
  191.  
  192.         System.out.println("Zehnte Klasse: " + zehnteKlasse.getBezeichnung());
  193.         System.out.println("Schüler:");
  194.         for (Schueler schueler : zehnteKlasse.getSchueler()) {
  195.             System.out.println(schueler.getVorname() + " " + schueler.getNachname());
  196.         }
  197.         System.out.println("");
  198.         System.out.println("Elfte Klasse: " + elfteKlasse.getBezeichnung());
  199.         System.out.println("Schüler:");
  200.         for (Schueler schueler : elfteKlasse.getSchueler()) {
  201.             System.out.println(schueler.getVorname() + " " + schueler.getNachname());
  202.         }
  203.  
  204.     }
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement