Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior PHP applicatie ontwikkelaar gezocht

Een groeiend bedrijf die haar klanten helpt om meer naamsbekendheid te krijgen. Het bedrijf bestaat ruim 20 jaar en werken voor marketeers. Het is een middel grote organisatie met 12 werknemers. Doordat ze drie competente bij elkaar voegen hebben ze een uniek concept. Omdat ze een snel groeiend bedrijf zijn zoeken ze een nieuwe collega. Het is een informele club waar naast het harde werken ook tijd overblijft voor plezier. Een inspirerende omgeving waar je veel verantwoordelijkheid krijt en in ruil daarvoor krijg je veel vrijheid terug. Het is een dynamische inspirerende omgeving waar veel te leren is en waar

Bekijk vacature »

Verantwoordelijke PHP Functie

De organisatie waarin je komt te werken is gespecialiseerd in het verrichten van marktonderzoek voor verscheidene markten. Zowel grote bedrijven als het MKB-segment maken vriendelijk gebruik van hun diensten. Zo werken zij bijvoorbeeld nauw samen met RTL en de NS. Voor de grote klanten worden de onderzoeken in samenwerking met de partij verricht. Voor de kleinere bedrijven maken zij software die ze dan onder licentie verkopen, die de bedrijven dan bij hen af kunnen nemen. Deze software en tools zorgen ervoor dat je op die wijze gemakkelijk je eigen data in kan duiken om de onderzoeken te verrichten. Op dit

Bekijk vacature »

Ervaren Front-end developer voor e-commerce organi

Organisatie / Afdeling Voor een organisatie die werkt voor grote partijen ben ik opzoek naar een ervaren front-end developer met passie voor open source. De organisatie richt zich op crossmedia en alles wat daarbij komt kijken als je ervaring hiermee hebt dan is dat een plus. Het team waarin je komt te werken bestaat uit ongeveer 15 medewerkers denk hierbij aan front-end developers maar ook back-end, design en online marketing is onderdeel van het team. Omdat het gaat om een divers team is het belangrijk dat je breed geïnteresseerd bent en ook op back-end gebied niet terugdeinst van een uitdaging.

Bekijk vacature »

Medior .Net Developer Utrecht vanaf €3700,-

Medior .Net Developer Utrecht vanaf €3700,- Wat ga je doen als Medior.Net Developer? Als Medior .Net Developer in Utrecht ben jij verantwoordelijk voor het bouwen van software die verkocht wordt aan de klant. Het is een puur eigen product wat ze bouwen voor zeer grote bedrijven in de olie en gassector. De software zorgt er voor dat mensen veiliger aan de slag kunnen gaan binnen deze sector. Het gaat om hele grote projecten die soms over miljarden gaat. Je zult aan deze projecten werken met de volgende technieken: C#, WCF, WPF, Winforms, VVM, En Azure. Hiernaast zal je ook in

Bekijk vacature »

Gezocht! (Full Stack) .NET developer voor een star

Organisatie & Afdeling Deze businesspartner, nabij Utrecht, bestaat 10 jaar en heeft op dit moment meerdere start-ups opgezet die succesvol zijn. De rol is voor één van de start-ups binnen de moederonderneming. Binnen de start-up waar jij aan de slag gaat ontwikkelen ze een online platform voor het onderwijs waarmee onderwijsinstellingen verschillende data verzamelen en inzicht krijgen om het te verbeteren. Het eerste platform, met de bijbehorende tools, zijn zojuist ontwikkeld. Op dit moment zijn ze bezig met het opzetten van een team met specialisten om deze versie door te ontwikkelen. Het team bestaat op dit moment uit 5 personen.

Bekijk vacature »

Systeembeheerder

Ben jij toe aan een vervolgstap als systeembeheerder? Vind je het een uitdaging om het systeem draaiende te houden en te verbeteren? Ben jij oplossingsgericht en heb je een hands-on mentaliteit? Dan ben jij onze nieuwe collega! Wat ga je doen: Als Systeembeheerder bij TABS Holland ben je medeverantwoordelijk voor de installatie en het beheer van de ICT infrastructuur. Je bent leading in projecten als het gaat om vernieuwing of vervanging. Je bent sowieso continu bezig met het verbeteren van het beheer van de ICT infrastructuur. Dit doe je op basis van evaluaties van de gebruikers- of productie-ervaringen, prestatiemetingen, eigen

Bekijk vacature »

Software Consultant Medicatie (apotheker)

Software Consultant Medicatie (apotheker) Jij zorgt voor Ontwikkeling Locatie: Amsterdam Niveau: HBO Dienstverband: 40 uur per week Lijkt het jou een uitdaging om artsen, apothekers en verpleegkundigen te voorzien van de allerbeste ‘medicatie-software’? Dan is deze job als Software Consultant Medicatie in Niel jou op het lijf geschreven. Jouw job Als Software Consultant Medicatie ben je medeverantwoordelijk voor de ontwikkeling en inrichting van de wetenschappelijke medicatiedatabase in de software. Je onderhoudt onder andere de gegevens omtrent medicatiebewaking, volgt wijzigingen op in wet- en regelgeving en helpt mee met de inrichting en ontwikkeling van de attesten en implantaten. Je denkt mee

Bekijk vacature »

Junior/Medior PHP Developer oneindige flexibilitei

Functieomschrijving In deze flexibele functie kan jij als PHP Developer bepalen of je een dag thuiswerkt of gewoon lekker op kantoor te Ede aanwezig bent. Deze flexibiliteit hebben ze altijd geboden aan hun medewerkers en dat willen ze permanent blijven bieden. Je maakt als PHP Developer in deze functie een goede MySQL Database gekoppeld aan de back-end van de diverse web applicaties en websites gebouwd door dit bedrijf. Je bent voornamelijk bezig op de back-end en je zet het Symfony2 Framework in met daarbij OOP Development, Wordpress, JS, CSS en HTML. Er wordt gewerkt met sprints en iedere maandag worden

Bekijk vacature »

Lead full stack .NET Software Developer gezocht re

Functieomschrijving Het beveiligen van C# Software Code-Level. Een uitdagende baan in regio Veenendaal waar je jezelf verder kan ontplooien als .NET Developer met een focus op security. Werken bij een leuke en informele organisatie voor 32 of 36 uur in de week. Klink dit interessant? Dan hoor ik graag van u Je komt terecht in een team die zich bezighoudt met het bouwen van nieuwe opossingen voor zowel intern gebruik als voor (internationale) klanten. In totaal zijn er 3 software development teams binnen de organisatie en ieder met hun eigen focus. Men werkt in DevOps / Scrum teams betaande uit

Bekijk vacature »

Master Biologie, Bedrijfskunde, Rechten of HBO Nie

Master Biologie, Bedrijfskunde, Rechten of HBO Nietweetkunde en programmeur worden? Functieomschrijving Altijd al de IT in gewild en geen bijpassende opleiding? En óók geen relevante werkervaring? Dan is dit precies het traineeship wat je nodig hebt! Goed opletten tijdens de trainingen; Samen met Dennis of Maarten, in ieder geval een senior developer, gave applicaties ontwikkelen; Op gegeven moment lekker zelf aan de slag; Veel leren om je certificaten te kunnen halen (slagen is wel zo handig!); Leren kennen van de branche en applicaties. Functie-eisen HBO en/of WO-diploma (welke richting dat dan ook is); Affiniteit met IT (kan bijvoorbeeld als hobby

Bekijk vacature »

Medior .Net Developer Amsterdam Vanaf €3600,-

Medior .Net Developer Amsterdam Vanaf €3600,- Wat ga je doen als Medior .Net Developer? Als Medior .Net Developer in Amsterdam ga jij aan de slag bij een leuke organisatie die zich richt op het maken van B2B logistieke software en apps voor zowel nationale als internationale klanten. Je ontwikkelt samen met het team aan het platform, gemaakt in C# en Asp.Net, waarbij de input van klanten en de creatieve ideeën van het team het succes vormen. Dit gebeurt volgens de scrum-methodiek. De focus binnen dit team ligt op het geavanceerde platform waar steeds meer klanten gebruik van kunnen en willen

Bekijk vacature »

C#/.NET junior developer te Hilversum

Bedrijf: Ben jij die jonge, ambitieuze ontwikkelaar met de drive om jezelf te bewijzen? Sta jij aan de start van je carrière en wil je graag meer kennis en ervaring opdoen? Dan ben ik op zoek naar jou! Dit bedrijf vertegenwoordigd sinds 1993 alle rechten van artiesten en platenproducenten. Zij bieden bedrijven de service om ongestoord muziek naar wens te draaien. De artiesten en platenproducenten waarvan de muziek wordt gedraaid krijgen hiervoor een vergoeding. Deze organisatie zorgt ervoor dat elke partij het geld tijdig ontvangt. Als software developer kom je in een team van 5 gepassioneerde professionals te werken en

Bekijk vacature »

Improving user experience as a Front-end Web Devel

Improving user experience as a Junior/MediorFront-end Web Developer Company profile Our client is a world leader in the design and manufacture of intelligent drive solutions for LED based lighting systems. Our technologies empower our customers to deliver the promise of LED lighting: smarter, sleeker and more efficient systems to meet the needs of an ever more energy conscious world. As the world of lighting turns to smart lighting and Internet of Things (IoT) applications, the driver is the heart of this technology revolution in the industry. New product development, sustaining of the continuously growing product portfolio and securing the leadership

Bekijk vacature »

Angular Ontwikkelaar voor grote E-commerce partij

Functieomschrijving Ben jij dé JavaScript goeroe die het leuk vindt om met o.a. Angular2 en NodeJS bestaande applicaties te verbeteren en nieuwe applicaties te ontwikkelen? Wacht dan niet langer en reageer! Al meer dan 25 jaar helpt deze organisatie zijn klanten bij efficiënter maken van o.a. marketing en logistieke processen. Dit doen zij door middel van hun eigen ontworpen Software as a Service oplossing. Vanwege hun jarenlange ervaring hebben zij veel kennis over de processen die belangrijk zijn bij hun klanten. Mede hierdoor zijn zij erg succesvol in hun branche. Doordat deze branche nooit stil staat en er steeds meer

Bekijk vacature »

Junior(+) Full-stack C# / ASP.NET Developer voor s

Dit bedrijf is een ambitieuze startup in omgeving Eindhoven. Zij houdt zich veelal bezig met de realisatie van webapplicaties op maat voor kleine tot middelgrote bedrijven uit de omgeving. Bij onze opdrachtgever zal jij ontwerpen (architectuur), ontwikkelen (C#/ASP.NET, HTML, CSS, JS), testen (unit-tests) en onderhoud plegen / uitbreidingen verzorgen op basis van de specifieke behoefte van klanten. De opdrachtgever heeft momenteel 2 Senior C#.NET Developers in dienst die al jaren in het vak zitten waarbij ook de oprichter een technische achtergrond heeft. De groei van het bedrijf is constant en ze hebben dan ook de wens het team te verdubbelen

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

16/08/2018 14:14:01
 
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.