Obiekty należące do innego obiektu

Odpowiedz Nowy wątek
2011-10-12 00:01
nur
0

Witam wszystkich.

Piszę taki program (dopiero się uczę więc każda sugestia mile widziana) w którym wymyśliłem takie założenia.

Tworzymy „układ planetarny”
tzn podajemy ile chcemy mieć planet(zmienna ilość) , a potem ile planeta ma mieć księżycy
Każda planeta ma swoje współrzędne gdzie się znajduje a księżyce (jeśli są) są w pobliżu planety.

Chcę napisać to obiektowo czyli planeta ma swoje księżyce
i tu pojawia się mój problem
jak się potem odwołać do danego księżyca danej planety z głównej klasy
albo sprawdzić czy i ile planeta ma księżyców
albo np. jak wypisać je po kolei
księżyc 1 x=..., y=... Planety1
księżyc 2 x=..., y=... Planety1
księżyc 3 x=..., y=... Planety1
księżyc 1 x=..., y=... Planety2


...
gdzie x,y to współrzędne

napisałem to tak:

public class Planety {

    public static void main(String[] args) {

          int a;

          Scanner odczyt = new Scanner(System.in);

          System.out.println("Podaj ilosc planet: ");
            a = odczyt.nextInt();

            Planeta[] plan= new Planeta[a]; 
            for (int i=0; i<a; i++)  
            {
                float x, y;
                int  ilosc;

                System.out.println("podaj pozycje x planety ");
                x = odczyt.nextInt();
                System.out.println("podaj pozycje y planety ");
                y = odczyt.nextInt();
                System.out.println("podaj ilość ksiezycy ");
                ilosc = odczyt.nextInt();

                plan[i] = new Planeta(x,y,ilosc);   
            }

// pytanie jak np. wypisać księżyce planet
// albo sprawdzić czy dana planeta ma i ile księżyców      
          }}

///////////////////////// nowy plik

package Planety;

import java.util.Scanner;
import java.util.Random;  

public class Planeta{
    float x;  
    float y;

    int ilosc;  

    public Blok(float i, float j, int m){
        x = i;
        y = j;
        d = 3; // odleglosc orbity (kwadratowej ;)  )
        ilosc = m;

            Ksiezyc[] ksi = new Ksiezyc[ilosc]; 
            Random randomGenerator = new Random();

            for (int jj=0; jj<ilosc; jj++)
              {
             ksi[jj] = new Punkt((x-d/2)+randomGenerator.nextFloat()*d,randomGenerator.nextFloat()*((y+d/2)-(y-d/2)));
            }           
        }
}

///////////////////// nowy plik

package Planety;

public class Ksiezyc {
    float x;  
    float y;

    public Ksiezyc(float a, float b){

        x= a;    
        y= b;   

    }

}

Pozostało 580 znaków

2011-10-12 01:16
ws
0

Uzyj zbiorow (java.util.Set)

Pozostało 580 znaków

2011-10-12 07:54
0

Planety jak na razie nic nie wiedzą o księżycach a tablica

Ksiezyc[] ksi

ma zasięg lokalny metody Blok, więc sobie generujesz księżyce, a za chwilę są one tracone. Powinieneś co najmniej przenieść deklarację tej tablicy do pól klasy. A jak się potem do tego dostać? Dwie opcje albo robisz to pole jako publiczne, albo zostawiasz je jako prywatne i tworzysz metodę dostępową ,tzw getter, getKsiezyce (getMoons?). Osobiście polecam drugie rozwiązanie.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0