Potrzebuję napisać program, który będzie symulować wypożyczalnię samochodów, z poniższymi funkcjami:
1.) Użytkownik musi być w stanie dodać rodzaj samochodu: sportowy lub rodzinny przy czym oba mają delikatnie inną charekterystykę.
- Następnie wpisać model i pojemność silnika
- W bazie przechowywane będą 3 samochody
2.) Pozwoli użytkownikowi wybrać jedną opcję z menu: - wynająć samochód
- oddać samochód
- wyświetlić dostępne samochody
- wyświetlić samochody obecnie wypożyczone
Do rozwiązania problemu stworzyłem superklasę Auto i dwie subklasy AutoSportowe i AutoRodzinne.
Auto i AutoRodzinne określane są przez te same zmienne (model, pojSilnika), a AutoSportowe posiada unikalną zmienną "szyberdach".
Dla każdej klasy stworzyłem osobne klasy aplikacji.
Mam dwa problemy, które uniemożliwiają mi "pójście dalej":
- nie wiem jak połączyć system klasy Auto ze Auto Sportowe tak, aby w przypadku dodawania przez użytkownika danych dla auta sportowego (które określane jest przez jedną dodatkową zmienną) zasysało tą zmienną z klasy SportoweAuto.
- Nie wiem jak wynająć samochód. Próbowałem wszelkich pętli, szukałem info w necie jak usuwać pola w tablicy, ale albo nie mogłem albo nie potrafiłem zaaplikować rozwiązań w swoim kodzie. Mam taką też refleksję czy oby usuwanie elementów tablicy jest rozsądne w moim przypadku, gdzie muszę być w stanie wyświetlić wypożyczane samochody i w końcu je zwrócić?
Poniżej zamieszczam kod (tylko superklasy Auto i subklasy AutoSportowe, bo w przypadku subklasy AutoRodzinne kod jest niemalże identyczny):
Klasa Auto
//superklasa Auto wykorzystujaca konstruktor do przekazania prywatnych zmienncyh
public class Auto {
private int autoID; //identyfikator
//parametry wspolne dla wszystkich klas
private String marka;
private double pojSilnika;
static int dodaj = 1;
public Auto()
{
//pusty konstruktor ustawiajacy ilosc potrzebnego miejsca w pamieci
}
//konstruktor przekazujacy 2 parametry + idetyfikator
public Auto(String marka, double pojSilnika)
{
this.autoID= dodaj;
this.marka = marka;
this.pojSilnika = pojSilnika;
dodaj++;
}
//zwroc output
public String toString(){
return ("ID: "+autoID+" \nmarka: " + marka + "\npoj. silnika" + pojSilnika);
}
}
klasa RunAuto
//aplikacja klasy Auto
import java.util.*;
public class RunAuto
{
//wyglad manu glownego
static void mojeMenu()
{
System.out.println("Witamy w naszej wypożyczalni. Wybierz opcję: ");
System.out.println("1. Wypożycz auto");
System.out.println("2. Oddaj auto");
System.out.println("3. Dostępne auta");
System.out.println("4. Auta w wypożyczeniu");
System.out.println("5. Wyjdz");
}
public static void main (String [] args)
{
Scanner wstukaj = new Scanner(System.in); //inicjacja klasy Scanner do wpisywania z klawiatury
//inicjacja parametrow wspolnych dla wszystkich subklas (i superklasy)
String marka;
double pojSilnika;
//array wypAuto sluzacy uzytkownikowi do wprowadzenia 3 elementow przed przejsciem do menu
Auto [] wypAuto = new Auto [3];
//zmienna i sluzaca do liczenia w petli
int i;
//dodawanie nowego samochodu z dwoma parametrami
for(i = 0; i <= 2; i++)
{
System.out.print("Dodaj markę: ");
marka = wstukaj.nextLine();
System.out.println("Okresl poj. silnika: ");
pojSilnika = wstukaj.nextDouble();
wstukaj.nextLine();
wypAuto[i] = new Auto(marka, pojSilnika);
}
//wybierz opcje z menu
int wybierzOpcje=0;
mojeMenu();
System.out.println("Proszę wybrac opcję: ");
wybierzOpcje=wstukaj.nextInt();
//switch sterujace systemem menu
switch(wybierzOpcje)
{
case 1: //wypozycz samochod
break;
case 2: //oddaj samochod
break;
case 3: for (i = 0; i <= 2; i++)
{
System.out.println(wypAuto[i].toString());
//drukowanie danych trzech samochodow wprowadzonych przez uzytkownika
}
break;
case 4: //wyswietl nniedostepne
break;
case 5: // Wyjscie
break;
}//switch
}//main
}//klasa
klasa AutoSportowe
public class AutoSportowe extends Auto {
private String szyberdach;//unikalny parrametr dla subklasy AutoSportowe
public AutoSportowe (String marka, double pojSilnika, String szyberdach)
{
super (marka, pojSilnika); //calls constructor of the superclass
this.szyberdach= szyberdach;
}
public String toString()
{
return (super.toString() + " \nSzyberdach [t/f]: "+szyberdach);
}
}
klasa RunAutoSportowe
//Aplikacja klasy AutoSportowe, analogicznie jak RunAuto z uwzglednieniem unikalnego parametru szyberdach dla subklasy AutoSportowe
import java.util.*;
public class RunAutoSportowe {
public static void main(String [] args)
{
Scanner wstukaj = new Scanner(System.in);
String marka;
double pojSilnika;
String szyberdach;
AutoSportowe [] wypAutoSportowe = new AutoSportowe[3];
int i;
for (i = 0; i <= 2; i++)
{
System.out.print("Dodaj markę: ");
marka = wstukaj.nextLine();
System.out.println("Okresl poj. silnika: ");
pojSilnika = wstukaj.nextDouble();
System.out.println("Okresl styl szybardachu: ");
szyberdach=wstukaj.nextLine();
wstukaj.nextLine();
wypAutoSportowe[i] = new AutoSportowe(marka, pojSilnika, szyberdach);
}
for (i= 0; i <= 2; i++)
{
System.out.println(wypAutoSportowe[i].toString());
}
}
}
Będę bardzo wdzięczny za pomoc, bo utknąłem w martwym punkcie i nie mogę zrobić nic więcej bez tej części kodu.