Encapsulatie: Every man is an island upon himself.
Encapsulatie Principe: in elke klasse wordt de rechtstreekse toegang tot attributen wordt zo beperkt mogelijk gehouden. Principe: in elke klasse wordt de rechtstreekse toegang tot attributen wordt zo beperkt mogelijk gehouden.
Encapsulatie Toegang tot de attributen wordt zo veel mogelijk gedaan via get- en set- methoden. Toegang tot de attributen wordt zo veel mogelijk gedaan via get- en set- methoden.
Encapsulatie Toegang tot de datamembers beperken per object : Toegang tot de datamembers beperken per object :
Encapsulatie Toegang tot de datamembers beperken voor objecten : Toegang tot de datamembers beperken voor objecten : Strengst: enkel objecten van de klasse zelf hebben toegang tot de datamembers.
Encapsulatie Toegang tot de datamembers beperken voor objecten : Toegang tot de datamembers beperken voor objecten : Strengst: enkel objecten van de klasse zelf hebben toegang tot de datamembers. Minst streng: objecten van om het even welke klasse hebben toegang tot de datamembers.
Toegangsaanwijzers Hoe: via toegangsaanwijzers (access specifiers) Hoe: via toegangsaanwijzers (access specifiers)
Toegangsaanwijzers Er zijn 4 mogelijke aanwijzers: private, protected, friendly of public. Er zijn 4 mogelijke aanwijzers: private, protected, friendly of public.
Toegangsaanwijzers Hoe: via toegangsaanwijzers (access specifiers) Hoe: via toegangsaanwijzers (access specifiers) Er zijn 4 mogelijke aanwijzers: private, protected, friendly of public. Er zijn 4 mogelijke aanwijzers: private, protected, friendly of public. Access-specifiers werken ook voor methoden. Access-specifiers werken ook voor methoden.
Toegangsaanwijzers 1) private: private int aantal; private int berekenAantal() { } Elementen die private staan, zijn enkel toegankelijk voor objecten van de klasse zelf.
Toegangsaanwijzers 2) friendly of package-toegang: int aantal; int berekenAantal() { } Elementen die friendly staan, zijn toegankelijk voor objecten van klassen die in dezelfde package zitten als de klasse zelf.
Toegangsaanwijzers 3) protected: protected int aantal; protected int berekenAantal() { } Elementen die protected staan, zijn toegankelijk voor klassen in dezelfde package, en voor klassen die deze klasse overerven.
Toegangsaanwijzers 4) public: public int aantal; public int berekenAantal() { } Elementen die public staan, zijn toegankelijk voor alle objecten van alle klassen.
Specifiek: Toegankelijk voor ons betekent: Toegankelijk voor ons betekent:
Specifiek: - Kan de klasse zelf aan het element?
Specifiek: Toegankelijk voor ons betekent: Toegankelijk voor ons betekent: - Kan de klasse zelf aan het element? - Kan een overervende klasse eraan?
Specifiek: Toegankelijk voor ons betekent: Toegankelijk voor ons betekent: - Kan de klasse zelf aan het element? - Kan een overervende klasse eraan? - Kan de applet eraan?
Specifiek: Toegankelijk voor ons betekent: Toegankelijk voor ons betekent: - Kan de klasse zelf aan het element? - Kan een overervende klasse eraan? - Kan de applet eraan? Eraan kunnen = mogen schrijven: (demo) aantal += 1; of knop1.aantal += 1;
Voorbeeld public class Fraggle { private int aantalVingers; boolean isZichtbaar; protected double aantalTenen; public String naam; }
Hoe te gebruiken: Zet alle attributen private, of protected als je weet dat ze gaan overgeërfd worden, en schrijf publieke get- en set-methoden als je attributen toegankelijk wil maken. Zet alle attributen private, of protected als je weet dat ze gaan overgeërfd worden, en schrijf publieke get- en set-methoden als je attributen toegankelijk wil maken.
Hoe te gebruiken: Zet alle attributen private, of protected als je weet dat ze gaan overgeërfd worden, en schrijf publieke get- en set-methoden als je attributen toegankelijk wil maken. Zet alle attributen private, of protected als je weet dat ze gaan overgeërfd worden, en schrijf publieke get- en set-methoden als je attributen toegankelijk wil maken. Voorzie indien nodig een check in de set-methoden, die de opgegeven waarde eerst controleert en dan pas invult. Voorzie indien nodig een check in de set-methoden, die de opgegeven waarde eerst controleert en dan pas invult.
KISS Keep It Simple, Stupid. Keep It Simple, Stupid.
KISS Als een methode niet public hoeft te zijn, zet hem dan private => simpeler voor de programmeur die jouw klasse gaat gebruiken. Als een methode niet public hoeft te zijn, zet hem dan private => simpeler voor de programmeur die jouw klasse gaat gebruiken.
KISS Keep It Simple, Stupid. Keep It Simple, Stupid. Als een methode niet public hoeft te zijn, zet hem dan private => simpeler voor de programmeur die jouw klasse gaat gebruiken. Als een methode niet public hoeft te zijn, zet hem dan private => simpeler voor de programmeur die jouw klasse gaat gebruiken. Praktisch: zet methoden die enkel in de klasse zelf gebruikt worden altijd private. Praktisch: zet methoden die enkel in de klasse zelf gebruikt worden altijd private.
Demo: RoterendWiel oefening omzetten naar encapsulatie. RoterendWiel oefening omzetten naar encapsulatie.
Extra: try-catch Try-catch: mechanisme om runtime errors op te vangen, en er iets praktisch mee te doen (bvb een crash vermijden). Try-catch: mechanisme om runtime errors op te vangen, en er iets praktisch mee te doen (bvb een crash vermijden). Zie demo Zie demo