Inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior software developer

Functieomschrijving In jouw nieuwe functie ontwerp je voor de klanten geautomatiseerde processen in de richting van beveiligingsoplossingen. Jouw werkzaamheden bestaan uit: Maken van functionele-en technische ontwerpen Ontwikkelen van software applicaties Documenteren van ontwikkelde software Monitoren en beheren van kwaliteit van de ontwikkelde software Ondersteunde activiteiten bij het beheer van het interne netwerk Functie-eisen Kennis van languages: C# Aspnet Core MS SQL HTML LESS/CSS Json Kennis van Tools: Visual Studio VS Code Microsoft SQL Management Studio WiX Toolset Git (Github) Kennis van Libraries: Razor Pages Server Side Blazor Dapper Mediatr Automapper Fluentvalidation Nodatime Topshelf Bekend met Areas: Websites, Api’s, Windows Services,

Bekijk vacature »

Junior .NET developer .NET 4.6, .NET Core, API

Functieomschrijving Je komt hier in een team te werken van 10 .NET developers waarmee je samen maatwerk applicaties ontwikkelt voor MKB bedrijven. Idealiter vervul je een rol van fullstack developer maar als je beter bent aan de backend of aan de frontend dan zijn er zeker ook mogelijkheden voor je. Naast al het maatwerk voor klanten wordt er ook gewerkt aan een eigen applicatie, een SAAS portaal voor de verzekeringsbranche met een veelvoud aan toepassingen en ook daar wordt je ingezet. Deze werkgever is hard op weg om Microsoft gold partner te worden en ze zoeken collega’s die graag bijblijven

Bekijk vacature »

C# Developer/ SQL Server/ Visual Studio/Javascript

Bedrijfsomschrijving Onze klant is een internationale organisatie gevestigd in de omgeving van Almere. De laatste jaren heeft onze klant een forse groei doorgemaakt als onderdeel van een grote Corporate werkgever. Flexibiliteit en meedenken zijn belangrijke pijlers in de organisatie. Zo is het pand bijvoorbeeld al om 7 uur open, zodat flexibele werktijden mogelijk zijn. Om klanten en werknemers optimaal van dienst te kunnen zijn is onze klant op zoek naar een .NET Developer (C#). De afdeling waar je komt te werken bestaat uit drie onderdelen: een websites team, een portals team en een team dat over een HR-systeem gaat. Voor

Bekijk vacature »

.NET Developer C# Familiebedrijf Senior / Medior

Functieomschrijving Wil jij aan de slag als .NET software ontwikkelaar binnen een groeiende organisatie en je bezighouden met het herstructureren van het platform? Reageer dan snel! Herstructureren van het platform en constant vernieuwen en onderhouden van het platform; Softwareontwikkeling middels C# .NET; Voorkomend direct in gesprek met klanten om de wensen en behoeften vast te stellen en de mogelijkheden te bespreken; Meedenken over bedrijfsprocessen; Uitvoeren van implementaties. Functie-eisen Buiten dat je een enthousiaste ontwikkelaar bent breng je het volgende mee; HBO denk- en werkniveau en je hebt minimaal een MBO 4 diploma; Relevante werkervaring met C# .NET; Je bent bekend

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 »

Developer DataPower Message Queuing Message Broker

Functieomschrijving Wil jij werken in een organisatie waar alleen de beste DataPower developers werken? Deze organisatie heeft één van de grootste en meest complexe omgevingen van Nederland. Wil je verantwoordelijk zijn voor een gateway waar miljoenen externe en interne gebruikers gebruik van maken? Lees dan snel verder! Ontwerpen, bouwen en testen van alle diensten m.b.t. DataPower, MQ, Broker en Cross File Transfer Constant verbeteren van de omgeving Nauw samenwerken met je collega's Functie-eisen Hbo werk- en denk niveau, gelieve in de richting van IT Aantoonbare werkervaring met DataPower of een vergelijkbaar systeem Kennis over IBM MQ en Message Broker is

Bekijk vacature »

Software Developer

Dit ga je doen Je bent onderdeel van de IT afdeling, die op dit moment bestaat uit 5 Developers en 2 Netwerk- en systeemspecialisten. Je bent verantwoordelijk voor je ‘eigen’ projecten en pakt deze vanuit de IT kant van A tot Z zelf op. Uiteraard heb je veelvuldig contact met de gebruikers. Tot jouw werkzaamheden en verantwoordelijkheden behoren o.a.: Ontwikkelen van operationele software conform specificaties: (design, inrichten database, installeren en configureren applicatie); Testen van ontwikkelde software op technische aspecten; Bieden van accuraat onderhoud op de ontwikkelde software; Inventariseren en oplossen van bugs en andere knelpunten; Proactief adviseren van collega´s ten

Bekijk vacature »

E-learningontwikkelaar

Wil jij meewerken aan de ontwikkeling van hoogwaardige leeroplossingen? En vind je het leuk om bij te dragen aan het opleiden van medewerkers van zorginstellingen die met HiX, onze ICT-totaaloplossing voor de zorg, gaan werken? Dan is dit de perfecte uitdaging voor jou! Jouw baan Je belangrijkste taak is het ontwikkelen van e-learningmodules voor specifieke doelgroepen en het inhoudelijk meedenken over en ontwikkelen van creatieve, didactische concepten voor onze klanten. Ruim 160.000 ziekenhuismedewerkers zijn straks door jóuw producten beter in staat om hun patiënten te helpen. Jouw team Als e-learningontwikkelaar ben je onderdeel van het team Documentatie dat bestaat uit

Bekijk vacature »

Software Developer / full stack / Java / Angular

Functieomschrijving Would you like to work at a company in Eindhoven on a custom application landscape, both front and backend? Does Java hold few secrets for you and are you also experienced with Javascript / Angular? Then we are looking for you! Als Developer werk je aan zowel de front-end als back-end van het maatwerk applicatielandschap; Je werkt mee in projecten op het gebied van systeemuitbreiding, vernieuwing en verbetering; Je werkt met o.a. Java, JEE, Spring, Angular, CI, SQL, Agile, webservices; Je denkt mee over de vertaalslag naar technische oplossingen en adviseert de organisatie op jouw vakgebied; Je werkt in

Bekijk vacature »

PHP Laravel developer voor maatwerk projecten

Functieomschrijving Er wordt hier gezocht naar een ervaren backend specialist die graag zijn tanden zet in het optimaliseren van webapplicaties. Er worden nog steeds nieuwe features bedacht, hier mag jij aan gaan meewerken, en die worden dan in het kleine team ontwikkeld. Je gaat werken met de nieuwste technieken en gaat werken aan een eigen product· Voordeel bij dit soort organisaties is dat de ontwikkelboog lang is en dat er veel aandacht is voor kwaliteit. Herken jij jezelf in bovenstaand profiel? Reageer dan snel! Functie-eisen - Je beschikt als PHP ontwikkelaar over HBO werk en denk niveau; - Je hebt

Bekijk vacature »

Java Developer/Consultant

JAVA Developer/Consultant – JAVA / Spring / DevOps / Scrum / Kanban Net binnen, JAVA developer/consultant voor een ambitieuze organisatie in Flevoland. • Medior / senior level Java developer • Centrale kantoor locatie op 5 minuten afstand van het statio • JAVA / Spring / DevOps / CI-CD / KanbanScrum / Agile • Goed salaris - €30.000-€70.000-, op basis van ervaring, en winstdeling • Reageer door te bellen met 020-8004990 of mail naar gerjan.hofland@searchability.com Deze organisatie is gespecialiseerd in software-ontwikkeling met Java en webtechnologie en werkt met klanten uit de MKB en de top 100 van bedrijven in Nederland! Bron:

Bekijk vacature »

Senior Java Developer / WebSphere / Architecture

Functieomschrijving Are you a team player that is proactive and isn’t afraid to share your opinion? Do you have experience with developing in Java and do you have experience with deploying applications in WebSphere? Then advance your career in one of the coolest and most challenging financial companies located in, The Netherlands! As a Senior Developer, you will work in a challenging environment: You will be maintaining the current Java7 / Oracle stack; You will be taking part in the architecture aspects of the new platform; You will be taking care of the offshore and onshore team contributions; You will

Bekijk vacature »

Microsoft BI ontwikkelaar binnen de financiël

Functieomschrijving Je gaat je als interne BI Specialist/Ontwikkelaar bezighouden met het doorontwikkelen/onderhouden van de Datawarehouse binnen een Devops/Scrum omgeving en het verbeteren van functionaliteiten voor interne klanten. Naast de Datawarehouse werkzaamheden ben jij tevens de specialist op het gebied van Microsoft SQL Server (SSIS, SSAS, SSRS, Power BI, DataVault en Dimensional modelling. Functie-eisen - Je hebt minimaal een HBO opleiding afgerond; - Je hebt minimaal 3+ jaar relevante werkervaring met een vergelijkbare functie; - Je beheerst de hele Microsoft BI Stack (SSIS, SSAS, SSRS); - Je beschikt over ruime ervaring met het programmeren van ETL processen; - Je beschikt over

Bekijk vacature »

Senior Application Developer

The world wants simple apps that can manage the movements of millions of packages daily. But behind every application is a complex string of gripping challenges, and a focused developer tackling them. As someone who’s highly familiar with C# development practices in the Netherlands, you’ll join us as a senior member of the team and manage apps for Brokerage – big business freight in global markets that cover over 76% of all international trade. Digital innovation plays a crucial role in choreographing the infinite movements of goods, funds and information. The logic that goes into it, and skills adopted because

Bekijk vacature »

Senior OutSystems Developer / International enviro

Functieomschrijving Would you like to work in a professional and international working environment and do you have extensive experience in the field of OutSystems? Apply now! Translate wishes and requirements into technical designs; Design and develop new software feautures and technologies, mainly in the field of logistics/planning; Maintainance, administration and improvement of the OutSystems platform; Solving issues and bugs within the software; Define and run test plans; Documentation of development and bugfixes; Constant improvement of the OutSystems platform and follow-up of newest innovations within this field. Functie-eisen Knowledge of and multiple of years experience with OutSystems is required. Experience with

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

21/10/2020 03:49:57
 
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.