Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Typo3 Ontwikkelaar / Tijdelijk / Regio Amersfoort

Functie-eisen Minimaal HBO niveau; Kennis en relevante ervaring met: Typo3, PHP, Versiebeheer en webtalen (CCS/HTML); Ervaring met Jira en Confluence is een pré; Goede beheersing van de Nederlandse taal; Je kunt de prioriteit van de werkzaamheden goed inschatten. Bedrijfsomschrijving Als Typo3 ontwikkelaar ga jij je bezig houden met het doorontwikkelen en verbeteren van de Typo3 website. Verder zijn zij op zoek naar iemand die het platform kan migreren naar de nieuwste versie van Typo3. Daarbij wordt ontwikkelt volgens de SCRUM methodiek. Doorontwikkelen van de Typo3 applicatie; Verbeteringen doorvoeren; Huidige platform migreren naar nieuwste versie van Typo3. Locatie/Standplaats Utrecht Arbeidsvoorwaarden Startdatum:

Bekijk vacature »

Enthousiaste Junior web based C# developer

Bedrijfsinfo Momenteel ben ik op zoek naar een creatieve software ontwikkelaar die ervaring heeft met het ontwikkelen van web based applicaties. Je gaat werken in een organisatie die al 20 jaar een bepalende speler is op de markt van web oplossingen. De organisatie telt momenteel 10 werknemers, waarvan er 5 op de development afdeling werkzaam zijn. Je komt te werken in een organisatie met een zeer open cultuur waarin het gehele team in 1 grote ruimte zit. Dit zorgt voor een leuke informele werksfeer onder het jonge team waarin de gemiddelde leeftijd rond de 30 ligt. Functie-omschrijving Jouw taak als

Bekijk vacature »

Medior Full-Stack C# ASP.NET developer

Organisatie Wil jij in een leuk en sociaal team werken? Waar gewerkt wordt aan één product? Ben jij die sociale IT’er die mee kan denken over de innoverende uitbreidingen van de software? Dan is dit jouw volgende stap. Deze partner is een volwassen bedrijf die zich bezig houdt met het ontwikkelen van taxatiesoftware ten behoeve van de Wet WOZ en taxatiebedrijven. Het is een bedrijf van 40 werknemers waarvan 10 IT’ers. Het bedrijf heeft 3 kantoren verspreid over Nederland met de IT afdeling op 10 minuutjes lopen van station Ipenburg in Nijmegen. Deze IT’ers werken als 1 team samen voor

Bekijk vacature »

Automatiseerder in een dynamische markt zoekt Fron

Automatiseerder in een dynamische markt zoekt Front-end (JavaScript) developer De organisatie: Voor een goede relatie van StarApple, waarvoor wij de werving & selectie verzorgen ben ik per direct op zoek naar een gedreven Front-end (JavaScript) ontwikkelaar. Deze ontwikkelaar moet bijdragen aan de verdere groei als DevOps organisatie, op basis van de nieuwste technologie. Het is van belang dat je minimaal 3 jaar ervaring hebt met AngularJS en JavaScript en ervoor zorgt dat je bijblijft op het gebied van Front-end development. Binnen deze partij staat de beleving van de eindgebruiker centraal, om continu te verbeteren gebruiken ze methodes en technologieën als

Bekijk vacature »

Medior PHP Developer Microservices Symfony

Organisatie Dit bedrijf is sinds 2005 actief en is uitgegroeid van een zolderkameronderneming tot een bedrijf met een omzet van 18 miljoen per jaar en ze groeien nog steeds hard door! Inmiddels zijn er 80 mensen per dag werkzaam om er voor te zorgen dat alles in goede banen wordt geleid. Dit bedrijf richt zich volledig op de “fast moving consumer” market en is constant bezig om hier ook in te blijven innoveren. Dankzij deze strategie zijn zij de marktleider op dit gebied met grote klanten als “Procter & Gamble”. Naast werk is er natuurlijk ook plezier. Zo hebben ze

Bekijk vacature »

Fullstack .NET Developer gezocht die werkt met Azu

Organisatie & Afdeling Voor deze gave partner nabij Zevenaar ben ik op zoek naar een Fullstack .NET Developer die graag met de meest innovatieve systemen en software wilt werken. Deze partij werkt met o.a. de ontwikkelmethode TDD en Continuous Development. Het is een tech & consultancy bedrijf in de Retail- en E-commerce branche en op dit moment zijn ze marktleider in hun niche. In 2011 is deze partij opgericht en werken ze vanaf de start op Microsoft Azure. Op dit moment hebben ze meer dan 100 klanten in zowel Nederland als in België. Mede door hun nationale en internationale ambities

Bekijk vacature »

.Net Custom Software Developer

Jouw rol Voor deze ‘leading edge’ technology practice zijn we op zoek naar een Senior Custom Software Developer. Echte IT-freaks die de ontwikkelingen in het vakgebied nauwkeurig volgen en weten wat er speelt. Die kunnen werken op de grens van het onmogelijke en zo onze nationale en internationale klanten een beslissende voorsprong geven in hun markt. Je adviseert over innovatie en werkt mee aan de agile ontwikkeling en implementatie van state-of-the-art oplossingen, gebaseerd op .Net, Java en/of Mendix. Het gaat vaak om nieuwe technieken, veel eindgebruikers en complexe omgevingen, waarin de lat hoog ligt. Snelheid en topkwaliteit zijn bij deze

Bekijk vacature »

Medior .Net developer Inhouse Sportbranche

Medior .Net developer Inhouse Sportbranche Wat ga je doen als Medior .Net developer? Als Medior .Net developer in Amsterdam ga je aan de slag met het ontwikkelen van software om sportwedstrijden live te kunnen volgen, rating- en ranglijsten te ontwikkelen en het implementeren van API's (o.a. betalingsgateways). In de projecten maak je voornamelijk gebruik van C#, Asp.Net MVC en SQL. Op dagelijkse basis werk je met het development team van 6 developers en draag je bij aan het ontwikkelen van nieuwe functionaliteiten die het gebruiksgemak verbeteren. Wat wordt jou geboden? Een passend salaris vanaf €3600 en bovendien: * Opleidingen/certificeringen mogelijk;

Bekijk vacature »

Allround Ontwikkelaar (BI en PHP) voor data in de

Ben jij de ontwikkelaar die wil meegroeien met een bedrijf? Krijg jij er een kick van om het beste uit een applicatie te halen? En daarbij zorgaanbieders te helpen met het verbeteren van hun zorg? Allround Ontwikkelaar (BI en PHP) Als Allround Ontwikkelaar word jij een belangrijke schakel in de verdere plannen van InfinitCare. Hierdoor komt tijd beschikbaar om meer nieuwe functionaliteiten en toepassingen te kunnen ontwikkelen. Als Ontwikkelaar krijg je alle ruimte om eigenaarschap te nemen van de software. Je wordt geen radartje in een groot scrumgeheel, maar je vindt het leuk om zelf functionaliteiten uit te denken. En

Bekijk vacature »

Medior C# ASP.NET Developer Rotterdam

Organisatie Als medior ASP.NET ontwikkelaar ga je aan de slag bij een van de meest toonaangevende softwareorganisaties van Nederland. Deze organisatie is gevestigd in het centrum van Rotterdam en is al ruim 12 jaar een bepalende speler in het ontwikkelen van totaalsoftwareoplossingen. Denk hierbij aan: websites, webshops, intranet en emailmarketing-applicaties. Zij zijn continu bezig om deze applicaties te blijven vernieuwen door de actuele ontwikkelingen in de markt in de gaten te houden. Dit wordt onderzocht en uitgevoerd door de Research & Development afdeling, deze afdeling heeft een grote overlap met de ‘reguliere’ ontwikkelafdeling. Dit bedrijf heeft haar pijlen gericht op

Bekijk vacature »

Webontwikkelaar

Er wordt een nieuwe module binnen een bestaande maatwerkapplicatie ontwikkeld. Het team dat de module ontwikkelt, bestaat uit 2 a 3 personen. De ontwikkelaar die voor deze klus wordt ingehuurd, zal het volgende gaan ontwikkelen: Notificaties: Als een medewerker toegewezen wordt aan een formatieplaats, of er is een wijziging in de benoeming, dan gaat er een automatische e-mail uit naar die medewerker met cc aan HR & faculty board, afdelingsmanagers, departementsmanagers. Functie eisen: HBO/WO werk-denkniveau; NodeJS, HTML, CSS Kennis van PDF generators, bij voorkeur al ervaring met iets wat samen met NodeJS werkt. Overige informatie: Locatie: Utrecht Start: zsm, 32-40

Bekijk vacature »

Xamarin Developer

Functieomschrijving Ben jij de Xamarin expert die de volgende stap in zijn carrière wil zetten? Houd jij er van om veelgebruikte apps verder uit te bouwen terwijl je de kwaliteit blijft waarborgen en heb je daarnaast zelf innovatieve ideeën ? Lees dan snel verder! Samen met het gehele mobile app team ben jij verantwoordelijk voor: de (door)ontwikkeling van Native applicaties voor Android en iOS; het verder samenbrengen van de applicatie en de web omgeving; de innovatie van de applicatie, het is belangrijk dat jij zelf meedenkt en jouw ideeën voorlegt binnen het team; feedback vanuit de gebruikers te behandelen en

Bekijk vacature »

Java Developer SE / EE 1.6+ - Eindhoven

Organisatie- en afdelingsomschrijving Our client is one of the most innovation companies located within the Netherlands. We provide high quality software in a high-tech and challenging market. Functieomschrijving The department is specialized in creating and developing high quality software for manufacturing automation in a high tech environment. We strive to provide our clients with high quality software and deliver state of the art solutions in a variety of ways. Creating software infrastructure using Java SE / EE Create applications to fine tune manufacturing processes Create on site solutions that continually monitors all activities Implement and validate algorithms Providing industrial automation

Bekijk vacature »

Medior front-end developer in Utrecht gezocht! Mob

Ben jij een front-end developer die HTML(5), CSS(3) en Javascript (jQuery) goed beheerst, open staat of al werkt met de nieuwste technieken en ben je iemand met passie voor user experience en design? Lees verder! Voor landelijk bekende klanten ontwikkeld deze organisatie vooruitstrevende applicaties, vaak zijn dit grote projecten waarbij zij perfectionistisch te werk gaan met oog voor detail en design. Zij zien het dan ook niet als een applicatie maar als een mobiele strategie. Samen met de klant gaan zij na wat hun doen, om er zeker van te zijn dat dit ook voor de developers/designers op een later

Bekijk vacature »

Medior back-end ASP.NET C# Developer

Organisatie Voor een businesspartner in de omgeving van Ede ben ik op zoek naar een ervaren ASP.NET C# developer. Het bedrijf maakt een softwareplatform voor de automotive industrie. Dagelijks maken 4500 transporteurs in heel Europa gebruik van dit platform. Het betreft een voertuigvolgsysteem wat in verbinding staat met een mobiele app en de desbetreffende boordcomputer. Het voertuigvolgsysteem draagt onder andere zorg voor rittenregistratie, beheer van de lading en het beoordelen van de rijstijl van desbetreffende chaufeur. Het bedrijf is 22 jaar geleden opgericht als een echt softwarehuis. Naast zeven developers zijn er twee mensen die zorg dragen voor de verkoop

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

19/10/2018 16:36:45
 
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.