Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior .NET Developer Facturatie Platform SaaS

Medior .NET Developer Facturatie Platform SaaS Wat ga je doen als Medior .NET developer? Jij gaat als Medior .NET developer werken in Amsterdam aan een uitgebreid facturatie platform voor ZZP'ers. Voor ZZP'ers biedt het features zoals: planning, urenregistratie, klanten beheer, voorraadbeheer, rapportages en facturatie mogelijkheden aan. Deze features worden constant ge-update om aan de klantenverwachtingen te voldoen. Voor 2019 zijn er nieuwe plannen gemaakt om naast ZZP'ers ook MKB'ers het platform aan te bieden. Hiervoor worden er features toegevoegd zoals: Personeel beheer, SMS & Mail reminders en een Android/ IOS-applicatie. Verder komen er nieuwe krachtige APIs om boekhoudprogramma, CRM-systemen en

Bekijk vacature »

PHP developer

Geniale PHP developer! Als PHP developer bij touch creative werk je aan de vernieuwende backend development projecten, optimalisatie en onderhoud van nieuwe en bestaande sites & webapplicaties. Performance staat bij jou hoog in het vaandel en je weet dit accuraat te koppelen aan de frontend. Dit doe je deels in teamverband en deels zelfstandig. Je bent een gedreven en nieuwsgierige autodidact. En meer dan een developer die zich bezig houdt met nulletjes en eentjes. We zoeken iemand die zich actief opstelt vanaf de conceptfase en betrokken is tot en met de nazorg. Je werkt in een klein, maar multidisciplinair hecht

Bekijk vacature »

Gouda / PHP Developer / Symfony

Voor een softwareontwikkelbedrijf nabij Gouda ben ik op zoek naar een PHP Developer. Takenpakket Het team waarin je terecht komt bestaat uit ontwikkelaars en strategisch denkers. Als team worden er apps, web apps en klantenportalen ontwikkeld met behulp van de meest recente technieken. Als PHP Developer werk je binnen het SCRUM-team met ervaren developers aan technische projecten en productontwikkeling voor de planning software van het bedrijf. Je takenpakket is divers en verdiepend: van technische consultancy opdrachten voor klanten tot het bepalen van de software architectuur, het automatisch tests schrijven tot het bouwen en documenteren. Per project weeg je af welke

Bekijk vacature »

.NET webdeveloper gezocht, Rotterdam (C#, Angular,

Voor een relatief kleine organisatie, gelegen in het centrum van Rotterdam, zoeken we momenteel een medior of senior.NET developer. De organisatie richt zich op de ontwikkeling en verkoop van planningssoftware en tijdregistratie. Het gaat om een gevestigd bedrijf welke momenteel hun nieuwe cloudbased software in de markt aan het zetten zijn. Dit betekent een fase met de nodige uitdaging. Er wordt dan ook van je verwacht dat je mee kunt denken in de verdere ontwikkeling van dit product. De organisatie bestaat uit een sociale en hechte groep van mensen. De lijnen zijn kort en er wordt regelmatig samen een biertje

Bekijk vacature »

.Net front-end Developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Bij DPA GEOS werken onze consultants als Front-end Developer in Agile teams bij onze klanten en zijn ze verantwoordelijk voor de grotere webapplicaties. Wil jij dit ook, want we zijn op zoek naar enthousiaste Front-end Developers om ons development team te versterken. Je draagt positief bij aan de teamgeest binnen een projectteam en je ondersteunt de software architect en projectleider bij hun werkzaamheden. Je gaat webapplicaties maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege

Bekijk vacature »

Junior Support Engineer

Geef jouw carrière direct een goede start als Junior Support Engineer (parttime/fulltime/bijbaan voor studenten) Volg jij een studie of heb jij net jouw opleiding afgerond en wil jij veel ervaring opdoen als Junior Support Engineer in een zeer korte tijd? Wil jij de ruimte hebben om door te groeien bij een gezellig en innovatief bedrijf waar inbreng van ideeën wordt gewaardeerd? Grijp dan nu je kans! Voor de afdeling Support is inepro op zoek naar een proactieve en energieke Junior Support Engineer die een kick krijgt van het oplossen van problemen. Wat ga je doen? Als Junior Support Engineer kun

Bekijk vacature »

Employee Application Services

Employee Application Services (Clear), fulltime. Nieuw leven geven aan gebruikte materialen: een bijdrage aan duurzaamheid waar we een startend IT-talent goed bij kunnen gebruiken. Maak jij het verschil? Een dynamische werkweek: aan de slag Als Employee Application Services ben je onderdeel van onze ICT-afdeling Operations. Je zorgt samen met de Application Services Consultants dat de continuïteit van de beheerde applicaties (Clear) wordt gewaarborgd. Dat betekent dat je continu let op eventuele storingen en deze zo snel mogelijk verhelpt. De eerstelijns vragen komen bij jou terecht. Verder pak jij de casussen op die je aankunt. In overleg met de consultants schuif

Bekijk vacature »

Mobile Web Developer

Apps om te betalen met je vingerafdruk, de rekening in de bar te delen of je huiskamer een sfeer kleurtje te geven met licht! Wil jij Mobile Apps realiseren die mensen echt raken? Apps maken die het leven van ons als gebruikers vereenvoudigen? Wij stellen onszelf ten doel dat we op elke smartphone in NL een App van onze hand kunnen aanwijzen. En jij? Wil jij dat soort gave projecten ook doen bij de Nederlandse topbedrijven? Impact met Apps Bij Sogeti Mobile zitten we super dicht op de huid van de gebruiker. We leveren gebruiksvriendelijke oplossingen op jouw favoriete kanaal.

Bekijk vacature »

GAME AND SDK DEVELOPER JAVASCRIPT/TYPESCRIPT

In this position you will be part of our existing development team and will work with creative and technical teams, you will be working on the development of a new SDK for our highly animated games from our office in Eindhoven. Also, you will be producing games, based on the use of the SDK. Furthermore, you will align with, and support external game development partners which are located in Ukraine and Serbia. This role will suit a developer who is passionate, service minded, responsible and self-motivated, preferably with experience in the online gaming industry, web development or mobile UI/UX-space and

Bekijk vacature »

1012 Amsterdam - .NET Developer

Ben jij een innovatieve, gedreven en ervaren developer met ambitie en voel jij je thuis in een flexibele werkomgeving? Dan is deze vacature interessant voor jou! Voor een klant in Amsterdam zijn we op zoek naar een: Senior .NET Developer 40 uur Samenvatting In deze functie van Senior .NET Developer ben je verantwoordelijk voor het implementeren, onderhouden en uitbreiden van IT modules voor klanten. Je bent verantwoordelijk voor het meedenken en uitbreiden van verschillende innovatieve functionaliteiten. Hierin ben je voornamelijk werkzaam in een flexibele omgeving en sta je in contact met klanten vanuit verschillende disciplines. Met jouw technische skills en

Bekijk vacature »

Business Information Manager (BIM-er)

Fulltime 1,0 fte = 36 uur Als Business Information Manager ben je een gedreven professional met ambitie om de informatievoorziening van Saxion te optimaliseren. Je krijgt energie en voldoening van het behalen van resultaten en het verbeteren van processen en de IT-voorzieningen van de keten. Je bent het aanspreekpunt voor alle vragen rondom de huidige en toekomstige inrichting van de informatievoorziening op de keten. Daarbij heb je een heldere visie op de toekomstige keteninformatievoorziening en weet je deze te vertalen binnen de organisatie. Daarnaast ben je: analytisch ingesteld en heb je een groot oplossend vermogen; innovatief met een hoog verandervermogen,

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 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) apps, en

Bekijk vacature »

.NET Developer/Consultant gezocht voor security vr

Functieomschrijving Wil jij een combinatie van complexe security projecten, klanten adviseren en dat terwijl je 2 dagen per week thuis kan werken? Lees dan nu verder! Functionele requirements vertalen naar technische oplossingen en deze zelf ontwikkelen; Klanten pro-actief adviseren over innovatieve software-oplossingen; Adviseren en ontwikkelen in lijn met de strategie en doelen van de klant; Technische ontwerpen opstellen; Begeleiden van ingebruikname van het product. Functie-eisen Afgeronde HBO/WO opleiding richting bijvoorbeeld Informatica is een sterke pré; Enkele relevante certificeringen; Aantoonbare werkervaring als developer, en hebt hierbij bovenmatige interesse in security vraagstukken; Ervaring als consultant is geen eis, wel is het prettig

Bekijk vacature »

Medior PHP Developer scheepvaart Laravel

Medior PHP Developer scheepvaart Laravel Wat ga je doen als Medior PHP Developer? Als Medior PHP Developer uit de omgeving Rotterdam, ga jij werken aan een bevrachtingsapp voor in de scheepvaart. De applicatie maakt het organiseren van transporten veel eenvoudiger en efficiënter. Zo staat de applicatie in contact met zowel schippers en transportbedrijven in Nederland. Om real-time status van transporten in kaart te brengen van lopende en beëindigende transporten. De eindklant kan hiermee bepalen met welke schipper hij zijn bulk, containers of stukgoed wil vervoeren. De organisatie wil de applicatie verder ontwikkelen en features toevoegen zoals; historie overzichten, tarieven overzichten,

Bekijk vacature »

.NET C# lead developer (Full stack) gezocht, Den H

Voor een organisatie in Den Haag zijn we momenteel op zoek naar een ervaren full stack .NET C# lead developer ter begeleiding van junior .NET developers en het verder uitbouwen van het team. Het gaat om een bedrijf dat de afgelopen 5 jaar druk bezig is geweest om de basis te leggen voor een online platform met betrekking tot de vraag en aanbod van een specifieke maatschappelijke doelgroep. Met een succesvol draaiende website, reeds 50.000 bezoekers per maand en het vertrouwen van een grote investeerder zijn ze de start-up fase inmiddels voorbij. De bedrijfscultuur daarentegen wordt nog steeds gekenmerkt door

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

22/02/2019 14:35:11
 
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.