Lesweek 15: Herhaling Basis C#

Python intro
Programming basics-II
Les 3 / Week 7a
Herhaling Basis C#
CSD-V + Algemeen
Lesweek 15
1 / 24
volgende
Slide 1: Tekstslide
Applicatie- en mediaontwikkelaarMBOStudiejaar 1

In deze les zitten 24 slides, met interactieve quiz en tekstslides.

Onderdelen in deze les

Python intro
Programming basics-II
Les 3 / Week 7a
Herhaling Basis C#
CSD-V + Algemeen
Lesweek 15

Slide 1 - Tekstslide

🥅 Doelen 🥅
De ultieme basis van C# nog eens herhalen: 
  • Types
  • Classes
  • null
  • Methods
  • Met de debugger volgen we het verloop van onze code en inspecteren variabelen en de call stack.

✨ Nieuw: Wat is ‘Call Stack’, waarom die nodig is en hoe werkt die?

Slide 2 - Tekstslide

Deze les (theorie)
📚 Theorie (50 minuten):
  • Types in C#
  • Types omzetten (casten of parsen)
  • Classes als eigen types
  • Null
  • Methods en hun 'signature'
  • Enkele types: Date, DateTime, DateOnly
  • Vragenronde

Slide 3 - Tekstslide

Deze les (praktisch)
⏸    Tussendoor 10 minuten pauze

👩‍💻 Praktisch (60 minuten): 
  • Program.cs en Call Stack
  • Debugger: De Call Stack Visualiseren
  • Debugger: Inspecteren van Code
  • Oefeningen

Slide 4 - Tekstslide

Wat weet je al over...
  • Types in C#
  • Types omzetten (casten of parsen)
  • Classes als eigen types
  • Null
  • Methods en hun 'signature'

Slide 5 - Tekstslide

Theorie bespreken
🧱 In de hierop volgende slides herhalen we van alles over de basis van C#

✨ Ook zie je enkele nieuwe dingen.

🤯 Stel vragen als iets onduidelijk is, of te snel gaat.

Slide 6 - Tekstslide

Simple types
Signed:

Unsigned:

Floating point:

Enum Types:

Bij gebruik van var wordt het type door C# bedacht aan de hand van aanwezige informatie.

Het eerste getal in een vermenigvuldiging bepaalt het uiteindelijke type.
l of L suffix = long
d of D = double
f of F = float
m of M = decimal

Slide 7 - Tekstslide

String:


Concatenation:


Of:
Types in C#

Slide 8 - Tekstslide

Array Types:
Plaats blokhaken achter [ ] het datatype om er een lijstje van te maken. Bij een array moet het aantal plekken (de Length) in de array duidelijk zijn. Door:
a) Meteen vullen:

b ) Length van array aangeven, dan pas vullen:




Lengte opvragen:



Een List type is een soort array met meer mogelijkheden (maakt automatisch plekken erbij)
Types in C#

Slide 9 - Tekstslide

Types in C#
Object Types:
  • Met classes kunnen 'eigen types' worden gemaakt.
  • Classes hebben eigenschappen (properties, altijd public)
  • Classes hebben velden (fields, nooit public)
  • Classes hebben functies/subroutines (methods)
  • Classes hebben gebeurtenissen (events)
  • Types kunnen ook eigenschappen en methodes 'overerven' van elkaar

Slide 10 - Tekstslide

Types in C#
Enkele Object Types die Microsoft heeft gemaakt:
  • System.Console (voor console applicaties)
  • Microsoft.UI.Xaml.Window (voor WinUI schermen)
  • Microsoft.UI.Xaml.Controls.Button (knop element in WinUI)
Klasse staan vaak in een namespace. Dit voorkomt conflicten wanneer twee ontwikkelaars hun klassen dezelfde geven. C# zou niet weten welke die moet kiezen. Met een using bovenin de code geven we aan uit welke namespaces we classes gebruiken:

Slide 11 - Tekstslide

Types in C#
Object Types
  • Alles in C# erft uiteindelijk over van de 'object' klasse.
  • Daarom hebben alle types de Equals en ToString methode uit die klasse:



In een variabele of eigenschap met type 'object' past alles. Zelfs instanties van zelf gemaakte klassen. Om die reden is 'SelectedItem' bij een ComboBox van het type object. Zo staat Microsoft toe dat iedereen er diens objecten in kan stoppen, of het nu een User, Car, Printer, Student, Document, etc... is.

 

Slide 12 - Tekstslide

Types in andere talen
Bij PHP hoef je nergens types aan te geven:



Daarom kom je er pas bij het testen van de website (run-time) achter als je iets geks doet, bij C# kom je er meteen achter dankzij 'compile-time' errors:

In moderne versie van PHP kun je op veel plekken nu types aangeven, zodat je code-editor van te voren al kan waarschuwen.

Slide 13 - Tekstslide

Casten of parsen?
Heb je *iets* en wil je een string?
Heb je een string en wil je een bepaald type getal?
Zo is er ook:
float.Parse
double.Parse
ulong.Parse
etc...
Heb je een object en weet je dat het eigenlijk een ander type is?



Dan casten naar dat type:

Slide 14 - Tekstslide

Veilig parsen
Vult een gebruiker (per ongelijk) geen geldig getal in? Dan faalt <type>.Parse met een Exception:



Met <type>.TryParse kunnen we het omzetten proberen en krijgen we 'true' als het lukt.
Methodes kunnen via 'return' maar 1 ding teruggeven. De TryParse geeft al een 'bool' terug om het succes aan te duiden.
Toch wordt via deze speciale 'out' parameter nog extra data teruggeven (het omgezette getal bij 'true').

Slide 15 - Tekstslide

Classes als eigen type

Slide 16 - Tekstslide

Null
Wanneer een variabele een object kan bevatten, maar er geen in zit. Dan zit er null in. 
Bijvoorbeeld wanneer er niks is geselecteerd in een ComboBox:


Wanneer je een variabele gebruikt met null erin, alsof er wel iets in zit, dan krijg je een Null Reference Exception:
Als null een mogelijkheid is, houdt er dan rekening mee. Bijvoorbeeld:

Slide 17 - Tekstslide

Nullable Types
Sinds C# versie 8 kun je types expliciet nullable maken met een vraagteken achter het datatype:


Als we een breakpoint na deze code zetten en met de Debugger inspecteren wat de waardes zijn zien we:
(Het 'default' keyword vult de variabele met de standaard waarde voor dat datatype)

Slide 18 - Tekstslide

Nullable Types
Wanneer nullable gebruiken?
Wanneer het extra informatie toevoegt, bijvoorbeeld:
Met totalDistance als float zou een collega ontwikkelaar de methode kunnen gebruiken en denken: "oh totalDistance is 0", die user heeft gewoon nog niet gereden, maar die mag het misschien wel. Door float nullable te maken en 'null' in te stellen als de gebruiker niet mag rijden, geven we extra informatie.

Slide 19 - Tekstslide

Methods
De signature van een methode is: de naam en de type parameters.
Signature: CanDrive()
Signature: Drive(float, out float)

Slide 20 - Tekstslide

Method Signature
Dankzij signatures kunnen we ook meerdere methodes met dezelfde naam maken, zolang die maar verschillende parameters ontvangt:
We noemen dit 'method overloading'. Dankzij method overloading kan de Console.WriteLine op 17 verschillende manieren worden aangeroepen:
Als we de WriteLine methode aanroepen met 42 als parameter, dan snapt C# dat die de methode met de signature WriteLine(int) moet uitvoeren.

Slide 21 - Tekstslide

Vragenronde

Slide 22 - Woordweb

10 minuten pauze

Slide 23 - Tekstslide

👩‍💻 Praktisch (60 minuten):
  • Program.cs en de Call Stack
  • Debugger: De Call Stack Visualiseren
  • Debugger: Inspecteren van Code

Download van ItsLearning CSD-V > Uitwerkingen > 'Lesweek 15 - MenuApp Call Stack Demo.zip'


Slide 24 - Tekstslide