Download de presentatie
1
Methoden en argumenten
Hoofdstuk 5 Hoofdstuk 5
2
Visual Basic.NET voor studenten
In dit hoofdstuk … Methodes en functies schrijven Argumenten en parameters Doorgeven als waarde en als referentie Het gebruik van Return bij functies Visual Basic.NET voor studenten
3
Visual Basic.NET voor studenten
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 Visual Basic.NET voor studenten Hoofdstuk 5
4
Visual Basic.NET voor studenten
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) Visual Basic.NET voor studenten Hoofdstuk 5
5
Visual Basic.NET voor studenten
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 Visual Basic.NET voor studenten Hoofdstuk 5
6
Parameterbinding parameters
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 drawingArea penToUse xPos yPos paper myPen 10 20 Visual Basic.NET voor studenten Hoofdstuk 5
7
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 Visual Basic.NET voor studenten Hoofdstuk 5
8
Visual Basic.NET voor studenten
Een driehoekmethode Bestudeer zelf de code Een programma kan uit meerdere methodes bestaan Een methode zal dikwijls op zijn beurt andere methodes oproepen Visual Basic.NET voor studenten Hoofdstuk 5
9
Visual Basic.NET voor studenten
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 … Visual Basic.NET voor studenten Hoofdstuk 5
10
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) rightCornerX,rightCornerY) End Sub Visual Basic.NET voor studenten Hoofdstuk 5
11
Visual Basic.NET voor studenten
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 Visual Basic.NET voor studenten Hoofdstuk 5
12
Visual Basic.NET voor studenten
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 = 10 ... MethodTwo(w,5) Visual Basic.NET voor studenten Hoofdstuk 5
13
Visual Basic.NET voor studenten
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) Visual Basic.NET voor studenten Hoofdstuk 5
14
Visual Basic.NET voor studenten
Klasse: Voorbeeld UML Notatie Instantievariabelen (zie hoofdstuk 6) Zelf geschreven methodes in Form1.vb Button1_Click Gegenereerde code in Form1.Designer.vb InitializeComponent Visual Basic.NET voor studenten Hoofdstuk 5
15
Visual Basic.NET voor studenten
Functiemethoden Private Function AreaRectangle(ByVal length As Integer, _ ByVal width As Integer) _ As Integer Dim area As Integer area = length * width Return area End Function Een functie retourneert (precies) 1 waarde Declaratie: “As type” Gebruik: altijd via een toekenning Visual Basic.NET voor studenten Hoofdstuk 5
16
Visual Basic.NET voor studenten
Bouwen op methoden Bestudeer de code Waarom is het: drawingArea.DrawRectangle(…) DrawTriangle(…) Visual Basic.NET voor studenten Hoofdstuk 5
17
Visual Basic.NET voor studenten
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! Visual Basic.NET voor studenten Hoofdstuk 5
18
Visual Basic.NET voor studenten
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) Visual Basic.NET voor studenten Hoofdstuk 5
19
Visual Basic.NET voor studenten
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 Dim msg As String msg = "Hallo VB.NET" #0CA4D5 “Hallo VB.NET” adres inhoud Visual Basic.NET voor studenten Hoofdstuk 5
20
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, _ Return getal1 - getal2 Visual Basic.NET voor studenten Hoofdstuk 5
21
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) a 5 b 2 s Visual Basic.NET voor studenten Hoofdstuk 5
22
Parameterbinding ByVal
De inhoud van de geheugenlocaties worden gekopieerd en aan de argumenten doorgegeven a 5 Dim a As Integer = 5 Dim b As Integer = 2 Dim s As Integer s = Som(a,b) b 2 s 7 getal1 5 getal2 2 7 Visual Basic.NET voor studenten Hoofdstuk 5
23
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) Visual Basic.NET voor studenten Hoofdstuk 5
24
Visual Basic.NET voor studenten
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 Visual Basic.NET voor studenten Hoofdstuk 5
25
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) a 5 b 2 s v Visual Basic.NET voor studenten Hoofdstuk 5
26
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) a 5 b 2 s 7 v 3 getal1 5 getal2 2 som <adres s> verschil <adres v> Visual Basic.NET voor studenten Hoofdstuk 5
27
Parameterbinding: conclusie
Mechanisme Uitleg Gevolg Voordeel 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 Visual Basic.NET voor studenten Hoofdstuk 5
28
Visual Basic.NET voor studenten
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 Visual Basic.NET voor studenten Hoofdstuk 5
29
Visual Basic.NET voor studenten
Het sleutelwoord Me Stelt het “huidige” object voor Mensen vertrouwd met Java kennen dit als this Visual Basic.NET voor studenten Hoofdstuk 5
30
Visual Basic.NET voor studenten
Overloading Methodes/functies met Dezelfde naam (hetzelfde Return type) Verschillende types/aantal parameters Bestudeer de methode Swap in het boek Visual Basic.NET voor studenten Hoofdstuk 5
31
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 testLabel Dim testLabel As Label 'aanmaken met New of via Form ... testLabel.Text = "Hallo VB.NET" Text “Hallo VB.NET” Visual Basic.NET voor studenten Hoofdstuk 5
32
Objecten doorgeven aan methoden
ShowSom(Label1, 3, 4) Label1 display a 3 b 4 Text “7” “” Je geeft een kopie (ByVal) van een referentie naar een object door. Je kan dus de properties van dit object wijzigen Visual Basic.NET voor studenten Hoofdstuk 5
33
Visual Basic.NET voor studenten
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? Visual Basic.NET voor studenten Hoofdstuk 5
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.