OOP correct gedaan?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van Software Developer! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van ervaren

Bekijk vacature »

Medior/senior Back-end developer wanted!

Functie Because of the growth within the company, we are looking for reinforcement in the devlopmenttean. As a back-end developer you build the company software that helps us with the primary processes. A fun (internal) project in which you continuously develop the software! You will work in a small team, we have daily stand-ups and a scrum session every fortnight, led by our Scrum Master. During these sessions, you get the opportunity to present your ideas and discuss them with your fellow developers and the Product Owner. Within the development teams, we use Trello, Gitlab, Jiira, Confluence and Boockstack. They

Bekijk vacature »

Mendix Ontwikkelaar - Vernieuwen van het applicati

Bedrijfsomschrijving De ontwikkelingen in de transportsector gaan razendsnel. Bij ons kun je een belangrijke rol spelen in deze sector. We streven ernaar om onze klanten te ontzorgen op het gebied van continuïteit en veiligheid met innovatieve producten en diensten. We willen dat onze klanten de veiligste vervoerders van Europa worden. Ons team werkt hard om deze ambitieuze doelstellingen te bereiken en we bieden een motiverende werkomgeving aan. We zijn op zoek naar zelfstarters met een focus op resultaat en beslissingsbevoegdheid. Functieomschrijving Als Mendix ontwikkelaar bij deze organisatie heb je een gevarieerde baan. Het applicatielandschap wordt vernieuwd en de “schade en

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 »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

Bekijk vacature »

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

.NET developer

Functie Voor jou als junior .NET ontwikkelaar staat er een flinke uitdaging klaar bij dit bedrijf waar jij veel van kan gaan leren. Zo willen zij een flinke uitbreiding doen op het webbased gedeelte dat zij nu hebben en willen zij het standaard deel gaan moderniseren. Jouw team is dan ook op zoek naar een junior .NET ontwikkelaar die het leuk vindt om op basis van research en development aan de slag te gaan. Jouw mening telt mee als het gaat om hoe en met wat deze applicaties gebouwd en herschreven gaan worden. Jouw functie bij dit bedrijf gaat dan

Bekijk vacature »

Lasrobot Programmeur

Over de functie Off-line programma’s maken die het beste resultaat bij de lasrobot mogelijk maken De programma’s met behulp van teach verder optimaliseren Proactief meedenken over oplossingen en over de juiste invulling van lasmallen Het lasrobotproces zoveel mogelijk optimaliseren Over het bedrijf Onze opdrachtgever is gespecialiseerd in de engineering, productie en assemblage van samengestelde plaatwerkproducten en monodelen uit metaal. Onze klant werkt samen met het team aan de mooiste producten van de toekomst. Binnen dit bedrijf staat een sterk team van specialisten op het gebied van industrial design, mechanical engineering, in-house prototyping en all-round projectmanagement. Met daarbij uiteenlopende kennis in

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

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 »

Scrum Master

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Scrum master op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je begeleidt twee teams binnen de afdeling Platform Services (PLS). Je helpt mee de devops manier van werken van de teams verder door te ontwikkelen. Je helpt de PO bij het managen van de product backlog; het voorbereiden van

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor een informele club in omgeving Delft zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Als ontwikkelaar kom je terecht op een afdeling van 6 medewerkers. Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Er wordt voornamelijk gewerkt met PHP, Java en

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Software Developer C# / ASP .Net

Functie omschrijving Ben jij een software ontwikkelaar die bekend is met termen ASP .NET, C# en SQL? Lees dan snel verder! Voor een bedrijf binnen de agrarische sector zijn wij namelijk op zoek naar een zelfstandige, enthousiaste en proactieve Software Developer die open staat voor een afwisselende functie met veel uitdaging. Binnen deze organisatie ben jij als Software Developer samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Hierbij draag jij bij aan de vertaling van klantwensen naar effectieve softwareoplossingen. Daarnaast ben je verantwoordelijk voor: Schatten

Bekijk vacature »
- Raoul -

- Raoul -

12/08/2010 09:58:07
Quote Anchor link
Hallo,
heb iets kleins gescript in oop, maar is dit scriptje correct?

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
<?php

class a {

public $tekst;

public function echoSetWaarde($watte) {

$this->tekst = $watte;
}


public function echoToon() {
echo $this->tekst;
}

}


$gebruiker = new a();
$gebruiker->echoSetWaarde('flapDrol');

echo $gebruiker->echoToon();

?>
 
PHP hulp

PHP hulp

24/12/2024 14:43:28
 
Hipska BE

Hipska BE

12/08/2010 10:04:58
Quote Anchor link
Nee.

1) als je $tekst met getters en setters wilt aanspreken, maak hem dan zeker niet public. Neem hiervoor desgewenst private of protected (keuze hangt af als je wilt classes extenden)

2) waarom 'echo' voor je methode namen? Kan je beter gewoon weglaten.

3) je Toon() functie doet een echo. Beter is om daar return $this->tekst; te doen.


De rest is in orde gedaan.
 
- Raoul -

- Raoul -

12/08/2010 10:07:58
Quote Anchor link
Dankje, maar wat bedoel je moet classes extenden?
Wat maakt het verschil als ik geen public gebruik?

EDIT: Ik snap het al, dus de variablen moeten PRIVATE of PROTECTED zijn,
maar moeten de functions dat ook?
Gewijzigd op 12/08/2010 10:22:22 door - Raoul -
 
SilverWolf NL

SilverWolf NL

12/08/2010 10:25:33
Quote Anchor link
Raoul Blabla op 12/08/2010 10:07:58:
Dankje, maar wat bedoel je moet classes extenden?
Wat maakt het verschil als ik geen public gebruik?


Dan kan de waarde buiten het object niet veranderd worden. Klein voorbeeldje:
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
<?PHP
class a{
    public $a;
}


class b{
    private $b;
    public function setB($data){
        $this->b=$data;
    }

    public function getB(){
        return $this->b;
    }
}


$a=new a;
$a->a="dit gaat dus";
$b=new b;
$b->b="dit gaat niet (error)";
$b->setB("dit gaat wel weer");
?>


Ofterwijl je zorgt ervoor dat je variablen niet buiten de klasse aangepast kunnen worden.

protected zegt alleen dat als je je class extend, de child de waarde wel kan veranderen zonder setters en getters (dat je dan net zoals voorbeeld A kan doen binnen de child, maar niet daarbuiten)

Hopelijk helpt dat.

Edit:

Edit: functies zijn bijna altijd public, maar daarvoor geldt hetzelfde verhaal. Wil je dat een functie alleen binnen het object zelf gebruikt kan worden, kies je private/protected (ligt eraan of je gaat extenden), en in alle andere gevallen kies je public.
Gewijzigd op 12/08/2010 10:27:46 door SilverWolf NL
 
- Raoul -

- Raoul -

12/08/2010 10:27:08
Quote Anchor link
Dankje!
Dus je kan die B niet veranderen door b="test"; te doen dan ben je eigenlijk verplicht om de setB(); te gebruiken?


En heb mijn script wat verbeterd:
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
<?php

class A {

private $name;

public function showTheName() {

return $this->name;

}


public function setTheName($newName) {

$this->name = $newName;

}

}


$a = new A();
$a->setTheName('Test');

$b = new A();
$b->setTheName('Hehehe');

echo $a->showTheName()." -> ".$b->showTheName();

?>
Gewijzigd op 12/08/2010 10:31:11 door - Raoul -
 
Joren de Wit

Joren de Wit

12/08/2010 10:46:15
Quote Anchor link
Is inderdaad al beter. Nu zou je ook kunnen kijken naar het gebruik van de constructor om de extra aanroep van setTheName() overbodig te maken:

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
<?php
class A {
  private $name;

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


  public function setTheName($newName) {
    $this->name = $name;
  }

  
  public function returnTheName() {
    return $this->name;
  }
}


$a = new A('DeNaam');
echo $a->returnTheName(); // DeNaam

$a->setTheName('AndereNaam');
echo $a->returnTheName(); // AndereNaam

// etc...

?>


Kijk ook eens naar deze OOP Beginnershandleiding :-)
 
Jelmer -

Jelmer -

12/08/2010 10:51:36
Quote Anchor link
Beter :)

Even kort het idee achter private/protected/public: je schermt nu $name af van de buitenwereld, zodat alleen methods (functies) binnen je class deze kunnen lezen en schrijven. Waarom? Zodat je class de controle en de eindverantwoordelijkheid over $name houdt.

Stel dat $name aan een aantal eisen moet voldoen: Hij moet tussen de 3 en 20 tekens zijn, en het moet een string zijn. In je eerste voorbeeld was $name nog public. In je code zou je $x->name = array() kunnen doen, waardoor $name plots een array werd. Nu doet showTheName wel hele onverwachte dingen. Je verwacht een string van 3 en 20 tekens (immers, dat zijn de eisen van een geldige naam) maar krijgt een lege array!? Door setName() te voorzien van checks en $name private te maken, weet je zeker dat alleen setName gebruikt kan worden om $name een waarde te geven, en daarmee weet je zeker dat alleen dat wat door de checks van setName() komt ook als resultaat van showTheName() kan krijgen.

Nu is een naam een beetje te simpel voorbeeld. Maar stel dat je in je class een variabele hebt met arrays in arrays en dit een of andere complexe structuur oplevert. Door setters en getters te gebruiken weet je zeker dat zolang je class klopt, hij werkt omdat de structuur niet in de war geschopt wordt. Zou je zelf direct bij die structuur kunnen komen, dan is de kans vrij groot dat je een keer ergens een minder sterke controle op de correctheid van die structuur hebt staan, de structuur beschadigd, en je class niet meer werkt. En vind dan maar eens de oorzaak.

Daarnaast moet je dan de controle voor die structuur overal en nergens gaan toepassen. En dan kom je bij een tweede voordeel van classes: je hebt je code mooi compact bij elkaar. De controle van $name zit alleen in setName, en hoef je niet overal te hebben waar je met $name zit te frutselen.


Nog even als aanvulling op Blanche's voorbeeld: ik zou in de constructor niet $name direct toewijzen, maar $this->setTheName($name) aanroepen. Waarom? Nou, dat staat hierboven :) Omdat dan in setTheName alle controle voor een geldige naam kan zitten, en je het jezelf vrijwel onmogelijk maakt een niet-geldige naam toe te wijzen.
 
Johan Dam

Johan Dam

12/08/2010 10:55:02
Quote Anchor link
@blanche
Geen 2 functies maken die hetzelfde doen he, alleen maar lastig als je die functionaliteit ooit s gaat veranderen.

Kan je beter dit doen,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
...
public function __construct($name) {
  $this->setTheName($name);
}


public function setTheName($newName) {
  $this->name = $name;
}
...

?>
Gewijzigd op 12/08/2010 10:55:58 door Johan Dam
 
Joren de Wit

Joren de Wit

12/08/2010 10:57:00
Quote Anchor link
True, sluit me helemaal aan bij bovenstaande twee reacties :-)
 
- Raoul -

- Raoul -

12/08/2010 11:04:56
Quote Anchor link
Dankje, heb wat bijgeleerd vandaag :P
 



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.