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
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

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 ...
Offline
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.
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();
}
}
}Offline

↑ 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
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.
Offline
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.
// 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();
}
}Offline

↑ 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

↑ 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á.
Offline
↑ 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.
Offline