Übungsaufgabe abstrakte Klasse

tk22k

Mitglied
Hi,

ich bin neu hier im Forum und konnte schon eine Menge von euch lernen.
Jetzt hapert es allerdings bei ein paar Übungsaufgaben bei mir und ich
bräuchte Hilfe diese umzusetzen.

Hier ist eine Aufgabe zu einer abstrakten Klasse
Definieren Sie eine abstrakte Klasse Ausgabe mit der privaten(!) Instanzvariablen fehlercode vom Typ int und der abstrakten Methode zeigeFCode ohne Rückgabewert. Ein Konstruktor soll fehlercode mit einer beliebigen Zahl x füllen können. Definieren Sie eine nicht abstrakte Klasse Textausgabe als Unterklasse von Ausgabe, die in einer Methode fcodeAnzeigen die in fehlercode gespeicherte Zahl in der Form „Fehlercode=x“ auf der Konsole ausgibt. Falls fehlercode eine negative Zahl ist, soll fcodeAnzeigen den Text „Systemfehler=x“ ausgeben.

Bei der Aufgabe habe ich ein Problem mit der privaten Instanzvariable fehlercode.
Ich weiß nicht wie ich diese in Textausgabe ansprechen kann. Meine Überlegung ist
es diese in protected zu ändern was aber vermutlich gegen die Aufgabe spricht.
Zusätzlich weiß ich nicht wofür die abstrakte Methode zeigeFCode sein soll.

Hier mal mein Versuch


Java:
public abstract class Ausgabe {

    protected int fehlercode;

    public Ausgabe(int x) {fehlercode = x;}
   
    abstract void zeigeFCode();
}

class TextAusgabe extends Ausgabe {

    public TextAusgabe(int x) {super(x);}

    public void fcodeAnzeigen() {zeigeFCode();}

    public void zeigeFCode() {
        if (fehlercode >= 0) {
            System.out.println("Fehlercode=" + fehlercode);
        } else {
            System.out.println("Systemfehler=" + fehlercode);
        }
    }
}

Über Hilfe würde ich mich sehr freuen. Vielen Dank
 

X5-599

Top Contributor
Also die Aufgabe erscheint mir ebenfalls sehr komisch. Hast du die sicher richtig abgetippt? Es macht keinen Sinn explizit eine "private" Variable zu verlangen und diese dann in einer erbenden Klasse verwenden zu wollen. Wie du schon festgestellt hast ginge sowas nur mir "protected". Auch ist mir nicht wirklich klar was die abstrakte Methode zeigeFCode genau machen soll...

Wenn man jetzt davon ausgeht dass sich da verschrieben wurde und tatsächlich "protected int" gemeint war, ist deine Variante schonmal ganz in Ordnung. Wobei, wenn ich mich mehr an den direkten Aufgabentext halte, würde ich die Klasse "TextAusgabe" eher so gestalten:

Code:
class TextAusgabe extends Ausgabe {
    
    public TextAusgabe(int x) {super(x);}
    
    public void fcodeAnzeigen() {
        if (fehlercode >= 0) {
            System.out.print("Fehlercode=");
        } else {
            System.out.print("Systemfehler=");
        }
        
        zeigeFCode();
        System.out.println();
    }
    
    @Override
    public void zeigeFCode() {
        System.out.print(fehlercode);
    }
}

Funktion wäre aber die selbe wie bei dir. Bei mir entscheidet halt direkt die Methode "fcodeAnzeigen()" ob "fehlercode" kleiner 0 ist. Und die abstrakte Methode "zeigeFCode()" gibt lediglich den "fehlercode" aus.
Was anderes fällt mir zu der Aufgabe nicht ein. Stammt die aus einem Buch?
 

Meniskusschaden

Top Contributor
Ich finde die Aufgabe auch etwas seltsam. Um die Forderung private int fehlercode; nicht zu verletzen, könnte man in der abstrakten Klasse noch einen getter implementieren.
 

dzim

Top Contributor
Ich würde es auf protected ändern und einen Kommentar dazu schreiben, dass eben mit private kein Zugriff möglich ist. Alternativ ist der Vorschlag von @Meniskusschaden auch nicht schlecht, aber auch hier würde ich einen Kommentar ranschreiben, warum die Methode nötig ist.

Von diesem Problem mal abgesehen, finde ich aber auch den Stil, der euch da aufgedrückt wird, fragwürdig: Deutsche Klassen- und Variablennamen? Ein abstrakter Methodenname, der nicht voll ausgeschrieben ist? Für mich ist das alles "Code Smell"!
 

tk22k

Mitglied
Ok Vielen dank für die schnellen Antworten.
Ich hatte mir schon fast gedacht, dass an dieser Aufgabe irgendetwas nicht stimmt.
Zur Sicherheit wollte ich dieses aber noch einmal abklären. Es könnte ja sein
das ich was verpasst habe mit den private variablen in abstrakten Klassen.
@Meiskuschhaden das war auch meine erste Überlegung, aber damit hätte ich eine
weitere Methode einführen müssen die laut Aufgabe nicht definiert ist.
 

tk22k

Mitglied
Zum Glück stammt dies Aufgabe nicht aus einem Buch sondern von einem Übungszettel.
Ich hätte noch eine Aufgabe zum Event Handling die mir auch sehr speziell vorkommt.
Diese wollte ich auch gerne besprechen. Sollte ich dafür ein neues Thema eröffnen oder
mit in dieses Thema packen?
 

X5-599

Top Contributor
Danke für die Rückmeldung. Ich habe nämlich auch schonmal bei Büchern solche Art von Fehlern entdeckt. Wenn es um etwas anderes geht als abstrakte klassen würde ich ein neues Thema vorschlagen.
 

Flown

Administrator
Mitarbeiter
Also funktionieren würde das schon, aber ob das zielführend ist:
Java:
abstract class Ausgabe {
  
  private int fehlercode;
  
  public Ausgabe(int x) {fehlercode = x;}
  
  abstract void zeigeFCode();
  
  static class TestAusgabe extends Ausgabe {
  
  
    public TestAusgabe(int x) {
      super(x);
    }
  
    @Override
    void zeigeFCode() {
      System.out.println(super.fehlercode);
    }
  }
}
Achja: Pro Frage ein Thema öffnen bitte!
 

tk22k

Mitglied
@Flown leider Funktioniert dein Vorschlag nicht.
Folgende Fehlermeldung: Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - fehlercode has private access
 

dzim

Top Contributor
Das funktioniert aber nur, weil du es als innere Klasse machst. Das würde ich in dem Konkreten Fall aber ablehnen.
 

tk22k

Mitglied
@Flown wie könnte ich die Methoden von Textausgabe denn testen? Ich kann ja keine neue Textausgabe erstellen und auf die Methoden habe ich auch keinen Zugriff.

Edit: Hat sich erledigt ich müsste zusätzlich eine Methode in Ausgabe schreiben die fcodeAnzeigen von Textausgabe aufruft. Ganz schön kompliziert und unnötig
 

JStein52

Top Contributor

JStein52

Top Contributor
In NetBeans fragt er dich z.B. wenn du einen Compilerfehler hast ob er das Programm dennoch starten soll wenn du auf diesen grünen Play-Button klickst. Schon erhältst du diese Exception. Wird wohl bei Eclipse irgendwie auch gehen

Edit:
Ach so, hatte ich vergessen zu erwähnen: nur wenn dieses fehlerhafte Codestück auch durchlaufen wird.
 

BuddaKaeks

Bekanntes Mitglied
Achso, wenn er quasi im Debugger nach/neukompiliert?

Wäre es aus ExceptionHandling-Sicht aber in dem Fall eigentlich nicht schöner, einen CompileError zu werfen anstatt net RuntimeException?
RuntimeExceptions werden für gewöhnlich öfters mal gefangen... Und ob man Compiler-Fehler irgendwo fangen sollte, ist Geschmakssache ;)
 

mrBrown

Super-Moderator
Mitarbeiter
Achso, wenn er quasi im Debugger nach/neukompiliert?

Wäre es aus ExceptionHandling-Sicht aber in dem Fall eigentlich nicht schöner, einen CompileError zu werfen anstatt net RuntimeException?
RuntimeExceptions werden für gewöhnlich öfters mal gefangen... Und ob man Compiler-Fehler irgendwo fangen sollte, ist Geschmakssache ;)
Nein, der Code wird einfach nicht kompiliert und stattdessen fügt der Compiler da die Exception ein ;)

Ist ein Feature des Eclipse-Compilers, der normale macht das nicht - und sollte man auch zum endgültigen Kompiliere nicht nutzen.
Ist zum Testen aber oftmals ganz praktisch, weil eben nicht der ganze Code stehen muss.

Fängt man solche Exceptions ganz generell und zeigt sie nirgends, macht man irgendwas gewaltig falsch ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Laufzeitfehler bei Übungsaufgabe Java Basics - Anfänger-Themen 4
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 6
K Rundbeet Übungsaufgabe Java Basics - Anfänger-Themen 3
J Hilfe bei Übungsaufgabe Java Basics - Anfänger-Themen 17
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
H Übungsaufgabe Java Basics - Anfänger-Themen 21
K Übungsaufgabe... Verständnisproblme (java 8.191) Java Basics - Anfänger-Themen 4
H Polynome Übungsaufgabe uni Java Basics - Anfänger-Themen 49
H Übungsaufgabe algorithmen Java Basics - Anfänger-Themen 2
L Übungsaufgabe zu Schleifen Java Basics - Anfänger-Themen 7
H Frage zu Übungsaufgabe, Array Java Basics - Anfänger-Themen 7
T Übungsaufgabe Event Handling Java Basics - Anfänger-Themen 0
B Hilfe bei Übungsaufgabe von Freitagsrunde Java Basics - Anfänger-Themen 5
B Übungsaufgabe Java Basics - Anfänger-Themen 5
M Übungsaufgabe Problem Java Basics - Anfänger-Themen 6
N Übungsaufgabe aus Java Buch bringt Fehler. Java Basics - Anfänger-Themen 10
B Übungsaufgabe zu Klassen, Methoden ... Java Basics - Anfänger-Themen 2
K Methoden Uhr als Übungsaufgabe Klassen/Objekte Java Basics - Anfänger-Themen 3
S Verständnisproblem einer Übungsaufgabe Java Basics - Anfänger-Themen 6
J Hilfe bei Übungsaufgabe Java Basics - Anfänger-Themen 5
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
U Erste Schritte Fehler in Übungsaufgabe Java Basics - Anfänger-Themen 22
W Übungsaufgabe:Dynamische Datenstrukturen Java Basics - Anfänger-Themen 10
pg1337 Übungsaufgabe für Anfänger Java Basics - Anfänger-Themen 26
N Übungsaufgabe mit static Wert Java Basics - Anfänger-Themen 27
P Datentypen Frage zu einer Übungsaufgabe Java Basics - Anfänger-Themen 15
N Übungsaufgabe mit Interface Java Basics - Anfänger-Themen 2
F Schleifen Übungsaufgabe Java Basics - Anfänger-Themen 4
A Übungsaufgabe lösen - Problem mit true und false Java Basics - Anfänger-Themen 6
D Schiedermeier 1. Semester Übungsaufgabe Problem Java Basics - Anfänger-Themen 8
C Übungsaufgabe Java Basics - Anfänger-Themen 10
R Problem bei Übungsaufgabe Java Basics - Anfänger-Themen 7
M Hilfe bei Übungsaufgabe :'( nooby Java Basics - Anfänger-Themen 3
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
G Java Abstrakte Methoden Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
L Abstrakte Typen und Schnittstellen Java Basics - Anfänger-Themen 19
S Abstrakte Methode nutzen Java Basics - Anfänger-Themen 9
J abstrakte Methode in Klasse mit Rückgabetyp der abgeleiteten Klasse Java Basics - Anfänger-Themen 5
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
K Abstrakte Klasse: vererbte Klasse; instance of? Java Basics - Anfänger-Themen 26
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
N Vererbung Abstrakte Klasse stateful Java Basics - Anfänger-Themen 3
D Abstrakte Klassen Verständniss Frage Java Basics - Anfänger-Themen 4
D Methoden Abstrakte Methoden Java Basics - Anfänger-Themen 3
W Abstrakte Klasse mit Variable? Java Basics - Anfänger-Themen 2
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
B Abstrakte Klassen Java Basics - Anfänger-Themen 7
C Abstrakte und virtuelle Methoden in Java Java Basics - Anfänger-Themen 4
E verdeckte abstrakte Methode sinnvoll? Java Basics - Anfänger-Themen 7
A Vererbung Abstrakte Klasse mit Methode die Objekte der Subklassen benutzt? Java Basics - Anfänger-Themen 7
W Abstrakte und konkrete Klasse Java Basics - Anfänger-Themen 4
S Abstrakte Klassen Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
F Abstrakte Klasse doch zum "Teil" instanzieren? Java Basics - Anfänger-Themen 4
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
G Abstrakte Klassen - theoretische Frage Java Basics - Anfänger-Themen 2
OnDemand Abstrakte Klassen Java Basics - Anfänger-Themen 4
T OOP Abstrakte Klassen und ihre Kinder: wie läuft das? Java Basics - Anfänger-Themen 3
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
M Abstrakte Klassen Java Basics - Anfänger-Themen 2
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
M Interface und Abstrakte Klassen Java Basics - Anfänger-Themen 12
N Datentypen abstrakte Klasse wird instanziert Java Basics - Anfänger-Themen 3
D Methoden abstrakte Methoden und Rückgabewerte Java Basics - Anfänger-Themen 2
B Abstrakte Methode vs. Interface Java Basics - Anfänger-Themen 2
propra Interface - abstrakte Klasse Java Basics - Anfänger-Themen 18
N Abstrakte Klasse Java Basics - Anfänger-Themen 28
R Namenskonvention abstrakte Klassen Java Basics - Anfänger-Themen 6
C OOP Objektstruktur: abstrakte Klassen Java Basics - Anfänger-Themen 3
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
V Vererbung Abstrakte Methode Java Basics - Anfänger-Themen 3
T OOP abstrakte klassen - methoden Java Basics - Anfänger-Themen 8
M Abstrakte Klassen Java Basics - Anfänger-Themen 21
J Welchen Sinn haben abstrakte Methoden? Java Basics - Anfänger-Themen 4
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
StupidAttack Abstrakte Methoden in nicht-abstrakter Methode in abstrakter Klasse Java Basics - Anfänger-Themen 6
T Abstrakte Klasse Java Basics - Anfänger-Themen 3
S Abstrakte Klasse Java Basics - Anfänger-Themen 5
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
T OO, Konstruktor, abstrakte Methoden Java Basics - Anfänger-Themen 13
K Abstrakte Klasse vs. Interface Java Basics - Anfänger-Themen 21
T Abstrakte Klassen Java Basics - Anfänger-Themen 6
C abstrakte Klassen mögen mich nicht... Java Basics - Anfänger-Themen 2
I Abstrakte Klassen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben