[oop] class instantiëren blokkeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Programmeur / Developer

Voor een familiebedrijf in Doetinchem, actief in de machinebouw voor de food-sector, zijn wij op zoek naar een programmeur / developer. In deze functie ben je werkzaam in een team van 5 medewerkers. Je werkzaamheden bestaan onder andere uit het verhelderen van requirements vanuit de opdrachtgever, de klant en de afdeling ontwikkeling. Je verricht haalbaarheidsstudies en werkt specificaties uit die je afstemt met de opdrachtgever. Je ontwerpt design in software en stemt af met je collega's. De huidige vision-systemen zijn geschreven in C software, welke draait op een CUDA platform. Je schrijft en codeert software en zal gaan testdraaien. Tot

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

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 Capelle aan den IJssel 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

Bekijk vacature »

Senior Java developer

Dit ga je doen Jouw taken als Senior Java Developer zijn: Het maken van strategische keuzes omtrent de nieuwbouw van applicaties; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java FX, JDBC, SQL, REST, Jax-RS, JSON, Maven, JUnit en Spring (boot)); Reviewen van code en feedback geven op collega developers; Analyseren en oplossen van bugs/incidenten door het onderlinge verband te kunnen leggen van verschillende losstaande systemen. Hier ga je werken Het bedrijf waar je als Senior Java Developer komt te werken staat internationaal bekend om het testen van bodemstructuren door middel van echotechnieken en beeldherkenning.

Bekijk vacature »

Software Developer PHP JavaScript Python HBO SQL

Samengevat: Wij zijn een softwarebedrijf voor Autodealers. Ben jij een Medior of Senior Software Developer? Heb je ervaring met PHP, JavaScript of Python? Vaste baan: Java.Developer Software HBO €3.000 - €5.200 Bij ons op de werkvloer is er een positieve en informele sfeer. Naast een goede begeleiding en een enthousiaste klantenkring biedt deze werkgever een prettige omgeving met zeer afwisselende werkzaamheden. Houd jij van aanpakken en denk je dat je deze uitdaging aankunt? Dan zoeken wij jou! Zij werken voor grote klanten. Zij doen omvangrijke projecten die we bij deze werkgever op kantoor realiseren (geen detachering). Zij werken met state-of-the-art

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een uitdagende werkgever in regio Breda zijn wij op zoek naar een Full Stack C#.NET programmeur. Je bent verantwoordelijk voor het ontwikkelen van apps, webapplicaties en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines te scannen en vervolgens de data om te zetten in management informatie voor de klanten. Taken en verantwoordelijkheden: Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks, HTML, TypeScript, SQL & C++, CSS. Geen ervaring met één van deze technologieën is dan ook geen enkel probleem! Deze werkgever biedt

Bekijk vacature »

Junior PHP Developer

Functieomschrijving Junior PHP Developer gezocht! Voor een opdrachtgever in de regio Gelderland zijn wij op zoek naar een Junior PHP Developer die onderdeel gaat worden van het ontwikkelingsteam van deze organisatie. In deze functie ga jij aan de slag met het schrijven van software voor de aansturing van en het managen van windparken en bijbehorende onderdelen. Hiernaast ga jij je bezighouden met het ontwikkelen, testen en onderhouden van diverse webapplicaties. Het team waarin je komt te werken bestaat uit 3 developers, hierdoor krijg je veel verantwoordelijkheid en de kans om jezelf verder te ontwikkelen. Er wordt echter wel van je

Bekijk vacature »

Front-end Developer

Gezellige team, passie en een groene toekomst! Lees hier de vacature van Front-end Developer bij All in Power! All in power heeft zich tot doel gesteld écht bij te dragen aan de energietransitie. Dit doen wij door de markt voor energie volledig op zijn kop te zetten. Producenten van schone (wind- of zonne-)energie verkopen via ons platform hun energie rechtstreeks aan gebruikers. Of dit nu huishoudens, bedrijven of bijvoorbeeld laadpalen zijn ons platform maakt het uitwisselen van energie mogelijk. Zo maken we de business case van onze klanten veel sterker en loont het om (meer) te investeren in vergroening voor

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Outsystems Developer Medior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als ervaren Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van de

Bekijk vacature »

Front-end developer (Medior/Senior)

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

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 »

.NET developer WO niveau voor predictive software

Bedrijfsomschrijving Dit bedrijf uit Den Bosch is om precies te zijn 15 medewerkers groot en ze ontwikkelen (predicitve) planning software. Dit doen zij voor allerlei mooie en bekende organisaties (bierbrouwerijen, gemeentes, oliemaatschappijen en diverse multinationals). Wegens meer en grotere vraag vanuit de klanten komen er nu posities vrij voor onder andere een .NET developer. Het bedrijf is goed met openbaar vervoer te bereiken. Functieomschrijving Je komt hier te werken in een team van 3 .NET developers en bent betrokken bij het gehele ontwikkelproces. Dus van idee naar ontwerp en van ontwikkeling tot testen en implementatie. Bij voorkeur ben je niet

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »
Ozzie PHP

Ozzie PHP

22/04/2014 20:03:32
Quote Anchor link
Ola,

Ik heb een class met daarin een paar constant values. Verder doet die class niks, en daarom wil ik voorkomen dat de class geinstantieerd kan worden.

Volgens mij zijn daar 2 manieren voor:
- de class abstract maken, óf...
- een private constructor in de class zetten

Heeft een van deze methodes een voorkeur? Maakt het iets uit? Of is er nog een andere manier?
 
PHP hulp

PHP hulp

25/04/2024 18:52:21
 
Wouter J

Wouter J

22/04/2014 20:08:34
Quote Anchor link
Waarom zou je jezelf willen limiteren?

Voel je nu niet aangevallen, maar ik ontdek de laatste tijd erg in jouw vragen dat jij je applicatie heel erg wilt limiteren. Je wilt dat alles alleen uitgevoerd/gebruikt kan worden op de manier die je nu in je hoofd hebt. Uit ervaring, die jij waarschijnlijk wel kan delen, weet ik dat ik over hetzelfde problem over een paar maanden compleet anders denk. Ik zou dus iedereen altijd aanraden een applicatie zo open mogelijk te schrijven, "Open for extension, closed for modification" zoals het open/closed-principe zo mooi zegt.
 
Ozzie PHP

Ozzie PHP

22/04/2014 20:12:02
Quote Anchor link
Dankjewel voor het meedenken. Je hebt daar wel een punt. Echter, omdat ik er zeker van ben dat er verder met deze class niks gaat gebeuren en het zinloos is om 'm te instantiëren vind ik het netter om 'm dicht te gooien. En misschien heb je gelijk dat ik er over een paar maanden anders over denk, maar voor nu wil ik 'm dichtmaken :) Alleen de vraag is dus wat de beste manier daarvoor is. Abstract is van de ene kant netter omdat ik dan geen constructor in m'n class heb staan. Maar als ie abstract is kun je m wel weer extenden :-s
 
Wouter J

Wouter J

22/04/2014 20:18:06
Quote Anchor link
Goed, dan gaan we hem helemaal dichttimmeren:
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
<?php
final abstract class MijnMagJeNietGebruiken
{
    const MIJ_WEL = 'Ja, ikke wel!!!';

    final abstract private function __construct() {}
    final abstract private function __wakeUp() {}
    final abstract private function __sleep() {}
    final abstract private function __clone() {}
    final abstract private function __call() {}
    final abstract private function __callStatic() {}
    final abstract private function __get() {}
    final abstract private function __set() {}
    final abstract private function __destruct() {}
}

?>
Gewijzigd op 22/04/2014 20:19:31 door Wouter J
 
Ozzie PHP

Ozzie PHP

22/04/2014 20:24:40
Quote Anchor link
Mja, da's toch een beetje jammer Wouter. Een abstract class kan niet final zijn :-)

On-topic. Om instantiëren te voorkomen. Abstract of private constructor?
 
Dos Moonen

Dos Moonen

22/04/2014 20:41:07
Quote Anchor link
PHP laat het bovenstaande niet toe...

Zijn het echt alleen maar een paar constante die je in een class hebt staan? Geen static methods?
Want dan zou ik gewoon constante defineren in een namespace. Dat is wat je wilt berijken door een class te hacken: constanten in een namespace stoppen. Stop in dat geval de constante gewoon in een namespace!
Ozzie\WeekDays::MONDAY vs Ozzie\WeekDays\MONDAY

PHP 5.6 heeft wel een coole nieuwe feature: http://3v4l.org/4peGi
 
Ozzie PHP

Ozzie PHP

22/04/2014 20:49:31
Quote Anchor link
>> Zijn het echt alleen maar een paar constante die je in een class hebt staan?

Ja inderdaad!

>> Zijn het echt alleen maar een paar constante die je in een class hebt staan?

Ik snap ff niet hoe dat werkt eigenlijk... Ik kan toc niet automatisch een namespace laden?
 
Dos Moonen

Dos Moonen

22/04/2014 21:15:57
Quote Anchor link
Emhe... zou je de tweede quote kunnen vervangen door de correcte quote? Ik weet niet waar je het nu over hebt.
 
Ozzie PHP

Ozzie PHP

22/04/2014 21:21:29
Quote Anchor link
Oh, excuus :-s
Die zat nog onder de ctrl-v knop :)

Het ging hier om:

>> Stop in dat geval de constante gewoon in een namespace!

Ik kan toch niet automatisch een namespace laden?
 
Ward van der Put
Moderator

Ward van der Put

22/04/2014 21:27:15
Quote Anchor link
Je kunt dergelijke constanten in een interface zetten. Het overriden van interface-constanten is niet toegestaan, dus daarmee bereik je zoiets als een "final abstract" constante.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
interface a
{
    const b = 'Interface constant';
}

?>

[/ocde]
 
Ozzie PHP

Ozzie PHP

22/04/2014 21:39:45
Quote Anchor link
Ward, volgens mij werkt dat niet.

Ik wil bijv. dit kunnen doen:

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

setLanguage(language::NL);

?>
 
Dos Moonen

Dos Moonen

22/04/2014 21:39:51
Quote Anchor link
"Ik kan toch niet automatisch een namespace laden?"
Tot PHP 5.6 kun je alleen classes/interfaces/traits importeren met het use keyword. https://wiki.php.net/rfc/use_function Heeft dat voor PHP 5.6 veranderd: je kunt functies en constanten ook importeren met het use keyword.

Is dat waar je het over had?
 
Ozzie PHP

Ozzie PHP

22/04/2014 21:54:35
Quote Anchor link
Dos, ik denk het niet.

Even een voorbeeldje om het idee duidelijk te krijgen. Ik wil ergens een language instellen aan de hand van constanten die in een language class staan. Dus zeg maar zoiets als dit:

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

namespace language;

class language {

  const NL = 0;
  const DE = 1;

}


?>

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

namespace user\preferences;

class preferences {

  public function setLanguage($language) {

  }

}


?>

En dan wil ik dit kunnen doen:

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

use user\preference\preferences;
use language\language;

$user_preferences = new preferences();
$user_preferences->setLanguage(language::NL);

?>

Die language class bevat alleen maar een aantal constanten, en daarom moet die class niet geinstantieerd kunnen worden.
Gewijzigd op 22/04/2014 21:55:49 door Ozzie PHP
 
Dos Moonen

Dos Moonen

22/04/2014 22:19:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

namespace language;

  const NL = 0;
  const DE = 1;

?>


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

use user\preference\preferences;
use language;

$user_preferences = new preferences();
$user_preferences->setLanguage(language\NL);

?>


Tada!
 
Ozzie PHP

Ozzie PHP

22/04/2014 22:22:58
Quote Anchor link
Thanks Dos, tot zover volg ik je nog.. :)

Maar... ik ben ff kwijt hoe ik dit nu moet inladen :-s

Ik gebruik een autoloader om classes te loaden.

Hier wordt de language class dus automatisch geladen.

$user_preferences->setLanguage(language::NL);

Maar hoe doe ik dat dan in jouw situatie? Ik kan die namespace toch niet automatisch laden?
 
Wouter J

Wouter J

23/04/2014 08:03:53
Quote Anchor link
Constants in interfaces werken weldegelijk. Misschien eerst testen voordat je een perfect antwoord naar de prullenbak verwijst?
 
Ozzie PHP

Ozzie PHP

23/04/2014 12:19:21
Quote Anchor link
Wouter, ik wilde eigenlijk eerst aan je vragen waarom je zo raar reageert, omdat ik dacht dat je het over de oplossing van Dos had. Maar toen zag ik dat het over de oplossing van Ward ging.

Die heb ik gisteren getest en toen deed ie het niet. Net nog een keer getest en nu doet ie het wel. Ik vermoed dat ik dus gisteren ergens een echo ben vergeten.

Dus ondanks dat ik je opmerking in eerste instantie totaal niet begreep... toch bedankt :)
En Ward ook bedankt!
 
Ward van der Put
Moderator

Ward van der Put

23/04/2014 12:22:11
Quote Anchor link
Graag gedaan, ik wilde al vragen waarom je zo reageerde ;-)
 
Ozzie PHP

Ozzie PHP

23/04/2014 12:27:56
Quote Anchor link
Hehe, sorry Ward...

Ik had het getest, maar ik denk echt dat ik de echo ben vergeten. Anyhow... gelukkig was Wouter nog daar om me even wakker te schudden.

Al met al een mooie en prima oplossing! :)
 



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.