Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer

PHP Developer Wegens groei van deze klant en het gebruik van de software, zijn ze op zoek naar één of meerdere ervaren PHP developers. Zie jij jezelf werken voor een bedrijf dat impact heeft om de ontwikkeling van de mensen? Dan kunnen ze jou hulp gebruiken bij het uitbouwen van SaaS-platforms met duizenden gebruikers, uitdagende technische vraagstukken en aansprekende klanten! Mijn klant is een ambitieuze ontwikkelaar van vijf SaaS-platforms die worden ingezet voor onder andere digitaal toetsen, online leertrajecten en het opbouwen van digitale portfolio's. Met mooie en bekende klanten, waaronder hogescholen en universiteiten, exameninstellingen, uitgevers en bedrijven in allerlei

Bekijk vacature »

Full-stack .NET developer gezocht, Goeree-Overflak

Ben je een .NET software developer en op zoek naar een professionele werkomgeving binnen een wat groter innovatief en ambitieus bedrijf? Waar sprake is van een uitgebreid applicatielandschap met elke dag nieuwe uitdagingen, waar alles mogelijk is, binnen een goede collegiale sfeer? Lees dan verder! Voor een bedrijf in Goeree-Overflakke zijn we momenteel op zoek naar een ervaren software developer. De IT afdeling bestaat uit circa 60 mensen waarvan zo'n 15 developers. Voor de recente architectuur wordt gebruikt gemaakt van de nieuwste technieken waaronder .NET Core, Docker en Angular. Echter bestaat het applicatielandschap uit een groot aantal verschillende applicaties waarbij

Bekijk vacature »

Full-stack .Net Developers gezocht in Oost Nederla

Functieomschrijving Binnen je functie ben je verantwoordelijk voor de technische ontwikkeling van grote projecten. Dit kunnen verschillende toepassingen zijn. Voor, tijdens en na een project zal je een aantal keer in contact staan met de opdrachtgever om het product zo veel mogelijk naar wens van de klant in te richten. Als Full-Stack developer zul je hier voornamelijk gaan werken met C# .Net, ASP.NET, SQL Server en Entity Framework. Je zal hier van begin tot eind betrokken zijn bij de realisatie van een project. Functie-eisen – Je hebt tenminste een HBO diploma in de richting van informatica – Je hebt ruime

Bekijk vacature »

Noordoost Java Developer vacature

Java Developer Noordoost Word onderdeel van een topteam met ervaren Java Developers. Loop voorop in de ontwikkelingen en help mee innoveren. Focus op Java Wij bouwen State of the Art applicaties met de nieuwste Java technologie en frameworks. Dit doen we door ons te richten op de open source-oplossingen binnen de wereld van Java, alle nieuwe ontwikkelingen te volgen en onze kennis te delen binnen onze eigen Java Community. Dit betekent bijvoorbeeld dat we aanwezig zijn op veel conferenties; Oracle Code One, Devoxx en JFall. We organiseren ook onze eigen collegiale sessies en hackatons waar we kennis en plezier combineren.

Bekijk vacature »

Oracle Ontwikkelaar Consultant binnen verschillend

Functieomschrijving Door de hoeveelheid opdrachten kunnen ze hier nog zeker versterking gebruiken van een goede Oracle Ontwikkelaar die over geruime ervaring met PL/SQL beschikken. Wanneer je ook nog ervaring hebt met APEX is dat helemaal mooi meegenomen, maar zeker geen eis. Binnen deze functie word je ingezet op uitdagende complexe Oracle vraagstukken bij diverse klanten. Zoals hierboven al aangegeven loopt het type klant ver uiteen wat veel uitdaging en variëteit biedt. Met jouw technische kennis ga je jouw klanten binnen de juiste behoeften te voorzien en ben je voornamelijk bezig met PL/SQL code. Door jarenlange ervaring en complexe vraagstukken is

Bekijk vacature »

Technisch Ontwerper / Applicatieontwikkelaar max.

Wie zoeken we? Je bent de beste in je vak of hebt de ambitie en de potentie om de beste te worden. Je hebt de passie om nieuwe technologieën te blijven leren en continu jezelf te ontwikkelen. Je hebt de pioniersgeest en drive om nieuwe technologieën, methodieken en concepten toe te passen in projecten en bij klanten. Je vindt het leuk om kennis te delen met collega’s, klanten en vakgenoten. Je bent een ware professional en ambassadeur voor CIMSOLUTIONS. Je voelt je thuis in een informele, collegiale en professionele sfeer waar de aandacht voor de klant en voor de medewerker

Bekijk vacature »

Python Developer

Locatie AMSTERDAM Functieomschrijving Voor een internationale bank in Amsterdam zoeken wij een Python Developer met interesse in Data Engineering. Waar kom je te werken? Je komt te werken binnen de afdeling Financial Risk. Binnen de bank is deze afdeling verantwoordelijk voor o.a. het voorspellen van risico’s bij het verstrekken van kredieten en het maken van rapportages voor toezichthouders zoals de DNB en de ECB. Op dit moment zitten zij in een enorme transitie fase waarbij er over wordt gegaan op een nieuw datamodel. Het team waar jij komt te werken helpt bij de inrichting van de nieuwe infrastructuur. Hoe ziet

Bekijk vacature »

PHP ontwikkelaar / Innovatie / Creativiteit

Functieomschrijving Ben jij de ontwikkelaar die op de hoogte is van de laatste ontwikkelingen en sta jij te springen om de nieuwste tools en technieken toe te passen in jouw werk? Trek dan nu aan de bel! Deze organisatie is al meer dan 20 jaar actief in het verzamelen en doorsturen van grote hoeveelheden data. Dit gebeurt doormiddel van hun zelf ontwikkelde platform die verschillende communicatieoplossingen biedt. Met bijna 600 gebruikers kan je jezelf wel inbeelden hoe groot de hoeveelheid data aan tekst, afbeeldingen en voicerecords is. Om er voor te zorgen dat de applicatie up-to-date, innovatief en vernieuwend is,

Bekijk vacature »

Mobile App Developer

Ons Mobile ontwikkelteam zoekt een fanatieke Mobile App Developer. Ben jij creatief en heb je passie voor het ontwikkelen van apps? Dan zijn wij op zoek naar jou! Jouw baan ChipSoft heeft al diverse apps uitgebracht en het aantal gebruikers hiervan neemt snel toe. De apps doen het erg goed bij de zorginstellingen. Je kunt hierbij denken aan apps verpleegkundigen, thuiszorgmedewerkers, de logistieke dienst en - natuurlijk - de artsen zelf. Door jouw hands-on mentaliteit, eigenwijsheid en technisch inzicht kun je nauwkeurig herbruikbare software schrijven. Die software sluit naadloos aan op onze ‘back end’ (HiX, onze ICT-totaaloplossing voor de zorg).

Bekijk vacature »

Technisch Applicatie Beheerder

CGI heeft de slagkracht en de grootte om zelfs de meest ambitieuze IT-carrières vorm te geven. Doordat wij een stabiele en groeiende organisatie zijn, kunnen wij je uitstekende kansen bieden om in een ondersteunende omgeving te werken aan projecten die daadwerkelijk impact hebben op onze wereld. Technisch Applicatie Beheerder - Aviation Wat ga je doen? Als Technisch Applicatie Beheerder zorg je voor het continu beschikbaar zijn van applicaties. Jij houdt je bezig met het inrichten, monitoren, analyseren en verbeteren van de technische infrastructuur en procedures rondom de beheerde applicaties. Jij test de werking van de aangeboden wijzigingen en lost problemen

Bekijk vacature »

Senior PHP Developer BDD Zorg

Functieomschrijving Ben jij een PHP Developer die out of the box denkt? Zoek jij naar de mogelijke als naar de onmogelijke oplossingen? Werk jij graag met kritische vraagstukken dat mensenlevens kan redden of kosten? Reageer nu en kom alles te weten! Ben jij iemand die energie krijgt van het ontwikkelen van een complexe PHP objectgeoriënteerde platform; Denken jij graag mee over de architectuur; Geeft een mooie schone code jou energie en doe jij er alles aan dat dit zo blijft; Vind jij het net zo belangrijk dat de huidige software goed onderhouden wordt; Denk jij graag out of the box;

Bekijk vacature »

Front-end Developer WPF

Heb jij kennis en ervaring met WPF en C#? Ben je technisch en heb je goed gevoel voor design? Wil jij met jouw kennis de zorg verbeteren? Dan zijn wij op zoek naar jou! Jouw baan Als Front-end Developer bij Zorgplatform ga je werken aan de interface voor zorgprofessionals. Zorgplatform is een platform waarmee medische gegevens op een veilige manier uitgewisseld worden met andere instanties binnen de zorgsector. Zorgplatform ondersteunt onder andere het verwijzen van patiënten, het overdragen van patiënten en de gezamenlijke behandeling (shared care). Dit is hét nieuwe werken in de zorg. Met jouw oog voor design ga

Bekijk vacature »

.Net custom software developer

Jouw uitdaging als .Net developer Als .Net custom software developer creëer je maatwerkoplossingen. Denk aan een mobiele applicatie voor het stroomlijnen van logistieke processen, een platform voor een uitkeringsorganisatie of de passagiersbeleving van een vliegtuigmaatschappij. Hierbij gaat het vaak om complexe omgevingen met veel gebruikers, waarbij de lat dus hoog ligt. Wat jouw werkzaamheden zoal zijn? Je werkt mee aan het gehele ontwikkelproces, van ontwerp, design en ontwikkeling tot testen en beheren van Microsoft applicaties en PoC’s. Je gaat werken met o.a. de volgende technologie: Azure, C#, .Net core, Angular, React, Vue en soms AWS. Je neemt deel aan meetings

Bekijk vacature »

C# Developer

De uitgebreide versie Jij hebt ruim twee jaar ervaring als developer. Nu wil je graag je tanden zetten in nog complexere projecten. Samen met je team bereik je nieuwe hoogtes en zelfstandig maak je meters. Je hebt behoefte aan collegae die jou alles leren op het gebied van technologie maar wilt tegelijkertijd ook graag je eigen opgedane kennis delen. Alles wat vandaag nog onbekend is, moet je morgen toepassen in de volgende uitdaging en dàt is wat jou scherp houdt. Je hebt geen zin in een 60-urige werkweek maar haalt wel plezier uit zo nu en dan een technische meeting,

Bekijk vacature »

allround software ontwikkelaar

Allround software ontwikkelaar. We zoeken een medior of senior allround software man/vrouw die klaar is om aan de leuke projecten aan te pakken die al klaar liggen voor je. De projecten zullen variëren van klein tot groot en is dus veel afwisseling. Voor ons is er geen dag hetzelfde als die van gisteren. Gisteren bouwde je nog een complexe applicatie, vandaag integreren we tussen systemen, morgen ben je een applicatie aan het schrijven. Wat ga jij doen? Je bent verantwoordelijk voor het hele proces, van de architectuur tot de database en de gebruiksvriendelijkheid van de systemen. We hebben een kleine

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

26/01/2020 18:05:29
 
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.