NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: OOP cvičení 3

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jan Ulrich
Člen
Avatar
Jan Ulrich:14.2.2017 7:40

Ahoj, jsem u cvičení ke třetí lekci OOP. Třetí příklad s auty a garáží jsem nepochopil a kód jsem opsal z řešení autora. Snažím se pochopit komunikaci mezi objekty (tedy spíše třídami, nevím jak to přesně v této fázi nazvat) a trochu v tom plavu. Poradí někdo zkušenější.
Vytvořil jsem v hlavní metodě další objekt ford. Proč mi ho to nezaparkuje do garáže?

Garaz garaz = new Garaz();
        Auto skoda = new Auto("123ABC", "modrá");
        Auto ford = new Auto("6u12321","černá");
        ford.zaparkuj(garaz);
        skoda.zaparkuj(garaz);
        System.out.println(garaz);

zde je třída Auto

/**
    * SPZ
    */
   private String spz;
   /**
    * Barva
    */
   private String barva;

   /**
    * Inicializuje novou instanci
    * @param spz SPZ
    * @param barva  Barva
    */
   public Auto(String spz, String barva)
   {
       this.spz = spz;
       this.barva = barva;
   }

   /**
    * Vrátí SPZ auta
    * @return SPZ auta
    */
   public String vratSpz()
   {
       return spz;
   }

   /**
    * Zaparkuje auto do garáže
    * @param garaz Garáž
    */
   public void zaparkuj(Garaz garaz)
   {
       garaz.vloz(this);

   }

zde Garaz

/**
     * Instance auta, které je v garáži zaparkované
     */
    private Auto auto;
    public void vloz(Auto auto)
    {
        this.auto = auto;
    }
     /**
     * Vrátí textovou reprezentaci garáže
     * @return Textová reprezentace garáže
     */
    @Override
    public String toString()
    {
        return "V garáži je auto: " + auto.vratSpz();
    }

Dík za odpověď.

 
Odpovědět
14.2.2017 7:40
Avatar
Filip Oborník:14.2.2017 8:05

Ahoj,
ono ti to ve skutečnosti toho forda do garáže uloží

ford.zaparkuj(garaz);

, ale hned v zápětí tam místo něj uloží skodu,

skoda.zaparkuj(garaz);

protože to ukládáš do proměnné typu auto, kam se vejde jen jedno auto (objekt). Tím pádem se to první auto (ford), které jsi tam vložil "zahodí", když tam uložíš jiné auto (skodu).
Pokud by jsi chtěl tam mít uložená obě auta, musel by sis vytvořit například pole auta a do něj je ukládat.

Editováno 14.2.2017 8:07
Nahoru Odpovědět
14.2.2017 8:05
"Good judgment comes from experience, and a lot of that comes from bad judgment." Will Rogers
Avatar
Jan Ulrich
Člen
Avatar
 
Nahoru Odpovědět
14.2.2017 8:16
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.