Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web:
About me Technical Manager / Lead developer Technical Manager / Lead developer Auteur… Auteur… Artikelen voor het VB Magazine, MSDN Magazine Europe, PC Active, Microsoft.NET Magazine en het SDN Magazine Artikelen voor het VB Magazine, MSDN Magazine Europe, PC Active, Microsoft.NET Magazine en het SDN Magazine Boek: Visual Basic 2005 – De basis (Pearson Education – 2006) Boek: Visual Basic 2005 – De basis (Pearson Education – 2006) Boek: Visual Basic Kookboek (Pearson Education – januari 2008) Boek: Visual Basic Kookboek (Pearson Education – januari 2008) De andere persoon achter VBcentral.nl… ;-) De andere persoon achter VBcentral.nl… ;-) VP Speaker Bureau – INETA Europe VP Speaker Bureau – INETA Europe Microsoft MVP voor Visual Basic sinds 2006 Microsoft MVP voor Visual Basic sinds 2006
Klassen & objecten OOP draait om klassen en objecten OOP draait om klassen en objecten Een klasse is de blauwdruk van een object stans Een klasse is de blauwdruk van een object stans Een object is de instantie van de klasse koekje Een object is de instantie van de klasse koekje Public Class Koekje Private mstrNaam As String = "" Public Property Naam() As String Get Return mstrNaam End Get Set(ByVal value As String) mstrNaam = value End Set End Property End ClassKlasse Dim objKletsKop As New Koekje objKletsKop.Naam = "Kletskop“ Dim objSpeculaas As New Koekje objSpeculaas.Naam = "Speculaas" Dim objSprits As New Koekje objSprits.Naam = "Sprits" Dim objChocoSprits As New Koekje objChocoSprits.Naam = "ChocoSprits"Objecten
Vier pijlers van OOP Theoretische benadering… niet onbelangrijk.. Theoretische benadering… niet onbelangrijk.. Abstraction - Abstractie Abstraction - Abstractie Encapsulation - Insluiting Encapsulation - Insluiting Inheritance - Overerving Inheritance - Overerving Polymorphism - Polymorfisme/veelvormigheid Polymorphism - Polymorfisme/veelvormigheid … manier van denken … manier van denken
Waarom wil je OOP? Je wordt gedwongen een complex geheel op te delen in ‘op te lossen’ kleine deelproblemen Je wordt gedwongen een complex geheel op te delen in ‘op te lossen’ kleine deelproblemen Je kunt je focussen op microproblemen, verklein kans op problemen op meso- of macroniveau Je kunt je focussen op microproblemen, verklein kans op problemen op meso- of macroniveau Je schrijft in het algemeen stabielere en beter onderhoudbare code Je schrijft in het algemeen stabielere en beter onderhoudbare code Je kunt code makkelijker hergebruiken Je kunt code makkelijker hergebruiken Jij vindt Lego toch ook leuk? Jij vindt Lego toch ook leuk?
Demo dansende ballen…
Klasse Bal Kenmerken / eigenschappen Kenmerken / eigenschappen Kleur Kleur Positie Positie Richting Richting Snelheid Snelheid Grootte Grootte Acties /methoden Acties /methoden Verplaatsen Verplaatsen Teken Teken
Abstractie & Insluiting Abstractie Abstractie Applicatie opdelen in logische blokken Applicatie opdelen in logische blokken Klassen, eigenschappen en methoden bepalen Klassen, eigenschappen en methoden bepalen Insluiting Insluiting Alleen benodigde Public methoden/eigenschappen Alleen benodigde Public methoden/eigenschappen Verberg de feitelijke implementatie Verberg de feitelijke implementatie Black-box Black-box
Code dansende ballen…
Overerving & Polymorfisme Definieer een basisklasse Persoon Definieer een basisklasse Persoon Maak afgeleide klassen Leerling, Leerkracht Maak afgeleide klassen Leerling, Leerkracht Voeg eventueel eigen eigenschappen toe Voeg eventueel eigen eigenschappen toe Overschrijf bestaande methoden en eigenschappen, waardoor een Leerling anders ‘denkt’ dan een Leerkracht (polymorfisme) Overschrijf bestaande methoden en eigenschappen, waardoor een Leerling anders ‘denkt’ dan een Leerkracht (polymorfisme)
Demo & Code klassen Persoon, Leerling en Leerkracht
Wat hebben we nu gezien? Overerving of inheritance met behulp van basis- en afgeleide klassen Overerving of inheritance met behulp van basis- en afgeleide klassen Dwing bepaalde zaken af met behulp van: Dwing bepaalde zaken af met behulp van: Verschillende / overloaded constructors Verschillende / overloaded constructors Sleutelwoorden als MustInherit, MustOverride, Overridable, Overrides, … Sleutelwoorden als MustInherit, MustOverride, Overridable, Overrides, … Polymorfisme door verschillende implementaties van de methode ‘Spreek’ Polymorfisme door verschillende implementaties van de methode ‘Spreek’
Demo & Code Klasse Landen: Overrides ToString()
Demo & Code erf over TreeNode
Demo & Code klasse Mens: Objecten kopiëren …
Implementeer interfaces Een interface is een beschrijving van de publieke eigenschappen en methoden, zonder daadwerkelijke implentatiecode Een interface is een beschrijving van de publieke eigenschappen en methoden, zonder daadwerkelijke implentatiecode Een klasse kan een of meerdere interfaces implementeren met behulp van het sleutelwoord Implements Een klasse kan een of meerdere interfaces implementeren met behulp van het sleutelwoord Implements IClonable, of IPersoon, IDokument, … IClonable, of IPersoon, IDokument, … …. IComparable(Of T) of IComparer….. …. IComparable(Of T) of IComparer…..
Demo & Code klasse Student: Objecten sorteren…
Vragen?