Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full stack webdeveloper met ervaring

Wat wij doen Alflex ontwikkelt maatwerk elektronica voor een brede markt. Voor de aansturing hiervan maakt het softwareteam de benodigde (embedded) software, ondersteunende websites, (mobiele) apps en PC-software. Wie wij zoeken Binnen het team ligt jouw focus op de ontwikkeling van websites, zowel front- als backend, met de nodige kennis m.b.t. databases. Een echte full stack ontwikkelaar dus. Jouw belangrijkste taken en verantwoordelijkheden Ontwerpen en ontwikkelen van nieuwe websites en databases Onderhouden van bestaande softwareprojecten voor onze klanten Actief zoeken naar verbeteringen in bestaande processen en systemen Experimenteren met en toepassen van nieuwe technologieën t.b.v. de ontwikkeling van nieuwe producten

Bekijk vacature »

Product Developer

ONZE OPDRACHTGEVER Slimstock is specialist in het leveren van kennis en software op het gebied van Forecasting, Demand planning, Supply chain management en Inventory management. Ons softwarepakket Slim4 helpt klanten om de juiste voorraad op het juiste moment op de juiste plaats te krijgen. We helpen onze klanten bij het verlagen van hun voorraad en tegelijkertijd het verhogen van de servicegraad. FUNCTIEOMSCHRIJVING Doel van de functie Als Product Developer Slim4 werk je aan het (door)-ontwikkelen van onze Forecasting & Inventory Management tool Slim4. Hierbij draag je bij aan het maken/opstellen van (technische) specificaties voor onze software programmeurs. Daarnaast werk je

Bekijk vacature »

Medior Laravel ontwikkelaar

Organisatie Het bedrijf werkt aan de meest gave online succes story’s. Dit wordt gedaan vanuit een uniek kantoor pand waarin iedereen informeel en gezellig met elkaar om gaan. De organisatie pakt het gehele traject aan, van strategie en concept tot en met development. Dit is het typische verhaal van een grote Techgigant. Ooit zijn ze begonnen kleine zolderkamer onderneming waar wat vrienden met elkaar gave dingen maakte. Nu heel wat jaren later staat er een gevestigde onderneming waar alleen maar gepassioneerde developers werken. In teamverband wordt er gewerkt aan mooie projecten voor de grootste namen. Functie Jij komt als PHP-programmeur

Bekijk vacature »

PHP developer

Organisatie De organisatie bestaat al sinds 2003 en sinds 2011 onder een nieuwe naam. In de schaduw van Roermond heeft dit bedrijf zich ontpopt tot waardige speler. Door de kansen in de markt is dit bedrijf aan het groeien en willen zij internationaal steeds meer landen veroveren met de SaaS oplossing en tijdbesparende producten (Continues Delevery) die zij onder andere aanbieden. Volgend jaar zullen zij de 1000 klanten aan tikken en zul jij jouw te gekke oplossingen tot leven wekken voor internationaal publiek. Het bedrijf is een marketplace integrator. Ze koppelen grote en kleien internationale verkopers aan marktplaatsen zoals Beslist.nl,

Bekijk vacature »

Junior PHP Developer / International Startup

Organisatie Wil jij graag onderdeel worden van een enorm succesvolle startup, gevestigd in Amsterdam, met kantoren in Londen en Ibiza. Deze organisatie heeft een innovatieve evenementen agenda ontwikkeld en dient daarmee als marketing platform voor grote evenementen. Wil jij vanuit een jonge startup graag samen werken met ’s werelds grootste evenementen, bedrijven als Uber en Booking.com en onderdeel worden van deze gave startup, lees dan verder! Deze organisatie heeft een platform ontwikkeld waarbij grote evenementen zich aanmelden en op dit platform adverteren richting miljoenen consumenten die de app gebruiken. Enkele jaren geleden is deze organisatie ontstaan en zitten inmiddels met

Bekijk vacature »

Young Professional Front-end Developer

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Vacature Front-end Developer per 1-7-2019 Je bent creatief, thuis in gebruikersinteractie en een gedreven developer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Aan de slag als Young Professional Front-end Developer Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als intern bij Sogeti. Jij houdt van het uitdenken en implementeren van responsive (web)

Bekijk vacature »

Young Professional Front-end Developer

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Vacature Front-end Developer per 1-7-2019 Je bent creatief, thuis in gebruikersinteractie en een gedreven developer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Aan de slag als Young Professional Front-end Developer Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als intern bij Sogeti. Jij houdt van het uitdenken en implementeren van responsive (web)

Bekijk vacature »

Medior .NET Developer die graag werkt met de laats

Je komt, zoals veel van je collega’s de laatste weken, een uur later naar kantoor toe. Logisch ook, wanneer je de verhalen bij het koffiezetapparaat hoort over hoe jouw lead developer gisteren tot diep in de nacht nog bezig was met het ontdekken van West-Elizabeth, samen met Arthur Morgan en Dutch van der Linde.. Organisatie Terwijl je jouw large coffee nuttigt, deel je ook nog jouw verhalen van de avond ervoor. Direct daarna bespreken jullie met het team de doelstellingen voor die dag. Inmiddels is het 10:00 uur in de ochtend en zijn alle 15 ontwikkelaars bezig met hun taken.

Bekijk vacature »

Android Developer met mooie doorgroeimogelijkheden

Functieomschrijving Bij deze organisatie kom je te werken aan verschillende opdrachten, zowel aan opdrachten van de klanten van deze organisatie als aan eigen producten van deze club. Je krijgt veel verantwoordelijkheden binnen jouw functie, daarom zijn ze op zoek naar iemand met een groot verantwoordelijkheidsgevoel en iemand die graag meedenkt. Hiervoor ben je onder andere goed op de hoogte van de laatste ontwikkelingen in jouw vakgebied. Beschik jij daarnaast ook over een flinke dosis creativiteit, bedenk jij graag oplossingen en heb je een goed gevoel voor design? Dan kan het maar zo dat ze op zoek zijn naar jou! Functie-eisen

Bekijk vacature »

Backend PHP Developer

Organisatie Met verschillende vestigingen door heel het land, kantoren in Duitsland en Oostenrijk, en zo’n 100 man personeel is deze organisatie Europees marktleider op het gebied van online veilingen. Met zo’n miljoen biedingen per maand en ruim 200.000 unieke bezoekers per dag is dit dus echt een hightraffic website. Op kantoor hangt een erg gemoedelijke sfeer, iedereen kan bij elkaar binnen lopen en kijken. De CEO loopt er ook gewoon rond en maakt met iedereen een praatje. Wat werknemers aangeven zo leuk te vinden aan het werken bij deze organisatie is de vrijheid in combinatie met verantwoordelijkheid die je gegeven

Bekijk vacature »

Medior .NET developer Unieke locatie in de zorgsec

Midden in een bosrijke omgeving ten Noorden van Utrecht ligt het hoofdkantoor van deze organisatie. Een absoluut unieke locatie voor de veeleisende ontwikkelaar die alleen genoegen neemt met het beste. Deze organisatie wordt gekenmerkt als een informele club developers die graag het beste in zichzelf en hun teamgenoot naar boven halen. Van een dagelijkse verse lunch tot uiteenlopende bedrijfsactiviteiten; deze organisatie heeft het allemaal! Ze zijn gespecialiseerd in software om het voor ziekenhuizen inhoudelijk overzichtelijk te maken hoe efficiënt hun processen verlopen. Hierbij ga je te werk in scrumteams van gemiddeld 5 personen, zodat jij met je team elke dag

Bekijk vacature »

Junior C# software programmeur in Apeldoorn

Organisatie Voor een van onze busuniesspartners ben ik momenteel op zoek naar een starter/junior C# programmeur. Apeldoorn is de standplaats, maar ze zijn ook actief in Duitsland en Oostenrijk. Het doel is om zo snel mogelijk meerdere landen te bereiken. Het bedrijf is in 2014 gestart met een missie om ouderen en minder-valide mensen actiever te maken door middel van audio, video en spelletjes. De 12 werknemers dragen dagelijks bij aan producten die een steentje bijdragen aan het actiever maken van ouderen en minder-validen. Binnen het bedrijf is een jong team werkzaak en is de sfeer open en informeel. Ondanks

Bekijk vacature »

Young Professional Front-end Developer

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Vacature Front-end Developer per 1-7-2019 Je bent creatief, thuis in gebruikersinteractie en een gedreven developer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Aan de slag als Young Professional Front-end Developer Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als intern bij Sogeti. Jij houdt van het uitdenken en implementeren van responsive (web)

Bekijk vacature »

Java Developer (Software Specialist)

Wat doe je als Java Developer (Software Specialist) bij TenneT? Samen met vakbroeders en softwarespecialisten, ben je verantwoordelijk voor de ontwikkelijking van o.a. een nieuw Java platform. Je begeeft je binnen een complexe en uitdagende omgeving waar creativiteit en initiatief voor nieuwe ideeën op prijs wordt gesteld. Je levert een duurzame bijdrage aan de transitie naar DevOps en Agile werken. Je ziet resultaat van je werk en draagt bij aan lange termijn oplossingen. TenneT kent een groot en complex applicatielandschap, variërend van oud en nieuw en uiteenlopend van ontwikkel tot beheerwerkzaamheden. Samen met je collega's zijn jullie de grondleggers van

Bekijk vacature »

Medior PHP Developer Zend & Laravel (NL &

Medior PHP Developer Zend & Laravel (NL & ENG) Wat ga je doen? Als Medior PHP Developer uit de omgeving Amsterdam ondersteun jij alle marketing gerelateerde processen in Nederland. Het platform beheert en organiseert afbeeldingen en beeldmateriaal om de huisstijl van een organisatie te waarborgen. Een bedrijf kan vervolgens gebruik maken van de volgende tools, het delen van de juiste versie van afbeeldingen & beeldmateriaal aan interne en externe partijen, het publiceren en het maken van marketingmaterialen (flyers, brochures, banners en business kaarten), een order en voorraadbeheer van marketingmaterialen en een workflow management tool. Jij zal naast het ontwikkelen 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

25/04/2019 04:53:31
Honeypot
 
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.