Avatar billede Slettet bruger
23. august 2006 - 12:03 Der er 9 kommentarer og
2 løsninger

Introfuktion til objektorienteret programmering

Hej eksperter!

Jeg er begyndt at arbejde lidt med objektorienteret programmering...
Men kan jeg ikke få jer til at forklare mig, hvad der helt præcist er så smart ved denne type programmering?
Hvad kan man desuden med et brugerdefineret objekt? Fungerer det ligesom som en instans af en brugerdefineret klasse?

Kan jeg f.eks. skrive:

Kat:Object = new Object;
var Kat.alder:Number = 38563894569834593485; // Ja, skidt med realismen
trace(Kat.alder);

Ligesom med klasser; se eks.:

// Kat.as
class Kat {
  public var alder:Number;
}

// flashFil.fla
enKat:Kat = new Kat();
enKat.alder = 65569835698345693565665438643564985646785676; // MEGET urealistisk
trace(enKat.alder);


?
Avatar billede mat Nybegynder
23. august 2006 - 12:12 #1
Der er vel flere bud på hvorfor OOP er "smart". Det beskrives ofte som "den måde vi i forvejen beskriver verden på", altså vi betragter alt som objekter.
Personligt synes jeg det er en måde at få struktureret et komplekst problem i overskuelige delkomponenter. Og en logisk opdeling af funktionalitet.

Du kan alt med brugerdefinerede objekter. Og ja til dit eksempel, det kan du godt.

mvh mat
Avatar billede barklund Nybegynder
23. august 2006 - 13:27 #2
Der er mange grunde til, at OOP er smart. Ikke kun, at man får struktureret sin kode logisk, men også fordi kernen i OOP er, at man bygger det op i selvstændige enheder, som også vil kunne fungere i andre sammenhænge. Ligeledes bygger man sine klasser op efter anerkendte mønstre, som man selv har god erfaring med og derfor bedre forstår.

Fordelen ved at bruge klassen frem for objektet (i dit eksempel herover) er blandt andet, at hvis nu jeg skriver:

enKat.alder = "tolv";

Så kommer flash med en fejl og siger, at alderen ikke kan være en streng - det skal være et tal. Det ville ikke ske, hvis man brugte et almindeligt objekt, hvor man jo kan skrive hvad som helst. Tilsvarende vil flash også rapportere om fejl, hvis man fik skrevet forkert i egenskabens navn:

enKat.aller = 42;

Dette koncept kaldes fasttypning og typevalidering og er én af fordelene ved objektorienteret programmering og ActionScript 2. Det er én af de mere lavpraktiske, men absolut en vigtig pointe alligevel :)

--
Morten Barklund
Avatar billede Slettet bruger
24. august 2006 - 08:43 #3
Så du anbefaler, at jeg opretter en ny klasse, bare for at kunne lave en enkel instans?
Kunne man så ikke bare skrive
enKat.alder:Number = 12 // Obs.: ":Number"
?
Avatar billede barklund Nybegynder
24. august 2006 - 10:25 #4
Følgende er ikke gyldigt:

enKat.alder:Number = 12;

Det hedder:

enKat.alder = 12;

Og hvis du kun har det ene script og ingen andre scripts overhovedet: nej, lad være med at lave en klasse. Men hvis du har mange scripts, flere hundrede eller tusind linjer: lav klasser :)

--
Morten Barklund
Avatar billede Slettet bruger
24. august 2006 - 10:31 #5
Hmm ok. Og hvis jeg kun har et par linier, kan jeg jo bare lave en enkelt funktion og undlade OOP i det tilfælde.
Bare smid et svar begge to!
Avatar billede Slettet bruger
24. august 2006 - 10:33 #6
PS: Svarer nok ikke foreløbig... Er i skole.
Avatar billede mat Nybegynder
24. august 2006 - 10:42 #7
en svar :)
Avatar billede barklund Nybegynder
24. august 2006 - 10:45 #8
Mjæs :)
Avatar billede Slettet bruger
24. august 2006 - 17:24 #9
[såanding]!
Avatar billede Slettet bruger
24. august 2006 - 17:24 #10
(sådan)
Avatar billede barklund Nybegynder
25. august 2006 - 08:46 #11
tark for points :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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