diff --git a/src/BriefdruckStrategie.java b/src/BriefdruckStrategie.java new file mode 100644 index 0000000..35bf1fb --- /dev/null +++ b/src/BriefdruckStrategie.java @@ -0,0 +1,5 @@ +public interface BriefdruckStrategie { + + String druckeBrief(Brief brief); + +} diff --git a/src/Briefdrucker.java b/src/Briefdrucker.java index 885e713..94b5c70 100644 --- a/src/Briefdrucker.java +++ b/src/Briefdrucker.java @@ -4,6 +4,15 @@ * @author tebe */ public class Briefdrucker { + BriefdruckStrategie briefdruckStrategie; + + Briefdrucker(BriefdruckStrategie briefdruckStrategie){ + this.briefdruckStrategie = briefdruckStrategie; + } + + void druckeBrief(Brief brief){ + System.out.println(briefdruckStrategie.druckeBrief(brief)); + } // Ihr Code fuer den Briefdrucker diff --git a/src/Briefprogramm.java b/src/Briefprogramm.java index 62821aa..b400fab 100644 --- a/src/Briefprogramm.java +++ b/src/Briefprogramm.java @@ -1,3 +1,7 @@ +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + /** * Diese Klasse implementiert ein Briefprogramm. * @@ -14,6 +18,18 @@ public class Briefprogramm { // Ihr Code fuer das Briefprogramm: // Erzeugen Sie Inhalte und Adressen und drucken Sie // einen Brief sowie einen Serienbrief - + + Brief brief = new Brief( + new Adresse("Roman", "Schenk", + "Toggenburgstrasse", 31, + 8245, "Feuerthalen"), + new Adresse("Vorname", "Nachname", + "Strasse", 1, + 8222, "Ort"), + new Inhalt(new GregorianCalendar(2021, 12, 23), "Titel", "Herr", "Beispieltext")); + + BriefdruckStrategie briefdruckStrategie = new FensterBriefDruckStrategie(); + Briefdrucker briefdrucker = new Briefdrucker(briefdruckStrategie); + briefdrucker.druckeBrief(brief); } } \ No newline at end of file diff --git a/src/FensterBriefDruckStrategie.java b/src/FensterBriefDruckStrategie.java new file mode 100644 index 0000000..532f018 --- /dev/null +++ b/src/FensterBriefDruckStrategie.java @@ -0,0 +1,14 @@ +public class FensterBriefDruckStrategie extends StandartBriefDruckStrategie{ + + protected String druckeEmpfaenger(Adresse adresse){ + return druckeAdresseRechts(adresse); + } + + private String druckeAdresseRechts(Adresse adresse) { + String output = "\t" + adresse.getVorname() + " " + adresse.getNachname() + "\n" + + "\t" + adresse.getStrasse() + " " + adresse.getHausnummer() + "\n" + + "\t" + adresse.getPlz() + " " + adresse.getOrt(); + return output; + } + +} diff --git a/src/StandartBriefDruckStrategie.java b/src/StandartBriefDruckStrategie.java new file mode 100644 index 0000000..06f5871 --- /dev/null +++ b/src/StandartBriefDruckStrategie.java @@ -0,0 +1,35 @@ +public class StandartBriefDruckStrategie implements BriefdruckStrategie{ + @Override + public String druckeBrief(Brief brief) { + String output = ""; + output += druckeAbsender(brief.getSender()); + output += "\n"; + output += druckeEmpfaenger(brief.getEmpfaenger()); + output += "\n"; + output += druckeInhalt(brief.getInhalt()); + return output; + } + + protected String druckeEmpfaenger(Adresse adresse){ + return druckeAdresseLinks(adresse); + } + + protected String druckeAbsender(Adresse adresse){ + return druckeAdresseLinks(adresse); + } + + private String druckeAdresseLinks(Adresse adresse){ + String output = adresse.getVorname() + " " + adresse.getNachname() + "\n" + + adresse.getStrasse() + " " + adresse.getHausnummer() + "\n" + + adresse.getPlz() + " " + adresse.getOrt(); + return output; + } + + private String druckeInhalt(Inhalt inhalt){ + String output = "Datum: " + String.format("%1$td.%1$tm.%1$tY", inhalt.getDatum()) + "\n" + + inhalt.getTitel() + "\n" + + inhalt.getAnrede() + "\n" + + inhalt.getText(); + return output; + } +}