Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

ASP.NET CORE developer Fullstack / Intern

Bedrijfsomschrijving Mijn klant houdt zich bezig met alleen maar maatwerk software. Door de flexibiliteit van de developers bedienen ze bijna elke markt; van start-ups tot aan de grotere internationaal georiënteerde bedrijven. Bepaalde applicaties zijn standaard geworden en worden als totaalpakket aan de klant aangeboden. Andere applicaties worden maandelijks onder de loep genomen. Kortom: genoeg uitdaging voor een .NET Developer. Je komt te werken in een gezellig team van ongeveer 20 mensen met een platte structuur. Er wordt veel voor het personeel geregeld en regelmatig ga je met het team op pad. Je collega's zijn IT minded mensen. Het gaat hier

Bekijk vacature »

Frontend Developer

Currently I'm looking for a frontend developer. The ideal candidate will have the following skills: A strong sense of Software Craftsmanship Read, write and think JavaScript, both ES5 and ES6 Experience with A/B Testing tools (Adobe Target, Optimizely or other) Experience with Data Analytics tools (Adobe Analytics, Google Analytics, SiteMetrics, Omniture) REST API design and usage, JSON Knowledge and understanding HTML5 and CSS (and/or SCSS), accessibility (ADA) Experience with the Angular (5 or later) framework and its features is a plus Experience with Adobe Experience Manager AEM/JAVA is a plus Ability to: Come up with, build and present ideas Transform

Bekijk vacature »

Backend .NET Developer C# Voetbal

Bedrijfsomschrijving Binnen deze organisatie in de regio Den Haag zal je als .NET Developer terecht komen in een multidisciplinair team met 5 andere Programmeurs. In jouw rol ben je verantwoordelijk voor het ontwikkelen en optimaliseren van mobiele applicaties met meer dan 4 miljoen gebruikers wereldwijd. Als Backend Developer zal je dagelijks werken met C#, .NET Core, Kubernetes en een SQL Database. Voor het onderling communiceren van de microservices wordt gebruik gemaakt van RabbitMQ. Je krijgt energie van technische uitdagingen en je werkt graag samen. Verder zul je in vele projecten deelnemen, zorg je voor nieuwe features, los je diverse bugs

Bekijk vacature »

.NET Developer / C# / miljarden berichten / Zorgse

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; Elk kwartaal een week lang verplicht met nieuwe technieken/tooling werken; Meer dan 40 ervaren .NET ontwikkelaars als collega's; Mogelijkheid om 32 of 36 uur te gaan

Bekijk vacature »

Lead Software Developer (NL)

Lead Software Developer (NL) Den Haag HBO/WO IT Professional "Als Technisch Lead impact maken op de groeiende E-commerce markt met onze logistieke software. Je doet dit door technisch sturing te geven aan het team en ontwikkeling van onze Cloud IT-platformen en Open Source software-oplossingen gebouwd in of C#, Java, Javascript, Typescript, Python of Mobile op Android. Dit vraagt om een rolmodel en tech leiderschap". Wat ga je doen? PostNL is becoming a postal tech company. Als Lead Software Developer ben je de tech lead van een multidisciplinair Business-IT-team bestaande uit onder andere Developers en Solution Consultants. Je zult verantwoordelijk worden

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 »

OutSystems Developer / International environment /

Bedrijfsomschrijving For our international client based in Eindhoven area, we are looking for a junior OutSystems Developer. This company is a listed company with offices and plants all over the world. The company offers great experiences and exposure with people from different and unique cultures. They describe themselves as an innovative, professional and sustainable firm. Their goal is to provide for the generations to come. As Outsystems Developer you will be working in an international environment with approximately 15 direct colleagues, consisting of developers, integration specialists and application engineers. This Applications team is a very close and hard working team,

Bekijk vacature »

Senior applicatieontwikkelaar

Ben jij een gedreven applicatieontwikkelaar met minimaal drie jaar werkervaring? En wil je een uitdagende baan met impact én jezelf breed ontwikkelen? Bij UPS bouw je mee aan complexe systemen die wereldwijd worden gebruikt en krijg je alle ruimte om nóg beter te worden in je vak. Dit ga je doen In een dynamisch scrumteam werk je aan de hand van processen en technologieën zoals CI/CD en DevOps aan het behalen van jullie doelen. Je bent betrokken bij alle facetten van applicatieontwikkeling: van ontwerpen en bouwen tot testen en implementeren. Je levert ontwerpen die passen bij de onderliggende frameworks en

Bekijk vacature »

Ervaren full-stack C# developer, .NET CORE, Typesc

Voor een ambitieuze en snelgroeiende organisatie de regio Rotterdam zijn we momenteel op zoek naar een .NET C# developer. De organisatie bestaat inmiddels ruim 15 jaar en heeft een systeem ontwikkeld waarmee bedrijven de informatie van grote en complexe projecten beter kunnen managen. Dit systeem is geheel webbased. Om hun globale ambities waar te maken zijn ze recentelijk begonnen het systeem geheel te herbouwen met de nieuwste technieken. Denk hierbij aan technieken als .NET CORE, Typescript, React, Kubernetes en Azure. Niet alleen betekent voldoende nieuwe technische uitdaging maar ook betekent dit dat je voor 80 tot 90% van je tijd

Bekijk vacature »

Front-end Developer

Welcome to Wärtsilä! For our development teams in Helsinki/Drunen, we are looking for an experienced front-end developer who wants to ensure our products are positioned to operate effectively and that continuous improvement is normal a part of daily life. Imagine, you are on a cruise ship enjoying your well-deserved holiday. Your drinking a cocktail while enjoying the nice weather on the sun deck near the pool. Everything is perfect. Meanwhile, in the engine room, one of the chief mechanics is getting an alert. It seems that the temperature of one of the main fuel pumps is increasing unexpectedly. After a

Bekijk vacature »

Ervaren Business Intelligence ontwikkelaar

Bedrijfsomschrijving Wil je werken voor een bedrijf die organisaties helpt door middel van innovatieve en ontwikkelende technologieën? Wil je werken voor klanten met aanzien in het midden en groot bedrijfssegment? Dan ben je bij deze opdrachtgever aan het juiste adres! Ze zoeken een Medior BI ontwikkelaar met inlevingsvermogen in de klant en begrip van bedrijfsprocessen. Je zult hier persoonlijke begeleiding en trainingen bij krijgen om jezelf te blijven ontwikkelen. Daarnaast werk je binnen een dynamische, Work Hard – Play Hard werkomgeving met gezellige, ambitieuze collega’s die je stimuleren. Functieomschrijving Voor deze klant ben ik hard zoekende naar een ervaren en

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 »

Software Developer / full-stack

Bedrijfsomschrijving Voor een organisatie binnen de zakelijke dienstverlening zijn wij op zoek naar een Software Developer met goede kennis van zowel Java als front-end technieken als Angular. Het betreft een organisatie bestaande uit ongeveer 100 mensen die klaar staan voor ruim twee duizend klanten. De organisatie staat bekend om het feit dat zij met hun kwalitatief goede dienst een van de snelste zijn. Dit valt op in de markt en dit bewerkstelligen zij door alles zoveel mogelijk te automatiseren. IT, en software development in het bijzonder, wordt als erg belangrijk gezien. Het complexe applicatie landschap is geheel maatwerk en geschreven

Bekijk vacature »

Lead .Net Developer/Architect/ Telecom/ Salary: 6.

Bedrijfsomschrijving You will work at a large and progressive Telecom organization with offices in the Netherlands and Europe. The domain where you are going to work is responsible for designing and maintaining the Fixed Networks and other network solutions. They deliver communication products and services to companies and consumers. Furthermore, they deliver the data flow and mobile network in the Netherlands.Currently they are searching for a Lead .Net Developer to support one of the three scrum teams for delivering the best services. As a Lead .Net Developer you will be working closely together with your team picking up user stories.

Bekijk vacature »

Technisch Consultant Datamigratie

Technisch Consultant Datamigratie Ben jij een doorzetter die zich vooral wil verdiepen in de technische aspecten rondom een ZIS-migratie? Grijp dan nu je kans! Wij zoeken een perfectionistische en pragmatische Technisch Consultant Datamigratie, die vanuit het hoofdkantoor in Amsterdam zorginstellingen helpt bij de overstap naar een fonkelnieuw zorginformatiesysteem (ZIS). Jouw baan Je steekt je energie vooral in het onderhouden en uitbouwen van migratiescripts, frameworks en rapportages. Daarnaast is het inrichten van de conversieprogrammatuur een belangrijke taak. Je laat de conversie foutloos verlopen, waarbij je garant staat voor de performance en kwaliteit. Je werkt zo’n 90% op kantoor en de rest

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

28/10/2020 19:21:10
 
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.