Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer Symfony

Bedrijfsomschrijving Betreffende organisatie is een echte softwareclub, gevestigd in de regio van Amersfoort en gespecialiseerd in de ontwikkeling van een grote SaaS-oplossing waar veel gevoelige data in omgaat. Al ruim 20 jaar lang zijn zij bezig met de ontwikkeling van de applicatie, waar de focus ligt op locatie- en platformonafhankelijkheid en gebruikersvriendelijkheid. De software is device en browser onafhankelijk en draait tevens sterk op integraties met andere applicaties zoals Office 365. De front-end wordt ontwikkeld in Angular en de back-end wordt ontwikkeld in PHP. Verder werken zij met Linux servers en workstations. Ter versterking van het development team, dat momenteel

Bekijk vacature »

PHP Developer

Do you like building custom features? At Schulinck we develop custom content management systems and other applications to support municipalities in their work with citizens. Do you want to join one of our Agile teams of Software Developers? Then become our new PhP Developer! About Schulinck Schulinck is a rapidly growing part of Wolters Kluwer within the Public segment with products in the Netherlands, but also starting up business in Germany and Belgium. At our location in Venlo we work with an enthusiastic IT team of 12 colleagues on development of our products to support our customers in the Public

Bekijk vacature »

Front end developer

Philips Digital Cognitive Diagnostics is a new business within the Philips HealthWorks venture organization. The venture is tasked with developing a new software only product called IntelliSpace Cognition. This new product, which is a class II medical device, will help neurologists in assessing the cognitive performance of people with a neuro (degenerative) disease. The initial market for IntelliSpace Cognition is the US. The venture is currently seeking for a Front end Developer. The position is based in Eindhoven, the Netherlands. Responsibilities: • Design, test, develop, deploy, maintain and improve software assets • Deliver high quality code thru hands on development

Bekijk vacature »

Medior iOS Developer

As an iOS Developer, you make sure our mobile app gives our users the best possible way to buy, browse and interact with Coolblue. How do I become an iOS Developer at Coolblue? You feel comfortable writing Swift code and working together with your colleagues to guarantee high quality. Besides that you think about technical decisions like architecture, tools and processes. You also keep an eye on the performance of the app and you analyse with your team how to improve it. Following scrum is second nature to you. In short, you get a lot of energy from building an

Bekijk vacature »

Lead Full Stack Developer / Mobile Apps / C# / Rea

Bedrijfsomschrijving Als Full Stack developer kom je te werken bij een organisatie in regio Ede die gespecialiseerd is in het ontwikkelen en implementeren van software. Zo hebben ze een eigen ontwikkelde applicaties in de markt gezet voor de agrarische sector die internationaal zeer succesvol is en waar grote vraag naar is. Door deze software worden klanten op een slimme manier ondersteund bij voorraden, administratie, het maken van planningen en nog veel meer. De laatste tijd neemt de vraag naar mobile applicaties toe die klanten real time van de correcte informatie voorzien en het mogelijk maken om onder andere data registraties

Bekijk vacature »

Team Lead PHP

As Tech Lead, you make our customers smile by providing great software and building an effective team. How do I become a Team Lead PHP at Coolblue? As a Team Lead PHP you build and lead a team that excels in providing high-quality and cost-efficient software. You support team members in defining their goals and with the approach to achieve them. Would you like to become a Team Lead PHP at Coolblue? Else de Boer explains how to do that. You enjoy doing this Building and leading a team that excels in providing high quality and cost effective software. Support

Bekijk vacature »

Fullstack developer / React / Java / CQRS / Zorg

Bedrijfsomschrijving Als Fullstack Developer (waarbij je aan de slag gaat met o.a. React en Java) kom je te werken bij een organisatie die de rechtmatigheid van financiële gegevens in de zorg controleert. Hierin opereren ze geheel onafhankelijk en zijn ze ondertussen marktleider op dit gebied geworden. Ondanks dat het om een relatief klein bedrijf gaat werken ze voor gerenommeerde opdrachtgevers en zijn ze een belangrijke schakel in de zorgsector geworden. Wat ze uniek maakt zijn de hoge eisen aan de kwaliteit van de code die ze zichzelf stellen waarbij security, wegens grote hoeveelheden (privacy gevoelige) data, zeer hoog in het

Bekijk vacature »

Senior OutSystems Developer / International enviro

Bedrijfsomschrijving For our international client based in Eindhoven area, we are looking for a senior OutSystems Developer. This company is a listed company with offices and plants all over the world. The company offers great experiences and exposure with people from different and unique cultures. They describe themselves as an innovative, professional and sustainable firm. Their goal is to provide for the generations to come. As Outsystems Developer you will be working in an international environment with approximately 15 direct colleagues, consisting of developers, integration specialists and application engineers. This Applications team is a very close and hard working team,

Bekijk vacature »

Ervaren .NET developer gezocht, api development, .

Ben je een ervaren .NET developer en op zoek naar baan waarbij je je ook meer kunt gaan richten op architectuur? Binnen een leuke, sociale en betrokken werkomgeving? Met technieken als .NET Core en Azure? Dan zou deze baan wellicht iets voor jou kunnen zijn. Voor een organisatie in Rotterdam zijn we op zoek naar eens ervaren .NET ontwikkelaar. De organisatie bevindt zich in de financiële branche en is een van de grotere spelers in hun vakgebied. De organisatie bestaat uit circa 600 medewerkers en heeft verschillende vestigingen in Nederland. Het hoofdkantoor zit in Rotterdam en daar is ook de

Bekijk vacature »

Cloud Software Developer

Het aannemen van nieuwe medewerkers loopt door en je kunt gewoon solliciteren. Uiteraard hanteren we hierbij de RIVM richtlijnen en is onze sollicitatieprocedure aangepast. Impact maken in de zorg door zorginstellingen te ondersteunen met slimme ICT is dagelijkse kost bij ChipSoft. Juist nu maar ook na de coronacrisis! In een sector waarin de ontwikkelingen op het vlak van zorg-ICT in stroomversnelling zitten, biedt ChipSoft een ultramodern en ziekenhuisbreed geïntegreerd elektronisch patiëntendossier. Dankzij ons groeiende marktaandeel in België is ChipSoft op zoek naar nieuwe collega’s. Jouw job Als Cloud Software Developer ga je werken aan ons Zorgplatform. Dit is een veilige

Bekijk vacature »

.NET developer / C# / Azure

Bedrijfsomschrijving Je komt als .NET Developer te werken bij een vooraanstaande softwareontwikkelorganisatie in de verzekeringswereld. De primaire ontwikkeltaal is C#, maar ook maken ze gebruik van ASP.NET (Core), MVC en TypeScript. Daarnaast worden de stappen gezet om dit jaar naar Azure te migreren. Het belangrijkste product is een webservice (WCF) dat optimale en veilige communicatie mogelijk maakt tussen aanbieders, zorgverleners en gebruikers. Deze service maakt het mogelijk dat er per maand gemiddeld meer dan 250 miljoen berichten door hun systeem gaan met 800 berichten per piek seconde. Door de automatisering in de zorgsector is deze organisatie in de afgelopen jaren

Bekijk vacature »

.NET Developer / C# / financiële organisatie

Bedrijfsomschrijving Als C# .NET Developer wordt je verantwoordelijk voor het ontwikkelen van applicaties voor belangrijkste product van deze organisatie. Dit product is een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Er wordt gewerkt met de nieuwste moderne ontwikkeltechnieken. Daarnaast ben je verantwoordelijk voor het implementeren van gloednieuwe features! Zo is er bijvoorbeeld onlangs een interface met Robotics gebouwd en zijn er veel stand-alone systemen die de komende periode moeten worden vervangen. Kennis van API's is dus zeker noodzakelijk. Je hebt nauw contact met de business om requirements te achterhalen en deze te vertalen naar

Bekijk vacature »

Intene Senior Java developer (agile) positie

Bedrijfsomschrijving Wij hebben nog erg veel nieuwe projecten liggen die nog van start moeten gaan en daarom zoeken wij een Senior Java developer die samen met zijn/haar collega's prachtige producten en projecten mag gaan oppakken. Wij zijn momenteel met ongeveer 200 FTE en zijn een ICT bedrijf dat zich ECHT weet te onderscheiden van andere ondernemingen. We hebben meerdere vestigingen en zoeken nu een Senior Java Developer die ons gaat versterken binnen de Agile Scrum teams in Leusden. Wij zijn de linking pin voor veel (inter)nationale bedrijven en werken aan grote landschappen om de klant haar behoefte te vervullen. We

Bekijk vacature »

.NET developer / .NET Core / C# / Azure / Angular

Bedrijfsomschrijving Als .NET developer ga je samen met zes collega's werken in aan state-of-the-art oplossingen voor diverse opdrachtgevers en werk jij hard om de kwaliteit te blijven waarborgen van het geleverde werk. Denk hierbij aan het van scratch af aan bouwen van oplossingen, platformen, apps en andere portalen waar grote hoeveelheden data, AI en loT centraal staan. Zo is de organisatie onder andere bezig met het bouwen van een platform wat gebouwen middels tal van sensoren in kaart brengt en alles wat daarbij komt kijken. Zo kan iedereen in een opslag op een plattegrond zien welke ruimte bezet, gereserveerd of

Bekijk vacature »

Gedreven Java programmeur met interesse in securit

Bedrijfsomschrijving Voor een gerenomeerd bedrijf dat zich al jaren bezig houdt met intensieve security binnen de communicatiesector ben ik opzoek naar een Java Developer. Omdat dit bedrijf erg aan het groeien is kunnen ze versterking op elk gebied gebruiken, de mate van werkervaring is dus niet heel erg belangrijk. Ben je dus een starter, medior of senior Java Developer? Dan is dit een mogelijk interessante rol voor jou. Men werkt hier aan in Java ontwikkelde (veiligheid)oplossingen op het gebied van netwerken en beveiliging van voice en video. Grote hoeveelheden data spelen een rol. Bij deze organisatie werken op dit moment

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

27/11/2020 00:39:32
 
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.