Aufgabe 8
Aufgabe 8.a
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 | public class Person { protected final String VORNAME; protected String nachname; protected final int GEBURTSJAHR; public Person(String vorname, String nachname, int geburtsjahr) { this.VORNAME = vorname; this.nachname = nachname; this.GEBURTSJAHR = geburtsjahr; } public Person(Person other) { this(other.VORNAME, other.nachname, other.GEBURTSJAHR); } public void heirate(Person other) { setNachname(other.nachname); } public String getVORNAME() { return VORNAME; } public int getGEBURTSJAHR() { return GEBURTSJAHR; } public String getNachname() { return nachname; } public void setNachname(String nachname) { this.nachname = nachname; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (GEBURTSJAHR != person.GEBURTSJAHR) return false; if (!VORNAME.equals(person.VORNAME)) return false; if (!nachname.equals(person.nachname)) return false; return true; } @Override public int hashCode() { int result = VORNAME.hashCode(); result = 31 * result + nachname.hashCode(); result = 31 * result + GEBURTSJAHR; return result; } @Override public String toString() { return VORNAME + " " + nachname + ", geb. " + GEBURTSJAHR; } } |
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 | public class Einwohner extends Person { protected Adresse adresse; public Einwohner(Person p, Adresse adresse) { super(p.VORNAME, p.nachname, p.GEBURTSJAHR); this.adresse = adresse; } public Einwohner(Einwohner other) { this(other, new Adresse(other.adresse)); } public void umziehen(Adresse neueAdresse) { setAdresse(neueAdresse); } public Adresse getAdresse() { return adresse; } public void setAdresse(Adresse adresse) { this.adresse = adresse; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; Einwohner einwohner = (Einwohner) o; return adresse.equals(einwohner.adresse); } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + adresse.hashCode(); return result; } @Override public String toString() { return "Einwohner{" + "adresse=" + adresse + '}'; } } |
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 | public class Adresse { protected String ort; protected int plz; protected String strasse; protected int hausnummer; public Adresse(String ort, int plz, String strasse, int hausnummer) { this.ort = ort; this.plz = plz; this.strasse = strasse; this.hausnummer = hausnummer; } public Adresse(Adresse other) { this(other.ort, other.plz, other.strasse, other.hausnummer); } public String getOrt() { return ort; } public int getPlz() { return plz; } public String getStrasse() { return strasse; } public int getHausnummer() { return hausnummer; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Adresse adresse = (Adresse) o; if (hausnummer != adresse.hausnummer) return false; if (plz != adresse.plz) return false; if (!ort.equals(adresse.ort)) return false; if (!strasse.equals(adresse.strasse)) return false; return true; } @Override public int hashCode() { int result = ort.hashCode(); result = 31 * result + plz; result = 31 * result + strasse.hashCode(); result = 31 * result + hausnummer; return result; } @Override public String toString() { return "Adresse{" + "ort='" + ort + '\'' + ", plz=" + plz + ", strasse='" + strasse + '\'' + ", hausnummer=" + hausnummer + '}'; } } |
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 | public class Student extends Person { protected String matrikelnummer; public Student(String vorname, String nachname, int geburtsjahr, String matrikelnummer) { super(vorname, nachname, geburtsjahr); this.matrikelnummer = matrikelnummer; } public Student(Student other) { this(other.VORNAME, other.nachname, other.GEBURTSJAHR, other.matrikelnummer); } public String getMatrikelnummer() { return matrikelnummer; } public void setMatrikelnummer(String matrikelnummer) { this.matrikelnummer = matrikelnummer; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; Student student = (Student) o; return matrikelnummer.equals(student.matrikelnummer); } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + matrikelnummer.hashCode(); return result; } @Override public String toString() { return "Student{" + "matrikelnummer='" + matrikelnummer + '\'' + '}'; } } |
Aufgabe 8.b – 4.c
1 2 | public static final String FILEPATH = "assets/files/listen/"; public static final String FILENAME_ALL_BASIC_LISTS = "all-basic-lists.txt"; |
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 | public static void aufgabe4c() { PrintWriter fout = null; try { fout = new PrintWriter(new File(FILEPATH + FILENAME_ALL_BASIC_LISTS)); // die Liste aller 10 Sportfreunde List<Person> sportFreunde = new LinkedList<Person>(); sportFreunde.add(new Person("Kurt", "Bangert", 1988)); sportFreunde.add(new Person("Peter", "Bartsch", 1954)); // auch verwandt sportFreunde.add(new Person("Reinhard", "Barrabas", 1989)); // auch kommilitone sportFreunde.add(new Person("Dirk-Rainer", "Blomeyer", 1966)); // auch komilitone // etc. // die Liste aller 10 Kommilitionen List<Person> komilitonen = new LinkedList<Person>(); komilitonen.add(new Person("Gerhard", "Ackermann", 1956)); // auch verwandt komilitonen.add(new Person("Martin", "Behne", 1967)); komilitonen.add(new Person("Dirk-Rainer", "Blomeyer", 1966)); // auch sportsfreund komilitonen.add(new Person("Reinhard", "Barrabas", 1989)); // auch sportsfreund // etc. // die Liste aller 10 Verwandten. List<Person> verwandte = new LinkedList<Person>(); verwandte.add(new Person("Peter", "Arnke", 1977)); verwandte.add(new Person("Jürgen", "Berger", 1988)); verwandte.add(new Person("Stephan", "Braunfels", 1958)); verwandte.add(new Person("Peter", "Bartsch", 1954)); // auch sportsfreund verwandte.add(new Person("Gerhard", "Ackermann", 1956)); // auch kommilitone // etc. // write sportsfreunde to file for (int i = 0; i < sportFreunde.size(); ++i) { fout.println(sportFreunde.get(i)); } fout.println(); // write kommilitonen to file for (Person p : komilitonen) { fout.println(p); } fout.println(); // write verwandte to file for (Person p : verwandte) { fout.println(p); } } catch (Exception e) { } finally { fout.close(); } } |
Aufgabe 8.b – 4.d Entfällt.
Aufgabe 8.b – 4.e
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | public static void aufgabe4e() { PrintWriter fout = null; try { fout = new PrintWriter(new File(FILEPATH + FILENAME_COMPLEX_LISTS)); // die Liste aller 10 Sportfreunde List<Person> sportFreunde = new LinkedList<Person>(); sportFreunde.add(new Person("Kurt", "Bangert", 1988)); sportFreunde.add(new Person("Peter", "Bartsch", 1954)); // auch verwandt sportFreunde.add(new Person("Reinhard", "Barrabas", 1989)); // auch kommilitone sportFreunde.add(new Person("Dirk-Rainer", "Blomeyer", 1966)); // auch komilitone // etc. // die Liste aller 10 Kommilitionen List<Person> komilitonen = new LinkedList<Person>(); komilitonen.add(new Person("Gerhard", "Ackermann", 1956)); // auch verwandt komilitonen.add(new Person("Martin", "Behne", 1967)); komilitonen.add(new Person("Dirk-Rainer", "Blomeyer", 1966)); // auch sportsfreund komilitonen.add(new Person("Reinhard", "Barrabas", 1989)); // auch sportsfreund // etc. // die Liste aller 10 Verwandten. List<Person> verwandte = new LinkedList<Person>(); verwandte.add(new Person("Peter", "Arnke", 1977)); verwandte.add(new Person("Jürgen", "Berger", 1988)); verwandte.add(new Person("Stephan", "Braunfels", 1958)); verwandte.add(new Person("Peter", "Bartsch", 1954)); // auch sportsfreund verwandte.add(new Person("Gerhard", "Ackermann", 1956)); // auch kommilitone // etc. // aller Sportfreunde, die auch Kommilitonen sind List<Person> sportsFreundeUndKommilitonen = new LinkedList<Person>(); sportsFreundeUndKommilitonen.addAll(sportFreunde); // Menge = Sportsfreunde und Kommilitonen sportsFreundeUndKommilitonen.retainAll(komilitonen); // aller Verwandten, die nicht Sportfreunde sind List<Person> verwandteUndKeineSportsfreunde = new LinkedList<Person>(); verwandteUndKeineSportsfreunde.addAll(verwandte); // Menge = Verwandte und nicht Sportfreunde verwandteUndKeineSportsfreunde.removeAll(sportFreunde); // aller Verwandten und Kommilitonen List<Person> verwandteUndKommilitonen = new LinkedList<Person>(); verwandteUndKommilitonen.addAll(verwandte); // keine doppelte, da Person, hash and equals ordentlich überschrieben! verwandteUndKommilitonen.addAll(komilitonen); // write sportsFreundeUndKommilitonen to file for (Person p : sportsFreundeUndKommilitonen) { fout.println(p); } fout.println(); // write verwandteUndKeineSportsfreunde to file for (Person p : verwandteUndKeineSportsfreunde) { fout.println(p); } fout.println(); // write verwandteUndKommilitonen to file for (Person p : verwandteUndKommilitonen) { fout.println(p); } // release file fout.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { fout.close(); } } |
Leave a Reply