Citat:
Ursprungligen postat av
Boven541
Naturliga tal kan sägas vara heltal som inte är negativa. Skriv en klass N för naturliga tal med följande innehåll och funktion:
public Nat(int n) skapar ett naturligt tal med värdet n. Om n<0 ska undantaget IllegalArgumentException kastas.
public Nat add(Nat n) ger summan av det naturliga talet och n.
Kod:
public class Nat {
private Integer temp;
public Nat(int n) {
if(n<0) {
throw new IllegalArgumentException();
}
else {
this.temp = n;
}
}
public Nat add(Nat n) {
}
Vet inte ens om jag förstår uppgiften men kan jag casta om en Integer till ett Nat objekt? Hur hade ni skrivit metoden public Nat add(Nat n)?
Integer temp är inte särskilt temporär, alltså är namnet dumt. Den innehåller objektets enda värde och bör ha ett namn som speglar det.
Sedan verkar det onödigt att inte använda en vanlig int. Generellt sett ska/bör sådana saker (hur ditt objekt ser ut på insidan) hållas privata. Så för det man vill ska vara åtkomligt skapar man get-metoder, som, lite överkurs, inte returnerar en referens som låter någon på utsidan manipulera värdet (enkelt uttryckt, skapa en kopia som returneras).
Nat add(Nat n):
ungefär
return new Nat(this.getValue() + n.getValue())
där
public int getValue()
beskrivs tidigare i inlägget.
Fast frågan är vad add-metoden ska göra. Ska den skapa en summa-Nat av två Nat eller plussa på värdet i en befintlig Nat?