Klassen Klassen und Objekte

Diskutiere Klassen und Objekte im Java Basics - Anfänger-Themen Bereich.
Y

yoursfay

Hallo leute,
problem ist:
Frage war: Schreiben Sie eine set-Methode für den Tarif, um zu einem anderen Tarif zu wechseln.

Code:
public class Handytarif {

private String htarif; // tarif
private String wechsel; // tarifwechsel
private int min; // minute
private int price;

public Handytarif() {}
public String getWechsel()

{
   return wechsel;}

public void setTarifwechsel(String wechsel)

{
    this.htarif = wechsel;}
Stimmt das oder muss man was daran bearbeiten?

Aufgabe war: Schreiben Sie eine Methode „aufladen“, welches es erlaubt das Guthaben um einen angegebenen Betrag zu erhöhen. Stellen Sie sicher, dass das Guthaben nur erhöht werden darf, aber nicht verringert.

Code:
public class Guthaben{
private int credit;
private int totalcredit;
private int aufladen = 0;

public Guthaben() { }
public Guthaben (int credit)

{  this.credit = credit; }


  public void addCredit(int credit)

 {  this.credit = credit + credit;}
 

public void newCredit(int newCredit)

{    this.credit += newCredit;

 aufladen++;  }

 public int getAktuCredit()

 {return aufladen;  }
Bei main methode

Code:
Scanner input = new Scanner(System.in);

int icredit;

Guthaben currentcredit = new Guthaben();

System.out.println("Guthaben aufladen: ");

icredit = input.nextInt();

currentcredit.addCredit(icredit);

System.out.println("Credit: "+currentcredit.getAktuCredit());
Problem: wie kann ich die guthaben, was ich eingegeben hab mit alte guthaben addieren? und bei main wieder anzeigen lassen?
 
mihe7

mihe7

Stimmt das oder muss man was daran bearbeiten?
Von der Formatierung mal abgesehen? Schwierig zu sagen, es könnte sein, dass Du erstmal nur wechsel setzen sollst. Das hängt von der konkreten Aufgabenstellung ab.

Schreiben Sie eine Methode „aufladen“, welches es erlaubt das Guthaben um einen angegebenen Betrag zu erhöhen. Stellen Sie sicher, dass das Guthaben nur erhöht werden darf, aber nicht verringert.
Davon hast Du nichts umgesetzt. Und bitte, formatier das Zeug vernünftig, da fängt man ja zu schielen an.

Problem: wie kann ich die guthaben, was ich eingegeben hab mit alte guthaben addieren?
Indem Du die Methode aufladen() aus der vorherigen Aufgabe verwendest.
 
J

JustNobody

Hallo leute,
problem ist:
Frage war: Schreiben Sie eine set-Methode für den Tarif, um zu einem anderen Tarif zu wechseln.
Also erst einmal: Was verlangt diese Aufgabe:
Es gibt bereits eine Instanzvariable für den Tarif. Für diesen ist ein Setter zu schreiben.

Setter Methoden heißen i.d.R. wie die Variable, nur eben mit "set" davor und das erste Zeichen groß.

==> Keine neue Variable "wechsel" oder so einführen. Ist hier im Zusammenhang auch unsinnig. Das ist ja eine Tätigkeit: Den Tarif wechseln. Das ist also nichts, was gespeichert werden kann (hier im Zusammenhang). Einen Wechsel kann man natürlich dokumentieren - So es also eine Klasse Wechsel geben würde, dann könnte man da evtl. speichern: Wann hat wer den Tarif von welchem Wert zu welchem Wert geändert?
Aber all das ist nicht die Aufgabenstellung.

Und Dein Code ist extrem verwirrend. Du hast Tarif und Wechsel als Instanzvariablen gespeichert. Dann hast Du eine set Methode, die dann beides im Namen hat, einen Wechsel übergeben bekommen soll und dies dem Tarif zuweist?

Aufgabe war: Schreiben Sie eine Methode „aufladen“, welches es erlaubt das Guthaben um einen angegebenen Betrag zu erhöhen. Stellen Sie sicher, dass das Guthaben nur erhöht werden darf, aber nicht verringert.

Problem: wie kann ich die guthaben, was ich eingegeben hab mit alte guthaben addieren? und bei main wieder anzeigen lassen?
Also bei dem Code solltest Du noch einmal genau überlegen, was Du da überhaupt machst!

Code:
public void addCredit(int credit) {
  this.credit = credit + credit;
}
Was ist this.credit und credit? Was unterscheidet beide? Hast Du das verstanden?
Was willst Du machen? Und was macht dieser Code?

Was soll der Unterschied zwischen addCredit und newCredit sein?

Was soll denn das Aufladen machen? Evtl. ist das ja schon das, was die beiden vorherigen Methoden machen oder zumindest sehr ähnlich. (Da ja noch eine Kontrolle statt finden soll!)

Hier solltest Du einmal in eigenen Worten erläutern, was die einzelnen Methoden machen sollen.... Und am besten wirklich dabei genau Schritt für Schritt beschreiben, was gemacht werden soll...

Vor allem: Was ist credit und was ist aufladen?
Wenn der aktuelle Credit abgefragt wird, bekommt man aufladen?

Und wenn Du getter/setter hast, dann kannst Du guthaben lesen, eine Addition machen und das guthaben wieder setzen. Oder er gibt eine Methode, die das macht.

Aber nun ganz ganz wichtig:
==> Getter / Setter immer bitte ans Schema halten: Bei credit heisst der Getter getCredit und nicht getAktuCredit oder sonst irgendwie. Und er gibt den credit zurück und nicht irgend etwas anderes! Das ist sonst Code, der nur für eins gut ist: Die Tonne.

Sorry für die harten Worte. Das geht nicht gegen Dich. Ich will Dir nur deutlich machen, dass dies sehr wichtig ist und man sollte sich von Anfang an an gewisse Spielregeln halten, denn sonst ist ein großer Frust kaum zu vermeiden.

Also daher:
- Methoden sollten vernünftig benannt werden. Wenn möglich auch Abkürzungen vermeiden - oder die Abkürzungen sind üblich / sehr verständlich! Bei Settern / Gettern ist eigentlich klar, was die machen. Daher sollte man daran nichts drehen. Ein setName, das nicht den name setzt, ist etwas, das sofort verwirrt! Also Ziel ist: Du liest nur den Namen der Methode und du weisst genau, was die Methode macht. Und zwar macht die Methode nur das! newCredit setzt einen neuen Credit. Aufladen erhöhen ist etwas, das da ganz offensichtlich reingemogelt wurde!

Das einfach einmal von meiner Seite zu deinen Punkten.
 
T

temi

Ergänzend zu den ausführlichen Erläuterungen von @JustNobody noch:
Schreiben Sie eine Methode „aufladen“
Wenn du eine Methode "aufladen()" schreiben sollst, warum heißt deine Methode dann "addCredit()"?

Du musst eigentlich nur ablesen: Methode aufladen, aha, ich brauche eine Methode mit dem Namen "aufladen":
public void aufladen() {

welches es erlaubt das Guthaben um einen angegebenen Betrag zu erhöhen.
Ok, ein angegebener Betrag, wo kann ich den angeben? Klar, im Parameter:
public void aufladen(int betrag) {
Und noch Guthaben erhöhen. Da muss wohl eine (Instanz-)Variable mit dem Namen "guthaben" (oder so ähnlich) erhöht werden. Einfache Rechenoperation.

Stellen Sie sicher, dass das Guthaben nur erhöht werden darf, aber nicht verringert.
Ups, da ist noch ne Bedingung (Bedingung könnte ja auf irgendwas mit if() hindeuten).
Komisch, ich addiere doch den "betrag" immer, wie soll da was abgezogen werden?

Denk mal drüber nach, wie das mathematisch möglich ist, mit einer Addition trotzdem den Wert zu verringern und verhindere das.
 
Zuletzt bearbeitet:
Thema: 

Klassen und Objekte

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben