get und set - unverständlich

minipom

Mitglied
Hi Leute,

der 3. Tag den ich komplett durchpower und jetzt bin ich bei den "größeren" (zumindest für uns) Aufgaben

nh8bskb8.png

enejzh7n.png


Ich verstehe hier ab dem Punkt mit
- void setNotenschnitt (double notenschnitt)

nichtsmehr. Den Notenschnitt habe ich doch oben schon überprüft, warum jetzt nochmal dasselbe, oder muss ich es gar nicht so machen?

Java:
public class Klausur 
{
	private String name_ref;
	private int fachnummer;
	private int anzahlStudenten;
	private double notenschnitt;
	public static final int DEFAULTWERT = -1;
	public static final double DEFAULTNOTE = -1.0;
	 
	public Klausur(String name_ref, int fachnummer, int anzahlStudenten, double notenschnitt)
	{
	if (fachnummer > 9999 && fachnummer < 100000) this.fachnummer = fachnummer;
	else this.fachnummer = DEFAULTWERT;
	
	if (anzahlStudenten >= 0 && anzahlStudenten <= 500) this.anzahlStudenten = anzahlStudenten;
	else this.anzahlStudenten = DEFAULTWERT;
	
	if (notenschnitt >= 1.0 && notenschnitt <=5.0) this.notenschnitt = notenschnitt;
	else this.notenschnitt = DEFAULTNOTE;
	
	this.name_ref = name_ref;
	
// AB HIER VERSTEHE ICH NICHTS MEHR

public void setNotenschnitt(double notenschnitt)
	{
		if (notenschnitt >=1.0 && notenschnitt <= 5.0)
		{this.notenschnitt = notenschnitt;}
		else this.notenschnitt = DEFAULTNOTE;
		
		}
	
	}
 
}

Ich befürchte fast, ich habe schon am Anfang etwas falsch gemacht, finde aber absolut keinen Ansatzpunkt, kann mir jemand helfen?
 
Zuletzt bearbeitet:

Timothy Truckle

Top Contributor
Den Notenschnitt habe ich doch oben schon überprüft, warum jetzt nochmal dasselbe, oder muss ich es gar nicht so machen?
Ja und nein.
Du sollte die Überprüfung auch in der setter Methode machen, aber ohne den Code für die Überprüfung zu kopieren. Das geht, in dem du diesen Code in eine private Methode auslagerst (Deine IDE kann das sicher automatisch, Stichwort "extract method") und diese sowohl im Konstruktor wie auch im Getter aufrufen.

bye
TT
 

Helgon

Bekanntes Mitglied
Mir ist nicht ganz klar was du nicht verstehst?

Warum man in setNotenschnitt nochmal überprüft ob der zwischen 1 und 5 liegt?

Wenn ja, dann: weil die Methode den alten Notenschrnitt überschreibt (neu setzt) und man dementsprechend den Wert überprüfen muss
 
H

hüteüberhüte

Gast
Wieso, warum, weshalb darf 6.0 nicht vorkommen? Manchmal werden die doch auch vergeben. Oder ist es weil wegen Notendurchschnitt?
 

minipom

Mitglied
Stimmt den der Ansatz oben entsprechend der Aufgabenstellung, weil ich irgendwie glaube, dass ich schon ganz oben alles falsch mache.


Habe es jetzt mal so geschrieben:

Java:
public class Klausur {
public final static int DEFAULTWERT=1 ;
private final static double DEFAULTNOTE=-1.0;
private String name_ref;
private int fachnummer;
private int anzahlStudenten;
private double notenschnitt;
private double notensumme;

public Klausur (String name_ref,int fachnummer, int anzahlStudenten, double notenschnitt)
{

public String getName()
{
return name_ref;
}

public int Fachnummer()
{
return fachnummer;
}
public void Fachnummer(int fachnummer)
{
if ( fachnummer > 9999 )
{
this.fachnummer = fachnummer;
}
else fachnummer = DEFAULTWERT;
}
public int getAnzahlStudenten()
{
return anzahlStudenten;
}
public void AnzahlStudenten(int anzahlStudenten)
{
if (anzahlStudenten >=0 && anzahlStudenten <= 500)
{
this.anzahlStudenten=anzahlStudenten;}
else anzahlStudenten = DEFAULTWERT;
}
public double getNotenschnitt()
{
return notenschnitt;
}
public void Notenschnitt(double notenschnitt)
{
if (notenschnitt >= 1.0 && notenschnitt <= 5.0)
{
this.notenschnitt = notenschnitt;
}

else notenschnitt = DEFAULTNOTE;
}
public void setNotenschnitt(double notensumme, int anzahlStudenten)
{
notenschnitt= notensumme/anzahlStudenten;
if (notenschnitt >= 1.0 && notenschnitt <= 5.0)
{
this.notenschnitt = notenschnitt;
}
}
}
 
H

hüteüberhüte

Gast
Ungefähr so kannst du das machen:

Java:
package javaforum;

/**
 * @author hütte
 */
public class Klausur {

    private Object a;
    private Object b;
    private static final Object default_a = null;
    private static final Object default_b = null;

    public Klausur(Object a, Object b) {
        setA(a);
        setB(b);
    }

    public Object getA() {
        return a;
    }

    public final void setA(Object a) {
        if (aValid(a)) {
            this.a = a;
        } else {
            this.a = default_a;
        }
    }

    private boolean aValid(Object a) {
        return true;
    }

    public Object getB() {
        return b;
    }

    public final void setB(Object b) {
        if (bValid(b)) {
            this.b = b;
        } else {
            this.b = default_b;
        }
    }

    private boolean bValid(Object b) {
        return true;
    }

    public static void main(String[] args) {
        Klausur k = new Klausur(6666, 6666);
        System.out.println("k = " + k);
        // ...
    }
}
 

Helgon

Bekanntes Mitglied
Habs mir mal angeschaut, sieht richtig aus. Nur DEFAULTNOTE müsste der Aufgabe nach auch public sein.

Außerdem ist mit geschützt vllt protected und nicht private gemeint

Edit@ hütte, warum verwirrst du ihn jetzt mit sowas, er hat es doch im endeffekt ???:L
 
H

hüteüberhüte

Gast
Imho hatte er es noch nicht und imho ist deine Aussage nicht mehr nichtssagend als mein Beispiel...
 

minipom

Mitglied
Ich habe es :) :) :) :) :) :applaus: :applaus:

2 Sachen sind gelb unterlegt im Eclipse, dürfte aber nichts großes sein
Java:
public class Klausur 
{
	private String name_ref;
	private int fachnummer;
	private int anzahlStudenten;
	private double notenschnitt;
	public static final int DEFAULTWERT = -1;
	public static final double DEFAULTNOTE = -1.0;
	private double notensumme; // ist gelb unterlegt im eclipse

	
	 
	public Klausur(String name_ref, int fachnummer, int anzahlStudenten, double notenschnitt)
	
	{
	if (fachnummer > 9999 && fachnummer < 100000) this.fachnummer = fachnummer;
	else this.fachnummer = DEFAULTWERT;
	
	if (anzahlStudenten >= 0 && anzahlStudenten <= 500) this.anzahlStudenten = anzahlStudenten;
	else this.anzahlStudenten = DEFAULTWERT;
	
	if (notenschnitt >= 1.0 && notenschnitt <=5.0) this.notenschnitt = notenschnitt;
	else this.notenschnitt = DEFAULTNOTE;
	}
	
	public String getName()
	{return name_ref;}
	
	public int getFachnummer()
	{return fachnummer;}
	
	public int getAnzahlStudenten()
	{return anzahlStudenten;}
 
	public void setAnzahlStudenten(int anzahlStudenten)
	{
	if (anzahlStudenten >= 0 && anzahlStudenten <= 500) 
		this.anzahlStudenten = anzahlStudenten;
	}
	
	public double getNotenschnitt()
	{return notenschnitt;}
	
	public void setNotenschnitt(double notenschnitt)
	{
		if (notenschnitt >= 1.0 && notenschnitt <=5.0) 
			this.notenschnitt = notenschnitt;
	}
		
	public void setNotenschnitt(double notensumme, int anzahlStudenten)
	{
	notenschnitt = notensumme / anzahlStudenten;
	if (notenschnitt >= 1.0 && notenschnitt <=5.0) 
		this.notenschnitt = notenschnitt;	 // ist gelb unterlegt
	}
}
 

Ähnliche Java Themen


Oben