Avatar billede drinkit Praktikant
26. marts 2014 - 20:24 Der er 8 kommentarer og
1 løsning

kalde metoder på metoder?

getWindow().setFlags(flags, mask)


Hvordan kan man kalde metoder, på en metode?

Hvordan er det sat op. Jeg forstår ikke helt ideen bag den slags referencer.

OBJECT.METHOD giver god mening. Et objekt har metoder.

method(Arguments) giver også fin mening.

Hvordan forklares method().method() ?
Avatar billede Slettet bruger
26. marts 2014 - 20:29 #1
Har aldrig hørt om muligheden for at kalde metoder på metoder.
Du kan lade den kaldte metode kalde andre metoder.
Du kan kalde en metode som returnerer et objekt og så kalde en metode på det returnerede. Det kunne godt ligne at man kalder en metode på en metode, uden at det rent faktisk er tilfældet.

Hvorfor skulle du have behov for at kalde en metode på en metode?
Avatar billede drinkit Praktikant
26. marts 2014 - 20:29 #2
og jeg vil egentlig også lige høre om følgende..


Jeg sidder med android - og hvordan man laver en activity fullscreen.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

getWindow er en metode, hvorpå metodet setFlags bliver kaldt.

Den tager to parametre, begge ints.

Der refereres i begge tilfælde til WindowManager som er en klasse, og så .LayoutParams som jeg går ud fra også er en klasse.

Er det så en subclass af WindowManager? og er FLAG_FULLSCREEN en variable i den subclass? Eller hvordan skal det forstås.

Sorry hvis det hele er lidt forvirrende - det er fordi jeg er forvirret lige nu.

På forhånd tak.
Avatar billede Slettet bruger
26. marts 2014 - 20:32 #3
getWindow() returnerer et objekt, og det er det objekt, som du kalder setFlags på.
Avatar billede Slettet bruger
26. marts 2014 - 20:39 #4
Har ikke rodet det store med Android endnu, men WindowManager,LayoutParams lyder som en form for Factory, som uddeler objekter.
FLAG_FULLSCREEN må være en konstant. Den holder nok en INT værdi. Men i stedet for at huske om FLAG_FULLSCREEN er nummer 0, 1, 2 eller 10, så nupper man bare konstanten FLAG_FULLSCREEN. Meget nemmere at holde styr på.

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
WindowManager.LayoutParams er en klasse.
Avatar billede drinkit Praktikant
26. marts 2014 - 22:52 #5
"en form for Factory, som uddeler objekter" - Kan du forklare hvordan det virker? Uddeler alle klasser ikke objekter?
Avatar billede Slettet bruger
26. marts 2014 - 23:16 #6
Ikke nødvendigvis.
Nogle klasser udfører måske bare noget arbejde.

En factory klasse er en klasse, hvis job det er at gøre det lettere for programmøren at lave ganske avancerede ting.
Tag for eksempel Image.
Hvis du beder om af få et Image med endelsen .png, så får du det. Beder du om det med .jpg, så sørger den for det etc.
Du behøver personligt ikke vide, hvad den gør, du ved bare, at den returnerer det du ønsker.
Klassen selv laver mange ting bagved for at udføre arbejdet.

Hvis man skal oversætte det til gaming sprog, så kunne man bruge det gode gamle Civilization som eksempel.

Alle byer kan lave enheder. Hvilke enheder kommer an på race og uddannelsesniveau.
Ved at have et factory kan du kalde klassen og sig, giv mig en enhed fra uddannelsesniveau 1, som er af typen archer.
Så får du en archer.
Senere siger du, giv mig en enhed fra uddannelsesniveau 3, som er en archer, og så får du en Longbowman.

Det er samme klasse der ordner det hele.
Ved at bruge factories kan man nemt implementere nye enheder, uden at skulle omprogrammere hele spillet. Basis er det samme som alle andre enheder, og måden de laves på er også den samme, nemlig via en by.

Håber det gav mening.

Factory er et designmønster i øvrigt.
Hvis man vil niveauet over, så har man Abstract Factory.
Avatar billede MADOlsen Forsker
27. marts 2014 - 11:21 #7
method().method()

Den anden method() bliver ikke "kaldt på metoden", men på det object, som den første method returnerer.
Avatar billede drinkit Praktikant
31. marts 2014 - 17:46 #8
Tak ssnielsen. Smid et svar :) God forklaring
Avatar billede Slettet bruger
31. marts 2014 - 19:52 #9
Svar. Glad for at kunne hjælpe.
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