Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lab01;
- //-------------------------------------------------------------------------------
- interface UkladNapedowyFunkcjonalnosc
- {
- public void start();
- public void stop();
- public float wysterujMoc(float ile);
- }
- abstract class UkladNapedowy implements UkladNapedowyFunkcjonalnosc
- {
- public final float moc;
- public enum Rodzaj{SPALINOWY,ELEKTRYCZNY, HYBRYDOWY};
- Rodzaj rodzaj;
- UkladNapedowy(float moc, Rodzaj rodzaj)
- {
- this.moc=moc;
- this.rodzaj=rodzaj;
- }
- }
- class UkladNapedowyHybrydowy extends UkladNapedowy
- {
- private boolean elektryczny;
- private float przepustowosc;
- public UkladNapedowyHybrydowy(float moc)
- {
- super(moc,UkladNapedowy.Rodzaj.HYBRYDOWY);
- przepustowosc=0.1f;
- elektryczny=true;
- }
- public void start()
- {
- System.out.println("Uruchamiam hybrydowy");
- elektryczny=true;
- przepustowosc=0.1f;
- }
- public void stop()
- {
- System.out.println("Zatrzymuje hybryde");
- elektryczny=false;
- przepustowosc=0f;
- }
- public float wysterujMoc(float ile)
- {
- System.out.println("Hybrydowy: zwiekszam moc");
- przepustowosc+=ile;
- if(przepustowosc>=0.8) System.out.println("Przelaczam silnik hybrydowy na benzyne");
- System.out.println("Moc: "+przepustowosc);
- return przepustowosc;
- }
- }
- class UkladNapedowySpalinowy extends UkladNapedowy
- {
- public final float pojemnosc;
- private boolean zawory;
- private float przepustowosc_zaworu;
- public UkladNapedowySpalinowy(float moc, float pojemnosc)
- {
- super(moc,UkladNapedowy.Rodzaj.SPALINOWY);
- this.pojemnosc=pojemnosc;
- zawory=false;
- przepustowosc_zaworu=0f;
- }
- public void start()
- {
- System.out.println("Uruchamiam spalinowy");
- zawory=true;
- przepustowosc_zaworu=0.1f;
- }
- public void stop()
- {
- System.out.println("Zatrzymuje spalinowy");
- zawory=false;
- przepustowosc_zaworu=0f;
- }
- public float wysterujMoc(float ile)
- {
- System.out.println("Spalinowy: zwiekszam moc");
- przepustowosc_zaworu+=ile;
- return przepustowosc_zaworu;
- }
- }
- class UkladNapedowyElektryczny extends UkladNapedowy
- {
- private boolean wlacznik_glowny;
- private float rezystancja;
- public UkladNapedowyElektryczny(float moc)
- {
- super(moc, UkladNapedowy.Rodzaj.ELEKTRYCZNY);
- wlacznik_glowny=false;
- rezystancja=0f;
- }
- public void start()
- {
- System.out.println("Elektryczny uruchamiam");
- wlacznik_glowny=true;
- }
- public void stop()
- {
- System.out.println("Elektryczny wylaczam");
- wlacznik_glowny=false;
- }
- public float wysterujMoc(float ile)
- {
- System.out.println("Elektryczny zwieksza moc");
- return 0;
- }
- }
- //-------------------------------------------------------------------------------
- class UkladHamulcowy
- {
- private boolean error;
- public final float maksymalna_sila;
- public UkladHamulcowy(float maksymalna_sila) {
- error=false;
- this.maksymalna_sila = maksymalna_sila;
- }
- boolean czySprawny()
- {
- return !error;
- }
- void hamuj(float sila)
- {
- System.out.println("Hamuje sila="+sila);
- if(sila>maksymalna_sila) error=true;
- }
- }
- class Podloga
- {
- public final float szerokosc, dlugosc;
- Podloga(float szerokosc, float dlugosc)
- {
- System.out.println("Tworzy sie podloga");
- this.szerokosc=szerokosc;
- this.dlugosc=dlugosc;
- }
- }
- class Nadwozie
- {
- public final float wysokosc;
- public byte liczbaFoteli;
- public Nadwozie(float wysokosc, byte liczbaFoteli)
- {
- System.out.println("Tworzy sie nadwozie");
- this.wysokosc=wysokosc;
- this.liczbaFoteli=liczbaFoteli;
- }
- }
- class Samochod{
- float predkosc;
- private float maksymalna_sila_hamowania;
- protected Podloga plyta;//plyta podlogowa
- protected Nadwozie paka;//Nadwozie
- protected UkladHamulcowy hamulce;//Uklad Hamulcowy
- protected UkladNapedowy naped;//Uklad napedowy
- public Samochod(float szerokosc, float dlugosc, float wysokosc, byte liczbaFoteli,
- UkladNapedowy.Rodzaj rodzaj, float moc, float pojemnosc)
- {
- predkosc=0f;
- maksymalna_sila_hamowania=100f;
- paka=new Nadwozie(wysokosc, liczbaFoteli);
- plyta=new Podloga(szerokosc, dlugosc);
- hamulce=new UkladHamulcowy(maksymalna_sila_hamowania);
- switch(rodzaj)
- {
- case SPALINOWY: naped = new UkladNapedowySpalinowy(moc,pojemnosc); break;
- case ELEKTRYCZNY: naped = new UkladNapedowyElektryczny(moc);break;
- case HYBRYDOWY: naped = new UkladNapedowyHybrydowy(moc);break;
- default: naped = null;
- }
- }
- public void start(){naped.start();}
- public void stop(){naped.stop();}
- public void nacisnijGaz(float ile) {predkosc+=naped.wysterujMoc(ile);}
- public void hamuj (float sila){hamulce.hamuj(sila);}
- }
- public class Lab01
- {
- public static void main(String[] args) {
- Samochod S1=new Samochod (2.2f,6f,1.4f, (byte)5, UkladNapedowy.Rodzaj.ELEKTRYCZNY, 60f,0f);
- Samochod S2=new Samochod (2.24f,8f,1.6f,(byte)7, UkladNapedowy.Rodzaj.SPALINOWY,100f,2.2f);
- Samochod S3=new Samochod (3.24f,9f,1.8f,(byte)4, UkladNapedowy.Rodzaj.HYBRYDOWY,80f,1.2f);
- System.out.println("\n\n\nSamochod Elektryczny");
- S1.start();
- S1.nacisnijGaz(10);
- S1.nacisnijGaz(20);
- S1.hamuj(12);
- S1.stop();
- System.out.println("\n\n\nSamochod Spalinowy");
- S2.start();
- S2.nacisnijGaz(10);
- S2.nacisnijGaz(20);
- S2.hamuj(12);
- S2.stop();
- System.out.println("\n\n\nSamochod Hybrydowy");
- S3.start();
- S3.nacisnijGaz(11);
- S3.hamuj(14);
- S3.stop();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement