Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Metoda, která by pracovala s proměnnými jmény objektů

Aktivity
Avatar
n5ver
Člen
Avatar
n5ver:11.11.2014 10:46

Ahoj, potřebuji metodu pro třidu Obchod, která by byla schopna pracovat s instancemi třídy Zakaznik, ale nevím, jak do metody dostat přes parametr jméno instance třídy Zakaznik, abych s ní mohl dále pracovat.

 
Odpovědět
11.11.2014 10:46
Avatar
Odpovídá na n5ver
Michal Haňáček:11.11.2014 11:02

Tak nějak asi tuším, co by jsi chtěl dělat a předpokládám že budeš potřebovat prostředíka (kolekci, nebo správce), který ti bude zákazníky spravovat. Přes toho prostředníka budeš k jednotlivým zákazníkům přistupovat.

Případně nepředávej metodě onázev instance, ale instanci ...

Hodně zjednodušeně a trochu po punkersku :D

Zakaznik LadaHruska;

public ... delejNeco (Zakaznik InZakaznik)
{
}

delejNeco(LadaHruska);
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.11.2014 11:02
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
n5ver
Člen
Avatar
Odpovídá na Michal Haňáček
n5ver:11.11.2014 11:26

Děkuji za odpověď, ale uplně jsem to tím nevyřešil... Potřeboval bych to trochu polopatě :). Ještě drobet nastíním, jak by to mělo fungovat.
Dejem tomu, že mám vytvořeného zákazníka (s parametry jméno a kolik nakoupil věcí) a obchod:

Zakaznik jarda = new Zakaznik("Jarda", 0);
Obchodtesco = new Obchod();

A těd chci, aby metoda přidala tomu danému zákazníkovy počet věcí, které nakoupil, ale aby ta metoda byla definována u obchodu nějak takto:

tesco.PridejNa­koup(jarda, 10);

šlo by to nějak?

 
Nahoru Odpovědět
11.11.2014 11:26
Avatar
n5ver
Člen
Avatar
Odpovídá na Michal Haňáček
n5ver:11.11.2014 12:08

Už jsem to pochopil :D... Děkuji moc.

 
Nahoru Odpovědět
11.11.2014 12:08
Avatar
Odpovídá na n5ver
Michal Haňáček:11.11.2014 12:16

Tak jak to popisuješ mezi obchodem a zákazníkem neexistuje žádná vazba a obchod o zákazníkovi "neví". Pokud by měl obchod pracovat se zákazníky (jakkoli) musí o nich vědět a někde je mit uložené (např. nějaká kolekce - předpokládám že se učíš a proto by ti mohlo stačit obyčejné pole).

Tak že když si to rozdělíš na kroky, bude potřeba v obchodu udělat kolekci zákazníků. Tu kolekci si naplnit zákazníky. Upravovat parametry zákazníků.

Např. nějak takto:

//OBCHOD
class Obchod
{
  private Zakaznik[] PoleZakazniku;

  public Obchod()
  {
    //pripraveni kolekce a nastaveni velikosti pole
    this.PoleZakazniku = new Zakaznik[1];
    //vytvoreni instance zakaznika a jeho umisteni do prvni bunky pole
    this.PoleZakazniku[0] = new Zakaznik("Jarda",0);
  }

  //jedna moznost
  public void pridejNakupPodleJmenaZakaznika(string InJmenoZakaznika,int InPocetPolozek)
  {
    //pruchod polem a hledani jmena zakaznika/zakazniku
    foreach (Zakaznik ZK in this.PoleZakazniku)
    {
      if (ZK.Jmeno==InJmenoZakaznika)
      {
        ZK.NakoupilVeci=InPocetPolozek;
      }
    }
  }

  //druha moznost
  this.PoleZakazniku[1].zvysPocetNakupu(3);
}
//ZAKAZNIK
class Zakaznik
{
  public string Jmeno;
  public int NakoupilVeci;

  public Zakaznik(string InJmeno, int InPocetNakoupenychVeci)
  {
    this.Jmeno = InJmeno;
    this.NakoupilVeci = InPocetNakoupenychVeci;
  }

  public zvysPocetNakupu(int InPocetNakupu)
  {
    this.NakoupilVeci=InPocetNakupu;
  }
}

Je to jednoduchý příklad, který by ti mohl pomoct pochopit jak by se to dalo vytvořit.

Editováno 11.11.2014 12:19
Nahoru Odpovědět
11.11.2014 12:16
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
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 5 zpráv z 5.