De vier pijlers van Objectgeoriënteerd Programmeren
On september 27, 2021 by adminIn deze blog zal ik de vier pijlers van OOP uitleggen en kleine voorbeelden geven. Kleine voorbeelden die jij en ik gemakkelijk kunnen begrijpen.
Abstractie is in wezen “need to know”. We verbergen de belangrijkste implementatiedetails, terwijl we het voor de hand liggende gebruik op de voorgrond houden. Dus onthoud dit “verberg de details, toon de relevantie”.
Afwijkingsvoorbeeld…
Dit is een aanmeldingsformulier van een app waar ik aan werk (de relevantie).
Dit is de aanmeldingsimplementatielogica van het formulier. (
Polymorfisme
Polymorfisme is wanneer je één blok code gebruikt, maar je verandert de versie van de code die wordt gebruikt op basis van de invoer die eraan wordt gegeven. Dus om het wat duidelijker te maken, verschillende klassen kunnen worden gebruikt met dezelfde interface, maar kan zijn eigen implementatie van die interface.
Polymorfisme voorbeeld…
class Animal { speak = () => console.log('makes sound')}class Dog extends Animal { speak = () => console.log('woof')}class Cat extends Animal { speak = () => console.log('meowww')}class Cow extends Animal { speak = () => console.log('moooooo')}let dog1 = new Dog()let cat1 = new Cat()let cow1 = new Cow()dog1.speak() // => woofcat1.speak() // => meowwwcow1.speak() // => moooooo
De Cat, Dog, en Cow klassen zijn erven van de Animal klasse. Hierdoor kunnen de Cat, Dog en Cow de interface van de Animal klasse gebruiken. Zij hebben echter alleen de spreek methode tot hun beschikking. Als we de spreek methode weglaten uit de Cat, Dog, en Cow klasses, en dan instanties van een Cat, Dog, en Cow klasses maken, dan zouden we nog steeds in staat zijn om de spreek methode op die instanties aan te roepen. Het enige probleem is dat het de Dieren ‘maakt geluid’ zou afdrukken in plaats van de juiste geluiden die een Kat, Hond, en Koe maken (‘miauw’, ‘woef’, ‘moo’).
Dit is waar method overriding om de hoek komt kijken. Als we de speak method herdefiniëren in de Cat, Dog, en Cow classes, kunnen we deze aanpassen om de geluiden af te drukken die katten en honden maken.
Encapsulation
Encapsulation bindt de data en de functies die de data manipuleren, en dat houdt beide veilig voor inmenging en misbruik van buitenaf. Een goed voorbeeld van inkapseling is een klasse. We kunnen eigenlijk teruggrijpen naar het voorbeeld hierboven, waarin we het hebben over honden, katten en koeien, met enkele kleine wijzigingen.
class Dog { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cat { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cow { constructor(name) { this.name = name } printName = () => console.log(this.name)}let dog1 = new Dog()dog1.name = "Max"dog1.printName() // => Maxlet cat1 = new Cat()cat1.name = "Mark"cat1.printName() // => Marklet cow1 = new Cow()cow1.name = "Tom"cow1.printName() // => Tom
Merk op dat wanneer we instanties voor elk dier maken, we ook een naam aan elk dier toekennen. Wat je hier uit moet opmaken is dat de ‘.name’ achter elke gecreëerde instantie (bijv. dog1.name) allemaal verschillend zijn. Deze ‘.name’ zijn ingekapseld in hun bijbehorende klassen. Het toekennen van een naam aan een instantie verandert de naamwaarde van andere instanties niet.
Overerving
Overerving is waarschijnlijk het gemakkelijkst te begrijpen. Inheritance is het concept van een klasse die de interface van een andere klasse gebruikt (erft). Het wordt dan een kind of subklasse terwijl de klasse waarvan het erft de ouder of superklasse is. In ons tweede voorbeeld hierboven hebben we al geërfd. De Kat, Hond en Koe erven van de Dieren klasse om toegang te hebben tot de spreek methode. Zorg er gewoon voor dat je het extends sleutelwoord toevoegt.
Geef een antwoord