Afhankelijke objecten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Front-end developer (React)

Functie Met een ontwikkelafdeling van ruim 20 collega’s is dit zo ongeveer de helft van alle medewerkers. De software(ontwikkeling) is dan ook de drijvende kracht binnen de organisatie. Ze werken aan het verbeteren dan de bestaande, maar zeker ook nieuwe producten. De software bestaat uit verschillende (React) webapplicaties, maar ook een mobile (React native) app. Hierdoor kom je met verschillende uitdagingen in aanraking en is Mobile kennis natuurlijk mooi meegenomen. De software wordt door vele duizenden professionals dagelijks gebruikt en bevatten grote hoeveelheden data. Aan het team de uitdaging om hierin de best mogelijke gebruiksvriendelijkheid neer te zetten door gebruik

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Laravel / PHP developer

Functie omschrijving Wij zijn op zoek naar een Medior PHP / Laravel Developer voor een IT-consultancy in de omgeving van Hoofddorp! Ben jij op zoek naar een leuke nieuwe uitdaging binnen een veelzijdige werkomgeving? Lees dan snel verder! Binnen dit bedrijf werk je in een ontwikkelteam, waarin je zeer betrokken bent en meedenkt over softwareoplossingen. Binnen dit Team hou je je bezig met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken;

Bekijk vacature »

.NET developer

Functie Als .NET developer wordt jij onderdeel van ons ICT team. In dit multidisciplinaire team ben jij samen met onze senior .NET ontwikkelaar en medior .NET ontwikkelaar verantwoordelijk voor ons ERP systeem. In dit systeem (Navision) ga jij leren ontwikkelen. Wij bieden jou dan ook een gedegen opleiding aan, samen met de ondersteuning van onze Senior .NET developer. Daarnaast ga jij aan de slag met ons portaal geschreven in Sharepoint. Verder ben jij verantwoordelijk voor EDI verkeer en het ontwikkelen binnen het ERP systeem en andere toepassingen en rapportages. Van jou wordt verwacht dat jij het proces goed leert kennen

Bekijk vacature »

Senior PHP developer

Functie Jouw werkzaamheden zullen grotendeels bestaan uit het in teamverband ontwerpen, vernieuwen en door ontwikkelen van het systeem. Het is echt back-end werk (bijvoorbeeld het doorontwikkelen van een API) en dit moet je dan ook liggen. Ze zijn niet persee gebonden aan talen of tools maar gebruiken graag de technieken die het beste aansluiten op de gegeven oplossing. Voor nieuwe (versies van) componenten maken ze veelal gebruik van Go(lang). Bij aanpassingen aan bestaande onderdelen gebeurt dit in PHP en C++. Het team is heel divers, er hangt een relaxte sfeer en ze organiseren regelmatig leuke music nights, game nights e.d.

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

PHP developer (Laravel/Vue.js)

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Sportieve Junior C#.NET developer gezocht!

Bedrijfsomschrijving Wil jij werken aan webapplicaties bij de marktleider binnen de branche? Voor een klant in de buurt van Oosterhout ben ik op zoek naar een Fullstack .NET developer. Dit bedrijf bestaat bijna 10 jaar en is inmiddels uitgegroeid tot marktleider in Nederland en heeft tevens kantoren in meerdere landen in Europa. Dit bedrijf bouwt webapplicaties waarbij internationaal enkele honderdduizenden deelnemers, soms tegelijk, een beroep doen op de realtime data uit deze applicaties. Dit brengt erg veel technische uitdaging met zich mee. Ze ontwikkelen nieuwe applicaties maar ook bestaande applicaties worden uitgebreid en verbeterd. Hier kan jij een onderdeel van

Bekijk vacature »

Digitale Tovenaar Gezocht: Junior Low-code/No-code

Bedrijfsomschrijving Duik mee in een wereld vol innovatieve avonturen waar gegevens en technologie een magische symbiose aangaan! Al meer dan twee decennia lang zijn we de tovenaars achter de schermen die oplossingen creëren voor de meest complexe klantcontactvraagstukken en datagedreven software-uitdagingen. Bij ons draait het om de kracht van samenwerking en groei. We zijn een hechte vriendengroep die samen bergen verzet om elkaar én onze klanten te laten schitteren. Jouw succes is ons succes en we streven ernaar om elkaar naar nieuwe hoogten te tillen, niet voor even, maar voor altijd. We willen dat jij je helemaal thuis voelt in

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn ze op zoek naar een Technische front end developer. Momenteel hun front end back end team gescheiden aan het werk. Hier willen ze verandering in krijgen. Omdat ook veel interne applicaties ontwikkeld worden zoeken ze iemand die hen kan helpen om de interne applicaties te voorzien van de juiste Vue.js componenten. Zodoende willen ze de interactie tussen front end en back end versoepelen en de volgende stap binnen het platform gaan zetten. Deze componenten die jij ontwikkeld zullen in elk project gebruikt worden. Het back end team bestaat momenteel uit 8 ontwikkelaars

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

C# .NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »
Jan terhuijzen

jan terhuijzen

29/11/2013 22:10:42
Quote Anchor link
Hallo,

Bij OOP doe je wel eens een object meegeven aan een ander object.
Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class A {
    private $_b;
    public function __construct(B $objVanB) {
        $this->_b = $objVanB;
    }

    public function doeIetsMetB() {
        $this->_b->doeIets();
    }
}

class B {
}

?>

Is dit goed gebruik van OOP?
Hierdoor worden klasses wel afhankelijk van elkaar, dus wil je klassen gaan hergebruiken, dan moet je de andere klassen mee nemen, omdat de ene klasse de andere nodig heeft.
Gewijzigd op 29/11/2013 22:14:06 door Jan terhuijzen
 
PHP hulp

PHP hulp

01/01/2025 07:23:06
 
Ozzie PHP

Ozzie PHP

29/11/2013 23:36:06
Quote Anchor link
Het komt vaak voor dat een class A class B nodig heeft, dus daar is op zich niks vreemds aan. Je moet wel proberen om het allemaal zo onafhankelijk mogelijk te programmeren en te zorgen dat je het niet te strict maakt.

Stel dat jouw class A een fabriek voorstelt die auto's in elkaar zet, dan zou het prettig zijn als deze fabriek niet alleen een auto/class B(MW) in elkaar kan zetten, maar ook overweg kan met een class A(lpha Romeo) en class C(itroën). Dus dat is wel iets om telkens goed over na te denken.
 
Wouter J

Wouter J

29/11/2013 23:53:58
Quote Anchor link
Ja, het is heel erg goed om andere klassen in andere klassen te gebruiken. Hierdoor weet je dat je de verantwoordelijkheden goed hebt verdeelt. Deze manier van injecteren van klassen heet Dependency Injection, een erg populair begrip in de PHP wereld tegenwoordig.

Er is echter 1 basis principe van OO die je goed in de gaten moet houden: Programmeer naar een interface, geen implementatie. Dit betekend dat je in jouw geval gelimiteerd bent tot alleen object B. Dat wil je niet, stel je hebt straks een andere implementatie van B die je C noemt, dan werkt het al niet.

Daarom maak je een interface. Een interface is een contract in OO. In een interface zeg je: Zodra een klasse een interface implementeert heb je toegang tot deze functies Stel we hebben een CacherInterface met een method fetch en save, dan weten we zeker dat wanneer de klasse dat interface implementeert we toegang hebben tot die methods. Zodra je dus alleen die methods gebruikt in je klasse ben je niet meer afhankelijk van die specifieke implementatie (bijv. FileCacher), maar je bent afhankelijk geworden van een interface (CacherInterface). Hierdoor open je de deur voor elke cacher implementatie.

Wil je nou nog wat door gaan in dit onderwerp ga je kijken naar een dependency injection container, ook wel service container genoemd. Dit is een klasse waarin je aangeeft hoe een service gemaakt moet worden. Een service is een klasse die een andere klasse injecteert (A in jouw geval) of een klasse die een andere nodig kan hebben (B in jouw geval).

De dependency injection container weet dus precies hoe een klasse gemaakt moet worden, jij hoeft dan alleen nog maar die klasse op te vragen:
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
30
31
32
33
34
35
<?php
$container
= new Pimple(); // zie https://github.com/fabpot/pimple

// registreer hoe je de router.cacher service maakt

$container['router.cacher'] = function ($c) {
    return new RoutingFileCacher();
};

// en de router
$container['router'] = function ($c) {
    return new Router($c['router.cacher']); // de Router injecteert de cacher implementatie
};

class Router
{
    private $cacher;

    public function __construct(CacherInterface $cacher)
    {

        $this->cacher = $cacher;
    }


    // ...
    public function getRoutes()
    {

        $routes = $this->cacher->fetch('routes'); // door het contract van het interface weten we dat deze method beschikbaar is

        if (!$routes) {
            $routes = ...; // load de routes
            $this->cacher->save('routes', $routes);
        }


        return $routes;
    }
}

?>
 
Local Dev

Local Dev

30/11/2013 02:11:40
Quote Anchor link
Kijk ook eens naar AOP ( http://nl.wikipedia.org/wiki/Aspectgeoriënteerd_programmeren ), het gebruik hiervan lijkt mij beter/mooier met wat jij wilt bereiken.
Gewijzigd op 30/11/2013 20:07:27 door Local Dev
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/11/2013 09:58:59
Quote Anchor link
Ozzie PHP op 29/11/2013 23:36:06:
Het komt vaak voor dat een class A class B nodig heeft, dus daar is op zich niks vreemds aan. Je moet wel proberen om het allemaal zo onafhankelijk mogelijk te programmeren en te zorgen dat je het niet te strict maakt.

Stel dat jouw class A een fabriek voorstelt die auto's in elkaar zet, dan zou het prettig zijn als deze fabriek niet alleen een auto/class B(MW) in elkaar kan zetten, maar ook overweg kan met een class A(lpha Romeo) en class C(itroën). Dus dat is wel iets om telkens goed over na te denken.

Vind je?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class carFactory {

    private $car;

    public function __construct($carbrand) {
        $this->car = $carbrand;
    }

}

?>


Dit kan in PHP, maar heeft in mijn ogen helemaal niets met OOP te maken.
Je maakt hier een object dat niet van te voren weet wat zijn verantwoordelijkheid is.
Gewijzigd op 30/11/2013 09:59:29 door Ger van Steenderen
 
Ozzie PHP

Ozzie PHP

30/11/2013 12:01:20
Quote Anchor link
Die verantwoordelijkheid kun je afdwingen met een interface. Het ging me erom dat je niet te strict programmeert en daarmee het gebruik van je classes beperkt. Zie ook het voorbeeld van Wouter.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/11/2013 12:46:27
Quote Anchor link
Het voorbeeld van Wouter is vrij strict:
public function __construct(CacherInterface $cacher)

Maar jij zegt in de laatste alinea dat een class(fabriek) met verschillende typen objecten(automerken) overweg moet kunnen.
 
Ozzie PHP

Ozzie PHP

30/11/2013 12:55:06
Quote Anchor link
Het was maar een voorbeeldje Ger om duidelijk te maken dat je je niet teveel moet beperken. Die fabriek moet weten dat ie bij iedere auto 4 banden een stuur, stoelen, een motor en carosserrie in elkaar moet zetten. Het zou jammer zijn als die geweldige fabriek uitsluitend een Opel Astra 1.2 in elkaar kan zetten en verder niets. Het zou leuk zijn als ie ook andere modellen in elkaar kan zetten. Het was gewoon een voorbeeldje.
 
Wouter J

Wouter J

30/11/2013 13:14:50
Quote Anchor link
Het zou helemaal niet jammer zijn als de fabriek uitsluitend Opel Astra's kan maken, sterker nog, dat is precies wat er in de echte wereld gebeurd.
 
Ozzie PHP

Ozzie PHP

30/11/2013 13:15:59
Quote Anchor link
Ik hoop toch dat ie ook een Astra 1.4 1.6 enz. in elkaar kan zetten.
 
Jan terhuijzen

jan terhuijzen

30/11/2013 13:37:00
Quote Anchor link
Hoe werkt dat precies met interfaces als parameters doorgeven? Ik kom er sinds 2 dagen achter dat je een interface kunt doorgeven als een parameter.
Wat gebeurt er dan?
Je slaat dan een interface op als property van een object, maar met een interface kun je toch niks doen? Want het is gewoon een lijst met methods.
 
Wouter J

Wouter J

30/11/2013 16:38:59
Quote Anchor link
Nee, je geeft geen interface mee. Je geeft aan dat een object een child moet zijn van dat interface.

Met het geen je voor een parameter zet geef je aan welk type class het moet zijn. Bijvoorbeeld:
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
<?php
class Database
{
    public function __construct(PDO $db)
    {

        // ...
    }
}


$pdo = new PDO(...);
$db = new Database($pdo); // werkt, het eerste argument is een instance of PDO

$mysqli = new MySQLi(...);
$db = new Database($mysqli); // error, het eerste argument is een instance of MySQLi, niet PDO
?>


Dit voorbeeld werkt met exacte klassen, je kan ook met child klassen en dus ook met interfaces type hinten:
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
30
31
32
33
34
35
36
37
38
39
<?php
class RouteLoader
{
    public function __construct(CacherInterface $cacher)
    {

        // ...
    }
}


interface CacherInterface
{
    public function fetch($id);
    public function save($id, $data);
}


class FileCacher implements CacherInterface
{
    // ...
}

class DatabaseCacher implements CacherInterface
{
   // ...
}

class VerkeerdeCacher //! let op, implementeert niet CacherInterface
{
    // ...
}

$cacher = new FileCacher(...);
$loader = new RouteLoader($cacher); // werkt, 1e argument implementeert CacherInterface

$cacher = new DatabaseCacher(...);
$loader = new RouteLoader($cacher); // werkt ook, 1e argument implementeert weer CacherInterface

$cacher = new VerkeerdeCacher(...);
$loader = new RouteLoader($cacher); // werkt niet, 1e argument implementeert niet CacherInterface
?>
 
Reshad F

Reshad F

30/11/2013 20:00:28
Quote Anchor link
Wouter, Even terug naar die dependency injection. Is het nou zo dat je voor elke interface een andere service container hebt of heb je 1 service container voor je hele applicatie?

Ik heb DI nooit echt gebruikt moet ik zeggen maar is dit niet iets wat je in principe zou kunnen gebruiken ipv een singleton?
 
Wouter J

Wouter J

30/11/2013 20:21:06
Quote Anchor link
> Is het nou zo dat je voor elke interface een andere service container hebt of heb je 1 service container voor je hele applicatie?

1 voor heel je applicatie.

> Ik heb DI nooit echt gebruikt moet ik zeggen maar is dit niet iets wat je in principe zou kunnen gebruiken ipv een singleton?

Ja, behalve dat je singletons vanuit een object gebruikt en je bij een service container juist ervoor zorgt dat het object niet weet welke klasse hij krijgt. Maar wil je meer weten, maak even een nieuw topic :)
 



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.