Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 23. 08. 2010 16:21

nightsea
Zelenáč
Příspěvky: 1
Reputace:   
 

Napojovy automat

Dobry den,
prosim o pomoc s jednim ukolem v jave... :(

Vytvořte třídu Napojovy_automat, která obsahuje. Atribut třídy vlastnik(datový typ řetězec), atribut instance mn_obsahu(datový typ celé číslo), atribut instance penize(datový typ desetinné číslo), atribut instance cinnost(datový typ logický). Připojte tři konstruktory dle vlastního uvážení. Ke všem atributům napište přístupové metody(tj. metody nastavující a vracející hodnoty jednotlivých atributů). Dále napište metodu vypisující hodnoty všech atributů do terminálu, metodu umožňující odebrat určité množství obsahu pomocí terminálu. Vstup a výstup hodnot v metodách vhodně ošetřete.

Offline

 

#2 23. 08. 2010 17:29

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: Napojovy automat

Nikdy jsi nevytvářel žádnou třídu v Javě a nemáš žádnou literaturu? Nebo to máš skoro hotové, ale neběhá to, protože na řádku 37 chybí středník?
Pokud je to ta první možnost, zkus třeba http://www.javabeginner.com/, pokud ta druhá, tak napiš co přesně jsi zvládl, co ti chybí, jestli se nedaří zkompilovat ...


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#3 23. 08. 2010 19:02

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Napojovy automat

Zdravím, je to naprosto primitivní. Napsal jsem to v jazyce C#. Java je naprosto analogická, místo using se dává package a podobně. Pokud něco na kódu nechápeš, klidně se ptej.

Code:

using System;
using System.Text;

namespace NapojovyAutomat
{
    // naše vytvořená třída Automat
    class NapojovyAutomat
    {
        // datové složky (udržují zapouzdření objektu)
        // vlastník automatu
        private string vlastnik;
        // množství určitého sortimentu
        private int mnozstviObsahu;
        // peníze v automatu
        private float penize;
        // zaplý či vyplý
        private bool cinnost = false;

        // implicitní konstruktor - bez parametrů
        public NapojovyAutomat()
        {
            this.vlastnik       = "neznámý";
            this.mnozstviObsahu = 0;
            this.penize         = 0;
            this.cinnost        = true;
        }

        // explicitní konstruktor - přetížený 2 parametry
        public NapojovyAutomat(string _vlastnik, int _mnozstviObsahu)
        {
            this.vlastnik       = _vlastnik;
            this.mnozstviObsahu = _mnozstviObsahu;
            this.cinnost        = true;
        }

        // explicitní konstruktor - přetížený 3 parametry
        public NapojovyAutomat(string _vlastnik, int _mnozstviObsahu, float _penize)
        {
            this.vlastnik       = _vlastnik;
            this.mnozstviObsahu = _mnozstviObsahu;
            this.penize         = _penize;
            this.cinnost        = true;
        }

        // metoda, která vypíše hodnoty v automatu
        public void vypsatHodnoty()
        {
            Console.Write(" Vlastník: {0} \n Množství obsahu: {1} \n Peníze: {2} \n Činnost: {3} \n ", vlastnik, mnozstviObsahu, penize, cinnost);
        }

        // metoda, která odebere množství
        public void odebratMnozstvi(int _hodnota)
        {
            this.mnozstviObsahu -= _hodnota;
        }

        // vlastnosti pro čtení a psaní
        public string Vlastnik
        {
            get { return vlastnik; }
            set { vlastnik = value; }
        }

        // vlastnosti pro čtení a psaní
        public int MnozstviObsahu
        {
            get { return mnozstviObsahu; }
            set { mnozstviObsahu = value; }
        }

        // vlastnosti pro čtení a psaní
        public float Penize
        {
            get { return penize; }
            set { penize = value; }
        }

        // vlastnosti pro čtení a psaní
        public bool Cinnost
        {
            get { return cinnost; }
            set { cinnost = value; }
        }
    }

    // testovací třída program, kde si to odzkoušíme
    class Program
    {
        static void Main(string[] args)
        {
            // vytvořili jsme automat, jehož majitel je Jarda Kalina a naplnili jsme ho 80 kusy Pepsi Coly :)
            NapojovyAutomat automat = new NapojovyAutomat("Jarda Kalina", 80);
            // odebereme z automatu čtyři Pepsi Coly :)
            automat.odebratMnozstvi(4);
            // a vypíšeme info o našem automatu
            automat.vypsatHodnoty();
            // kvůli probliknutí počkáme na stisk klávesy
            Console.Read();
        }
    }
}

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#4 23. 08. 2010 20:50

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: Napojovy automat

↑ RePRO: Spíše using => import, namespace{kód} =>package kód, vlastník má být pro třídu a ne pro instanci, je tudíž static a není dobré ho dávat do konstruktoru.

Psaní getterů a setterů je v Javě dost odlišné, třeba

Code:

public int getPenize(){
return penize;
}

public void setPenize(int penize){
this.penize = penize;
}

Ale to všechno si tazatel jistě přečte v nějakém tutorialu nebo knize.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#5 23. 08. 2010 22:46 — Editoval RePRO (24. 08. 2010 13:13)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Napojovy automat

Jo, díky za dodatky! V Javě nedělám, ale je to analogické... Přepíšu to do Javy, ale nemám překladač, takže tam můžu mít ještě nějakou tu chybu. Jinak co se týče těch getů a setů, tak jsem tušil, že v Javě nic takového není jako jsou vlastnosti v C sharpu.

Code:

 // namespace
 package napojovyAutomat;

 // vložíme důležitý import pro práci se vstupem a výstupem
 import java.io.*;

    // naše vytvořená třída Automat
    class NapojovyAutomat
    {
        // datové složky (udržují zapouzdření objektu)
        // vlastník automatu (statická - třídní proměnná)
        public static string vlastnik = "Lojza Novák";
        // množství určitého sortimentu
        private int mnozstviObsahu;
        // peníze v automatu
        private float penize;
        // zaplý či vyplý
        // implicitně v deklaraci vypneme
        private bool cinnost = false;

        // implicitní konstruktor - bez parametrů
        public NapojovyAutomat()
        {
            this.mnozstviObsahu = 0;
            this.penize         = 0;
            this.cinnost        = true;
        }

        // explicitní konstruktor - přetížený 1 parametr
        public NapojovyAutomat(int _mnozstviObsahu)
        {
            this.mnozstviObsahu = _mnozstviObsahu;
            this.cinnost        = true;
        }

        // explicitní konstruktor - přetížený 2 parametry
        public NapojovyAutomat(int _mnozstviObsahu, float _penize)
        {
            this.mnozstviObsahu = _mnozstviObsahu;
            this.penize         = _penize;
            this.cinnost        = true;
        }

        // metoda, která vypíše hodnoty v automatu
        public void vypsatHodnoty()
        {
            System.out.println("Info o našem automatu");
            System.out.println("Majitel:           " + NapojovyAutomat.vlastnik);
            System.out.println("Množství obsahu:   " + this.mnozstviObsahu);
            System.out.println("Počet peněz:       " + this.penize);
            System.out.println("Činnost:           " + this.cinnost);
        }

        // metoda, která odebere množství
        public void odebratMnozstvi(int _hodnota)
        {  
            // jednoduché ošetření
            if (this.mnozstviObsahu < _hodnota)
            {
                return;
            }
            else 
            {
                this.mnozstviObsahu -= _hodnota;
            }
        }
    
        // vrať peníze
        public float getPenize()
        {
            return penize;
        }

        // nastav peníze
        public void setPenize(float _penize)
        {
            this.penize = _penize;
        }

        // vrať počet množství produktu
        public int getMnozstviObsahu()
        {
            return mnozstviObsahu;
        }

        // nastav počet množství produktu
        public void setMnozstviObsahu(int _mnozstviObsahu)
        {
            this.mnozstviObsahu = _mnozstviObsahu;
        }
    }

    // testovací třída program, kde si to odzkoušíme
    class Program
    {
        static void Main(string[] args)
        {
            // vytvořili jsme automat, a naplníme ho 80 kusy Pepsi Coly :)
            NapojovyAutomat automat = new NapojovyAutomat(80);
            // odebereme z automatu čtyři Pepsi Coly :)
            automat.odebratMnozstvi(4);
            // a vypíšeme info o našem automatu
            automat.vypsatHodnoty();
        }
    }

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#6 23. 08. 2010 23:21

Pavel Brožek
Místo: Praha
Příspěvky: 5694
Škola: Informatika na MFF UK
Pozice: Student
Reputace:   194 
 

Re: Napojovy automat

↑ RePRO:

Je sice hezké, že chceš nightsea pomoct, ale nebylo by pro něj prospěšnější, kdybychom mu dali větší možnost se zapojit do řešení svého úkolu? Takhle by ho to mohlo svádět k copy & paste.

Offline

 

#7 24. 08. 2010 08:54

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: Napojovy automat

↑ RePRO:Importovat applet a awt je zbytečné. Při použití podtržítek se vlastně nikde nemusí používat this, myslím ale, že je konvencí psát settery a gettery tak, jak jsem naznačil já.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#8 24. 08. 2010 13:26

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Napojovy automat

↑ Kondr:

Tak jsem vymazal ty importy a nechal to být. Je pravdou, že konvencí je psát ty gettery a settery bez toho this (odkaz na aktuální instanci). Já to píšu pouze pro srozumitelnost kódu, lépe se mi v tom pak orientuje (dokonce se u konstruktorů This dodržuje a píše). Ale máš pravdu, že u všeho ostatního se This píše kvůli překladači (pokud máme stejné jméno parametru s naší instanční proměnnou, dojde ke kolizi). Tak snad by měl být kód v pořádku.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson