Inleiding Programmeren 2

Vergelijkbare documenten
Inleiding Programmeren 2

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

Inleiding Programmeren 2

Programmeren met Grafische Objecten. Inleiding Programmeren II Hoorcollege 1 prof. dr. van Noord en dr. L.M. Bosveld-de Smet

Inleiding Programmeren 2

Objectgericht Programmeren. (in Python)

Inleiding Programmeren 2

N&O: Objectgericht Programmeren. (in Python)

Zoemzinnen. Algemene info. Functies met een variabel aantal argumenten

Opgaven. Python Assessment

ALGORITME objectgeoriënteerd programmeren

L E S B O E K J E. J. van Weert Wt (at) sgdb.nl Stedelijk Gymnasium s-hertogenbosch Wt /

Programmeren. Cursus Python

Modelleren en Programmeren

Programmeren in C# Overerving

Modelleren en Programmeren

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

Inleiding Programmeren 2

Modelleren en Programmeren

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeren in C# Interfaces. Hoofdstuk 23

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Modelleren en Programmeren

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

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

NETWERKEN en OBJECTORIËNTATIE

Programmeermethoden NA. Week 5: Functies (vervolg)

SYNTRA-WEST. Initiatiecursus JAVA. Deel

Uitwerkingen. Python Assessment

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

Een gelinkte lijst in C#

Modelleren en Programmeren

Toetsvoorbereiding Informatica HAVO/VWO 5 (T51) Programmeren met Python II. Duur: 70 minuten Datum: sept 2018

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

Online cursus spelling en grammatica

Kleine cursus PHP5. Auteur: Raymond Moesker

VB Magazine Online /08 1 / 6

Datastructuren Werkcollege Intro

[15] Variabelen in functies (of: een woordje over scope)

Objectgeoriënteerd Programmeren: WPO 2a

Objectgeoriënteerd Programmeren: WPO 3

Modelleren en Programmeren

De bovenkamer. Josée Coenen. een kleurrijke grammatica van het Nederlands. colofon

IMP Uitwerking week 13

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Naam: Mijn doelenboekje. Grammatica. Werelden - Eilanden - Dorpen 5 / 6 / 7 / 8.

DOELGROEP Grammatica 3F is bedoeld voor leerlingen van havo/vwo en mbo 4. Het programma is geschikt voor zowel allochtone als autochtone leerlingen.

Object Oriented Programming

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Programmeren in C# Klassen schrijven

Maak een pivot uit een Generic.List

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent

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

Scala. Korte introductie. Sylvia Stuurman

Leren programmeren in C# Deel 4 - Objectoriëntatie

Wat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type.

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Benodigde voorkennis taal verkennen groep 5

Datastructuren: stapels, rijen en binaire bomen

Lessen Java: Reeks pag. 1

Datastructuren: stapels, rijen en binaire bomen

Programma van Inhoud en Toetsing (PIT)

Zinsontleden en woordbenoemen groep 7/8

Lezen van en schrijven naar het Windows Registry

Programmeren in Java 3

INHOUDSOPGAVE. Over de auteur, de illustrator en de technische redacteuren 13

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

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

Introductie in C++ Jan van Rijn. September 2013

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Programma van Inhoud en Toetsing (PIT)

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

In een klassendiagram worden klassen beschreven in termen

Hoofdstuk 6: Zelf functies maken

Tentamen Imperatief Programmeren

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Programmeermethoden NA

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

Een inleiding in de Unified Modeling Language 67

Abstracte klassen & Interfaces

Les 3. Gebruik in volledige programma Default argumenten Vergelijken van objecten

Vakgroep CW KAHO Sint-Lieven

Access voor beginners - hoofdstuk 25

Programmeren in C# Samenvatting van C#

et Zend Framework bestaat volledig uit objectgeoriënteerde

Inleiding: Combinaties

Monopoly: Howest edition

Transcriptie:

Inleiding Programmeren 2 Gertjan van Noord 11 december 2017

Zelle hoofdstuk 10 Stof

Overzicht - theorie 1. Zelle hoofdstuk 4 en 5 2. Zelle hoofdstuk 7 en 8, recursie, Brookshear hoofdstuk 5 3. Zelle hoofdstuk 8, recursie, tuples en sets, complexiteit Brookshear hoofdstuk 5 4. Zelle hoofdstuk 9, simulatie 5. Zelle hoofdstuk 10, object oriented programming, Brookshear hoofdstuk 6 6. Zelle hoofdstuk 11 7. Vragenuur, bekijken proeftentamen

Definieren van nieuwe klassen Een object: Informatie die bij elkaar hoort ( instance variables ) Met bijbehorende operaties ( methods ) Attributen van een object: de instance variables en de methods Elk object is de instance van een class Je maakt een nieuw object met een constructor

Bijvoorbeeld: Circle mycircle = Circle(Point(0,0), 20) Dit maakt een nieuw object van de class Circle De parameters worden gebruikt om sommige instance variables te initializeren Als het object is gemaakt, kun je de methods gebruiken mycircle. draw ( win ) mycircle. move (10,10)

Zelf classes definieren class voor een meerzijdige dobbelsteen (die/dice) informatie Hoeveel zijden heeft de dobbelsteen Wat is de huige waarde van de dobbelsteen methoden roll een nieuwe worp get de waarde set de waarde

class MSDie class MSDie : def init (self, sides ): self. sides = sides self. value = 1 def roll ( self ): self. value = randrange (1, self. sides +1) def getvalue ( self ): return self. value def setvalue (self, val ): self. value = val

Zelf classes definieren keyword class gevolgd door de naam van de nieuwe klasse functies die binnen een class worden gedefinieerd zijn de methoden speciale functie init (...) is de constructor self instance variabelen self.sides, self.value

Wat is self De parameter self verwijst in de definitie van een klasse steeds naar een specifieke instantie. Als je de constructor gebruikt om een MSDie object te bouwen, verwijst self dus naar het object dat je aan het bouwen bent. Als je de getvalue methode gebruikt van een gegeven MSDie object, dan verwijst self naar datzelfde object.

Hoe bepaal je de attributen? Hoe wil je het object gebruiken? Zorg dat de buitenwereld zo min mogelijk hoeft te weten over de interne structuur van het object encapsulation Bijvoorbeeld: als je een betere random module ter beschikking hebt, kun je de klasse aanpasssen, zonder dat de code die gebruikt maakt van de klasse hoeft te worden aangepast De buitenwereld moet weten wat het object kan, maar ze hoeven niet te weten hoe alles is geimplementeerd. Dus wel wat, maar niet hoe.

Methoden en instance variabelen from MSDie import MSDie ds1 = MSDie (6) ds1. roll () print ( ds1. getvalue ()) 4 print ( ds1. value )?

Methoden en instance variabelen from MSDie import MSDie ds1 = MSDie (6) ds1. roll () print ( ds1. getvalue ()) 4 print ( ds1. value ) 4

Methoden en instance variabelen In Python kan/mag dit allebei In sommige andere talen kan/mag je alleen via methoden de instance variabelen benaderen Dat wordt (meestal) beschouwd als de nettere oplossing Instance variables die je als private beschouwt, hebben vaak een naam die met een underscore begint

Speciale methode voor weergave objecten Speciale methode str(self) om je object als string weer te geven

Een alternatieve klasse voor meerzijdige dobbelstenen class MSDie : def init (self, sides ): self. sides = sides self. value = 1 def roll ( self ): self. value = randrange (1, self. sides +1) return self. value def str ( self ): return "<MSDie met {} zijden >". format ( self. sides ) Wat zijn de verschillen?

Nog eentje class MSDie : def init (self, sides ): self. sides = sides def roll ( self ): return randrange (1, self. sides +1) def str ( self ): return "<MSDie met {} zijden >". format ( self. sides )

Inheritance Klassen kunnen worden gedefinieerd in termen van algemenere klassen Methoden en attributen worden overgeerfd van die algemenere klassen

Inheritance class Triangle ( Polygon ): def init (self, p1, p2, p3 ): Polygon. init (self,p1,p2,p3) Als je in graphics.py kijkt, zie je dat Polygon zelf ook weer een sub-klasse is van GraphicsObject. Op deze manier kan een hierarchy van klassen ontstaan. Zo n hierarchy wordt vaak Inheritance hierarchy genoemd.

Inheritance hierarchy

Woordenboek als een inheritance hierarchy wat is bijbehorende lemma wat is de woordsoort (werkwoord, zelfstandig naamwoord, voornaamwoord, voorzetsel) werkwoorden kunnen vervoegd zijn vervoegde werkwoorden zijn ofwel tegenwoordige tijd ofwel verleden tijd zelfstandige naamwoorden hebben getal (enkelvoud of meervoud) etc etc

Implementatie van de dikke van Dale: vandale.py class Word : def init (self,word, lemma ): self. word = word self. lemma = lemma def Lemma ( self ): return self. lemma class Noun ( Word ): def init (self,word, lemma ): Word. init (self,word, lemma ) self. part_of_speech = noun def getnumber ( self ): return self. number class PluralNoun ( Noun ): def init (self,word, lemma ): Noun. init (self,word, lemma ) self. number = plural

Implementatie van de dikke van Dale: vandale.py >>> from vandale import * >>> word23 = PluralNoun ( fietsen, fiets ) >>> word23. part_of_speech noun >>> word23. number plural >>> word23. getnumber () plural >>> word23 < vandale. PluralNoun object at 0 x7f8654a93f60 >

Dictionary to look up properties of words

Multiple inheritance Je kunt ook van meerdere klassen overerven. class WhPossPron ( WhPronoun, Determiner ):... wiens is aan de ene kant een soort lidwoord, maar tegelijkertijd een vragend voornaamwoord.