Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

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