Vererbung Vererbung Frage

XardasX

Mitglied
Hallo zusammen,

ich muss heute schon das zweite mal nerven. Aber ich hab das ganze Thema Vererbung wohl doch nicht so gut verstanden wie ich dachte.

Es handelt sich um eine Klausuraufgabe. Es gibt Aufsätze die (im Kontext) entweder in einem Sammelband oder in einer Zeitschrift erscheinen. Sowohl Sammelbänder als auch Zeitschriften können als Druckwerke aufgefasst werden.
Die weiteren Infos zu den Klassen sind im Javacode.
Wichtig ist noch, dass zum Schluss eine Instanz von "Aufsätze" erzeugt werden soll.

Nun mein Ansatz:
Java:
public class Aufgabe4 {
	public static void main(String[] args) {
 	}
}

abstract class Druckwerke {

	public void Sammelband() {
	}
	
}

class Sammelband extends Druckwerke{
	private String Verlag;
	private String Herausgeber;
	public Sammelband (String Verlag, String Herausgeber){
		
	}
}

class Zeitschrift extends Druckwerke{
	private String Titel;
	private int Nummer;
	private String Erscheinungsjahr;
	public Zeitschrift (String Titel, int Nummer, String Erscheinungsjahr){
		
	}
}

class Aufsatz extends Druckwerke{
	private String Titel;
	private String Autor;
	public Aufsatz (String Titel, String Autor, String Verlag, String Herausgeber){
		this.Titel = Titel;
		this.Autor = Autor;
		super.Sammelband(Verlag, Herausgeber);
	}
}

Also ich hab irgendwie mal mitbekommen dass hier zB. "Zeitschrift" und "Sammelband" vom Typ "Druckwerke" sind. Also könnte man auch von "Aufsatz" auf diese Eigenschaften zugreifen weil ja alle vom gleichen Typ sind. Aber ich würde mich freuen wenn irgendjemand mir das hier genauer erklärt, wenn dieser Ansatz überhaupt irgendwas wert ist.

Ich freue mich über alle Tipps und Infos und vorallem über Infos bezüglich meines Ansatzes.

Viele Grüße
XardasX
 

Joose

Top Contributor
Java:
abstract class Druckwerke {

	public void Sammelband() {
	}
	
}

class Aufsatz extends Druckwerke{
	private String Titel;
	private String Autor;
	public Aufsatz (String Titel, String Autor, String Verlag, String Herausgeber){
		this.Titel = Titel;
		this.Autor = Autor;
		super.Sammelband(Verlag, Herausgeber);
	}
}

Was macht die Methode Sammelband in der Klasse Druckwerke? Außerdem bildet eine Klasse immer 1 Objekt ab also ein Druckwerk und nicht Druckwerke.

Die Klasse Aufsatz hat meiner Meinung nach nichts zu tun mit der Aufgabenstellung (welche nicht ausführlich beschrieben ist hier). Ein Aufsatz ist kein Druckwerk ... also warum erweitert die Klasse Aufsatz die Klasse Druckwerk?

Ich nehme an die Aufgabestellung verlangt einfach das für das Verwalten einer Reihe von Aufsätzen eine gemeinsame Basisklasse (Druckwerk) für Sammelbänder bzw. Magazine

Java:
abstract class Druckwerk{
private Ausatz[] aufsaetze;
}

public class Sammelband extends Druckwerk{
.....
}

public class Aufsatz{
.....
}
 
Zuletzt bearbeitet:

XardasX

Mitglied
Hallo Joose,

Java:
abstract class Druckwerke {
    public void Sammelband() {
    }   
}

Da muss wirklich die Methode raus. Das war eine Methode die eclipse automatisch angelegt hat. Tut mir leid.

Aufsatz erweitert Druckwerke, damit alle, dh. Aufsatz Zeitschrift und Sammelband, von einem Datentypen sind und so aufeinander zugreifen könne. Das ist mein Lösungsansatz. Der kann und wird wahrscheinlich falsch sein, da er ja auch nicht funktioniert.

Die Aufagebnstellung:
In der wissenschaftlichen Literatur können Aufsätze (mit Titel und Autor) in einem Sammelband (bestehend aus einem Verlag und Herausgeber) oder in einer Zeitschrift (haben einen Titel, Nummer und Erscheinungsjahr) erscheine. Sowohl Sammelband als auch Zeitschrift können als Druckwerke aufgefasst werden.

Nun sollen die Klassen entworfen werden. Konstruktoren implementiert werden und eine Methode "test" geschrieben werden, welche eine Instanz vom Typ "Aufsatz" erzeugt und alle entsprechenden Attribute initialisiert.

Ich hoffe diesmal ist es besser zu verstehen.
 

Joose

Top Contributor
Die Aufagebnstellung:
In der wissenschaftlichen Literatur können Aufsätze (mit Titel und Autor) in einem Sammelband (bestehend aus einem Verlag und Herausgeber) oder in einer Zeitschrift (haben einen Titel, Nummer und Erscheinungsjahr) erscheine. Sowohl Sammelband als auch Zeitschrift können als Druckwerke aufgefasst werden.

Java:
public abstract class Druckwerk
{
    private ArrayList<Aufsatz> aufsaetze; //

    public Druckwerk(){
        aufsaetze = new ArrayList<Aufsatz>();
    }

    public void addAufsatz(Aufsatz neuerAufsatz){
        aufsaetze.add(neuerAufsatz);
    }

    public String toString(){
        String output = "";
        for(Aufsatz aufsatz : aufsaetze){
            ouput += aufsatz.toString();
        }
    }
}

public class Sammelband extends Druckwerk {
    private String herausgeber; // getter und setter hinzufügen
    
    private String verlag; //getter und setter hinzufügen

    public Sammelband(String verlag, String herausgeber){
        super();
        // attribute setzen
    }
}     

public class Aufsatz {
    private String titel; // getter und setter hinzufügen
    
    private String autor; //getter und setter hinzufügen

    public Autor(String titel, String autor){
        // attribute setzen
    }

    public String toString(){
        return getTitel() + " " + getAutor();
    }
}

Nun sollen die Klassen entworfen werden. Konstruktoren implementiert werden und eine Methode "test" geschrieben werden, welche eine Instanz vom Typ "Aufsatz" erzeugt und alle entsprechenden Attribute initialisiert.

Diese Methode test soll nur ein Objekt eines Aufsatzes erstellen? Dazu brauchst du nur die Klasse Aufsatz und die anderen 3 aber nicht!
 
Zuletzt bearbeitet:

XardasX

Mitglied
Ich hoffe ich bin jetzt nicht total blind. Dann entschuldige ich mich im vorraus.

Aber wo ist denn da die Klasse "Zeitschrift"?
Und man kann bei deinem Code mit nur einer Instanz von Aufsatz auch alles andere initialisieren?
Also zB. auch Verlag oder das Erscheinungsjahr?

edit: wenn nur die eine Instanz erzeugt werden soll ist die Aufgabe klar.
Aber geht das denn auch so wie ich das verstanden habe? Also zB mit meinem Ansatz. Das ist für mich eigendlich viel interessanter.
Oder kann nur "linear" vererbt werden? Also so dass eine Seite der Kinder nicht auf die anderen Kinder zugreifen kann.
 
Zuletzt bearbeitet:
Ich hab das in ner ähnlichen Art und Weise wie Joose gelöst und in die Main Methode schonmal ein bisschen was zum Testen reingeschrieben.
Grob gesagt erzeugst du ein Objekt der Klasse Aufsatz das du dann einer der beiden Erscheinungsarten (Sammelband oder Zeitschrift) zuordnen kannst, wodurch du dann quasi ein Objekt der Klasse Sammelband erhältst in dem eine ArrayList mit den in dem Sammelband enthaltenen Aufsätzen enthalten ist.
Wenn ich die Aufgabenstellung richtig verstehe, musst du mit dem anlegen der Klasse nicht alle Variablen initialisieren, sondern nur die die du eben brauchst um einen neuen Aufsatz zu konstruieren.

Mfg
Markus

Java:
package Aufgabe4;

import java.util.ArrayList;

public class Druckerei {

    public static void main(String[] args) {
        Aufsatz a1 = new Aufsatz("Java - fuer Einsteiger", "Peter Mustermann"); //neue Aufsätze erzeugen
        Aufsatz a2 = new Aufsatz("Java - leicht gemacht", "Paul Mustermann");
        Sammelband s1 = new Sammelband("Musterverlag", "Gerd Muster"); //neuen Sammelband erzeugen
        s1.addAufsatz(a2); //Aufsatz a2 dem Sammelband zuordnen
        s1.addAufsatz(a1);
        System.out.println(s1); //gibt die toString() Methode von s1 aus
        for (Aufsatz aufsatz : s1.aufsaetze) { //gibt die in der ArrayList enthaltenen Aufsätze aus
            System.out.println(aufsatz);
        }

    }
}

abstract class Druckwerk {

    ArrayList<Aufsatz> aufsaetze = new ArrayList<>();

    ArrayList<Aufsatz> addAufsatz(Aufsatz aufsatz) {
        aufsaetze.add(aufsatz);
        return aufsaetze;
    }
}

class Sammelband extends Druckwerk {

    private String verlag;
    private String herausGeber;

    public Sammelband(String verlag, String herausGeber) {
        this.verlag = verlag;
        this.herausGeber = herausGeber;
    }

    public String getVerlag() {
        return verlag;
    }

    public String getHerausGeber() {
        return herausGeber;
    }

    @Override
    public String toString() {
        return "Sammelband{" + "verlag=" + verlag + ", herausGeber=" + herausGeber + '}';
    }

}

class Zeitschrift extends Druckwerk {

    private String titel;
    private int nummer;
    private int erscheinungsJahr;

    public Zeitschrift(String titel, int nummer, int erscheinungsJahr) {
        this.titel = titel;
        this.nummer = nummer;
        this.erscheinungsJahr = erscheinungsJahr;
    }

    public String getTitel() {
        return titel;
    }

    public int getNummer() {
        return nummer;
    }

    public int getErscheinungsJahr() {
        return erscheinungsJahr;
    }

    @Override
    public String toString() {
        return "Zeitschrift{" + "titel=" + titel + ", nummer=" + nummer + ", erscheinungsJahr=" + erscheinungsJahr + '}';
    }
}

class Aufsatz {

    private String titel;
    private String autor;

    public Aufsatz(String titel, String autor) {
        this.titel = titel;
        this.autor = autor;
    }

    public String getTitel() {
        return titel;
    }

    public String getAutor() {
        return autor;
    }

    @Override
    public String toString() {
        return "Aufsatz{" + "titel=" + titel + ", autor=" + autor + '}';
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
T Deutschverständnis-Frage zur Vererbung Java Basics - Anfänger-Themen 5
E Vererbung Frage zu Zugriffsrechten/Vererbung Java Basics - Anfänger-Themen 3
S Frage zu Vererbung und return. Java Basics - Anfänger-Themen 4
H Vererbung theoretische Frage zur Vererbung/Methoden Java Basics - Anfänger-Themen 7
X Frage zur Vererbung (bzgl Supercontruktor) Java Basics - Anfänger-Themen 7
F Vererbung (einfache Frage) Java Basics - Anfänger-Themen 5
N Frage zur Vererbung/Überladung Java Basics - Anfänger-Themen 3
B Frage zu Vererbung Java Basics - Anfänger-Themen 17
D Frage zur Vererbung Java Basics - Anfänger-Themen 45
0 Eine Frage zur Vererbung... Java Basics - Anfänger-Themen 2
T Frage zu Vererbung beim Collection-Framework Java Basics - Anfänger-Themen 4
Z Frage zur Vererbung. Java Basics - Anfänger-Themen 16
P einfach frage zur vererbung Java Basics - Anfänger-Themen 9
G Frage zur Vererbung und überschreiben von Methoden Java Basics - Anfänger-Themen 6
G frage zu vererbung (super) Java Basics - Anfänger-Themen 10
C Frage zu Vererbung Java Basics - Anfänger-Themen 2
I Frage zur Vererbung Java Basics - Anfänger-Themen 14
B Frage zur Vererbung Java Basics - Anfänger-Themen 15
F Frage zur Vererbung und Zugriffmodifikator private Java Basics - Anfänger-Themen 3
S Frage zum Design der Vererbung (Kartendeck und Dupletten) Java Basics - Anfänger-Themen 12
R Frage wegen Vererbung Java Basics - Anfänger-Themen 5
A Frage zur Vererbung Java Basics - Anfänger-Themen 7
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben