Programmeren in C# Klassen schrijven

Vergelijkbare documenten
Programmeren in C# Overerving

Programmeren in C# Interfaces. Hoofdstuk 23

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Modelleren en Programmeren

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Vakgroep CW KAHO Sint-Lieven

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

IMP Uitwerking week 13

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur

Windows-applicatie. using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( )

Klassen. Hoofdstuk Klassen

Overerving & Polymorfisme

Voorbeeld: Simulatie van bewegende deeltjes

Datastructuren Werkcollege Intro

Objectgericht programmeren 1.

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

Kleine cursus PHP5. Auteur: Raymond Moesker

Modelleren en Programmeren

Modelleren en Programmeren

Programmeren in Java 3

Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Objectgeoriënteerd programmeren in Java 1

Access voor beginners - hoofdstuk 25

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Programmeren in C# Samenvatting van C#

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Veel succes! 1. Gegeven is de volgende klasse:

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Een gelinkte lijst in C#

Tentamen Imperatief Programmeren

Modelleren en Programmeren

VI. Klassen en objecten

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

Modelleren en Programmeren

SYNTRA-WEST. Cursus OOP. Deel

b.text = "Rol!"; b.location = new Point(100, 0); b.click += this.rol; this.paint += this.teken;

Programmeren Het gesloten boek examen 1.1

Inleiding C++ Coding Conventions

NAAM: Programmeren 1 Examen 29/08/2012

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Modelleren en Programmeren

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

HOOfDsTuk 1 Objecten en klassen

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Een inleiding in de Unified Modeling Language 67

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Intent. Intent: bedoeling om een nieuwe activiteit te starten. eigen activiteit. standard. Hallo Teller. web-browser text-sender

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 19 oktober 2012, uur

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Ingebouwde klassen & methodes

NAAM: Programmeren 1 Examen 31/08/2011

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Modelleren en Programmeren

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Programmeermethoden NA. Week 5: Functies (vervolg)

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur

is eigenlijk overbodig!

Modelleren & Programmeren. Jeroen Fokker

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur

Programmeren (1) Examen NAAM:

programmeren Mobiel Mobilofoon 1960 Apple iphone 2007 met ios Nokia Samsung S met Android Motorola Dyna-Tac 1973

Streams, Formatters en Serialization in.net (Tutorial gebaseerd op tutorials van Richard Grimes, het MSDN en anderen)

NAAM: Programmeren 1 Examen 21/01/2011

Een eerste applicatie

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Programmeren in Java 3

return an ; } private I L i s t l i j s t ;

Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk

Uitwerkingen Derde deeltentamen Imperatief programmeren Vrijdag 12 november 2010, uur

Leren programmeren in C# Deel 2 - Gegevens

Programmeermethoden NA. Week 5: Functies (vervolg)

Uitwerking Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Java. Basissyllabus. Egon Pas

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Kompas. zijn klasse. protected override void OnDraw(Canvas canv) { base.ondraw(canv);

VB Magazine Online /08 1 / 6

Programmeren in Java les 3

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

Transcriptie:

Programmeren in C# Klassen schrijven

In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties Programmeren in C# 2

Inleiding Wat is een klasse? Wat is een object? Hoe maak je een object? Welke klassen ken je tot hiertoe in C#? Programmeren in C# 3

Programmeren in C# 4 Een klasse Heeft private member variabelen Toestand Heeft (een) constructormethode(s) Dezelfde naam als de klasse Gebruik: new Heeft public methoden Aanspreekpunt voor de buitenwereld Heeft properties Gecontroleerde toegang tot de toestand Heeft private methoden Hulpmethoden enkel beschikbaar binnen het object

Een eigen klasse ontwerpen Een programma dat Balloon objecten kan tekenen Demo Programmeren in C# 5

Programmeren in C# 6 Klassediagram Je krijgt onmiddellijk een beeld van de structuur van de applicatie

Programmeren in C# 7 klassediagram Structuur van een klasse Klassenaam Member variabelen Methodes Properties Voor een variabele, methode of property staan er modifiers: Een betekent private Een + betekent public Een # betekent protected Lijnen tussen klassen tonen verbanden (associaties)

Balloon.cs public class Balloon private int x = 50; private int y = 50; private int diameter = 20; private Pen pen = new Pen(Color.Black); public void MoveRight(int xstep) x = x + xstep; Klassenaam begint met hoofdletter Lege lijnen + inspringen (leesbaarheid) public void ChangeSize(int change) diameter = diameter + change; 1 klasse per bestand (= goede gewoonte) public void Display(Graphics drawarea) drawarea.drawellipse(pen, 1 klasse x, per y,.vb diameter, bestand (d.i. niet diameter); verplicht, wel goede gewoonte) Programmeren in C# 8

Programmeren in C# 9 Demo Voeg de klasse Balloon toe Add Classin het Project menu

In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties Programmeren in C# 10

private variabelen public class Balloon private int x = 50; private int y = 50; private int diameter = 20; private Pen pen = new Pen(Color.Black); public void MoveRight(int xstep) x = x + xstep; public void ChangeSize(int change) diameter = diameter + change; public void Display(Graphics drawarea) drawarea.drawellipse(pen, x, y, diameter, diameter); Programmeren in C# 11

private variabelen Beschrijven de toestand van elk Balloon object Zijn niet toegankelijk voor de buitenwereld Variabelen public maken is een slechte programmeerstijl Wel: public methodes en properties manipuleren de waarden van private variabelen. Programmeren in C# 12

In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties Programmeren in C# 13

public methoden public class Balloon private int x = 50; private int y = 50; private int diameter = 20; private Pen pen = new Pen(Color.Black); public void MoveRight(int xstep) x = x + xstep; public void ChangeSize(int change) diameter = diameter + change; public void Display(Graphics drawarea) drawarea.drawellipse(pen, x, y, diameter, diameter); Programmeren in C# 14

public methoden Beschrijven het gedrag van elk Balloon object Vormen de connectie, interface met de buitenwereld Zeer vaak manipuleren public methodes de interne toestand van een object op een gecontroleerde manier Programmeren in C# 15

Programmeren in C# 16 Inkapseling Informatie verbergen Engels: encapsulation Zeer belangrijk OO principe! Elk object heeft een toestand die verborgen blijft voor de buitenwereld Elk object vertoont een bepaald gedrag die deze toestand beïnvloedt De buitenwereld kan enkel het object manipuleren via public Methodes Properties

Inkapseling public class Balloon private int x = 50; private int y = 50; private int diameter = 20; private Pen pen = new Pen(Color.Black); Standpunt ontwerper public void MoveRight(int xstep) x = x + xstep; public void ChangeSize(int change) diameter = diameter + change; public void Display(Graphics drawarea) drawarea.drawellipse(pen, x, y, diameter, diameter); Programmeren in C# 17

Inkapseling public class Balloon private int x = 50; private int y = 50; private int diameter = 20; private Pen pen = new Pen(Color.Black); Standpunt gebruiker public void MoveRight(int xstep) x = x + xstep; public void ChangeSize(int change) diameter = diameter + change; public void Display(Graphics drawarea) drawarea.drawellipse(pen, x, y, diameter, diameter); Programmeren in C# 18

In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties Programmeren in C# 19

Programmeren in C# 20 Properties Zorgen voor een gecontroleerde toegang tot member variabelen Lezen: get access name = textbox1.text; Schrijven: set access textbox1.visible = false; Dit lijkt alsof je rechtstreeks member variabelen verandert, maar je doet dit via (property-)methoden!

Programmeren in C# 21 Voorbeeld, Balloon p185 private void changexbutton_click(object sender, EventArgs e) balloon.xcoord = Convert.ToInt32(xCoordTextBox.Text); drawarea.clear(color.white); balloon.display(drawarea); private void displayxbutton_click(object sender, EventArgs e) xcoordtextbox.text = Convert.ToString(balloon.XCoord);

Property definitie public int XCoord get return x; set x = value; public int XCoord get return x; set x = value; public int XCoord get; set; Compacte indentatie VS tip: propfull <tab> <tab> xcoordtextbox.text = Convert.ToString(balloon.XCoord); balloon.xcoord = Convert.ToInt32(xCoordTextBox.Text); Programmeren in C# 22

Programmeren in C# 23 Property met enkel get of set public int XCoord get return x; public int XCoord set x = value;

Programmeren in C# 24 Waarom properties? De interne voorstelling wordt verborgen Bv: stel dat je in plaats van met een (x,y) stelsel met een polair assenstelsel (r,θ) zou werken, dan moeten de property methods de omrekening doen naar x en y Onderscheid tussen get en set is mogelijk Toegangscontrole is mogelijk, bv enkel x en y tussen - 100 en 100 is toegestaan public int XCoord get if(x<100 && x>-100) return x; r θ (x,y)

Autoproperties Vaak wil je een member variabele enkel instellen en uitlezen. Nooit public member variabelen gebruiken! Altijd via properties werken. Autoproperties (automatische property): handige schrijfwijze voor property met member variabele achter de schermen. VS: prop <tab><tab> public Color FillColor get; set; Programmeren in C# 25

Programmeren in C# 26 Autoproperties public Color FillColor get; set; Deze property definieert een private member variabele van type Color, zonder expliciete naam: dus alternatief van private Color c; public Color FillColor getreturn c; setc=value; Meer controle, bv testen of kleur van ballon is toegelaten Property voluit definiëren

Methode of property? Methode = actie, gedrag, vaardigheid, Naam = werkwoord Property = toestand, informatie, eigenschap, Naam = zelfstandig naamwoord Soms is het onderscheid een kwestie van smaak en/of stijl ChangeColor() in plaats van Color Programmeren in C# 27

Oefening 10.6 Klasse Bankrekening Methode of property? TotaalBijgeschreven TotaalAfgeschreven HuidigSaldo BerekenRente Naam Programmeren in C# 28

Programmeren in C# 29 Oefeningen Breid Balloon object uit met variabele die kleur beschrijft Schrijf methode MoveUp die ballon een aantal pixels omhoog beweegt door een aangegeven parameter Schrijf methode die kleur van ballon verandert Herschrijf methode Display zodat de aangepaste gekleurde ballon wordt getoond Voeg property diameter aan toe. Houdt er rekening mee dat diameter maximum 100 kan zijn public class Balloon private int x = 50; private int y = 50; private int diameter = 20; private Pen pen = new Pen(Color.Black); public void MoveRight(int xstep) x = x + xstep; public void ChangeSize(int change) diameter = diameter + change; public void Display(Graphics drawarea) drawarea.drawellipse(pen, x, y, diam eter, diameter);

Programmeren in C# 30 public class Balloon private int x = 50; private int y = 50; private int diameter = 20; private Pen pen = new Pen(Color.Black); private Color c= Color.Black; public void MoveRight(int xstep)x = x + xstep; public void MoveuP(int ystep)y = y + ystep; public void ChangeColor(Color c1)c = c1; public void ChangeSize(int change)diameter = diameter + change; public void Display(Graphics drawarea) Pen.Color=c; drawarea.drawellipse(pen, x, y, diam eter, diameter); public int Diameter getreturn diameter; setif (value<100) diameter = value;

In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties Programmeren in C# 31

Constructor Speciale methode om een object te creëren. Deze methode heeft dezelfde naam als de klasse. Parameters zijn mogelijk. Overladen van Constructor is mogelijk (zie verder) Aanroep met new in andere klasse Programmeren in C# 32

Programmeren in C# 33 Constructor Als je geen constructor definieert, dan is er toch (impliciet) een default constructor zonder parameters. Deze initialiseert alle member variabelen op hun default waarde. Indien member variabele niet geïnitialiseerd is, C# geeft zelf standaardwaarde Getallen=0, bool type=false, objecten=null, string= Initialiseer zelf Van zodra je zelf één (of meer) constructors schrijft, dan vervalt deze default constructor.

Programmeren in C# 34 Constructor: voorbeeld public Balloon(int initialx, int initialy, int initialdiameter) x = initialx; y = initialy; diameter = initialdiameter; Balloon balloon1 = new Balloon(10, 10, 50); // wanneer compileert dit niet? Balloon balloon2 = new Balloon();

Overloading of default waarden Vaak maak je meerdere versies van een constructor Telkens met een variatie van de parameters = overloading Default waarden kunnen hier vaak voor kortere code zorgen Programmeren in C# 35

Programmeren in C# 36 Overloading constructor public Balloon() x = 50; y = 50; diameter = 20; public Balloon(int initialx) x = initialx; y = 50; diameter = 20;... Voor elke combinatie van parameters een overloaded constructor public Balloon(int initialx, int initialy) x = initialx; y = initialy; diameter = 20;... public Balloon(int initialx, int initialy, int initialdiameter) x = initialx; y = initialy; diameter = initialdiameter;

Programmeren in C# 37 Default waarden public Balloon(int initialx = 50, int initialy = 50, int initialdiameter = 20) x = initialx; y = initialy; diameter = initialdiameter; Dit is equivalent met de vorige slide

In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties Programmeren in C# 38

private methoden Interne hulpfuncties (binnen het object) Als je deze methodes binnen andere methodes van het object gebruikt, hoef je geen object ervoor te zetten. Eventueel mag het woord this Programmeren in C# 39

Programmeren in C# 40 private methoden public double Area get return this.calcarea(); // return CalcArea(); private double CalcArea() double radius; radius = diameter / 2.0; return Math.PI * radius * radius;

Bewerkingen op objecten Primitieve types: int, bool, double Aanmaak zonder new, gewoon gelijkstellen = int a= 5; De bewerkingen liggen vast Object types: Balloon, Aangemaakt explicitiet met new Balloon b = new Balloon(10,20,50) De bewerkingen worden bepaald door de methodes die op deze objecten bestaan Programmeren in C# 41

Programmeren in C# 42 Bewerkingen met Balloon Geeft lijst van bewerkingen van Balloon, p185?

Programmeren in C# 43 Objecten vernietigen Balloon balloon = new Balloon(10, 10, 50); // Dit maakt het eerste object niet meer toegankelijk // garbage collector zal dit dan verwijderen balloon = new Balloon(20, 10, 30); Garbage collection is een proces dat uitgevoerd wordt door de Common Language Runtime van.net Het zorgt ervoor dat niet meer gebruikte objecten worden verwijderd, zodat het geheugen weer vrijkomt voor nieuwe objecten Je kan als programmeur een hint geven dat je een object niet meer nodig hebt door aan de variabele de waarde null toe te kennen balloon = null;

In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties Programmeren in C# 44

static methoden en properties Soms heeft het logisch gezien geen nut om van een klasse objecten te maken Typische voorbeelden zijn bibliotheken van functies De methoden en properties spelen dan op klasse niveau ipv op object niveau Sleutelwoord: static Programmeren in C# 45

Programmeren in C# 46 static methoden en properties public class Math public static double Sqrt(double value)...... double x = Math.Sqrt(64);...

Static methoden en properties Voorbeeld static methoden Convert.ToInt32 en Convert.ToString Voorbeeld static property Color.Black, Color.White Programmeren in C# 47

Waarom Static methoden en properties Alles wordt geschreven onder klasse, geen alternatief Veel static methoden in bib Zelf static methoden schrijven als beginner niet vaak Programmeren in C# 48

Programmeren in C# 49 Partial klasse public partial class Form1 Header van klasse Form1 Klassedefinitie is niet compleet, aangevuld met items uit ontwerpmodus Application.Run(new Form1()); Opdracht uit runtime systeem Object uit klasse Form1 wordt gemaakt als parameter van static methode Application.Run() die programma start In static methode Main(), in automatisch aangemaakte klasse Program.cs (=startpunt van programma)

Samenvatting Programmeren in C# 50

Samenvatting Verschil Klasse en object Onderdelen van klasse Private leden Constructor Properties Methoden Static methoden Programmeren in C# 51

Oefening: Zoek fout private Balloon redballoon; redballoon.display(drawarea); Programmeren in C# 52

Programmeren in C# 53 Oefening: 10.3, p203 BankRekening