Inleiding Programmeren 2

Vergelijkbare documenten
Inleiding Programmeren 2

Inleiding Programmeren 2

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

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

Objectgericht Programmeren. (in Python)

Programmeren. Cursus Python

ALGORITME objectgeoriënteerd programmeren

Opgaven. Python Assessment

Inleiding Programmeren 2

Zoemzinnen. Algemene info. Functies met een variabel aantal argumenten

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

N&O: Objectgericht Programmeren. (in Python)

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

Uitwerkingen. Python Assessment

Programmeren in C# Overerving

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

Programmeermethoden NA. Week 5: Functies (vervolg)

Modelleren en Programmeren

IMP Uitwerking week 13

Programmeren in C# Interfaces. Hoofdstuk 23

Modelleren en Programmeren

Abstracte klassen & Interfaces

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

SYNTRA-WEST. Initiatiecursus JAVA. Deel

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

Objectgeoriënteerd Programmeren: WPO 2a

Programmeermethoden NA. Week 5: Functies (vervolg)

VB Magazine Online /08 1 / 6

Datastructuren: stapels, rijen en binaire bomen

Objectgeoriënteerd Programmeren: WPO 3

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

Monopoly: Howest edition

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

Een gelinkte lijst in C#

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

Kleine cursus PHP5. Auteur: Raymond Moesker

Inleiding Programmeren 2

Datastructuren: stapels, rijen en binaire bomen

Maak een pivot uit een Generic.List

Inleiding Programmeren 2

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

Programmeren in C# Klassen schrijven

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

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

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

Scala. Korte introductie. Sylvia Stuurman

Programmeermethoden NA

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

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

Modelleren en Programmeren

Programmeren in C++ (deel 1)

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

Zelftest Inleiding Programmeren

NETWERKEN en OBJECTORIËNTATIE

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Online cursus spelling en grammatica

Datastructuren Werkcollege Intro


Vakgroep CW KAHO Sint-Lieven

Hoofdstuk 6: Zelf functies maken

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

In een klassendiagram worden klassen beschreven in termen

Programmeermethoden NA. Week 6: Lijsten

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

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

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

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

Tentamen Imperatief Programmeren

Programmeren in C# Samenvatting van C#

Een inleiding in de Unified Modeling Language 67

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

Genetische algoritmen in Java met JGAP

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

Overerving & Polymorfisme

Lezen van en schrijven naar het Windows Registry

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

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Modelleren en Programmeren

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

Lessen Java: Reeks pag. 1

Powershell. Data import scripts (voor beginners) Willem Geesink

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

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

Elementary Data Structures 3

Transcriptie:

Inleiding Programmeren 2 Gertjan van Noord, Leonie Bosveld 12 december 2016

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

Syracuse def syracuse (x) : """ returns the Syracuse sequence of x """ if x ==1 : return [x] if x % 2 == 0 : n = x //2 else : n = 3 * x + 1 return [x] + syracuse (n)

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

Waarom 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 de methoden aan te hoeven passen 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 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 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

Dictionary to look up properties of words

Multiple inheritance Je kunt ook van meerdere klassen overerven. class WhPossPron ( WhPronoun, Determiner ):...