Avatar
pcrewik
Člen
Avatar
pcrewik:

Ahojte,
ako čítam manual o oop v c# tak som narazil na nadpis Agregačno-kompozičné vzťahy, zatiaľ som vôbec nepochopil čo to je a možno môj problem bude aj v tom. No problej ne nasledovný:
je tam uvedený zdroják

// Deklarácia triedy Oddelenie.
class Oddelenie
{
// Deklarácia vnorenej triedy Veduci_oddelenia.
class Veduci_oddelenia
{
string meno, string priezviko;
// Parametrický konštruktor triedy Veduci_oddelenia.
public Veduci_oddelenia(string meno, string priezvisko)
{
this.meno = meno;
this.priezviko = priezvisko;
}
// Definícia verejne prístupných skalárnych inštančných vlastností
public string Meno
{
get { return this.meno; }
set { this.meno = value; }
}
public string Priezvisko
{
get { return this.priezviko; }
set { this.priezviko = value; }
}
}
// Definícia dátovej položky, do ktorej budeme môcť uložiť odkaz
// na inštanciu triedy Veduci_oddelenia.
Veduci_oddelenia v_o1;
// Dátové členy nadtriedy.
string nazov_oddelenia;
int pocet_zamestnantov;
// Parametrický konštruktor.
public Oddelenie(string nazov_oddelenia, int pocet_zamestnantov)
{
this.nazov_oddelenia = nazov_oddelenia;
this.pocet_zamestnantov = pocet_zamestnantov;
v_o1 = new Veduci_oddelenia("Tomáš", "Novák");
}
// Definícia verejne prístupnej inštančnej metódy.
public void Informacie_o_Oddeleni()
{
Console.WriteLine("Informácie o oddelení:\n\n");
Console.WriteLine("Názov oddelenia: " + nazov_oddelenia +
"\nPočet zamestnantocv: " + pocet_zamestnantov +
"\nZodpovedný vedúci: " + this.v_o1.Meno + " " + this.v_o1.Priezvisko);
}
}

A ja by som chcel vytvoriť inštanciu triedy Veduci_oddelenia, ale nejde to :/
jedine čo ide je toto:

Oddelenie veduci= new Oddelenie("Riadenie", 40);

tak možno mi to niekto z vás trochu objasní, ďakujem.

 
Odpovědět 11.2.2014 15:39
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na pcrewik
Jan Vargovský:

Co tak kouknout na chyby ? :)

string meno; string priezviko;

nebo

string meno, priezviko;

Btw podtržítka se v C# nepoužívají. (např. místo Veduci_oddelenia, by to mělo být VeduciOddelenia)

Je zbytečné tvořit nested třídy. Normalně je vytvoř odděleně.

class VeduciOddelenia
{
    public string Meno { get; set; }
    public string Priezvisko { get; set; }

    public VeduciOddelenia(string meno, string priezvisko)
    {
        this.Meno = meno;
        this.Priezvisko = priezvisko;
    }
}

class Oddelenie
{
    VeduciOddelenia v_o1;
    // Dátové členy nadtriedy.
    string nazov_oddelenia;
    int pocet_zamestnantov;
    // Parametrický konštruktor.
    public Oddelenie(string nazovOddelenia, int pocetZamestnantov)
    {
        this.nazov_oddelenia = nazovOddelenia;
        this.pocet_zamestnantov = pocetZamestnantov;
        v_o1 = new VeduciOddelenia("Tomáš", "Novák");
    }
    // Definícia verejne prístupnej inštančnej metódy.
    public void VypisInformacie()
    {
        Console.WriteLine("Informácie o oddelení:\n\n");
        Console.WriteLine("Názov oddelenia: " + nazov_oddelenia +
        "\nPočet zamestnantocv: " + pocet_zamestnantov +
        "\nZodpovedný vedúci: " + this.v_o1.Meno + " " + this.v_o1.Priezvisko);
    }
}

Koukni nato, je to trošku čistčí a lépe se to čte :)

Editováno 11.2.2014 18:23
 
Nahoru Odpovědět  +1 11.2.2014 18:19
Avatar
pcrewik
Člen
Avatar
pcrewik:

ďakujem, ako píšenm, neni to môj kod, ano tu chybu som si ešte všimol ale kopíroval som to z toho návodu kde to bolo, takže čo sa týka prehladnosti, vylepšovania a podobne je to v podstate bezpredmetné, ale ďakujem
mne ide hlavne o to prečo sa neda vytvoriť inštanciu triedy Veduci_oddelenia?

Editováno 11.2.2014 18:39
 
Nahoru Odpovědět 11.2.2014 18:38
Avatar
Odpovídá na pcrewik
Michal Žůrek (misaz):

nevím na jaký web to chodíš, ale nějak ti tam pletou hlavu, proč si nepřečteš zdejší tutoriály, ty jsou velmi kvalitní.

Nahoru Odpovědět  +1 11.2.2014 18:41
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na pcrewik
Jan Vargovský:

Musíš té třídě dát modifikátor public a pak normálně

Oddelenie.Veduci_oddelenia veduci = new Oddelenie.Veduci_oddelenia(...);
 
Nahoru Odpovědět 11.2.2014 18:43
Avatar
pcrewik
Člen
Avatar
pcrewik:

Človek by myslel že keď ma niečo nálemku Microsoft, môže sa podla toho riadiť
http://download.microsoft.com/…azyku_CS.pdf
ďakujem Páni

 
Nahoru Odpovědět  +1 11.2.2014 19:42
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 6 zpráv z 6.