Hochschule Bochum Fachbereich Elektrotechnik und Informatik Prof. Dr. Rainer Lütticke GIN – Grundlagen der Informatik – SS08 Übungsblatt 4 - Lösungen Aufgabe 1 public class Aufgabe41 { public static void main(String[] args) { Auto audi = new Auto("Audi", "SommerReifen", 4); try { Auto mercedes; mercedes = audi.clone(); mercedes.typ = "Mercedes"; mercedes.reifen.typ = "WinterReifen"; System.out.println("Audi: " + audi.toString()); //Alternativ: System.out.println("Audi: " + audi); System.out.println("Mercedes: " + mercedes.toString()); } catch (CloneNotSupportedException e) { }// keine Reaktion } } class Auto implements Cloneable { String typ; AutoReifenSatz reifen; Auto(String typ, String reifenTyp, int anzReifen) { this.typ = typ; reifen = new AutoReifenSatz(reifenTyp, anzReifen); } public Auto clone() throws CloneNotSupportedException { return (Auto) super.clone(); } public String toString() { return "Auto [" + typ + " mit " + reifen.anzahl + " " + reifen.typ + "]"; } } class AutoReifenSatz { String typ; int anzahl; AutoReifenSatz(String typ, int anzahl) { this.typ = typ; this.anzahl = anzahl; } } Aufgabe 2 1. Datei: public class Kommandant implements Cloneable{ private String name; public Kommandant(String name){ this.name = name; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public Kommandant clone() throws CloneNotSupportedException{ return (Kommandant) super.clone(); } } 2. Datei: public class Klonkrieger implements Cloneable{ private Kommandant kom; public Klonkrieger(Kommandant kom){ this.kom = kom; } public void setKommandant(Kommandant kom){ this.kom = kom; } public Kommandant getKommandant(){ return kom; } public Klonkrieger clone() throws CloneNotSupportedException{ Klonkrieger hilf = (Klonkrieger) super.clone(); hilf.kom = kom.clone(); return hilf; } } 3. Datei: public class KlonkriegerApp{ public static void main(String [] args) throws CloneNotSupportedException { Kommandant kom = new Kommandant("Meister"); Klonkrieger [] armee = new Klonkrieger[10]; Klonkrieger krieger = new Klonkrieger(kom); for(int i = 0;i<armee.length;i++) armee[i] = krieger.clone(); armee[5].getKommandant().setName("test"); for(int i = 0;i<armee.length;i++) System.out.println(armee[i].getKommandant().getName()); } } Aufgabe 3 Drucker.java : public abstract class Drucker{ private String anschluss; public Drucker(String anschluss){ setAnschluss(anschluss); } public void setAnschluss(String anschluss){ this.anschluss = anschluss; } public String getAnschluss(){ return anschluss; } public abstract void getInfo(); public abstract void drucke(); } SWDrucker.java : public interface SWDrucker{ public final static boolean SWDRUCK = true; public void druckeInSW(); } Farbdrucker.java : public interface Farbdrucker{ public final static boolean FARBDRUCK = true; public void druckeInFarbe(); } Tintenstrahldrucker.java : public class Tintenstrahldrucker extends Drucker implements SWDrucker{ public Tintenstrahldrucker(String anschluss){ super(anschluss); } public void drucke(){ druckeInSW(); } public void getInfo(){ System.out.println("Ich bin ein Tintenstrahldrucker, angeschlossen an "+getAnschluss()); } public void druckeInSW(){ System.out.println("Bild wird in schwarz-weiß gedruckt!"); } } Laserdrucker.java : public class Laserdrucker extends Drucker implements Farbdrucker, SWDrucker{ public Laserdrucker(String anschluss){ super(anschluss); } public void drucke(){ } public void druckeInFarbe(){ System.out.println("Bild wird in Farbe gedruckt!"); } public void druckeInSW(){ System.out.println("Bild wird in schwarz-weiß gedruckt!"); } public void getInfo(){ System.out.println("Ich bin ein Laserdrucker an Anschluss "+getAnschluss()); } }