De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Methoden en argumenten Hoofdstuk 5. Visual Basic.NET voor studenten2 In dit hoofdstuk … Methodes en functies schrijven Argumenten en parameters Doorgeven.

Verwante presentaties


Presentatie over: "Methoden en argumenten Hoofdstuk 5. Visual Basic.NET voor studenten2 In dit hoofdstuk … Methodes en functies schrijven Argumenten en parameters Doorgeven."— Transcript van de presentatie:

1 Methoden en argumenten Hoofdstuk 5

2 Visual Basic.NET voor studenten2 In dit hoofdstuk … Methodes en functies schrijven Argumenten en parameters Doorgeven als waarde en als referentie Het gebruik van Return bij functies

3 Hoofdstuk 5 Visual Basic.NET voor studenten3 Het nut van methodes Herhaalde statements groeperen “Op een hoger niveau denken” Je splitst een programma op in deeltaken die je op hun beurt weer in deeltaken opsplitst, enz. De taken op het laagste niveau zijn eenvoudig te begrijpen en te programmeren “Verdeel en Heers” principe

4 Hoofdstuk 5 Visual Basic.NET voor studenten4 Een bedrijfslogo ' Draw logo at top left paper.DrawRectangle(myPen,10,20,60,60) paper.DrawRectangle(myPen,10,20,40,40) paper.DrawRectangle(myPen,10,20,20,20) ' Draw logo at bottom right paper.DrawRectangle(myPen,100,100,60,60) paper.DrawRectangle(myPen,100,100,40,40) paper.DrawRectangle(myPen,100,100,20,20)

5 Hoofdstuk 5 Visual Basic.NET voor studenten5 Een methode schrijven Demo DrawLogo Gebruik debugger om stap voor stap door het programma te lopen DrawLogo(paper,myPen,10,20) … DrawLogo(paper,myPen,100,100) … Private Sub DrawLogo(…) 'method body End Sub

6 Hoofdstuk 5 Visual Basic.NET voor studenten6 Parameterbinding Private Sub DrawLogo(ByVal drawingArea As Graphics, _ ByVal penToUse As Pen, _ ByVal xPos As Integer, _ ByVal yPos As Integer) parameters DrawLogo(paper, myPen, 10, 20) De argumenten worden doorgegeven via de parameters = parameterbinding papermyPen1020 drawingArea penToUse xPosyPos

7 Hoofdstuk 5 Visual Basic.NET voor studenten7 Spelregels voor methodes De schrijver van de methode  Kiest de parameters  Kiest de parametertypes (“As”)  Kiest een (betekenisvolle) naam  Kiest het type parameterbinding (zie verder) De gebruiker van de methode  Geeft de argumenten mee  In de juiste volgorde  Van het correcte type

8 Hoofdstuk 5 Visual Basic.NET voor studenten8 Een driehoekmethode Bestudeer zelf de code Een programma kan uit meerdere methodes bestaan Een methode zal dikwijls op zijn beurt andere methodes oproepen

9 Hoofdstuk 5 Visual Basic.NET voor studenten9 Een driehoekmethode Bestudeer de code in het boek Kan je een andere set van parameters bedenken om deze methode te schrijven? Werk de implementatie uit (op papier) Welke oproepen zijn nodig voor volgende afbeelding …

10 Hoofdstuk 5 Visual Basic.NET voor studenten10 Wat zijn de lokale variabelen? Private Sub DrawTriangle2(ByVal drawingArea As Graphics, _ ByVal penToUse As Pen, _ ByVal xPlace As Integer, _ ByVal yPlace As Integer, _ ByVal width As Integer, _ ByVal height As Integer) Dim rightCornerX, rightCornerY As Integer rightCornerX = xPlace + width rightCornerY = yPlace + height drawingArea.DrawLine(penToUse,xPlace,yPlace, _ xPlace,rightCornerY) drawingArea.DrawLine(penToUse,xPlace,yPlace, _ rightCornerX,rightCornerY) drawingArea.DrawLine(penToUse,xPlace,yPlace, _ rightCornerX,rightCornerY) End Sub

11 Hoofdstuk 5 Visual Basic.NET voor studenten11 Lokale variabelen Hulpmiddel voor berekeningen Zijn gedeclareerd binnen een methode body Ze bestaan enkel tijdens de methode oproep  lokaal bereik of scope Lokale variabelen zijn enkel zichtbaar binnen een methode body 2 methodes met lokale variabelen met dezelfde naam zijn dus toegestaan

12 Hoofdstuk 5 Visual Basic.NET voor studenten12 Naamconflicten Private Sub MethodOne(ByVal x As Integer, ByVal y As Integer) Dim z As Integer = 0 '...code End Sub Private Sub MethodTwo(ByVal z As Integer, ByVal x As Integer) Dim w As Integer = 0 '...code End Sub Dim w As Integer = MethodTwo(w,5)...

13 Hoofdstuk 5 Visual Basic.NET voor studenten13 Het begrip Klasse Een klasse kan een willekeurig aantal methoden in een willekeurige volgorde bevatten Tot hiertoe, slechts 1 klasse: Form1 Methodes  Zelfgeschreven ( Sub en/of Function )  Event-handling ( Private Sub Button1_Click )

14 Hoofdstuk 5 Visual Basic.NET voor studenten14 Klasse: Voorbeeld UML Notatie Instantievariabelen (zie hoofdstuk 6) Zelf geschreven methodes in Form1.vb  Button1_Click Gegenereerde code in Form1.Designer.vb  InitializeComponent

15 Hoofdstuk 5 Visual Basic.NET voor studenten15 Functiemethoden Een functie retourneert (precies) 1 waarde Declaratie: “ As type ” Gebruik: altijd via een toekenning Private Function AreaRectangle(ByVal length As Integer, _ ByVal width As Integer) _ As Integer Dim area As Integer area = length * width Return area End Function

16 Hoofdstuk 5 Visual Basic.NET voor studenten16 Bouwen op methoden Bestudeer de code Waarom is het:  drawingArea.DrawRectangle(…)  DrawTriangle(…)

17 Hoofdstuk 5 Visual Basic.NET voor studenten17 Argumenten ByRef Analogie met doorgeven van documenten We geven hier een iets “exactere” beschrijving van de werkelijkheid aan de hand van een geheugenmodel Het is van zeer groot belang het verschil tussen “ ByVal ” en “ ByRef ” te kunnen beschrijven, verklaren en gebruiken!

18 Hoofdstuk 5 Visual Basic.NET voor studenten18 Geheugengebruik Een computerprogramma dat wordt uitgevoerd, heeft geheugen nodig  Het programma zelf  Variabelen, objecten, … De benodigde ruimte wordt vrijgemaakt in het RAM geheugen Indien het RAM geheugen zou vol zijn, wordt geheugen op schijf aangesproken (Swap space, virtueel geheugen)

19 Hoofdstuk 5 Visual Basic.NET voor studenten19 Geheugenadressering Elke locatie in het geheugen, heeft een adres Denk aan een “doos” met een bepaalde inhoud en een bepaald nummer (adres) Dit adres wordt in een programmeertaal voorgesteld door de naam van een variabele “Hallo VB.NET” #0CA4D5 adres inhoud Dim msg As String msg = "Hallo VB.NET"

20 Hoofdstuk 5 Visual Basic.NET voor studenten20 Een programma met 2 functies Private Function Som(ByVal getal1 As Integer, _ ByVal getal2 As Integer) As Integer Return getal1 + getal2 End Function Private Function Verschil(ByVal getal1 As Integer, _ ByVal getal2 As Integer) As Integer Return getal1 - getal2 End Function

21 Hoofdstuk 5 Visual Basic.NET voor studenten21 Parameterbinding ByVal De inhoud van de geheugenlocaties worden gekopieerd en aan de argumenten doorgegeven Dim a As Integer = 5 Dim b As Integer = 2 Dim s As Integer s = Som(a,b) 5 2 a b 0 s

22 Hoofdstuk 5 Visual Basic.NET voor studenten22 Parameterbinding ByVal De inhoud van de geheugenlocaties worden gekopieerd en aan de argumenten doorgegeven Dim a As Integer = 5 Dim b As Integer = 2 Dim s As Integer s = Som(a,b) 5 2 a b 0 s 5 2 getal1 getal2 7 7

23 Hoofdstuk 5 Visual Basic.NET voor studenten23 Parameterbinding ByVal Wat denk je van volgende code? Maak een tekening van de geheugenlocaties. Private Function Som(ByVal getal1 As Integer, _ ByVal getal2 As Integer) As Integer Dim s As Integer = getal1 + getal2 getal1 = getal1 + 5 getal2 = getal2 + 1 Return s End Function... Dim a As Integer = 5 Dim b As Integer = 2 Dim s As Integer s = Som(a,b)

24 Hoofdstuk 5 Visual Basic.NET voor studenten24 Idem met 1 procedure Private Sub SomEnVerschil(ByVal getal1 As Integer, _ ByVal getal2 As Integer, _ ByRef som As Integer, _ ByRef verschil As Integer) som = getal1 + getal2 verschil = getal1 – getal2 End Sub

25 Hoofdstuk 5 Visual Basic.NET voor studenten25 Parameterbinding ByRef De adressen van de geheugenlocaties worden aan de parameters doorgegeven. De argumenten wijzen dus naar de effectieve geheugenplaatsen! Dim a As Integer = 5 Dim b As Integer = 2 Dim s As Integer Dim v As Integer SomEnVerschil(a,b,s,v) 5 2 a b 0 s 0 v

26 Hoofdstuk 5 Visual Basic.NET voor studenten26 Parameterbinding ByRef De adressen van de geheugenlocaties worden aan de parameters doorgegeven. De argumenten wijzen dus naar de effectieve geheugenplaatsen! Dim a As Integer = 5 Dim b As Integer = 2 Dim s As Integer Dim v As Integer SomEnVerschil(a,b,s,v) 5 2 a b 0 s 0 v 5 2 getal1 getal2 som verschil 7 3

27 Hoofdstuk 5 Visual Basic.NET voor studenten27 Parameterbinding: conclusie MechanismeUitlegGevolgVoordeel ByVal Parameters zijn kopieën van de variabelen Wijzigingen van de variabelen is onmogelijk Beschermt variabelen tegen ongewenst overschrijven ByRef Parameters zijn referenties naar de variabelen zelf Rechtstreeks wijzigen van de variabelen is mogelijk Meerdere waarden kunnen teruggegeven worden

28 Hoofdstuk 5 Visual Basic.NET voor studenten28 Opgelet voor misbruik! Schrijf enkel “ ByRef ” als het werkelijk noodzakelijk is, dus geen “ ByRef ” als de body geen wijzigingen doorgeeft Gebruik functies als je slechts 1 resultaat teruggeeft Als je “ ByRef ” gebruikt, geef dan samenhangende waarden terug. Misbruik dit mechanisme niet om methodes samen te gooien. Elke methode heeft in principe slechts één doel

29 Hoofdstuk 5 Visual Basic.NET voor studenten29 Het sleutelwoord Me Stelt het “huidige” object voor Mensen vertrouwd met Java kennen dit als this

30 Hoofdstuk 5 Visual Basic.NET voor studenten30 Overloading Methodes/functies met  Dezelfde naam  (hetzelfde Return type)  Verschillende types/aantal parameters Bestudeer de methode Swap in het boek

31 Hoofdstuk 5 Visual Basic.NET voor studenten31 Geheugenadressering bij objecten Objecten worden bewaard op een speciale plaats in het geheugen: de heap Een object variabele is eigenlijk een referentie naar zo een geheugenlocatie Dim testLabel As Label 'aanmaken met New of via Form... testLabel.Text = "Hallo VB.NET" testLabel Text “Hallo VB.NET”

32 Hoofdstuk 5 Visual Basic.NET voor studenten32 Objecten doorgeven aan methoden Je geeft een kopie ( ByVal ) van een referentie naar een object door. Je kan dus de properties van dit object wijzigen ShowSom(Label1, 3, 4) Label1 Text “” 3 a b display 4 “7”

33 Hoofdstuk 5 Visual Basic.NET voor studenten33 Discussie Bestudeer EurosAndCents / Swap Maak schetsen van de geheugenlocaties Is Swap ook te schrijven “ ByVal ”? Waarom is Swap(a,6) fout? Hoe zou de methode eruit zien als dit toegestaan zou zijn? Maak de tekening van ShowSom als het Label ByRef zou doorgegeven worden. Zou dit een goede keuze zijn?


Download ppt "Methoden en argumenten Hoofdstuk 5. Visual Basic.NET voor studenten2 In dit hoofdstuk … Methodes en functies schrijven Argumenten en parameters Doorgeven."

Verwante presentaties


Ads door Google