21. maj 2008 - 20:51Der er
12 kommentarer og 1 løsning
Container og controller klasser?
Hej
Jeg er ved at lære C# og objektorienteret programmering. Jeg har svært ved at forstå hvad en containerklasse og en controller klasse gør.
Jeg har søgt på nettet og kigget i min bog, men synes ikke der er nogle steder, hvor det grundlæggende bliver forklaret hvad det handler om, nogle som kan?
I mit eksempel har jeg en kalsse som har en liste og nogle operationer, er det så både en controller opg container klasse?
public class SuperMedarbejder : SuperPerson
{ public List<DateTime> want2work = new List<DateTime>(); public List<Reservering> reserveringsliste = new List<Reservering>(); protected string lisensnummer; protected string reserveringer; protected string ledig;
http://en.wikipedia.org/wiki/Container_class ifølge artiklen er en List en contaioner klasse.. men hvad så med min klasse, den indeholder både en liste, og nogle funktioner, er det så både en controller og contaioner?
Jeg vil mene at din SuperMedarbejder og Reservering er domain klasser, at du bruger List<> som container klasse og så kan du lave en controller klasse.
Jeg mener ikke at din klasse egner sig til at blive en container klasse.
ok, tak.. jeg har to spørgsmål som stadigvæk forvirrer mig, så ville være en stor hjælp hvis du kan vurdere klasserne.
jeg har lavet en containerklasse til flakser, men må jeg godt der have en optællingsfunktion som finder ledige flasker i containerklassen? jeg kan nemlig ikke lave optællingsfunktionen i min controller da listen er placeret i containerklasen?
public class Flaskecontainer { List<Flaske> flaskeliste = new List<Flaske>(); List<Flaske> ledige_flasker = new List<Flaske>(); public void addflaske(Flaske en_flaske) { flaskeliste.Add(en_flaske); }
public int count() { int i = flaskeliste.Count(); return i; }
public void count_free(DateTime en_dato) {
foreach (Flaske x in flaskeliste) { //Ser om der er flasker som er ledige if ((x._Resurseledig(en_dato)) == true) { //Hvis den er ledig bliver den tilføjet denne liste ledige_flasker.Add(x);
}
} } public int retun_count() { return ledige_flasker.Count();
} public void clear_count() { ledige_flasker.Clear(); }
-----------------------------------------------
mit andet spørgsmål er om det er normalt at man sender en Container til sin controller når man har brug for udregninger, og derfor har brug for at tilgå de informationer som er gemt i containerklassen
ex her, hvor jeg sender flaksecontaineren afsted, så controlleren kan se om der er ledige flasker, er det normalt? if (en_flaskecontroller.test(dt, _min, en_flaskecontainer) == true) { MessageBox.Show("flakser true"); }
ok, tak jeg giver points.. Jeg helt enig med dig i at bruge List frem for en klasse, jeg synes nogle gange det objektorienterede kan tage længere tid end nødvendigt, hvis man skal have klasser for alt hvad man gør..
Den gang jeg var ung anslog jeg at OOP var markant bedre end procedural programmering for programmer >10000 linier kode.
Med sprog som Java og C# er det faldet en del. Lad os sige >3000 linier kode.
Nogen gange er det svært at formidle en point med små legetøjs eksempler.
Hvis du sidder med 300 linier kode som du selv har skrevet, så duer alt jo. Men den dag du sidder med 300000 linier kode skrevet af en anden (som ikke længere er i firmaet) og du skal tilføje noget ny funktionalitet uden at introducere alt for mange nye bugs, så bliver du rigtigt glad for OOP.
Et hurtigt blik på din kode iøvrigt siger at: - du bør lade metode navne starte med stort (de starter med småt i Java men med stort i C#) - nogle af dine metoder kunne nok med fordel laves som property
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.