Object-Oriented Programming
1. Object-Oriented Programming in Python
1.1. Introductie
Welke datatypen kennen jullie al?
boolean
char
int
float
string
tuple
list
set
- …
1.2. Categorieën
In welke schuifjes plaatsen jullie de volgende dingen?
1.3. Classes
python syntax-voorbeeld (werkt niet):
class Gitaar(Snaarinstrument): def __init__(self, stemming = ['E', 'A', 'D', 'G'], materiaal = 'hout') self.materiaal = materiaal self.Stemmen(stemming) def Spelen(self, melodie): for klank in melodie: Afspelen(klank) def __str__(self): return f"Een {self.materiaal}en gitaar." mijn_gitaar = Gitaar() seven_nation_army = ['E', 'E', 'G', 'E', 'D', 'C', 'B'] * 12 mijn_gitaar.Spelen(seven_nation_army)
Noot:
- signaalwoord “
class
” + inschuiving: maakt een eigen “datatype” aan. - klassen-hierarchie bv. “
Snaarinstrument
” (optioneel): thema overerving, latere les. - signaalwoord “
self
”: om eigenschappen/functies van de class te bereiken; eerste argument in alle klas-functies. - speciaal-functie
__init__(self, ...)
: “constructur”; deze functie wordt automatisch uitgevoerd als je een nieuwe instantie van de “class” aanmakt. - “punt”-notatie: functies oproepen met
1.4. Motivatie
- wij denken in categorieën
- dit is dus een heel intuitieve manier om te programmeren.
Andere voorbeeld:
class Polynoom(functie): def Nulpunten(self): pass # de polynoom vindt zijn eigen nulpunten def Plot(self): pass # een afbeelding aanmaken... # ... enzoverder.
2. Een Turtle Racer
import turtle import random import time class RenSchildpad: def __init__(self, kleur, positie): self.schildpad = turtle.Turtle(shape="turtle") self.schildpad.color(kleur) self.schildpad.penup() self.schildpad.goto(positie) self.snelheid = random.randint(5, 15) def race(self): stap = random.randint(1, self.snelheid) self.schildpad.forward(stap) time.sleep(0.1)
Opdracht:
- maak er drie schildpadden aan en laat ze tegen elkaar racen!