[oop] class locken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP developer

Functie omschrijving Voor een klein bedrijf in de buurt van Nieuwegein zijn wij per direct op zoek naar een talentvolle PHP developer. Er wordt veel ruimte geboden voor eigen initiateven, waardoor je een mooie stempel kan drukken op jouw eigen werkzaamheden (zowel operationeel als strategisch). Het bedrijf heeft middels externe programmeurs een multimedia platform ontwikkeld, maar willen geleidelijk de ontwikkeling naar binnen halen. Om die reden zoeken zij een communicatieve interne PHP developer die graag meebouwt aan het succesvolle product. Je gaat de volgende werkzaamheden verrichten: Platform beheren en programmeren (PHP, MySQL, JQuery, Javascript, XML & HTML); Communicatie en aansturing

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in ons development team met twee andere .NET developers. Als team werken jullie in scrum en is er iedere ochtend om 11.00 een standup. Jij krijgt als junior .NET ontwikkelaar een inwerk traject dat echt specifiek wordt ingericht op basis van wat jij nodig hebt. Een van de grootste pluspunten bij ons is dat wij binnen ons bedrijf veel (technische) vrijheid geven en juist eigen initiatieven erg stimuleren. Jouw werkzaamheden gaan er bij ons als volgt uit zien: – Het ontwikkelen van nieuwe software samen met interne en eventueel externe ontwikkelaars; – Het

Bekijk vacature »

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

Ervaren C#.NET developer

Functieomschrijving We zijn op zoek naar een ervaren C#.NET programmeur voor een moderne werkgever in de regio Prinsenbeek. Als programmeur zal je bezig zijn met het ontwikkelen van op maat gemaakte webapplicaties voor verschillende klanten, waarbij je ervoor zorgt dat complexe processen zo goed mogelijk worden ondersteund. Je takenpakket omvat onder andere: Werken met databases en dataopslagoplossingen, implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens, evenals het schrijven van technische documentatie en gebruikershandleidingen. Het ontwikkelen en onderhouden van C#.NET-applicaties. Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen. Het schrijven van hoogwaardige en herbruikbare codes.

Bekijk vacature »

Gezocht: .Net ontwikkelaars met een maatschappelij

Bedrijfsomschrijving Zoek jij als medior .Net ontwikkelaar een inspirerende werkplek bij een bedrijf met maatschappelijk verantwoordelijkheidsgevoel? Dan is deze vacature je op het lijf geschreven. De organisatie bestaat ruim 20 jaar en ze ontwikkelen in house applicaties waarmee de zorgsector enorm mee gebaat is. Jouw applicaties worden gebruikt door duizenden gebruikers waardoor je echt een waardevolle bijdrage kan leveren aan de maatschappij. Het bedrijf is zeer innovatief en vindt een goede werk/privé balans belangrijk. Je krijgt alle mogelijkheden om jezelf verder te ontwikkelen, je werktijden in te delen en daarnaast is het ook mogelijk om deels thuis te werken. Het

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Gorinchem zijn wij op zoek naar versterking. Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back end werken! Bedrijfsprofiel Onze

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Modern, innovatief en Informeel bedrijf waar veel mogelijk is Werken met diverse robot merken Meehelpen met inbedrijfstellingen bij de klant De organisatie Hier ga je aan de slag Dit groeiende bedrijf van totaaloplossingen in de automatisering van productieprocessen, is hoofdzakelijk actief in de Benelux. Vanuit het kantoor in regio Amersfoort worden veel oplossingen geboden in de vorm van robotica. Geen project is hetzelfde wat garant staat voor bijzonder veel afwisseling. De bedrijfsgrootte is ongeveer 80 man. Van gerobotiseerde machinebeladingen tot aan assemblage automatiseringen wordt vanuit krachtige engineering maatwerk equipment geleverd.

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Software Developer

Functie omschrijving Heb jij affiniteit met ICT en een WO diploma in de pocket? Dan ben je hier aan het juiste adres. Voor een opdrachtgever in Amsterdam zijn wij op zoek naar kandidaten die (enige) ervaring hebben met Java, Javascript, C of C++. Je zal door middel van trainingen worden opgeleid tot een volwaardige Software Developer. Er wordt tijdens de training natuurlijk veel aandacht besteedt aan de vaktechnische aspecten, maar er gaat ook veel aandacht uit naar jouw persoonlijke ontwikkeling. Bedrijfsprofiel Bij deze opdrachtgever in de omgeving van Amsterdam zoeken ze meerdere enthousiaste kandidaten die hun carrière willen starten met

Bekijk vacature »

Low Code Developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten in heel het land! Wat ga je hier zoal doen? Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan

Bekijk vacature »

Medior front-end developer gezocht (€3.300 -

Functie Wat ga je doen? Jij als front-end developer gaat werken binnen de teams van/voor onze klant. Je werkt in een team met starters en ervaren ontwikkelaars met allemaal 1 overeenkomst; passie voor het vak. Maak je een fout? Geen probleem, leer ervan en ga dan weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en jezelf dus snel ontwikkelen. Wat hebben we jou te bieden? • Uitdagende projecten bij mooie klanten (bij jou in de buurt, of binnenkort intern vanuit ons kantoor!) • Een jonge organisatie met talentvolle collega’s • Veel ruimte voor

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

14/05/2014 17:53:17
Quote Anchor link
Ola,

Een vraagje... ik heb een class waarin ik data kan opslaan en deze class kan ik locken zodat er geen data meer aan kan worden toegevoegd.

Nu had ik dus in die class een is_locked() method gemaakt, zodat ik kan zien of een object gelockt is.

Echter, nu zit ik daar nog even over na te denken en nu vraag ik me af of die is_locked() method wel nodig is? Want, zo besef ik me ineens, het zou raar zijn om eerst te kijken of het object gelockt is, en zo nee om dan pas gegevens toe te voegen. Blijkbaar wil je gegevens toevoegen en mag het object op dat moment simpelweg niet op slot zitten. Dus hoef je dit ook niet te testen!

Zijn jullie het eens met mijn gedachte dat het dus onzin is om een is_locked() method te hebben?
 
PHP hulp

PHP hulp

23/11/2024 15:57:46
 
Reshad F

Reshad F

14/05/2014 18:49:24
Quote Anchor link
Ja
 
Ward van der Put
Moderator

Ward van der Put

14/05/2014 20:14:21
Quote Anchor link
Ik vond de eerdere uitleg van Wouter over verantwoordelijkheden op vier niveaus eigenlijk wel aardig. Die is_locked() hoort er namelijk hooguit in als je de verantwoordelijkheid bij de klasse zelf legt.
 
Ozzie PHP

Ozzie PHP

14/05/2014 20:28:23
Quote Anchor link
@Reshad:

>> Ja

Oké.

@Ward:

Ik snap niet helemaal wat je bedoelt. Of ik begrijp jou niet, of jij mij niet.

De vraag is, is die is_locked() method überhaupt nodig. In 1e instantie dacht ik van wel. In 2e instantie van niet, want waar heb ik die eigenlijk voor nodig?

Stel ik wil iets toevoegen aan een class, dan is het raar om eerst te checken of ik wel iets kan toevoegen. Blijkbaar wil ik iets toevoegen, en als op dat moment heb object op slot zit, dan zit er blijkbaar iets fout in m'n logica. Of zie jij dat anders?
Gewijzigd op 14/05/2014 20:32:34 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

14/05/2014 20:34:51
Quote Anchor link
Soms is het nuttig, meestal niet. Je kunt bijvoorbeeld een class hebben die tijdelijk read-only moet zijn.

Vervolgens is de vraag of je dat dan wel moet afhandelen met een is_locked(). Dat zou je kunnen doen als je het op het niveau van de klasse zelf wilt oplossen, maar je kunt het ook oplossen op de drie andere niveaus die Wouter noemde: de setters, een hiërarchie van klassen of de applicatie.
 
Ozzie PHP

Ozzie PHP

14/05/2014 20:41:26
Quote Anchor link
>> Soms is het nuttig, meestal niet. Je kunt bijvoorbeeld een class hebben die tijdelijk read-only moet zijn.

Kun je een voorbeeld geven?

De class die ik nu heb kun je alleen locken en niet unlocken. Stel je krijgt bijv. externe data binnen, dan kun je het object locken zodat je geen data kunt toevoegen of wijzigen.

Nu had ik dus keurig een public is_locked method gemaakt, zodat een andere class kan testen of het object gelocket is. Het idee was zeg maar dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

if (!$foo->is_locked()) {
  $foo->add($bar);
}


?>

Maar achteraf zat ik dus te bedenken... oké.. ik wil iets toevoegen, maar stel dat het object wél gelocked is. Wat dan? Dan kan ik dus de data niet toevoegen. En dat slaat volgens mij nergens op. Dus, ik wil iets toevoegen, maar ojee... het object zit op slot dus dan voeg ik maar niks toe. Volgens mij, en zeg het me aub als ik het verkeerd zie of als ik iets over het hoofd zie, slaat dat nergens op. Volgens mij moet je op het moment dat je iets gaat toevoegen simpelweg zelf 100% zeker weten dat dit ook kan. En vanuit dat oogpunt heeft volgens mij die is_locked() method dus geen enkele toegevoegde waarde. Mee eens?
 
Ward van der Put
Moderator

Ward van der Put

14/05/2014 20:55:34
Quote Anchor link
Uitputtelijke resources zijn een voorbeeld. Tijdens het formatteren van een harde schijf kun je er bijvoorbeeld niets op opslaan.

Een ander voorbeeld is een active record pattern voor objecten die maar door één gebruiker of proces tegelijk kunnen worden gewijzigd.

Voor al die situaties geldt, zoals gezegd, dat het ook anders kan, zonder is_locked(). Je zou bijvoorbeeld de setters tijdelijk dienst kunnen laten weigeren. Of je legt de verantwoordelijkheid bij de applicatie en laat die de toestand van het systeem als geheel controleren.
 
Ozzie PHP

Ozzie PHP

14/05/2014 21:03:20
Quote Anchor link
Hmm... oké.. ik denk dat de situaties die jij noemt niet van toepassing zijn op de objecten die ik voor ogen heb.

Bij mij gaat het gewoon om objecten die onderdeel zijn van het framework. Ik zou bijv. in zo'n object de POST data kunnen opslaan. Door het object te locken, voorkom ik dat iemand de POST data kan wijzigen, want dat wil je natuurlijk niet. Maar die is_locked method voegt dus niets toe, dus die sloop ik eruit.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/05/2014 21:15:58
Quote Anchor link
Huh?
Je request object kan je toch nooit vanuit de applicatie wijzigen?
 
Ozzie PHP

Ozzie PHP

14/05/2014 21:18:03
Quote Anchor link
Wat bedoel je Ger? Hangt er vanaf hoe je het programmeert toch? Ik lock de objecten, dus dan kun je het inderdaad niet wijzigen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/05/2014 21:27:44
Quote Anchor link
Je komt zelf met het voorbeeld van POST.
Dat object valt toch niet te wijzigen, dus om daar adder/setter methods aan toe te voegen is pure onzin.
 
Ozzie PHP

Ozzie PHP

14/05/2014 21:32:12
Quote Anchor link
Ah oké.. ik gebruik een universele class waar dat al in zit en daar is het zeker geen onzin. Maar voor de verdere discussie is dat een irrelevant detail.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/05/2014 21:38:54
Quote Anchor link
Als jij één universele class bouwt, voor wat dan?
Ik denk dat het binnen OOP zeer significant is.
 
Ozzie PHP

Ozzie PHP

14/05/2014 21:42:50
Quote Anchor link
Het is een class om data vast te houden. Het kan bijv. POST data zijn, of COOKIE data, maar ook configuratie data, of data afkomstig van een externe partij. Sommige frameworks noemen het ook wel een parameter bag. Het voordeel is dat je niet voor alles een niewe class hoeft te maken, maar gewoon één universele class gebruikt.
 
Wouter J

Wouter J

14/05/2014 22:48:34
Quote Anchor link
Vervolgens maak je dus ook een LockedParameterBag of een ImmutableParameterBag of hoe je het ook noemt, die alleen maar getters bevat.
 
Ozzie PHP

Ozzie PHP

14/05/2014 23:46:45
Quote Anchor link
Hoe moet ik dan zonder setters de informatie setten? :-s
 
Ward van der Put
Moderator

Ward van der Put

15/05/2014 07:04:59
Quote Anchor link
Je kunt de setters private in plaats van public maken en vervolgens de parameter bag via de constructor vullen:

public __construct(array $parameters = array()) {...}
 
Ozzie PHP

Ozzie PHP

15/05/2014 13:01:42
Quote Anchor link
Dat zou kunnen, maar daar zie ik zelf wel nadelen aan. Ik zou dan rechtstreeks vanuit de constructor setten, en niet met aparte setters werken. En, het kan ook zo zijn dat ik op meerdere plekken iets wil toevoegen en de class daarna pas wil locken. Dat gaat in deze opzet niet.
 
Ward van der Put
Moderator

Ward van der Put

15/05/2014 13:09:11
Quote Anchor link
Je zou het bijvoorbeeld ook met de setters zelf kunnen regelen, een van de andere alternatieven. Laat de setters alleen parameters accepteren die nog niet in de locked paramater bag voorkomen. Komt een parameter wel voor, dan wordt die geweigerd of genegeerd. De verantwoordelijkheid over de juistheid van de parameters plaats je bij validators buiten de parameter bag, zodat je parameter bag uitsluitend bruikbare data bevat.
 
Ozzie PHP

Ozzie PHP

15/05/2014 13:13:21
Quote Anchor link
Maar ik snap niet echt wat je bedoelt Ward. Ik heb gewoon een object met setters en getters. op het moment dat je het object locket, dan kun je geen gegevens meer wijzigen/toevoegen/verwijderen. Doe je dat wel, dan volgt een exception. Dat is toch een prima oplossing? Of zie ik iets over het hoofd?
 
Ward van der Put
Moderator

Ward van der Put

15/05/2014 13:47:35
Quote Anchor link
Je kunt de storage "semi-permeabel" maken. Zó kun je er van alles insteken en weer uithalen, maar iets dat eenmaal vastligt, blijft vastliggen:

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
<?php
class ImmutableParameterBag
{
    private $Parameters = array();

    public function set($key, $value)
    {

        if (!array_key_exists($key, $this->Parameters)) {
            $this->Parameters[$key] = $value;
        }
    }


    public function get($key)
    {

        if (array_key_exists($key, $this->Parameters)) {
            return $this->Parameters[$key];
        }
else {
            return null;
        }
    }
}

?>


Het hangt er echter nogal van af:

- wil je in één keer een locked object hebben (gebruik bijvoorbeeld de constructor);

- wil je meer gecontroleerd in stappen read-only data hebben (gebruik bijvoorbeeld de setters);

- wil je een open object hebben dat alleen op afroep locked wordt (gebruik bijvoorbeeld een methode).

Wáárom wil je data of objecten locked maken? Die vraag hoort er eigenlijk aan vooraf te gaan.
 

Pagina: 1 2 volgende »



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.