Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior .NET Developer

Ken je het gevoel dat je zo hard je best hebt gedaan om tot senior niveau te komen binnen een (consultancy) bedrijf, maar dat er daarna direct van je wordt verwacht dat je een stap maakt richting Lead of Architect? Terwijl jij het liefst met je vingers aan de knoppen wilt blijven en lekker senior wilt zijn? Ben jij verder communicatief en sociaal sterk, technisch onderlegd en gepassioneerd over programmeren? Leg dan al je werk neer en lees verder! Hier heb ik de buitenkans waar jij op gewacht hebt! Organisatie Dit bedrijf specialiseert zich namelijk in de detachering van Senior

Bekijk vacature »

Medior PHP Developer Logistiek ERP-platform

Medior PHP Developer Logistiek ERP-platform Wat ga je doen als Medior PHP Developer? Als Medior PHP Developer ga jij werken aan een innovatieve applicatie die transportkosten te minimaliseren door laadruimte efficiënt te benutten. Het ERP-platform waar jij aan gaat werken staat in contact met grote transportbedrijven en inventariseert real-time beschikbare (vaak ongebruikte) laadruimte. Bedrijven kunnen vervolgens op het platform beschikbare laadruimte boeken tegen lagere tarieven met als gevolg dat beschikbare laadruimte efficiënt wordt benut. Op het moment heeft het ERP-Systeem al de volgende features; real-time inventarisatie, laadruimte reservering, track& trace, facturatie en legale contracten. Jij zal beginnen met een migratieproject

Bekijk vacature »

Medior full-stack .NET developer automotive

Organisatie De organisatie is ooit begonnen in 1996 met één doel, namelijk; de beste IT oplossing voor de automotive branche! “waar anderen oplossingen zoeken om kosten te drukken, zijn wij heel erg actief in het commercieel opkrikken van de omzet” aldus, de directeur. Het bedrijf bestaat uit 3 takken, die samen de bermuda driehoek vormen voor deze branche. Er is gewoonweg geen ontkomen aan de tools en software die in de afgelopen 20 jaar waterdicht is ontwikkeld! Samen leveren ze een totaalpakket waarmee de klant/eindgebruiker niet alleen een meedenkend product binnenhaalt, maar ook een werknemer aanneemt die de team uitdaagt!

Bekijk vacature »

SQL Teradata Developer / Requirements Engineer

Senior SQL Teradata Development / Requirements Engineer Standplaats Utrecht en 's Hertogenbosch Startdatum: januari '19 Duur: minimaal 8 maanden Omgeving Information & Change Finance & Risk Op de afdeling wordt er gewerkt met zelfstandige scrum-teams. Het werk is afwisselend, zo werk je de ene keer aan data voor de particuliere hypothekenmarkt en de andere keer aan data voor de zakelijke markt. Je hebt contacten door de gehele organisatie. Je beschikt over een brede interesse in al onze bankproducten en -diensten. Ons gemeenschappelijk doel is bij te dragen aan het verder ontwikkelen en het vorm geven van een functioneel DWH op

Bekijk vacature »

Fullstack developer vacature, Angular en/of React

De organisatie: Onze klant, een innovatieve organisatie op het gebied van (business) apps in Nederland telt momenteel zo’n 80 werknemers. Werkend vanuit Scrum zijn er uitdagende projecten gaande, hierbij moet je denken aan complexe en grote omgevingen. Ze werken voor klanten als Transavia, Wehkamp en de Nationale Postcodeloterij. Er heerst een informele sfeer, de platte structuur staat dan ook hoog in het vaandel. Met een ambitieus management maken zij al enige tijd een gedegen groei door, hun team van medewerkers kun je het beste omschrijven als een team van ‘’connected people’’. De functie: Innovatie staat binnen deze partij voorop, dit

Bekijk vacature »

Gezocht! Medior Software ontwikkelaar/.NET voor ee

Organisatie & Afdeling Voor een van mijn partners nabij Doetinchem ben ik op zoek naar een .NET Programmeur die aan de slag wil gaan binnen een leuk bedrijf waar je écht invloed kan hebben. Dit bedrijf is gespecialiseerd in het ontwerpen, bouwen en implementeren van besturings- en automatiseringssystemen in hun branche. Op dit moment zijn er ongeveer 30 medewerkers werkzaam binnen de vestiging in Nederland. Het team waarin jij straks komt te werken bestaat uit drie programmeurs. Er heerst een informele werksfeer, waar de communicatielijnen kort zijn en waar men openstaat voor eigen initiatieven. Functie Als .NET Programmeur houdt jij

Bekijk vacature »

C# developer gezocht die wilt werken met de nieuws

Ben jij op zoek naar een nieuwe uitdaging op een plek waar je alle mogelijkheden krijgt om jezelf zo veel mogelijk te ontwikkelen? Dan is dit de baan die jij zoekt! Deze internationale organisatie in regio Vlaardingen, die gespecialiseerd is in software voor de tuinbouw, is onderdeel van een grote onderneming met meer dan 450 man in dienst. Ze zijn wereldwijd vertegenwoordigd en zijn één van de grootste spelers in de markt. Ze maken software voor onder andere de klimaatbeheersing, productiviteit en waterbeheersing in de tuinbouwbranche. De organisatie maakt een gezonde groei door, waardoor ze op zoek zijn naar nieuwe

Bekijk vacature »

Junior PHP developer bij succesvolle start-up in E

Jouw PHP skills inzetten binnen een succesvolle start-up? Functieomschrijving De dienstverlening van Amber bestaat uit het faciliteren van flexibele, duurzame mobiliteit voor hun klanten. Dit doen zij zo goed, dat ze continu blijven groeien met al plannen voor internationale groei. Dat betekent dat ze voorlopig nog hard doorgroeien. Kijkend naar hun software zijn ze opzoek naar extra capaciteit voor de ontwikkeling van o.a. de volgende zaken: Optimalisatie van website Bouwen van systeem dat bekeuringenafhandeling automatiseert Nieuwe features voor optimaliseren nieuwe dienstverlening: e-bikes en bijhorend reserveringssysteem, en voor de registratie van schade en onderhoud van de auto's. Ze hebben predictive software

Bekijk vacature »

Senior PHP developer Digital agency

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 »

Front-end developer vacature, ontwikkelen in teamv

Organisatie & Afdeling Voor een goede klant van StarApple ben ik per direct op zoek naar een medior of senior Front-end developer, belangrijk is dat hij of zij het leuk lijkt om (in teamverband) te werken aan gebruiksvriendelijke User Interaces. Deze organisatie telt op dit moment zo’n 70 man, vanuit een modern pand met meerdere (open) ruimtes werken ze met een gezamenlijk doel. Hun missie is om iedereen in staat te stellen op ieder moment kennis & data bij de hand te pakken indien nodig. Dit doen zij door het aanbieden van diverse oplossingen, met ruim 4 miljoen gebruikers hebben

Bekijk vacature »

Node.JS Developer / audiovisuele distributie / Utr

Functieomschrijving Wil jij als Node.JS developer aan de slag bij een internationale speler? Werk jij graag in een omgeving waar de kwaliteitseisen voor de interne infrastructuur zeer hoog zijn? En wil jij je graag breed ontwikkelen op het gebied van ICT? Reageer dan op deze vacature in de regio Utrecht! Ontwikkelen van nieuwe oplossingen met Javascript, Node.JS en MongoDB; Hands-on meewerken aan het dagelijks beheer en ontwikkelingen aan deze geavanceerde software; Het proactief meedenken over automatisering van de software; Uitvoeren van unit en regressie testen; Verantwoordelijk voor architectuur, technisch ontwerp en implementatie; Het werken in projectteams. Functie-eisen Je beschikt over

Bekijk vacature »

Medior .Net Developer Interactieve media Inhouse

Medior .Net Developer Interactieve media Inhouse Wat ga je doen als Medior .Net developer? Als Medior .Net developer ga je op inhouse basis van start bij de IT organisatie in Amsterdam die een prominente positie heeft op het gebied van interactieve media. Hier worden complexe websites en mobiele applicaties gebouwd met een diepe backend laag. Je gaat als Medior developer bijdragen aan de ontwikkeling vna software waardoor servers met diverse devices kunnen communiceren. Daarnaast werk je aan koppelingen van systemen en het genereren van data-analyse. Dit wordt gedaan voor klanten zoals Overheidsinstellingen, Douwe Egberts en verschillende NGOs. Je wordt onderdeel

Bekijk vacature »

GIS developer / marktleider binnen GEO-ICT project

Functieomschrijving Ben jij een gedreven developer met een voorkeur voor specialisaties binnen GEO-ICT projecten? Heb jij ervaring met ontwikkelingen in ArcGIS Server? Lees dan nu verder! Ontwikkelingen aan bestaande en nieuwe software met behulp van .NET en ESRI ArcGIS; Bedenken van (mobiele) oplossingen; Samenwerken in zelfsturende SCRUM teams; Werken aan innovatie en kennisdeling. Functie-eisen Je hebt een relevante hbo- of academische opleiding afgerond; Je hebt minimaal drie jaar relevante werkervaring binnen GEO-ICT projecten en technieken; Je hebt uitstekende kennis van ArcGIS Server (en .NET); Het is een pre als je affiniteit hebt met geografische software; Je hebt ervaring met Agile

Bekijk vacature »

Business Intelligence developer

Jij ben niet bang om hard te werken. Uitdagingen zijn welkom. En problemen? Die zijn er om opgelost te worden of, nog beter, om voorkomen te worden! Voor jij aan de slag gaat met het ontwerpen van BI- en DWH-oplossingen, leg je eerst je oor te luister bij de klant. Zo weet jij wat de klant wil, en hoe jouw ontwerp eruit moet komen te zien. Simpel! Althans… met jouw Developer-kwaliteiten wel! Over deze BI vacature Als Business Intelligence Developer ga je zowel op locatie bij de klant aan de slag, als op een van de Sogeti-locaties. Je analyseert de

Bekijk vacature »

Uitdagende e-Commerce functie voor startend Lead P

Voor deze snelgroeiende onderneming in de regio Amsterdam zijn wij hard op zoek naar een eind Medior / Senior PHP Developer met ruime ervaring op e-Commerce gebied. Het bedrijf is nu zo’n 3 jaar actief en heeft in en buiten Nederland al behoorlijk naam weten te maken. Momenteel bestaat het team uit een goede mix van ca. 20 ambitieuze heren en dames. De sfeer is informeel en de drive is groot! Ben jij toe aan de volgende stap ik jouw carrière? Functie-omschrijving Het development-team bestaat momenteel uit 2 enthousiaste Medior PHP developers. Deze heren werken vol passie aan het product,

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

14/12/2018 12:23:22
 
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.