Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Front-end Developer vacature

Currently we are specific looking for professionals who speak fluently Dutch on C1 level. Senior Front-end Developer Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Je bent creatief, thuis in gebruikersinteractie en een Developer in hart en nieren. Daarnaast heb jij een klantgerichte en initiatiefrijke houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Wat doe jij als developer bij Sogeti? Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie, als intern bij Sogeti. Jij houdt

Bekijk vacature »

OutSystems Developer Gloednieuw Applicatiehuis

OutSystems Developer Functieomschrijving Heb jij als OutSystems Developer ruime ervaring met het ontwikkelen van diverse applicaties? Lijkt het jou gaaf om aan de vooravond te staan van de implementatie van een volledig nieuw applicatiehuis? Wil jij aan de slag binnen een uitdagende omgeving waarbij je de mogelijkheid krijgt jezelf verder te ontwikkelen? Lees snel verder! Jouw taken als OutSystems Developer zullen bestaan uit: Het van scratch af aan ontwikkelen van applicaties met OutSystems; Het aanhaken bij diverse projecten binnen de organisatie; Schakelen met de business; Meedenken over de mogelijkheden van het platform binnen de organisatie. Functie-eisen De eisen zijn: Hbo

Bekijk vacature »

Gezocht/Looking for: Senior .NET Developer - Rotte

Due to extensive growht of our client we are currently searching for a Senior Dot.Net Software Developer. This is for one of our clients in the digital data transformation domain. Vacature Details/ Vacancy Details Contract type: Fixed term contract Start datum/ Date of Joining: immediate (work from home during Covid-19 period) Werkervaring/experience required: Minimum of 6 years experience in a similar role (must have) Understanding of Azure DevOps (must have) Experienced in Agile/Scrum software development Deep understanding of C#, .NET, .NET Core, REST, Azure services(must have) Experience with Kubernetes or Azure Service Fabric Database knowledge (a.o SQL, CosmosDB) Pluspoints would

Bekijk vacature »

Systeembeheerder Cloud Engineer

Systeembeheerder Cloud Engineer In de afgelopen maanden is er nog nooit zoveel gewerkt in de Cloud als voorheen. Je hebt de laatste ontwikkelingen in de IT op de voet gevolgd. Hierdoor weet je zeker dat je als systeembeheerder Cloud overal terecht kan maar daarbij is het nu nog belangrijker dat je voor een werkgever kiest waar je ondanks de Social distance toch de verbondenheid voelt. Daarom werken wij bij T2 samen met jou en daar plukken wij uiteindelijk samen de vruchten van! Waarom T2? Je haalt voldoening uit de technische uitdagingen binnen een Enterprise omgeving. Je werkt voor top bedrijven

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

BI Ontwikkelaar

Je kan er niet omheen, data is overal en data gedreven werken is voor jou dan ook vanzelfsprekend. De beste inzichten haal je nou eenmaal uit de data. Zo zorg jij ervoor dat data uit het bronsystemen op een juiste en veilige manier ontsloten wordt, en verwerkt wordt tot betrouwbare en betekenisvolle informatieproducten. Als BI ontwikkelaar vorm je ook de brug tussen de business en IT en ben je vertaler van (complexe) informatiebehoeften naar concrete oplossingen; bijvoorbeeld in de vorm van (management)rapportages of dashboards. Daarnaast lever je een sterk aandeel in de doorontwikkeling van de datamanagement organisatie binnen Argenta, onder

Bekijk vacature »

Full-stack Java Developer/ Web development/ 4.000

Functieomschrijving Ben jij een full-stack java developer die graag een cruciaal platform (door) ontwikkelt? Schroom jij het niet om jouw brede skillset in te zetten om verbeterslagen aan te dragen en uit te voeren? Lees dan snel verder! Bouwen van nieuwe functionaliteiten; Door ontwikkelen van de online omgeving; Bug fixing; Testen van (jouw) code, handmatig-, unit-, integratie- en browser tests. Functie-eisen Minimaal een MBO-diploma met HBO werk- en denkniveau; Minimaal 1 jaar werkervaring met Java; Kennis van frameworks zoals: Spring (MVC), Struts, Hibernate, Junit, etc.; Kennis van tooling zoals: IntelliJ, GIT, Jenkins, Gradle; Kennis van front-end technieken zoals: JavaScript, Bootstrap

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 »

.NET Developer / C# / miljarden berichten / Zorgse

Functieomschrijving Zit jij aan je plafond als .NET C# Developer? Wil jij de stap maken naar dé .NET software organisatie van Tilburg? Lees dan nu verder! Bedrijfsomschrijving werken bij een organisatie waar je met het volgende in aanraking komt: High-intensity dataverkeer, meer dan 2,7 miljard berichten per jaar; Development aan .NET applicaties die maandelijks miljoenen euro's verwerken; Salaris als developer tot bijna 70.000 euro op jaarbasis; Geen partij in de omgeving van Tilburg die zo'n complex .NET applicatielandschap heeft; Werken aan meer dan 50 diensten, verdeeld over 10 Scrum teams; Focus op o.a.: C# en ASP.NET in een Agile organisatie;

Bekijk vacature »

C# ontwikkelaar gezocht, academisch niveau, goed s

Ben je als .NET ontwikkelaar op zoek naar een (nieuwe) analytische uitdagende baan? Een baan waar je te maken krijgt geavanceerde wiskundige modellen? Dan zou deze organisatie je dit kunnen bieden. Voor een organisatie in Delft zijn we momenteel op zoek naar .NET ontwikkelaar met een academisch niveau en kennis of affiniteit met het bouwen van modellen, dataprocessen en applicaties in .NET C#. De organisatie houdt zich bezig met het leveren van zeer specifieke diensten voor de financiële sector en doet veel zaken met grote financiële instellingen. Het gaat hier om een kleinere organisatie van circa 15 mensen waarvan 5

Bekijk vacature »

Deventer zoekt PHP Developer!

Functieomschrijving In een team van developers werk je aan maatwertk gebruiksgerichte software. De taal die hier het meest gebruikt wordt is PHP en JavaScript. Op de Frontend werken ze met Vue.js en op de Backend middels Laravel, enige kennis hiervan of van een ander framework is zeker een grote pré. Belangrijk is wel dat je al wel fulltime werkervaring hebt opgedaan met PHP. Je krijgt hier de mogelijkheid om jezelf verder te ontwikkelen als developer in een team van ervaren collega's die je graag verder helpen en ondersteunen. Er wordt hier zeker gekeken naar persoonlijke ontwikkeling en zo krijg je

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Product Developer Elektronica

Functieomschrijving Wil jij werken bij een award winnende organisatie, waar jij als Product Developer Elektronica inspeelt op de nieuwste technologische ontwikkelingen? Hier krijg je de kans om jezelf verder te ontwikkelen, je kennis te verbreden en jezelf te specialiseren. Daarnaast ontvang je een uitstekend salaris, een reële kans op een vast contract, een telefoon van de zaak met abonnement en 30 verlofdagen. In deze functie ben jij als Product Developer Elektronica samen met vier hardware collega’s verantwoordelijk voor dit takenpakket: - Vertalen van globale productideeën en (klant)wensen naar concrete productspecificaties - Beheren en kalibreren van test- en meetapparatuur - Ontwerpen

Bekijk vacature »

Senior back end developer /Software engineer (Free

General Description: Philips Digital Cognitive Diagnostics is a new business within the Philips CTO-ventures organization. The venture is tasked with developing a new “software only” product called IntelliSpace Cognition. This new product, which is a class II medical device will help neurologists in assessing the cognitive performance of people with a neuro (degenerative) disease. The initial market for IntelliSpace Cognition is the US. A product video can be found here: https://youtu.be/U5KipcjPtz8 The venture is currently seeking for a Senior Software Engineer. The position is based in Eindhoven, the Netherlands. Requirements: • Design, test, develop, deploy, maintain and improve software assets

Bekijk vacature »

Datawarehouse Developer / Cloud omgevingen / 5.400

Functieomschrijving Ben je gedreven in het opzetten van een Datawarehouse en ETL en wil je jezelf verder ontwikkelen binnen jouw vakgebied? Heb je ernaast ook kennis van het werken in de Cloud? Lees dan snel verder! Je draagt zorg voor de verdere uitbreiding van de Datawarehouse; Het verder ontwikkelen van ETL generator op basis van de behoeften binnen het team; Meehelpen aan de migratie van Oracle naar Redshift; Proactief kijken naar verbeteringen en hierover schakelen met andere teams. Functie-eisen HBO werk- en denk niveau; Minimaal 3 tot 5 jaar werkervaring als Datawarehouse Developer; Uitgebreide kennis van ETL en bijbehorende tooling;

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

18/09/2020 11:49:30
 
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.