Learning Story: Ik wil leren hoe ik de basisconcepten van objectgeoriënteerd programmeren toepas #17

Open
opened 2023-11-21 11:51:27 +00:00 by hbo-ict-bot · 0 comments
hbo-ict-bot commented 2023-11-21 11:51:27 +00:00 (Migrated from gitlab.fdmci.hva.nl)

1. Inleiding

In het project tijdens blok 1 heb je vooral code geschreven die door de computer van boven naar beneden, regel voor regel wordt uitgevoerd. Dit noemen we ook wel procedureel programmeren.
Wellicht heb je gemerkt dat het best wel wat moeite kost om je code op een overzichtelijke manier te structureren. Waarschijnlijk heb je meerdere bestanden gebruikt om bepaalde soorten code te groeperen. Denk bijvoorbeeld aan een bestand waarin je alleen de inlogprocedure hebt opgenomen of een bestand waarin code zit voor het werken met de database van je applicatie. Hoe meer code je toevoegt aan je applicatie, hoe meer je moet nadenken over het structureren ervan. Je kunt zelfs een punt bereiken waarop je code minder overzichtelijk wordt en het onderhouden ervan meer tijd gaat kosten. Dit is een probleem waar al lang geleden prachtige oplossingen voor zijn bedacht. Een van die oplossingen is object georiënteerd programmeren, afgekort OOP (Object Oriented Programming).

Met object georiënteerd programmeren vertaal je de 'echte wereld' naar objecten. Objecten zijn dingen. Bijvoorbeeld een tafel, een stoel, een persoon, een dier, een adres, etc. Zo'n object bevat eigenschappen en gedrag. Feitelijk is een object dus een container waarin de eigenschappen en het gedrag zijn vastgelegd van het betreffende object. De beschrijving van de eigenschappen en het gedrag worden beschreven in een zogenaamde class. Een class is daarmee een blauwdruk van een object.

Als voorbeeld nemen we het object Hond. De eigenschappen van een hond kunnen zijn: kleur, gewicht, gevaarlijk, gechipt, etc. De gedragingen die bij een hond horen kunnen zijn: blaft, bijt, eet, slaapt, etc.

In je project ga je UML gebruiken (zie learning story over UML). De class in bovenstaand voorbeeld kan er in UML als volgt uitzien:

classDiagram
    
    class Hond{
        -string kleur
        -int gewicht
        -boolean isGevaarlijk
        -boolean isGechipt
        +blaft()
        +bijt()
        +eet()
        +slaapt()
    }

In bovenstaand ontwerp zie je dat het class diagram in drie lagen is verdeeld. In de bovenste laag staat de naam van de class, in de middelste laag staan de eigenschappen van de class (attributen) en in de onderste laag staat het gedrag van de class (methodes).

Door te denken in objecten kun je de code van je programma op een logische manier structureren waardoor het efficiënter en beter herbruikbaar wordt.

2. Wat moet ik leren?

  • beschrijven van een class
  • begrip van scope
  • scheiden van verantwoordelijkheden
  • werken met constructor(s)
  • gebruik maken van je class m.b.v. objecten

3. Hoe leer ik dit?

  • Python: Intro to Python for Computer Science and Data Science, hoofdstuk 10. In te zien via de O'Reilly database
  • Knowledgebase: basisconcepten OOP en/of
  • Weblinks naar videocourses, boeken, websites over dit onderwerp.
**1. Inleiding** In het project tijdens blok 1 heb je vooral code geschreven die door de computer van boven naar beneden, regel voor regel wordt uitgevoerd. Dit noemen we ook wel *procedureel programmeren*. Wellicht heb je gemerkt dat het best wel wat moeite kost om je code op een overzichtelijke manier te structureren. Waarschijnlijk heb je meerdere bestanden gebruikt om bepaalde soorten code te groeperen. Denk bijvoorbeeld aan een bestand waarin je alleen de inlogprocedure hebt opgenomen of een bestand waarin code zit voor het werken met de database van je applicatie. Hoe meer code je toevoegt aan je applicatie, hoe meer je moet nadenken over het structureren ervan. Je kunt zelfs een punt bereiken waarop je code minder overzichtelijk wordt en het onderhouden ervan meer tijd gaat kosten. Dit is een probleem waar al lang geleden prachtige oplossingen voor zijn bedacht. Een van die oplossingen is *object georiënteerd programmeren*, afgekort OOP (*Object Oriented Programming*). Met object georiënteerd programmeren vertaal je de 'echte wereld' naar objecten. Objecten zijn dingen. Bijvoorbeeld een tafel, een stoel, een persoon, een dier, een adres, etc. Zo'n object bevat eigenschappen en gedrag. Feitelijk is een object dus een container waarin de eigenschappen en het gedrag zijn vastgelegd van het betreffende object. De beschrijving van de eigenschappen en het gedrag worden beschreven in een zogenaamde *class*. Een *class* is daarmee een blauwdruk van een object. Als voorbeeld nemen we het object Hond. De eigenschappen van een hond kunnen zijn: kleur, gewicht, gevaarlijk, gechipt, etc. De gedragingen die bij een hond horen kunnen zijn: blaft, bijt, eet, slaapt, etc. In je project ga je UML gebruiken (zie learning story over UML). De class in bovenstaand voorbeeld kan er in UML als volgt uitzien: ``` mermaid classDiagram class Hond{ -string kleur -int gewicht -boolean isGevaarlijk -boolean isGechipt +blaft() +bijt() +eet() +slaapt() } ``` In bovenstaand ontwerp zie je dat het class diagram in drie lagen is verdeeld. In de bovenste laag staat de naam van de class, in de middelste laag staan de eigenschappen van de class (attributen) en in de onderste laag staat het gedrag van de class (methodes). Door te denken in objecten kun je de code van je programma op een logische manier structureren waardoor het efficiënter en beter herbruikbaar wordt. **2. Wat moet ik leren?** - [ ] beschrijven van een class - [ ] begrip van scope - [ ] scheiden van verantwoordelijkheden - [ ] werken met constructor(s) - [ ] gebruik maken van je class m.b.v. objecten **3. Hoe leer ik dit?** - [ ] Python: Intro to Python for Computer Science and Data Science, hoofdstuk 10. In te zien via de [O'Reilly database](https://lib.hva.nl/permalink/31UKB_UAM2_INST/ooc2dr/alma9939149327405132) - [ ] Knowledgebase: basisconcepten OOP en/of - [ ] Weblinks naar videocourses, boeken, websites over dit onderwerp.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Smikkelbakje/J1B2-Game-controller#17
No description provided.