Diskuze: Výpis objektů z kolekce
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
public List<Osoba> vypisSeznam() {
List<Osoba> osoby = new List<Osoba>();
foreach (Osoba o in adresar) {
osoby.Add(o);
Console.WriteLine();
Console.WriteLine("V seznamu je uloženo");
Console.Write(o+", ");
}
return osoby;
}
Tudle implementaci nechápu. Metoda dělá 2 věci - (1)vypisuje osoby, kopiruje osoby do nového seznamu (jen přidává další referenci) a ten následně vrací(2). Proč ta metoda nedělá jen tohle?
public void vypisSeznam() {
foreach (Osoba o in adresar) {
Console.WriteLine();
Console.WriteLine("V seznamu je uloženo");
Console.Write(o+", ");
}
}
Metoda pridej zase vrací celý adresář, proč?
Chybí implementace třídy Diar, která přidává uživatele... Aspoň napiš kde jaká metoda je, takhle nevím co v jaké třídě máš a je těžké radit, když nám ani neukážeš co máš uvnitř těch tříd (soukromé proměnné).
class Diar
{
Databaze databaze = new Databaze();
List<Osoba> adresar = new List<Osoba>();
public List<Osoba> pridejUzivate()
{
Console.WriteLine("Zadej jmeno");
string jmeno = Console.ReadLine();
Console.WriteLine("Zadej příjmení");
string prijmeni = Console.ReadLine();
List<Osoba> osoba = databaze.pridej(jmeno, prijmeni);
Console.WriteLine();
Console.WriteLine("Do databáze byla přidána osoba " + jmeno + " " + prijmeni);
return osoba;
}
}
Takže máš zvlášť třídu Diar, která má v sobě adresar. Pak máš třídu Databaze, která ma v sobě taktéž adresar. Jestli ty adresare nereferencují na jednu kolekci, tak máš 2 kolekce, ale každá má svoje instance Osoby.
Tu databázi bych klidně smazal a nechal si tam jen tu třídu Diar.
PS: Přepiš si ty metody, aby nevracely ten list.
Zobrazeno 4 zpráv z 4.