Just nu i M3-nätverket
Gå till innehåll

Förslag och synpunkter efterlyses


Johan_Davidsson

Rekommendera Poster

Johan_Davidsson

Nu har jag hållit på med den här jädra uppgiften ett bra tag och jag tror att jag har lyckats åstadkomma en del grejer som inte är helt idiotiska.

Hur som helst så känner jag att jag nu behöver hjälp för att förstå om jag har gjort rätt eller fel, och vad jag ska ändra på för att allting ska bli helt rätt.

 

Jag bifogar för enkelhetens skull hela uppgiften här, så att jag inte missar något:

[log]Skriv en klass som skall kallas Triangel. Klassen skall användas för att vara en

mall för olika objekt (trianglar)

Testa klassen Triangel i ett program (main-class).

a)- Skapa två objekt av Triangel. Objektens bas och höjd kan få olika

värden. Skriv ut objektens egenskaper (bas och höjd) och deras area

(print-metod).

B)- Ändra bas och höjd för befintliga objekt (set-metoder) och skriv ut

det ändrade objektens egenskaper på nytt

c)- Hämta bas och höjden för ett objekt (get-metoder) och skriv ut dem

 

Testkörningen av Uppgift5a skall se ut så här:

 

a:

Objekt 1:

Arean av en triangel med basen 3 och höjden 8 är: 12.0

a:

Objekt 2:

Arean av en triangel med basen 4 och höjden 9 är: 18.0

b:

Objekt 1 med ändrad bas:

Arean av en triangel med basen 5 och höjden 8 är: 20.0

b:

Objekt 2 med ändrad höjd:

Arean av en triangel med basen 4 och höjden 5 är: 10.0

c:

Utskrift av objektets egenskaper med get-metoder:

Arean av objekt 1 med basen 5 och höjden 8 är: 20.0

 

Tryck på ENTER för att sluta_[/log]

 

Och här är vad jag har gjort hittils (jag har gjort det på engelska för att jag känner mig mest komfortabel med det språket, åtminstone när det gäller såna här grejer…):

[log]package lab5;

class Triangle{

 

// Variables

int base;

int height;

int area;

 

public Triangle(int b, int h){

 

// Assign values passed to the constructor to the variables

base = b;

height = h;

 

area=(base*height)/2;

 

Triangle t1 = new Triangle(10, 12);

Triangle t2 = new Triangle(100, 88);

Triangle t3 = new Triangle(5, 8);

 

t1.print();

t2.print();

t3.print();

 

}

 

public void print(){

 

System.out.println("The area of a triangle with the base" +base+ "and the height" +height+ "is: " +area);

}

}[/log]

 

Jag är mycket tacksam för alla förslag och synpunkter jag kan tänkas få.

 

 

Länk till kommentar
Dela på andra webbplatser

Tja, det är väl en bra start.

 

men trianglarna ska skapas, och lagras, i en annan klass.

 

 

Eftersom du ska kunna ändra höjd och bredd behöver du funktioner i klassen som kan ändra på dessa, dvs SET-funktioner.

Dessutom bör du ändra så att arean beräknas när man vill ha den eftersom den är ett resultat av värden och inte något som ges. Det vill säga du bör ha en funktion som beräknar och returnerar arean.

Och så står det ju även att du ska ha GET-metoder för dina variabler...

 

Så skapa först en DUMMY-klass av din triangel som klarar allt det som efterfrågas men inte korrekt. Skapa sedan en testklass som kör alla dessa fall som efterfrågas. Implementera sedan varje rutin som du tidigare definierat.

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Johan_Davidsson

Öhm...det där blev mycket på en gång...

Jag ska alltså skapa en klass till, och där ska jag lagra trianglarna...

Hur ska det se ut då? Jag menar, hur lagrar jag trianglarna i en annan klass, och sedan anropar dem? För det får jag väl göra i så fall? Och sen ska jag skapa en test-klass också?

 

Det där sista du sa om dummy-klass och implentering av rutiner förstod jag inte alls. Jag är rätt grön inom Java...

 

Kan jag kanske få någon konkret kod som exempel på hur jag ska göra?

 

[inlägget ändrat 2005-03-20 20:07:36 av Johan_Davidsson]

Länk till kommentar
Dela på andra webbplatser

Kodexempel?

 

tja, din triangelklass ska klara av att svara på dessa frågor som finns i denna klass:

public class Main {
	public static void main(String[] args) {

		Triangle t1 = new Triangle(10, 12);
		System.out.println("Objekt 1:");
		System.out.println("Arean av en triangel med basen " +  t1.getBase() + 
				" och höjden " + t1.getHeight() + " är: " + t1.getArea());
	}
}

 

Nu ger jag dig en hel del gratis, men jag hoppas du förstår vad det är jag skrivit ovan.

funktionen som skapas med

public static void main(String[] args)

är ingångssteget i ditt program. Den del som börjar exekveringen när du startar det. Det är denna som styr den vidare utveckligen i programmet.

 

Dummy-klass kanske var dumt utryckt. En tom klass kanske är bättre. Mao - skapa de funktioner du vet kommer tat behövas och fyll dem först därefter med verklig kod.

 

Nu borde du klara dig tycker jag. Titta på kodexempel i din kurslitteratur, Där bör det finnas många exempel på getters och setters.

 

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Johan_Davidsson

Jag tror att jag har fått till det mesta nu, men jag fattar fortfarande inte hur jag ska göra med get-metoderna. Jag kan inte få dom att funka hur jag än gör. Kan någon snäll människa kanske hjälpa mig med dessa?

 

Det här har jag gjort hittills:

 

[log]package lab5;

public class Main {

public static void main(String[] args) {

 

Triangle t = new Triangle(3, 8);

t.print();

 

Triangle u = new Triangle(4, 9);

u.print();

 

t.setBase(5);

t.setHeight(8);

t.setArea((5*8)/2);

t.print();

 

u.setBase(4);

u.setHeight(5);

u.setArea((4*5)/2);

u.print();

 

}

}[/log]

 

[log]package lab5;

class Triangle{

 

// Variables

int base, height;

double area;

 

public void setBase(int i)

{

base = i;

}

public void setHeight(int i)

{

height = i;

}

public void setArea(int i)

{

area = i;

}

 

public Triangle(int b, int h){

 

// Assign values passed to the constructor to the variables

base = b;

height = h;

area=(base*height)/2;

}

 

public void print(){

System.out.println("The area of a triangle with the base " +base+ " and the height " +height+ " is: " +area);

}

}[/log]

 

Länk till kommentar
Dela på andra webbplatser

en Get - returnerar ett av de värden som finns lagrade i klassen.

 

dvs för att returnera exv. höjden skriver du:

public int getHeight(){
return height
}

 

och som sagt. Eftersom arean är en effekt av satt höjd och bredd bör du inte beräkna denna i konstruktorn utan ha en metod som beräknar och returnerar arean.

public double area(){
return width * height /2
}

 

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

[inlägget ändrat 2005-03-23 21:13:47 av Monshi]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...