Top Banner
Metoder 1 Organisering af kode Statiske metoder og statiske variable Math-klassen Main-metoden Kald af metoder Argument promotion NET Framework Class Library Random Enumerations Scope of declarations Method overloading Parametre Rekursion Pass-by-value & pass-by-reference Steen Jensen, efterår 2013
23

Metoder

Feb 14, 2016

Download

Documents

jarah

Metoder. Organisering af kode Statiske metoder og statiske variable Math-klassen Main-metoden Kald af metoder Argument promotion NET Framework Class Library Random Enumerations Scope of declarations Method overloading Parametre Rekursion Pass-by-value & pass-by-reference - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Intro til computere & Visual Studio

Metoder1Organisering af kodeStatiske metoder og statiske variableMath-klassenMain-metodenKald af metoderArgument promotionNET Framework Class LibraryRandomEnumerations Scope of declarationsMethod overloadingParametreRekursion Pass-by-value & pass-by-reference

Steen Jensen, efterr 2013

Organisering af kode i C#, 1Relaterede klasser organiseres ofte i skaldte namespaces

.NET Framework Class Library indeholder mange prdefinerede klasser

Metoder giver mulighed for at modularisere (eng.: modularize) en app, dvs. opdeling af arbejdsopgaverne i selvstndige enheder (eng.: self-contained units)

Disse metoder kaldes ogs brugerdefinerede metoder (eng.: user-defined methods)

rsager til at modularisere:Del og hersk (eng.: divide and conquer)Software genbrug metoder som byggeklodser til nye appsUndg at repetere kode nemmere at debugge og vedligeholde

2Organisering af kode i C#, 23

Del og hersk implementerings-detaljer gemmesStatiske metoder og statiske variableDe fleste metoder udfres p specifikke objekter

Nogle gange udfrer en metode opgaver, der ikkeiafhnger af indholdet af noget objekt dette kaldes en statisk (eng.: static) metode

En metode erklres statisk ved at angive static fr return typen

Nr objekter af en klasse, der indeholder statiske variable, oprettes, deler alle objekter af denne klasse en kopi af klassens statiske variable

Eksempler p statiske metodekald:

4

Math-klassens metoder5

Main metodenMain metoden erklres statisk, da der ikke er oprettet nogle objekter endnu under startup af appen

Main kaldes ogs for appens entry point

6

Command-line argumentsApps uden command-line arg. kan udelade string args [], og Public kan ogs udelades

I stedet for void kan angives int for at Main kan returnere en fejlkode

Normalt vil der kun vre 1 Main pr. app, men enhver klasse kan i princippet have en Main NB! Ikke min kop te

Brugerdefineret metode Maximum (figur 7.3 s. 275)7Linje 18: metoden Maximum kaldes med tre parametre kommasepareret liste (eng.: comma-separated list)

Linje 21: ved hjlp af operatoren + kan man sammenstte (eng.: concatenate) strenge

Linje 37: der returneres den strste vrdi. Metoder kan returnere hjst 1 vrdi (kan dog vre af typen struct eller en reference til et objekt med flere vrdier)

Linje 27-37: hele metodens body kan alternativt erstattes af stningen return Math.Max(x, Math.Max(y, z));

Kald af metoder8Tre mder at kalde en metode p:Brug af et metodenavn til at kalde en metode i den samme klasse (se fx linje 18 i figur 7.3)

Brug af en variabel, der indeholder en reference til et objekt (se fx linje 13 i figur 6.10 myGradeBook.DisplayMessage() )

Brug af klassenavn og member access oparator (.) til at kalde en statisk metode i en klasse (se fx linje 13-15 i figur 7.3)

For at udfre metodekald benytter C# en skaldt stak (eng.: stack)

En stak kan lidt populrt sammenlignes med en stabel tallerkner:Nr en tallerken anbringes i stakken, vil det normalt vre i toppen (eng.: pushing onto the stack)Nr en tallerken fjernes fra stakken, vil det vre fra toppen (eng.: popping off the stack)

Stakke er kendt som sidst-ind, frst-ud (LIFO: last-in, first-out) datastruktur

Nr en app kalder en metode, anbringes den kaldende metodes adresse i program-execution stack ogs kaldet method-call stack. Denne stak indeholder ogs hukommelse til de lokale variable, der bruges i den kaldte metode. Denne hukommelse kaldes ogs activation stack eller stack frame

Nr metoden returnerer, fjernes activation record for metodekaldet, og de lokale variable er ikke lngere tilgngelige

En skaldt garbage collection sletter rent fysisk disse inaktive activation records fra hukommelsen

Argument promotion9Argument promotion betyder, at et arguments vrdi automatisk konverteres til den type, som metoden forventer at modtage

Eksempelvis forventer Math-metoden Sqrt at modtage en double

Int konverteres til doubleArgument promotion kan betyde, at der mistes data, fx vil en konvertering fra double til int betyde, at decimaldelen skres vk

Promotion regler 10

.NET Framework Class Library11Mange prdefinerede klasser er grupperet i kategorier af relaterede klasser, skaldte namespaces

For at benytte klasser fra .NET frameworket benyttes using direktivet, fx using System

P denne mde kan det ukvalificerede klassenavn Console bruges i stedet for det fuldt kvalificerede System.Console

.NET Framework class Library reference: http://msdn.microsoft.com/en-us/library/ms229335.aspx

Nste slide viser et lille udsnit af namespaces i frameworket

.NET Framework Class Library - udsnit12

Tilfldighedsgenerator (eng.: random-number generator) (figur 7.6 s. 284 + 7.7 s. 285)13Figur 7.6 (20 terningkast):Linje 9: der oprettes et nyt objekt af typen RandomLinje 16: metoden Next(1, 7) anvendes til at give en tilfldig vrdi mellem 1-6. Alternativ: 1 + randomNumbers.Next(6); Linje 21-22: if-stningen styrer, at der skiftes linje efter hver 5. vrdi

Figur 7.7 (6.000.000 terningkast):Linje 11-16: variablerne frequency16 bruges til at gemme frekvensen for hvor mange gange, hver vrdi (16) er kommet ud (tallet skulle gerne nrme sig 1.000.000)Linje 21-47: for-lkke, der krer 6.000.000 gangeLinje 23: variablen face gives en tilfldig vrdi mellem 1-6Linje 26-46: switch-stning, der lgger 1 til frequency16Linje 49-52: frekvensfordelingen udskrives

Enumerations craps-spil (figur 7.8 s. 289)14Regler for craps-spil:Man kaster to terningerHvis sum er 7 eller 11 i frste kast, vinder manHvis sum er 2, 3 eller 12 i frste kast, taber manHvis sum er 4, 5, 6, 8, 9 eller 10 i frste kast, bliver summen ens pointFor at vinde skal man kaste, indtil man fr samme antal jne som de frste pointHvis man fr 7, fr de oprindelige point er net, har man tabt

Linje 11: der oprettes en enumeration type med navnet StatusLinje 14: der oprettes en enumeration type med navnet DiceNamesLinje 27: der oprettes en variabel gameStatus af typen StatusLinje 28: variablen myPoint angiver summen af det frste kast

Linje 30: metoden RollDice() kaldes, som kaster to terninger og returnerer summen, som gemmes i variablen sumOfDice

Linje 33-49: switch-stning, der afhngigt af terningsummen stter den tilsvarende gameStatus

Linje 33: (DiceNames) angiver en skaldt cast operator, der konverterer sumOfDices int-vrdi til typen DiceNames

Linje 52-63: while-lkke, der krer slnge man ikke har vundet eller tabt

Linje 66-69: efter afslutning af while-lkke udskrives henholdsvis Player wins eller Player loses

Scope of declarations (figur 7.9 s. 294)15En variabels scope angiver rkkevidden for, hvilke steder i en app, at man kan benytte den

Figur 7.9 viser, hvordan henholdsvis en statisk variabel x samt en lokal variabel x benyttes og antager forskellige vrdier

Method overloading (figur 7.10 s. 296)16Method overloading betyder, at en metode kan erklres flere gange i den samme klasse men med forskellige parametre

Figur 7.10 viser, hvordan metoden Square er erklret med henholdsvis en int og en double og derfor kan kaldes med forskellige datatyper som parametre

Valgfri parametre: (eng.: optional parameters) (figur 7.12 s. 299)17Metoder kan have valgfri parametre

En valgfri parameter angiver en default vrdi, som anvendes, hvis det valgfrie argument er udeladt

Alle valgfrie parametre skal skrives til hjre for de ikke-valgfrie parametre

Navngivne parametre: (eng.: named parameters)18Navngivne parametre giver mulighed for at lave metodekald, hvor parametrene navngives

Rekursion (eng.: recursion) 19En rekursiv metode er en metode, der kalder sig selv, enten direkte eller indirekte gennem en anden metode

Nr en rekursiv metode bruges til at lse et problem, kan den kun lse den mest simple problemstilling en skaldt base case

Hvis metoden kaldes med en base case, returneres et resultat

Hvis metoden kaldes med et mere komplekst problem, opdeles problemet i to dele: En del, som metoden ved, hvordan skal lsesEn del, som den ikke ved, hvordan skal lses

Rekursion faktoriel beregning (figur 7.14) 20For eksempel er 5! lig med 5 x 4 x 3 x 2 x 1 (= 120)

Pass-by-value & pass-by-reference (figur 7.15)21Default for argumenter er pass-by-value, hvor en kopi af variablens vrdi videregives (passes)

Hvis der benyttes pass-by-reference gives mulighed for, at den kaldte metode kan f adgang og evt. ndre den oprindelige vrdi af variablen NB!!! Pas p

Hvis man nsker at kalde by-reference anvendes ref (nr variabel har startvrdi) og out (nr variabel ikke har startvrdi)

velser metoder i klassenPrv at besvare velse 7.1, 7.2, 7.4 s. 312-313 uden at se svaret

Check derefter dine svar op imod svarene s. 314-315

De flgende velser diskuteres i plenum:7.12 s. 317

22Programmeringsvelser metoder Til nedenstende velser kan Problemlsning 2 med fordel benyttes

Resten af dagen + fortst hjemme: Ex. 7.29, 7.30, 7.31, 7.33 s. 319Making a difference ex. 7.39 + 7.40 s. 322

Du/I m meget gerne lave velsen som pair programming, hvor I hjlpes ad I kan f.eks. skiftes til at vre leder og sekretr

Hvis du/I har problemer, s prv frst at vende det med det andet par i jeres gruppe, fr I rkker hnden op og beder mig om hjlp23