Avatar
N-nojmi
Člen
Avatar
N-nojmi:

zdravím,
potřeboval bych pomoct s kódem, trápil sem se s tím několik hodin a už sem to vzdal.

jde o tohle:
továrna - metoda: vyrob banánové cukroví)
- metoda udělá to cukroví a vrátí ho

public Cukrovi VyrobBananove()
{
Cukrovi bananove = new Cukrovi();
return bananove;
}

Předem díky za pomoc.

Odpovědět 15.4.2013 11:30
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Luboš Běhounek (Satik):

A v čem je problém? Ta funkce vyrobí cukroví a vrátí ho, to má, ne?

Nahoru Odpovědět  +1 15.4.2013 11:31
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na N-nojmi
Kit:

Ta metoda by asi měla být statická.

Nahoru Odpovědět 15.4.2013 11:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

problém je v tom že new Cukrovi ... mam podtržené
a píše to chybu : ConsoleApplica­tion1.Cukrovi' does not contain a constructor that takes 0 arguments

Nahoru Odpovědět 15.4.2013 11:34
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na N-nojmi
Honza Bittner:

a máš třídu Cukrovi s konstruktorem Cukrovi() ??

Nahoru Odpovědět 15.4.2013 11:35
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

myslim, že ano..

class Cukrovi
{
public string barva;
public string tvar;
public int vaha;

public Cukrovi(string b, string t, int v)
{
barva = b;
tvar = t;
vaha = v;

}

Editováno 15.4.2013 11:37
Nahoru Odpovědět 15.4.2013 11:37
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Kit
Redaktor
Avatar
Odpovídá na N-nojmi
Kit:

A ten konstruktor Cukrovi() máš kde?

Nahoru Odpovědět 15.4.2013 11:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Kit
N-nojmi:

No ve třídě Cukroví

Nahoru Odpovědět 15.4.2013 11:39
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Kit
Redaktor
Avatar
Odpovídá na N-nojmi
Kit:

Nevidím ho tam. Máš tam jen konstruktor

Cukrovi(string b, string t, int v)
Nahoru Odpovědět 15.4.2013 11:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
ivikej
Neregistrovaný
Avatar
ivikej:
public struc Cukrovi
{

}

class Bananove : Cukrovi
{

}

Je logičtější...

 
Nahoru Odpovědět 15.4.2013 11:40
Avatar
N-nojmi
Člen
Avatar
Odpovídá na ivikej
N-nojmi:

Já myslel, že tohle celý je konstruktor

public Cukrovi(string b, string t, int v)
{
barva = b;
tvar = t;
vaha = v;
}
Editováno 15.4.2013 11:42
Nahoru Odpovědět 15.4.2013 11:42
Není hloupých lidí, jen lidí co málo používají google...
Avatar
paanoik
Člen
Avatar
Odpovídá na N-nojmi
paanoik:

to je, ale voláš ho
Cukrovi bananove = new Cukrovi();
přičemž reálně ten konstruktor čeká tři parametry, ty mu nedáváš žádný .. proto ti hlásí, že
does not contain a constructor that takes 0 arguments

 
Nahoru Odpovědět 15.4.2013 11:45
Avatar
Kit
Redaktor
Avatar
Odpovídá na N-nojmi
Kit:

To ano, ale místo něj voláš konstruktor Cukrovi(), který neexistuje.

Editováno 15.4.2013 11:46
Nahoru Odpovědět 15.4.2013 11:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na N-nojmi
Honza Bittner:

v kódu máš :

Cukrovi bananove = new Cukrovi();

ale konstruktor máš :

public Cukrovi(string b, string t, int v)
 {
 barva = b;
 tvar = t;
 vaha = v;
 }

....
tzn dej si do kódu :

Cukrovi bananove = new Cukrovi(barva, tvar, vaha);
Nahoru Odpovědět 15.4.2013 11:46
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Dobře děkuju za radu ;)

Editováno 15.4.2013 11:48
Nahoru Odpovědět 15.4.2013 11:47
Není hloupých lidí, jen lidí co málo používají google...
Avatar
paanoik
Člen
Avatar
paanoik:

Tak mě napadá, pokud chceš ty parametry dobrovolné, udělej si ty konstruktory dva ..

public Cukrovi(string b, string t, int v)
 {
  barva = b;
  tvar = t;
  vaha = v;
 }

//nový "default" konstruktor
public Cukrovi()
 {
  barva = "hnědá";
  tvar = "šroubovice";
  vaha = 100;
 }
 
Nahoru Odpovědět 15.4.2013 11:48
Avatar
Kit
Redaktor
Avatar
Odpovídá na N-nojmi
Kit:

Třeba takto:

public static Cukrovi VyrobBananove() {
   Cukrovi bananove = new Cukrovi("žlutá", "banán", 100);
   return bananove;
}
Nahoru Odpovědět 15.4.2013 11:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Už to fachá ;) díky vám

Nahoru Odpovědět 15.4.2013 11:52
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na N-nojmi
Petr Nymsa:

Každopáně výsledek je asi ten, že ti to funguje, ale nevíš absolutně proč :) nebo se pletu ? Podívej se na základy C# a potom i OOP, zjevně nevíš jak vůbec funguje kontruktor

Nahoru Odpovědět 15.4.2013 11:56
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na paanoik
Kit:

Takhle bych to určitě nedělal. Nezapomeň, že asi bude chtít mít víc druhů cukroví. Přece nebude dělat jen hnědé ve tvaru šroubovice.

Nahoru Odpovědět 15.4.2013 12:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Situace je taková že se teprve učím OOP a jsem začátečník. a s return dělám poprvé a ano budu dělat 3 druhy cukroví

Editováno 15.4.2013 12:04
Nahoru Odpovědět 15.4.2013 12:03
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

Podle mě to není špatný. Když nezadá parametry vytvoří se defaultní cukroví

Nahoru Odpovědět 15.4.2013 12:03
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na N-nojmi
Petr Nymsa:

Však nikdo to nemyslí zle. Projeď si kompletně základy a pomalinku začni s OOP :)

Nahoru Odpovědět 15.4.2013 12:04
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Také to dělám, nastal zádrhel a proto sem napsal sem o radu ;)

Nahoru Odpovědět 15.4.2013 12:07
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Kit
Redaktor
Avatar
Odpovídá na N-nojmi
Kit:

Přetěžování konstruktorů si můžeš klidně nechat na později.

Nahoru Odpovědět 15.4.2013 12:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

Kvůli tomu přece dělá továrnu na cukroví, aby defaultní cukroví nevyráběl. Akorát se továrna píše trochu jinak.

Nahoru Odpovědět 15.4.2013 12:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

Těsně před Vánocema, v jedné Pražské rodince. Matka je upatlaná od těsta na linecké, v troubě se pomalu připalují rohlíčky. Nebohá žena nestíhá. Do této sváteční atmosféry vtrhne do kuchyně Pepíček a plný nadšení volá, "Mamí, napsal jsem to v OOP program na pečení cukroví!".

Nahoru Odpovědět 15.4.2013 12:17
Čím víc vím, tím víc věcí nevím.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

To je fakt. Ale nechat tam tu možnost podle mě není úplně špatně.

Nahoru Odpovědět 15.4.2013 12:20
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Hynek
Kit:

Spíš: "Mamí, napsal jsem v OOP továrnu na pečení cukroví!" :)

Nahoru Odpovědět  +1 15.4.2013 12:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

Jednodušší a systematičtější je místo dalšího konstruktoru jen přidat do továrny větev "default".

Nahoru Odpovědět  +2 15.4.2013 12:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

Jo to je asi lepší řešení

Nahoru Odpovědět 15.4.2013 12:37
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
paanoik
Člen
Avatar
Odpovídá na Kit
paanoik:

Jasně že jo, ale tak tady hlavně evidentně nejde o factory, ale spíš "trenažér" pro pochopení, jak to funguje a jak se to chová. Přidat si tam druhý konstruktor a pochopit jak funguje přetěžování čili že metody nemusí mít jen jediný předepsaný vstup (což svádí k procedurálnímu použití) imo právě k těm základům patří.

 
Nahoru Odpovědět 15.4.2013 12:40
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 32 zpráv z 32.