2011-11-27, 15:47
  #1
Medlem
thejakes avatar
Uppgiften är att skapa tre tärningar, alla med olika sidor, som skriver ut tre kast var. Jag har skapat en huvudklass:

public class Tärning {

public int kast(int y){
return (int) (Math.random()*y+1);

}

}

Sen tre olika subclasser jag tar med en eftersom de nästan är identiska:

public class T4 extends Tärning {

public void kast (){

T4 T4object = new T4 ();

T4object.kast(4);

System.out.println(T4object);

}

}

Jag har satt kast till 4 här för att tärningen ska ha 4 sidor. Nu till mitt problem jag ska skriva ut alla tärningarna i en main test klass där man inte ska kunna ändra antalet sidor. Så vad jag vill är att den ska skriva ut tre kast av min T4object och sen samma sak för de andra två klasserna T6 och T8.
Hur bör jag skriva?
Citera
2011-11-27, 16:16
  #2
Medlem
Istället för att använda Math.Random() som om jag minns rätt genererar ett tal mellan 0 och 1. Så tycker jag du ska kolla på Random klassen i Java.

Du kan skapa ett Random objekt på samma sätt som allt i java

Random random = new Random(); // T.ex.

Du kan även med hjälp av detta generera tal mellan 0 och oändligheten t.ex. kommer

random.nextInt(5); att get tal mellan 0-4(kommer inte ihåg hur metoden heter men kan man slå upp i API). Sen kan du använda någon form av input att anropa detta med istället för hårdprogrammerade siffror.
Citera
2011-11-27, 19:14
  #3
Medlem
Nej vänta här nu,det här duger inte.

Vad är T4 för nånting ? Använd vettiga klass namn. Inga ÅÄÖ för den delen heller.

Varför gör du en tärningsklass med en funktion som du sen inte använder i T4 klassen ? Det betyder att Tärning klassen inte fyller nån funktion över huvud taget.

Sen i T4 klassen så skapar du ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,

ja du kanske anar vart det barkar.

Gör en instans variabel med antalet sidor i Tärning som du sätter när du skapar objektet. Sen skapar du 3 såna objekt. Utskriften är det enklaste,antingen så fixar tärningen en utskriftssträng eller en int (med resultatet av kastet). Så kan du skriva ut det från huvud klassen.
println("Resultatet blev "+ tarning1.kasta()); typ.
Citera
2011-11-27, 23:42
  #4
Medlem
Citat:
Ursprungligen postat av SixtenSune
Nej vänta här nu,det här duger inte.

Vad är T4 för nånting ? Använd vettiga klass namn. Inga ÅÄÖ för den delen heller.

Varför gör du en tärningsklass med en funktion som du sen inte använder i T4 klassen ? Det betyder att Tärning klassen inte fyller nån funktion över huvud taget.

Sen i T4 klassen så skapar du ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,som har ett T4 objekt,

ja du kanske anar vart det barkar.

Gör en instans variabel med antalet sidor i Tärning som du sätter när du skapar objektet. Sen skapar du 3 såna objekt. Utskriften är det enklaste,antingen så fixar tärningen en utskriftssträng eller en int (med resultatet av kastet). Så kan du skriva ut det från huvud klassen.
println("Resultatet blev "+ tarning1.kasta()); typ.

Haha skrattade lite när jag du sa om att det skapades objekt i en oändlighet och kollade igenom koden. :P Oändlig rekursion med objekt ftw
Citera
2011-11-27, 23:59
  #5
Medlem
dMobergs avatar
Citat:
Ursprungligen postat av SixtenSune
Vad är T4 för nånting ? Använd vettiga klass namn. Inga ÅÄÖ för den delen heller.
T4 är väl ganska vettigt? En T4:a. Iaf om man vet att det handlar om tärningar
Fast egentligen kanske man inte skulle ha olika klasser för objekt som bara skiljer sig på ett heltal :P För i övrigt är ju tärningarna lika. - Och då skulle man ju strippa siffran och skriva ett längre namn ^^

Kan du inte göra en
Tärning > FuskTärning
istället? Hade varit roligare :P
__________________
Senast redigerad av dMoberg 2011-11-28 kl. 00:02.
Citera
2011-11-28, 00:34
  #6
Medlem
Citat:
Ursprungligen postat av dMoberg
T4 är väl ganska vettigt? En T4:a. Iaf om man vet att det handlar om tärningar
Nej inte det minsta.
Citat:
Ursprungligen postat av dMoberg
Fast egentligen kanske man inte skulle ha olika klasser för objekt som bara skiljer sig på ett heltal :P
Nej verkligen inte.
Citat:
Ursprungligen postat av dMoberg
För i övrigt är ju tärningarna lika. - Och då skulle man ju strippa siffran och skriva ett längre namn ^^
Varför inte döpa instanserna av klassen till nått vettigt istället för att göra olika klasser ?
Typ
Dice diceWithFourSides = new Dice(4);
Dice diceWithSixSides= new Dice(6);
Dice diceWithEightSides= new Dice(8);

se så bra det blev.
__________________
Senast redigerad av SixtenSune 2011-11-28 kl. 00:37.
Citera
2011-11-28, 01:24
  #7
Medlem
dMobergs avatar
Citat:
Ursprungligen postat av SixtenSune
Nej verkligen inte.

Varför inte döpa instanserna av klassen till nått vettigt istället för att göra olika klasser ?
Typ
Dice diceWithFourSides = new Dice(4);
Dice diceWithSixSides= new Dice(6);
Dice diceWithEightSides= new Dice(8);

se så bra det blev.
Jag vet, det jag sa ju.
Citera
2011-11-28, 02:41
  #8
Medlem
Mustighets avatar
som sixtensune sa, närmare bestämt:
-släng subklasserna
-gör en instansvariabel för antalet sidor i din tärningsklass som sedan kast() kan använda
-gör en konstruktor till Tärning som tar en parameter för antalet sidor

sen väljer du själv om du vill att kast ska skriva ut vad du fick eller spara senaste kastet i ännu en instansvariabel för att användas i en annan metod.

nu kan du göra 1000 olika tärningar med olika sidantal utan att göra 1000 subklasser
Citera
2011-11-28, 11:30
  #9
Medlem
thejakes avatar
Okej tack!
Citera
2011-11-28, 12:24
  #10
Medlem
http://en.wikipedia.org/wiki/Naming_...gramming)#Java
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in