Java implementowanie i dziedziczenie

0

Zrobiłem to zadanie. Chyba w złe miejsce wstawiłem interfejs. Gdzie mam go wstawić? Co mam poprawić?

1.Istnieje klasa

public class Samochod{
protected String marka;
private String model;
protected int rocznik;
public String info() {
return marka + " : " + model + ": " + rocznik;
}
}

istnieje interfejs

public Dostawczy{
public boolean czyJestDostawczy ();
public int ladownosc();
}

Napisz dwie klasy: RenaultTrafic i HondaCivic. Klasa RenaualtTrafic reprezentuje samochód dostawczy RenaualtTrafic o ładowności 1200 kg. Klasa HondaCivic reprezentuje samochód osobowy Honda Civic o ładowności 560 kg. Każda klasa ma dziedziczyć po klasie Samochód i implementować interfejs Dostawczy. Każda klasa ma posiadać konstruktor w którym jako argument podawany jest rocznik samochodu. Każda klasa posiada metodę public String info () która zwraca tekst np. Renaualt : Trafic: 2002” lub Honda Civic : 2004''

Zadanie zrobione w Eclipse
http://www.speedyshare.com/files/20598377/1.zip

0

Trochę tu przekombinowałeś...

interface Samochód{
   public Marka getMarka();
   public Model getModel();
   public Rocznik getRocznik();
}

interface Dostawczy extends Samochód{
   public Ładowność getŁadowność();
}

interface Osobowy extends Samochód{
  public int getLiczbaDrzwi();
}

class Marka{
    public String nazwa;
    public List<Model> modele;
}

class Model{
   public String nazwa;
   public Set<Rocznik> dostępneRoczniki;
}

class Rocznik{
   public Rocznik(int rok){
      // zanim utworzysz obiekt musisz sprawdzić czy rok jest poprawny!
  }
}

class Ładowność{
   public Ładowność(int ładowność){
      // jak w roczniku sprawdzasz czy nie jest <0 
   }
}

Masz trzy interfejsy oraz kilka klas (używanie "gołych" Stringów jest złe, bo nie można ich elegancko sprawdzać).

  1. Metoda uproszczona:
    Tworzymy klasę HondaCivic:

    class HondaCivic implements Osobowy{
    // tu pola i gettery z interfejsów
    
    public HondaCivic(int LiczbaDrzwi){
     // ustawiasz pola. Liczba drzwi do decyzji jest 3 i 5 jeśli dobrze pamiętam.
    }
    }

Tyle tylko, że to jest bardzo nieładne :) Abstrakcją nie jest HondaCivic, ale Samochód.

  1. Metoda bardziej elegancka.

Tworzymy klasę fabrykującą, która będzie zwracała nam implementacje interfejsów:

class FabrykaSamochodów{
   public static Osobowy zróbOsobowy(Marka marka, Model model, Rocznik rocznik, int liczbaDrzwi){
      //sprawdzasz parametry czy aby na pewno wszystko się zgadza.
   }

   public static Dostawczy zróbDostawczy(Marka marka, Model model, Rocznik rocznik, Ładowność ładowność){
      //sprawdzasz parametry czy aby na pewno wszystko się zgadza.
   }
}

Teraz wystarczy, że stworzysz słownik zawierający przedstawicieli poszczególnych marek, modeli itd. Będziesz mógł dość swobodnie tworzyć modele bez wnikania w szczegóły i roztrząsania czy klasa MercedesSLK500Rocznik2006 jest słuszna czy nie.

0

Nie wiem dlaczego ale import mi podkreśla więc wywala mi błąd. Co mam zrobić? Szukam rozwiązania ale nie mogę znaleźć
http://www.speedyshare.com/files/20602003/2.zip

0

Wklej kawałek kodu i opisz błąd.

0

Wykonuje pierwsze kroki w Javie. Podkreśla mi wszędzie import więc nie chcę mi się skompilować. Korzystam z Eclipse

Dane są klasy:

package wypozyczalnia.marki;
public class Samochod{
protected String marka;
protected String model;
protected int rocznik;
protected static int vMax;
protected int s;
public Samochod(){
}
public Samochod(String marka, String model, int rocznik){
this.marka = marka;
this.model=model;
this.rocznik=rocznik;
this.vMax=50;
}
public void jade(int v, int t){
v=(v > vMax)? vMax : v;
s=v*t;
}
public int getDystans(){
return 0;
}
public String toString(){
return marka + " : " + model + " : " + rocznik;
}
}

package wypozyczalnia.marki;

public class Seat extends Samochod{

public Seat (String m, int r) {
this.marka="Seat";
this.model=m;
this.rocznik=r;
this.vMax=220;
}
public int getDystans(){
return s;
}
}

package wypozyczalnia.marki;

public class Seat extends Samochod{

public Seat (String m, int r) {
this.marka="Seat";
this.model=m;
this.rocznik=r;
this.vMax=220;
}
public int getDystans(){
return s;
}
}

oraz program:

import wypozyczalnia.marki.*;

public class Wypozyczalnia{

public static void main(String[] args) {
Samochod [] samochody= { new Opel("Astra", 1998),
new Seat("Cordoba", 2000),
new Samochod("Nieznany", "Nieznana", 9999) } ;
wyswietlStanWypozyczalni(samochody);
System.out.println("SYMULACJA JAZDY");
for(Samochod s:samochody){
s.jade(300,5);
}
wyswietlStanWypozyczalni(samochody);
}

private static void wyswietlStanWypozyczalni (Samochod[ ] samochody){
Samochod[ ] t=samochody;
for(int i=0; i<samochody.length; i++) {
System.out.print(t[i]);
if(t[i].getDystans() !=0){
System.out.println(" : Przejechane: " +
t[i].getDystans());
}else{
System.out.println();
}
}
}
}

Napisz co zostanie wyświetlone na konsoli.

0

Nie no... a klasa Opel?

/home/koziolek/workspace/4programmers/src/main/java/Wypozyczalnia.java:[6,29] cannot find symbol
symbol  : class Opel
location: class Wypozyczalnia

Ale po przerobieniu opla na seata (zdolny blacharz jestem)

[email protected]:~/workspace/4programmers/target/classes$ java Wypozyczalnia
Seat : Astra : 1998
Seat : Cordoba : 2000
Nieznany : Nieznana : 9999
SYMULACJA JAZDY
Seat : Astra : 1998 : Przejechane: 250
Seat : Cordoba : 2000 : Przejechane: 250
Nieznany : Nieznana : 9999

Zatem śmiga :)

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