OLD [G_PRO] Programmeren en OO programmeren
experimentalmerge5
experimentalmerge5
  • Welkom
  • Inleiding
    • Benodigdheden
    • Afspraken code
    • Afspraken oefeningen
    • Nuttige extras
    • Dankwoord
    • Mee helpen?
  • Semester 1: Programming Principles
    • H0: Werken met Visual Studio
      • Introductie tot C#
      • Werken met Visual Studio
      • Je eerste programma
      • Input verwerken met ReadLine
      • Fouten in je code
      • Kleuren in Console
      • Oefeningen
    • H1: Variabelen en datatypes
      • De essentie van C#
      • Datatypes
      • Variabelen
      • Expressies en operators
      • Oefeningen
    • H2: Tekst in code
      • Strings en chars
      • Strings samenvoegen
      • Unicode tonen
      • Oefeningen
      • Uitbreidingsoefeningen
    • H3: Werken met data
      • Casting, conversie en parsing
      • Input verwerken en omzetten
      • Math-library en berekeningen
      • Random
      • Debuggen
      • Oefeningen
    • H4: Beslissingen
      • Beslissingen intro
      • Booleanse logica en operators
      • If
      • Scope van variabelen
      • enum
      • Switch
      • Oefeningen
    • H5: Loops
      • Loops intro
      • While en Do While
      • For
      • Nesting
      • Programma flow analyse
      • Oefeningen deel 1
      • Oefeningen deel 2
      • Oefeningen deel 3
    • H6: Methoden
      • Methoden intro
      • Bibliotheken
      • Geavanceerde methoden
      • Oefeningen
      • Uitbreidingsoefeningen
    • H7: Arrays
      • Array principes
      • Werken met arrays
      • Arrays en methoden
      • N-dimensionale arrays
      • Oefeningen deel 1
      • Oefeningen deel 2
  • Semester 2 : OOP
    • H8: Klassen en objecten
      • OOP Intro
      • Klassen en objecten in C#
      • Methoden en access modifiers
      • Properties
      • DateTime: leren werken met objecten
      • (Klassikale!) smaakmaker OOP
      • Oefeningen
    • H9: Geheugenmanagement bij klassen
      • Objecten en methoden
      • Stack en Heap
      • Null en NullReferenceException
      • Oefeningen
    • H10: Geavanceerde klassen en objecten
      • Constructors
      • Static
      • Spelen met strings
      • Oefeningen
    • H11: Arrays en klassen
      • Arrays van objecten
      • Foreach en var
      • List
      • Oefeningen
      • Extra oefeningen
    • H12: Overerving
      • Overerving intro
      • Constructors bij overerving
      • Virtual en override
      • Base keyword
      • Oefeningen
    • H13: Geavanceerde overerving
      • System.Object
      • Abstract
      • Oefeningen
  • Appendix
    • Ea-ict coding guidelines
    • Oefeningen kerkhof
  • Semester 1 appendix
    • Nice to know stuff
      • Out en Ref parameters
      • Jagged arrays
    • All-In-Projecten
      • Overzicht
      • Console Matrix
      • Ascii filmpjes maken met loops
      • Ascii filmpjes maken met methoden
      • Fun with methods: een verhaalgenerator
      • Tekst-gebaseerd Maze game
      • Conway game of life
  • Semester 2 appendix
    • Nice to know stuff
      • Klassen herbruiken
      • Operator overloading
      • Expression bodied members
    • All-In-Projecten
      • Overzicht
      • OO Textbased Game
      • War Simulator
      • Map Maker
      • Magic The Gathering API
  • Pro (geen leerstof en/of in opbouw)
    • Bitwise operators
    • Generics en collections
      • Generics methoden en types
      • Generic classes en constraints
      • Collections
      • Labo-oefeningen
    • Exception handling
      • Werken met exceptions
      • Waar exceptions plaatsen
      • Zelf uitzonderingen maken
    • Events
      • Events
      • Chat server
    • Software engineering
      • SOLID
Powered by GitBook
On this page
  • Oefening 1: prijzen met foreach (h11-prijzen)
  • Leerdoelen
  • Functionele analyse
  • Technische analyse
  • Oefening 2: speelkaarten (h11-speelkaarten)
  • Leerdoelen
  • Functionele analyse
  • Technische analyse
  • Voorbeeldinteractie
  • Oefening 3: organiseren van studenten (h11-organizer)
  • Functionele analyse
  • Technische analyse

Was this helpful?

Export as PDF
  1. Semester 2 : OOP
  2. H11: Arrays en klassen

Oefeningen

Oefening 1: prijzen met foreach (h11-prijzen)

Leerdoelen

  • foreach

  • combinatie controlestructuren

Functionele analyse

We willen enkele gegevens (prijzen) inlezen van de gebruiker en slechts sommige van deze prijzen tonen.

Technische analyse

  • Werk onderstaande opdracht uit in een statische methode AskForPrices.

  • Maak eerst een array die tot 20 prijzen (type double) kan bewaren.

  • Vraag aan de gebruiker om 20 prijzen in te voeren en bewaar elke prijs in de array.

  • Doorloop vervolgens m.b.v. een foreach-lus de volledige array.

    • Toon enkel de elementen op het scherm wiens prijs hoger of gelijk is aan €5.00.

  • Toon op het einde van het programma het gemiddelde van alle prijzen (dus inclusief de lagere prijzen).

  • Toon alles afgerond tot twee cijfers na de komma.

Voorbeeldinteractie

Gelieve 20 prijzen in te geven.
> 1
> 1
> 1
> 21
> 1
> 1
> 1
> 1
> 1
> 17
> 1
> 1
> 1
> 14
> 1
> 1
> 1
> 1
> 1
> 1
21.00
17.00
14.00
Het gemiddelde bedrag is 3.00.

Oefening 2: speelkaarten (h11-speelkaarten)

Leerdoelen

  • foreach genest

  • List

Functionele analyse

We willen een kaartenspel programmeren. Om dat te doen, moeten we zeker een lijst kaarten kunnen aanmaken en ook kaarten te kunnen trekken.

Technische analyse

  • Maak een klasse PlayingCard.

    • Een kaart heeft 2 eigenschappen (properties)

      • een getal van 1 tot en met 13 (boer=11, koningin= 12, heer= 13):

      • een kleur, de zogenaamde "suite". Deze stel je voor via een enumtype Suites en kan als waarden Clubs (klaveren), Hearts (harten), Spades (schoppen) of Diamonds (ruiten) zijn.

  • Schrijf een statische methode GenerateDeck die een boek kaarten teruggeeft.

    • Schrijf om dit te bereiken twee foreach loops die de 52 kaarten van een standaard pak in een List<PlayingCard> plaatsen.

      • Doe dit door één lus in een andere te nesten.

  • Schrijf ook een statische methode ShowShuffledDeck(List<PlayingCard> cards) die telkens een willekeurige kaart uit de deck trekt en deze aan de gebruiker toont. De kaart wordt na het tonen dus uit de lijst verwijderd.

    • Doe dit door in iedere stap een willekeurige, geldige index in de lijst met kaarten te berekenen en die kaart uit de lijst te halen.

Voorbeeldinteractie

9 Hearts
4 Clubs
... (er volgen nog 50 willekeurige combinaties)
Alle kaarten zijn getoond.

Oefening 3: organiseren van studenten (h11-organizer)

Functionele analyse

We gaan nu de Student-klasse uit een hoofdstuk 8 gebruiken om een List<Student> van studenten aan te maken. Daarna zullen we een menu tonen om gegevens over studenten in te voeren (student toevoegen, student aanpassen, gegevens over student tonen, student verwijderen). Op de werkvloer worden deze mogelijkheden "CRUD"-operaties genoemd (create, read, update, delete).

Technische analyse

  • Maak eerst (in de klasse Student) een statische methode ExecuteStudentMenu() zonder return type. Deze zal, zolang de gebruiker niet aangeeft dat hij wil stoppen, een menu tonen waarin we gegevens kunnen bekijken of wijzigen.

  • Het menu toont steeds volgende opties:

    1. gegevens van de studenten tonen

    2. een nieuwe student toevoegen

    3. gegevens van een bepaalde student aanpassen

    4. een student uit het systeem verwijderen

    5. stoppen

  • Je mag voorlopig veronderstellen dat de gebruiker geldige indexposities en gegevens invoert.

mogelijkheid 1: gegevens van de studenten tonen

Deze keuze toont, via de methode ShowOverview() en een foreach-lus, de gegevens van elke student in de lijst. Elk rapport wordt gevolgd door een lege regel. Het is niet erg als er op het einde één regel te veel is.

Voorbeeldinteractie

Nadat er al twee studenten zijn aangemaakt:

Wat wil je doen?
> 1
Joske Vermeulen, 21 jaar
Klas: EA2

Cijferrapport:
**********
Communicatie:             12
Programming Principles:   15
Web Technology:           13
Gemiddelde:               13.3

Mieke Vermeulen, 22 jaar
Klas: EB1

Cijferrapport:
**********
Communicatie:             10
Programming Principles:   16
Web Technology:           16
Gemiddelde:               13.3

Wat wil je doen?

mogelijkheid 2: een nieuwe student toevoegen

Deze keuze voegt een nieuwe student toe.

Voorbeeldinteractie

Bij nul studenten:

Wat wil je doen?
> 1
Wat wil je doen?
> 2
Wat wil je doen?
> 1
Onbekend Onbekend, 18 jaar
Klas: EA1

Cijferrapport:
**********
Communicatie:             10
Programming Principles:   10
Web Technology:           10
Gemiddelde:               10.0

Wat wil je doen?

mogelijkheid 3: een student aanpassen

Deze keuze staat toe de naam, leeftijd, klasgroep of een van de drie cijfers van de student aan te passen.

Voorbeeldinteractie

Vlak na het aanmaken van een eerste student:

Wat wil je doen?
> 3
Wat is de indexpositie van de student die je wil aanpassen?
> 0
Wat wil je aanpassen?
1. Naam
2. Leeftijd
3. Klasgroep
4. Cijfer communicatie
5. Cijfer programmeren
6. Cijfer webtechnologie
> 4
Wat is de nieuwe waarde?
> 13
Wat wil je doen?
> 1
Onbekend Onbekend, 18 jaar
Klas: EA1

Cijferrapport:
**********
Communicatie:             13
Programming Principles:   10
Web Technology:           10
Gemiddelde:               11.0

Wat wil je doen?

mogelijkheid 4: een student verwijderen

Voorbeeldinteractie

Nadat er al twee studenten zijn aangemaakt:

Wat wil je doen?
> 4
Wat is de indexpositie van de te verwijderen student?
> 0
Wat wil je doen?
> 1
Mieke Vermeulen, 22 jaar
Klas: EB1

Cijferrapport:
**********
Communicatie:             10
Programming Principles:   16
Web Technology:           16
Gemiddelde:               13.3

Wat wil je doen?
PreviousListNextExtra oefeningen

Last updated 5 years ago

Was this helpful?