Avatar billede jacob_fischer Nybegynder
18. maj 2005 - 21:14 Der 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?
Avatar billede arne_v Ekspert
18. maj 2005 - 21:16 #1
klasse = type
objekt = en forekomst af type

eksperten bruger er en klasse
du er et objekt af den type - jeg er et andet objekt af samme type
Avatar billede arne_v Ekspert
18. maj 2005 - 21:17 #2
nej

klasser indeholder fields, methods og properties
Avatar billede arne_v Ekspert
18. maj 2005 - 21:18 #3
en variabel kan være en simpel data type som integer eller et objekt
(i .NET er foskellen meget lille)
Avatar billede arne_v Ekspert
18. maj 2005 - 21:19 #4
et felt er en variabel som er tilknyttet en klasse

i modsætning til lokal evariabel inden i metoder
Avatar billede arne_v Ekspert
18. maj 2005 - 21:19 #5
du opretter en instans med

Dim etobjekt As EnKlasse = New EnKlasse
Avatar billede burningice Nybegynder
18. maj 2005 - 21:21 #6
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 :)
Avatar billede burningice Nybegynder
18. maj 2005 - 21:22 #7
hm... jeg må blive noget hurtigere til at skrive :P
Avatar billede burningice Nybegynder
18. maj 2005 - 21:25 #8
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.
Avatar billede arne_v Ekspert
18. maj 2005 - 21:27 #9
omvendt - lego klodsen kan godt bruge støbeformen - men støbeformen kan ikke
bruge lego klodserne
Avatar billede burningice Nybegynder
18. maj 2005 - 21:35 #10
ja... lidt brugsforvirring her...

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 <>
Avatar billede jacob_fischer Nybegynder
18. maj 2005 - 21:37 #11
Tusind tak for svarene det hjalp at får det over i nogle mere dagligs begreber
Avatar billede jacob_fischer Nybegynder
18. maj 2005 - 21:40 #12
Hvordan lukker jeg spørgsmålet?
Avatar billede arne_v Ekspert
18. maj 2005 - 21:40 #13
C# har arvet static og <> templates fra C++

keywordet static er iøvrigt misbrugt på det forfærdeligste i C/C++ da det bliver
brugt til forskellige ting afhængig af kontekst
Avatar billede burningice Nybegynder
18. maj 2005 - 21:43 #14
sådan er det vist generelt med flere ting, hva'.

* kan også bestyder fem milliarder forskellige ting :P


Vi lægger begge et svar, så kan vi acceptere dem (husk, dem begge, og ikke kun en af dem ;))
Avatar billede arne_v Ekspert
18. maj 2005 - 21:44 #15
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester