Wątek przeniesiony 2014-09-17 15:44 z Java przez ŁF.

Brak pomysłu na rozwiązanie zadania z klasami i interfacem

0

Witam. Mam do napisania 2 programy w języku JAVA. Pierwszy udało mi się bez najmniejszego problemu, zaś z drugim mam spore problemy(zdjęcie).
Głównie chodzi o klasę wyścig. Baaaaardzo proszę o pomoc w wykonaniu tego zadania. Oto co napisałem (zdaje sobie sprawę że być może jest to napisane źle).
Bardzo proszę o pomoc!!!!!!!!! (treść w załączniku)

package zad2.z.ost;

public class Zad2ZOst {


    public static void main(String[] args) {
       [b]?????????????????????????????????[/b]
    }
    
}

interface Pojazd{

    void dodajGaz();
    int v=0;
            
}

class Auto implements Pojazd
{
    int pojazd1=0;
    public void dodajGaz()
    {
        pojazd1=pojazd1+5;
    }
}

class Motor implements Pojazd
{
    int pojazd2=0;
    public void dodajGaz()
    {
        pojazd2=pojazd2+4;
    }
}

class Wyscig{
[b]??????????????????????????????????????[/b]
}
1

Zmienne "pojazd" w klasach Motor i Auto nazwij np. "predkosc". W klasie Wyscig będą dwa obiekty Auto pojazd1 i Motor pojazd2, metoda wyscigPojazdów, która jest dobrze opisana w teści zadania oraz konstruktor, który za parametry przyjmuje obiekty klasy Auto i Motor, a w ciele przypisuje przekazane obiekty do pojazd1 i pojazd2. W mainie stwórz obiekty klasy Auto i Motor oraz Wyscig, któremu przekażesz te 2 zmienne jako parametry.

0

Dziękuję ci za poświęcony dla mnie czas, ale widzisz... dopiero zaczynam swoją przygodę z Javą i nie rozumiem do końca wszystkich terminów których użyłeś.
Byłbym bardzo wdzięczny gdybyś np nakierował mnie poprzez skopiowanie kodu którego użyłem i naniesienie poprawek innym kolorem.

1

Wydaje mi się, że opis zadania trochę wprowadza w błąd, bo interface w Java nie posiada zmiennych, których wartości można zmienić (inaczej mówiąc, mogą posiadać tylko stałe). W tym przypadku należy rozumieć słowo "intefejs" w szerszym kontekście i zaimplementować jako abstract class.
Auto i Motor nie mają mieć żadnych własnych zmiennych, mają korzystać z v w Pojazd.

abstract class Pojazd {
	protected int v = 0;
	
	public abstract void dodajGaz();
}

class Auto extends Pojazd {
	@Override
	public void dodajGaz() {
		v += 5;
	}
}

class Motor extends Pojazd {
	@Override
	public void dodajGaz() {
		v += 4;
	}
}

class Wyscig {
    public Pojazd pojazd1;
    public Pojazd pojazd2;

    public void wyscigPojazdow() {
    	// implementacja
    }
}
0

Czy ktoś pomoże mi z implementacją, coś mi nie wychodzi...

0

Obecnie mój kod wygląda następująco. Stworzyłem 3 obiekty w main'ie lecz teraz nie wiem jak mam przekazać "2 zmienne przez parametry" jak wspomniałeś wcześniej.

package zad2.z.ost;

public class Zad2ZOst {


    public static void main(String[] args) {
       Auto obiekt = new Auto();
       Wyscig obiekt1 = new Wyscig();
       Motor obiekt2 = new Motor();
              
    }
    
}

abstract class Pojazd{

    public abstract void dodajGaz();
    protected int v=0;
            
}

class Auto extends Pojazd
{
    
    public void dodajGaz()
    {
        v += 5;
    }
}

class Motor extends Pojazd
{
    
    public void dodajGaz()
    {
        v += 4;
    }
}

class Wyscig{
public Pojazd pojazd1;
public Pojazd pojazd2;

void wyscigPojazdow()
{
    pojazd1.dodajGaz();
    pojazd2.dodajGaz();
}

}

dodanie znacznika <code class="java"> - furious programming

1
public static void main(String[] args) {
    Wyscig wyscig = new Wyscig();

    Pojazd auto = new Auto();
    Pojazd motor = new Motor();
    wyscig.pojazd1 = auto;          // albo wyscig.pojazd1 = new Auto(); i nie trzeba deklarowac "auto"
    wyscig.pojazd2 = motor;

    wyscig.wyscigPojazdow();
}

Zauwaz, ze auto i motor są deklarowane jako Pojazd a nie Auto i Motor. Po to masz tę całą hierarchię, żeby korzystać z polimorfizmu.

0
void wyscigPojazdow()
{
     Random r = new Random();
     while(pojazd1.v<100 && pojazd2.v<100)
     {
          if(r.nextInt(2) == 0)
          {
                pojazd1.dodajGaz();
          }
          else
          {
               pojazd2.dodajGaz();
          } 
     }
}
0

Dziekuję, mam już ostatnie pytanie: Jak zmodyfikowac kod aby wyscig konczyl sie po uzyskaniu 100, stworzylem cos takiego, lecz zdaje sobie sprawe ze ta pętla bedzie dzialala poprawnie tylko w tym przypadku. Nie wiem jak odwołać się do zmiennej t. Dlatego stworzyłem pętle z wykorzystaniem i, która pasuje tylko i wyłącznie do tego przypadku.

void wyscigPojazdow() 
{
    
    for(int i=0;i<20;i++){
    pojazd1.dodajGaz();
    pojazd2.dodajGaz();
    }
    System.out.println("KONIEC WYSCIGU");
    return;
}

dodanie znacznika <code class="java"> - furious programming

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