18. maj 2005 - 21:14Der er
14 kommentarer og 1 løsning
Basic Stuff om klasser, objekter, variabler
Som begynder-programmør har jeg lige brug for at få sat nogle begreber på plads. Jeg sidder med en grundbog foran mig og har ikke helt styr på forskellene mellem begreberne:
1. En Klasse vs et objekt? 2. Kan en klasse også være en egenskab og metode? 3. Erklæring af en variable vs et objekt? 4. Hvad er forskellen på et felt og en variable? 5. Hvad vil det sige at opret en instance af en klasse?
1) Lad os da tage historien om blomsten og bien... eller, hvad det støbeformen og legoklodsen ?
En klasse kan sammenlignes med en støbeform. Du leger ikke med støbeformen, men den fortæller noget om hvordan at legoklodsen kommer til at se ud. Når vi så laver klodsen (opretter et object/instans), har vi noget at lege med.
Lige til sidst skal det lige siges, at object også er navnet på en klasse i .Net, så man foretrækker at kalde det for en instans (af et object, da alle klasser i .Net nedarver fra object)
2) Nej. Dog kan en egenskab (property) eller en metode returnere en instans af et object.
3) En variabel er en slags skål du kan komme legoklodsen ned i. Hvis du ikke har denne skål, så har du ikke et sted at gemme klodserne, og du mister dem - de bliver væk.
4) Et felt (går ud fra det er det man kalder for field på udenlandsk), er navnet på den/de variabler der har scope i hele klassen. Dvs. at hvis du opretter en variabel inde en metode, så kan den ikke ses fra andre metoder, mens et field kan ses af ALLE metoder i klassen.
5) Ja... mon ikke vi har fået det på plads efterhånden. Det er at støbe en legoklods med sin form :)
forresten, som tilføjelse til pk. 3, så kan disse variabler godt være public, hvorved de dukker op som fields i f.eks. dokumentationer.
og til allersidst vil du nok støde ind i et begreb som static eller shared. Som tilføjelse til pk. 1, så kan man rent faktisk godt lege med støbeformen. Altså uden at støbe en legoklods først. Det har dog den begrænsings, at de egenskaber, metoder og fields man laver alle skal være shared, og den legoklods man laver, kender INTET til de shared ting som man har lavet i støbeformen.
opretter man en instans af et object, kan denne instans godt kalde en shared metode på klassen, men en shared metode har ikke adgang til egenskaber, felter og metoder som ikke er shared.
kan egentlig bedre shared keywordet, fremfor C#'s static. Deres keyword for generic er også noget mere intuitivt end <>
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.