Methoden en argumenten

Slides:



Advertisements
Verwante presentaties

Advertisements

KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Gegevensstructuren: list boxen en lijsten
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Het type int Tekenen met Java operatoren
VBA en VBS Een introductie.
Hoofdstuk 6: Controle structuren
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
Hoofdstuk 2 Hallo, C# !.
Les 2 Basisbouwstenen (deel 1)
Assenstelsels en het plotten van Functies in LOGO
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Frank Stalpers en Ad Baars
Numerieke Natuurkunde
Exceptions Hoofdstuk 17 Hoofdstuk 17.
Klassen schrijven Hoofdstuk 10. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe schrijf je een klasse Constructormethodes Public methoden Variabelen.
Herhaling: For, While en Do
Overerving Hoofdstuk 11 Hoofdstuk 11.
Consoleprogramma’s Hoofdstuk 19. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe consoletoepassingen maken In- en uitvoer bij consoleprogramma’s.
Bestanden Hoofdstuk 18 Hoofdstuk 18.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Visual Basic.
PHP functies.
Consoletoepassing Variabelen Klassen
6.1 Inleiding HOOFDSTUK 6 METHODEN
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Object georiënteerd programmeren in Alice
Chris Pollentier 18 / 12 / 2002 De LOGO taalwereld.
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Testen Hoofdstuk 22. Visual Basic.NET voor studenten2 Inleiding Testen hebben als doel het ontdekken van bugs Het is echter onmogelijk om met testen te.
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
Les 6 Menu Programmeren met Visual Basic Karl Moens.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
Debuggen Hoofdstuk 9 Hoofdstuk 9.
Les 7 Multiple Document Interface Programmeren met Visual Basic Karl Moens.
Arrays Hoofdstuk 14 Hoofdstuk 14.
Objectgeoriënteerd Ontwerp
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Les 4 De Muis (deel 1) Programmeren met Visual Basic Karl Moens.
Variabelen en berekeningen
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tweedimensionale arrays
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Bewerkingen met Strings
Polymorfie Hoofdstuk 24. Visual Basic.NET voor studenten2 Inleiding Polymorfie zorgt ervoor dat een gegeven object verschillende “vormen” kan aannemen.
Hoofdstuk 3 Methoden om te tekenen.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
Variabelen. Wat zijn variabelen? Klassiek: een variabele houdt informatie bij. Klassiek: een variabele houdt informatie bij. bvb: int getal; getal = 5;
Variabelen. Wat zijn variabelen? In een programmeertaal zijn er “dingen” nodig die ervoor zorgen dat het programma informatie voor korte of langere tijd.
GEGEVENSSTRUCTUREN IN.NET. Inleiding  Enumerated type  Structure  Collecties  Typed collections  Untyped collections.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Tinpro015b-les4 Klassen.
Voorbeeld: Simulatie van bewegende deeltjes
Programmastructuurdiagrammen (PSD)
Aanroep van een methode voert opdrachten uit in de body daarvan
SQL Les February 2019.
Software Development fundamentals
Transcript van de presentatie:

Methoden en argumenten Hoofdstuk 5 Hoofdstuk 5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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