Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# ontwikkelaar

Organisatie Vanuit een modern pand in het centrum van Zoetermeer wordt hard gewerkt aan baanbrekende software pakketten voor de financiële sector. 25 jaar geleden begon het avontuur. Vanuit een klein pandje begonnen de 2 oprichters, voormalige schoolvrienden, aan een hun eerste klus: het maken van administratiesoftware voor verschillende bankfilialen. 25 jaar later zijn beide schoolvrienden nog steeds met passie werkzaam maar inmiddels in een groter kantoor. Dit doen ze inmiddels ook niet meer met zijn tweeën. Daar hebben ze nu een team van 50FTE voor die op gedreven wijze de financiële sector compleet omgooien. Processen zoals verschillende risico analyses, rendement

Bekijk vacature »

Medior PHP Developer Intranet / Overheid

Organisatie Deze organisatie is in 2004 ontstaan en in 2006 is hun product voor het eerst live gegaan. Hun product is iets wat je kan zien als een intranet met nog héél veel extra. Zo kun je documenten en mededelingen real-time aanpassen of je complete personeelsbestand en HR-activiteiten bijhouden. Als bonus werkt dit allemaal in de cloud. Doordat hun software zo geavanceerd is, is het ook geen verassing dat ze in elk land in de wereld zitten, marktleider zijn wereldwijd en alle ministeries in Nederland deze software gebruiken. Dat zijn een hoop eindgebruikers die er elke dag vanuit gaan dat

Bekijk vacature »

Java Developer / Cloud / Java EE Frameworks / inho

Functieomschrijving Would you like to work on different projects and develop online platforms for various clients in a software house? Are you getting excited about working for different well-known brands at inhouse projects? Apply now! Develop diverse online platforms; Work closely with the Front-End developers and other team members; Communicating with clients; Watch over the architecture of the applications. Functie-eisen You have a University BSc. or MSc. degree, preferably in the area of Informatics; You have at least 3 years experience with Java; You have been working in an Agile/Scrum/DevOps environment; You have experience with Spring, Cloud, Web Services and

Bekijk vacature »

Angular .NET Developer

Ben jij op zoek naar een nieuwe uitdaging binnen de autoCAD en GIS-data technologie en sta jij stil in je huidige ontwikkeling? Ben je toe aan een nieuwe stap in je carrière en wil jij je ontwikkelen tot een echte Angular specialist binnen deze gave branche? Dan ben ik op zoek naar jou! Deze organisatie bevindt zich centraal gelegen onder Utrecht en is van alle richtingen goed te bereiken met zowel de auto als openbaar vervoer. Bij binnenkomst wordt je verwelkomt door een grote, open ruimte. Het is vroeg, dus je loopt naar de koffie automaat waar je collega’s bijpraten

Bekijk vacature »

Senior PHP Developer Zend

Voor een van mijn businesspartners in de regio Veenendaal ben ik op zoek naar een senior PHP developer. Organisatie Dit bedrijf is 30 jaar geleden ontstaan als speciaal systeem voor campings om kerstkaarten geautomatiseerd naar hun gasten te sturen. Op dit moment zijn ze uitgegroeid tot een organisatie met 50 medewerkers waarvan 10 op de IT afdeling. Hun software verzendt inmiddels ook geen kerstkaarten meer. Tegenwoordig zijn de grotere recreatie en vakantieparken als bijvoorbeeld Duinrell gebruikers van hun software. Zij focussen zich volledig op de recreatiebranch en de software zorgt er voor dat wanneer er een reservering wordt gemaakt dat

Bekijk vacature »

Senior .NET ontwikkelaar voor de zorg-industrie

Organisatie Als C# .NET ontwikkelaar ga je werken bij een organisatie die zowel in binnen als buitenland opereert. Zij zijn marktleider in de gezondheidsindustrie met de producten die zij zelf hebben ontwikkeld. Het doel van deze producten is om het voor eindgebruikers zo veilig en efficiënt mogelijk te werken. De organisatie beschikt over twee vestigingen, om zowel binnen als buitenland. Al meer dan 15 jaar is de organisatie de belangrijkste speler binnen deze markt en is deze innovatief, financieel gezond en groeiende organisatie nu gegroeid naar 35+ medewerkers. Je zou verwachten dat een organisatie die zich begeeft in de gezondheidsindustrie

Bekijk vacature »

Enthousiaste Junior & medior web based C# Deve

Bedrijfsinfo Momenteel ben ik op zoek naar een creatieve software ontwikkelaar die ervaring heeft met het ontwikkelen van web based applicaties. Je gaat werken in een organisatie die al 20 jaar een bepalende speler is op de markt van web oplossingen. De organisatie telt momenteel 10 werknemers, waarvan er 5 op de development afdeling werkzaam zijn. Je komt te werken in een organisatie met een zeer open cultuur waarin het gehele team in 1 grote ruimte zit. Dit zorgt voor een leuke informele werksfeer onder het jonge team waarin de gemiddelde leeftijd rond de 30 ligt. Functie-omschrijving Jouw taak als

Bekijk vacature »

Frontend ontwikkelaar

In jouw studententijd heb jij altijd dat beetje extra gegeven. Was het geen honours class, dan waren het wel relevante commissies of was jij gewoon heel goed in wat je deed. Tijdens je studie heb jij laten zien dat jouw passie bij ICT ligt en dat je energie krijgt om hier met leeftijdgenoten over te sparren. Of dit nu binnen-, of buiten de studie was in de vorm van eigen projecten. Dit bedrijf is gelegen in regio Amsterdam en is gespecialiseerd in dashboarding software. Bij binnenkomst wordt je verwelkomt door een warme, industriële sfeer. Het bedrijf telt 25 developers die

Bekijk vacature »

SharePoint / C#.Net / Ontwikkelaar / Developer / P

Functieomschrijving Heb jij ervaring met SharePoint, JavaScript, C# of ASP.NET en wil je werken aan een SharePoint platform waar meer dan 10.000 mensen dagelijks mee werken? Dan is dit wellicht interessant voor jou! SharePoint Office 365 JavaScript TypeScript PowerShell #C ASP.NET Programmeren in SharePoint 2013 / SharePoint 2016 (en binnenkort SharePoint 2019); Bouwen van nieuwe software; Ombouwen van bestaande software; Oplossen van derdelijns incidenten; Maken van een technisch ontwerp; Software refinement; Testen van nieuwe en bestaande software; Werken aan diverse projecten zoals een mobiele applicatie, webapplicaties, CMS-systeem en eCommerce. Functie-eisen Je bent een ervaren Microsoft developer; Je hebt ervaring met

Bekijk vacature »

PHP Developer

Organisatie Deze jonge organisatie timmert nu al een tijdje aan de weg en is in een korte tijd gegroeid tot 10 medewerkers. Ze zijn nu hard op zoek naar een uitbreiding van het development team waarin nu zo’n 5 ontwikkelaars actief zijn. Dus wat doen ze nou precies? Dit bedrijf heeft een specialisme ontwikkeld in een bepaalde niché binnen de commerciële sector. Hierin willen zij door middel van een high tech oplossing zorgen voor automatisering op grote schaal. Ze zijn gevestigd in de omgeving van Amsterdam in een gezellig pand. Binnen het kleine team heerst een gezellige, informele sfeer en

Bekijk vacature »

Medior PHP developer

Organisatie Stel je voor; je schakelt binnen een van de meest toonaangevende organisaties binnen de zorg- en verzekeringsbranche. De informatie die feilloos door de zeer complexe applicaties stroomt die jij en je team elke dag weer perfectioneren is uiterst betrouwbaar. Jij bent dan ook een absolute PHP-held die zich kan vinden in het gezegde; ‘’onmogelijk bestaat niet, het kost alleen wat meer tijd’’. Je bekleed de rol van PHP developer binnen een team van absolute eindbazen op het gebied van software development. De producten en opdrachten zijn zeer divers, maar dat jij telkens weer diep in de code duikt verandert

Bekijk vacature »

Medior Magento developer

Organisatie Als iets goed is, zichzelf heeft bewezen en een voordeel biedt voor de organisatie of jezelf dan gaan ze het hier gebruiken en implementeren. Er heerst hier een platte organisatiestructuur, houden van snel schakelen en zijn fan van innovatie! In 2005 begonnen ze met de ambitie om hét bureau van Nederland te zijn met de grootste digitale impact. Honderden klanten lieten hun groeien. Samen met ruim 50 collega’s en professionele partners behoren zij tot een van de gaafste Full Service Digital Agencies. Hier werken ze aan open source principes. Ze bouwen voort op universele oplossingen die tijdloos en flexibel

Bekijk vacature »

Java Developer / Maven / Spring / Big Data

Functieomschrijving Ben jij een ervaren Java Developer en lijkt het jou gaaf om te werken aan innovatieve interne projecten voor een groot aantal aansprekende klanten? Spreekt het jou daarnaast aan om te gaan werken bij de nummer 1 organisatie in Nederland op het gebied van Big Data oplossingen en dat in regio Den Haag? Lees dan snel verder! Werken aan uiteenlopende interne projecten voor grote (internationale) organisaties; Ontwikkelen van diverse (web)applicaties en platformen met technieken als Java, Azure en ASP.NET; Complexe vraagstukken tackelen met jouw expertise en ervaring; Waar nodig help jij je collega's om samen tot de juiste oplossing

Bekijk vacature »

Junior+/Medior developer gezocht in Breda

Bedrijfsinfo Het dynamische bedrijf in de regio Leiden bestaat nu ruim 21 jaar heeft 45 mensen in dienst, waarvan 10 developers. Samen met het team ben je constant bezig met het ontwikkelen van maatwebsites en bijbehorende applicaties. Het kantoor dat gelegen is midden in een villa wijk, is verdeeld in verschillende ruimtes. Voor elke ruimte een andere ‘’tak van sport’’. De ontwikkelaars zitten bij elkaar net zoals de consultants. Doordat de directeur zelf ook developer is, ga je echt werken in een platte organisatie. Functieomschrijving Binnen de organisatie ga je aan de slag als PHP developer die zich gaat richten

Bekijk vacature »

Junior PHP developer / Maatwerkplatform

Organisatie De business partner waarmee wij in contact staan is gevestigd in Lelystand en marktleider in hun niche. Naast dat het kantoor van alle gemakken is voorzien zit het op een locatie die ook nog is gemakkelijk te bereiken is. Op dit moment bestaan zij ruim 15 jaar en hebben zo’n 50 man in dienst. Hun missie is het leven van de klanten makkelijker te maken. Hun manier van werken omschrijven zij als eenvoudig, eerlijk en eigenwijs. Zij bieden betrouwbare producten en diensten van hoge kwaliteit zodat jij er zelf iets moois van kunt maken zonder afhankelijk te zijn van

Bekijk vacature »
Lord Gaga

Lord Gaga

15/02/2016 18:03:26
Quote Anchor link
Hallo,

Omdat ik deze situatie nogal vaak tegenkom heb ik besloten toch maar te vragen hoe dit nou precies zit:
Wanneer gebruik je inheritance en wanneer geef je informatie mee via bijv. de constructor?

Ik snap dat deze vraag nogal onduidelijk is dus probeer ik het wat te verduidelijken via onderstaande pseudo code.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Gem
{
    private String color = "red";
    private Event onPickUp;
    
    public Gem(String color, Event onPickUp)
    {
        this.color = color;
        this.onPickUp = onPickUp;
    }
}

Gem gem_1 = new Gem("red", Event.PlusOnePoint);
Gem gem_2 = new Gem("blue", Event.PlusTenPoints);


In bovenstaande voorbeeld is er dus 1 class en vanuit deze class kun je meerdere edelstenen aanmaken, elke edelsteen heeft een andere kleur en een andere callback.

Maar wat ook mogelijk is, is het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class abstract Gem
{
    public Gem()
    {
    }
    
    public void onPickUp()
    {
    }
}

class RedGem extends Gem
{
    public void onPickUp()
    {
        points++;
    }
}

class BlueGem extends Gem
{
    public void onPickUp()
    {
        points += 10;
    }
}

Gem gem_1 = new RedGem();
Gem gem_2 = new BlueGem();


Het voorbeeld is misschien een beetje simpel, maar ik hoop dat jullie mijn bedoeling snappen.

Alvast bedankt voor de hulp!
Gewijzigd op 15/02/2016 18:04:08 door Lord Gaga
 
PHP hulp

PHP hulp

22/08/2019 18:41:07
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/02/2016 20:13:31
Quote Anchor link
Overerving of inheritance gebruik je minder dan de meeste mensen in het begin verwachten. Je gebruikt het vaak als je een bestaande class niet meer wilt veranderen of voor objecten die in veel "smaken" vervaardigd kunnen worden met meerdere custom methods. Een aardig voorbeeld is de BaseController waar al heel wat functionaliteit in zit om views te genereren en modals aan te roepen. Welke en wannéér deze views of modals aangeroepen moeten worden is echter in iedere controller weer anders. Een ideale situatie om een basecontroller te extenden.

Informatie meegeven aan een functie (Een constructor is ook een functie) gebruik je veel, het liefst zo veel mogelijk. Stel dat je een User object hebt en data uit dit object voor de output in de view wilt gebruiken. Je geeft dan het User object gewoon mee aan de view. Als je ook nog even een email wilt genereren waarin wat data moet komen te staan dat uit het User object komt dan geef je dus het User object ook gewoon even door aan je Mailer class.

Wel moet je even letten waarvoor een constructor bedoeld is. Initialisatie van je (te instantiëren) object. De properties voorzien van een waarde dus.

Wat hier op aansluit is Dependency Injection. Zeker de moeite waard om te lezen.
 
Wouter J

Wouter J

15/02/2016 20:20:18
Quote Anchor link
Vaak is inheritance niet het antwoord. In de OO introducties wordt vaak veel te gemakkelijk over inheritance gesproken, waar deze dingen eigenlijk via een andere manier opgelost moesten worden. (bijv. het veelgebruikte "Admin extends User" verhaaltje).

In het algemeen mag je aannemen dat je bij data objecten (Gem in jouw geval) geen inheritance moet gebruiken. Data objecten bevatten namelijk alleen data, geen logic. Inheritance kun je het beste alleen toepassen in gevallen dat gedrag van een object veranderd. Omdat data objecten geen gedrag hebben kunnen ze deze ook niet anders hebben dat hun parent/child.

Als we naar je tweede voorbeeld gaan zien we dat er een duidelijk probleem ontstaat: Onze data objecten bevatten logica. Dit maakt het geheel veel moeilijker. Stel nu bijv. dat we moeilijkere criteria krijgen voor het opwaarderen van punten (bijv. mag alleen +10 als de slijper zijn werk goed heeft gedaan, mag alleen als de huidige valuta boven een bepaalde waarde zit, etc.). Je kan je indenken dat ons mooie data object ineens een bende van logica gaat worden.

Je kunt deze logica dus het beste opsplitsen naar een andere class, bijv. GemPointsCalculator:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
interface GemPointsCalculator
{
    public int pointsForGem(Gem gem);
}

class SimpleGemPointsCalculator implements GemPointsCalculator
{
    public int pointsForGem(Gem gem)
    {
        switch (gem.color()) {
            case 'red':
                return gem.points() + 1;

                break;
            case 'blue':
                return gem.points() + 10;

                break;
        }
    }
}


Nu gaat deze class op gegeven moment ook veel logica bevatten. In dat geval moet je het waarschijnlijk nog meer opsplitsen, waardoor elke Gem zijn eigen GemPointsCalculator krijgt en een algemene calculator die deze dan kan aanroepen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
class RedGemPointsCalculator implements ColeredGemPointsCalculator
{
    public string[] supportingColors()
    {
        return ['red'];
    }

    public int pointsForGem(Gem gem)
    {
        return gem.points() + 1;
    }
}
// ...
 
Lord Gaga

Lord Gaga

15/02/2016 20:37:49
Quote Anchor link
Bedankt voor de reacties!

Ik denk dat ik het een beetje beter begrijp dan voorheen. :P

In dit geval was de Gem class een simpel voorbeeld.
Waar ik in de praktijk mee bezig ben zijn enkele JavaScript spelletjes, en deze spelletjes bevatten natuurlijk elk onderdelen die in elk spelletje aanwezig zijn:

- De mainloop (voor game logic en renderen van entities)
- Scenes (voor menu's, verschillende levels, etc.)
- Entities (de objecten in de spelletjes)

Op dit moment twijfel ik dus over de 2 aanpakken in mijn openingspost, maak ik gebruik van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
var game = new Game(
{
    onUpdate: function()
    {
    },
    onRender: function()
    {
    }
});


of toch van inheritance (pseudocode):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
class abstract Game
{
    public void update()
    {
    }
    
    public void render()
    {
    }
}


En hoe doe ik dit met de andere objecten? (Scene, Entity, AssetLoader, etc.)

Wanneer ik naar verschillende JavaScript frameworks kijk, zie ik dat vooral de eerste manier vaak wordt toegepast, maar toch twijfel ik. (Ik weet dat ik beter gebruik kan maken van een bestaand framework maar ik wil het toch onder de knie krijgen dit zelf te kunnen.)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.