OOP beginners opdracht

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gezocht: Ervaren VB6 developer met C# ambitie!

Bedrijfsomschrijving Dit bedrijf is een vooraanstaande softwareleverancier die gespecialiseerd is in het ontwikkelen van software pakketten voor autoschade herstel bedrijven. De software wordt gebruikt door meer dan de helft van alle autoschade herstel bedrijven in Nederland. Het team van professionals is op zoek naar getalenteerde collega developers die hun vaardigheden willen inzetten om het bedrijf te laten groeien. Functieomschrijving Voor dit bedrijf zoek ik een ervaren VB6 / VB.NET developer met interesse om op termijn verder te gaan in C#. In deze functie ben je verantwoordelijk voor het onderhouden van de bestaande softwarepakketten. Een deel van de code is nog

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 »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een softwarebedrijf gespecialiseerd in het ontwikkelen van logistieke software in omgeving Tilburg zijn wij op zoek naar een ervaren SQL database developer. Je gaat werken aan uitdagende, complexe projecten. Iedere klant/project betekent maatwerk in de database. Jouw werkzaamheden zullen er als volgt uit zien: Je bent verantwoordelijk voor de gehele ontwikkelstraat. Van architectuur tot ontwikkeling Je gaat je bezig houden met het ontwerpen en ontwikkelen van MS SQL server databases. Je gebruikt hiervoor T-SQL als programmeer laag. Je begeleidt als lead developer de projecten bij klanten van A – Z. Je sluit aan bij meetings met klanten,

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het development team. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met

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 »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

Software developer - senior

Functie omschrijving Voor een echt softwarebedrijf in omgeving Gouda zijn wij op zoek naar versterking voor de afdeling Software Development! Ben jij op zoek naar een werkgever waar meerdere software developers werken aan interessante projecten? Ben jij op zoek naar een werkgever waar je onderdeel wordt van een team dat echt passie heeft voor het ontwikkelen van software? Dan ben je hier aan het juiste adres! Als softwareontwikkelaar kom je terecht bij een onafhankelijk, door kwaliteit gedreven, doortastend en daarbij op een Agile wijze werkend bedrijf. Ben jij een expert in het vertalen van Componenten van Functionaliteit naar Business lagen?

Bekijk vacature »

Senior Front-end Developer

Wordt jij de nieuwe Front end specialist / developer? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel binnen als

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Junior/Medior Front-end developer

Functie Als Front-end developer werk je intensief samen met 1 van de UX-designers en denk je mee over de gebruiksvriendelijkheid en design van onze web- en mobile apps. Je bent betrokken bij sessies met gebruikers om designs te valideren en usability van de app-in-wording te testen. Vervolgens gebruik je dit om samen met je team waarin ook back-end (.NET) developers zitten, te zorgen voor de realisatie van de best mogelijke apps voor studenten en docenten. Eisen • Je hebt een hands-on development en coding mind-set en werkt graag aan een high quality code base welke je consequent onderhouden kan worden

Bekijk vacature »

Senior Mobile Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Senior Mobile Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

Medior Java developer

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 »
Mitchel V

Mitchel V

11/03/2011 00:03:42
Quote Anchor link
Hallo.

Ik heb een paar tuts gevolgd en ik wil nu gewoon wat spelen er mee.
Maar wat is een leuke en leerzame opdracht om uit te voeren?

Iemand een goed en leuk idee?
 
PHP hulp

PHP hulp

26/12/2024 03:14:44
 
Jordi Kroon

Jordi Kroon

11/03/2011 00:09:51
Quote Anchor link
Maak een formulier met waneer de gebruiker op submit drukt , zijn of haar naam verschijnt
 
Write Down

Write Down

11/03/2011 00:17:21
Quote Anchor link
Jordi kroon op 11/03/2011 00:09:51:
Maak een formulier met waneer de gebruiker op submit drukt , zijn of haar naam verschijnt


Slecht voorbeeld. Dat geeft de kracht van OOP niet weer. Ik ga er vanuit dat je al iets gevorderd bent wanneer je aan OOP start. Dus je hebt wellicht al eens een authenticatie systeem gemaakt. Probeer het nu eens in OOP en post het hier. Je kan heel simpel beginnen. Door gewoon bijvoorbeeld de gebruiker laten te inloggen.
 
Mitchel V

Mitchel V

11/03/2011 00:38:13
Quote Anchor link
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
<?php
// nieuwe class gebruiker
class gebruiker{
    // public, want iedere gebruiker heeft dat
    public $naam;
    
    // funtie setnaam
    public function setNaam($name) {
        // $naam defineren
        $this->naam = $name;
    }

    
    //functie getnaam
    public function getNaam() {
        // $this->naam terug geven
        return $this->naam;
    }
    
}


// kijken over een POST request is.
if($_SERVER['REQUEST_METHOD'] == "POST"){
    //zo ja..
    // Class gebruiker maken

    $user = new gebruiker();
    //$naam defineren door setNaam
    $user->setNaam($_POST['naam']);
    
    // uit lezen wat hier boven gedefineerd is.
    echo $user->getNaam();
}


//Formulier
echo '<form method="post">
<input type="text" name="naam" value="'
.$_POST['naam'].'"> <input type="submit" value="Verstuur naam">
</form>'
;
?>


Maar dan vraag ik mij af, waarom zoveel tekst als ik met $_POST['naam'] het zelfde resultaat geeft.
dat zit op een of andere manier mij zo tegen :P
Daarom vind ik dit heel lastig om op te pakken en tuts te volgen.

maar ik moet even door zetten..
Wat ik van de Public, en private begrijp:

Public.
Public is wat naar buiten worden gebracht

Private.
Private is wat binnen de class wordt gebruikt, BV tellen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php private $i; ?>


en $this->iets is een waarde, ik niet niet precies wat het meer is dan $iets...

wat kan ik nog meer doen..
 
Write Down

Write Down

11/03/2011 01:07:21
Quote Anchor link
Ik ga eerst even je script bespreken. Ik ga daarin ook wel direct de link leggen naar public / private / protected.

Het eerste wat me opval is "class gebruiker". Op zich niets mis mee, maar er zijn enkele gangbare afspraken i.v.m. naamgeving. Blache (moderator op dit forum) heeft dat duidelijk verwoord: http://phptuts.nl/view/45/6/

Verder is je redenering van public fout. Public betekent dat je in staat bent buiten de class die property kan aanspreken. Private betekent dat je dit enkel in de class zelf kan. Protected betekent dat een "afgeleide" class de property kan gebruiken maar buiten de class kan je het niet gebruiken.

In dit geval zou private beter zijn. Ik zie niet in waarom je de naam van een gebruiker buiten de class dient te benaderen.

De functie setname kan ik mee leven. Er zijn hier mensen die je zouden verwijzen naar __set, maar daar ben ik persoonlijk geen voorstander van. Wat je echter in dit geval wel kon doen, is gebruik maken van de costructor.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
/* let op: dit moet in je class */
__construct($sNaam) {
$this->_sNaam = $sNaam;
}


/* Procedurele code */
$oGebruiker = new Gebruiker('Mitchel');
 
?>


Voor de get zou je __get kunnen gebruiken. Maar ook daar is mijn standpunt hetzelfde als bij __set.

(get en set kan je wel gebruiken om het on-the-fly gedrag van PHP tegen te gaan)

Dat betreft de kritiek op het script.

Toegegeven, het is niet gemakkelijk om een goed voorbeeld te geven. Ik ga even proberen uit te leggen waar voor mij persoonlijk de grootste kracht van OOP is.

Stel dat je een class hebt die zorgt voor de gebruikers. Een andere class zorgt voor een bericht te plaatsen (op een forum / op een blog / ...).

$iUserPermission = $oUser->getUserPermission();
$oMessage->create($sMessage, $ $iUserPermission);

In de message-class, ga je kijken of de gebruiken bepaalde rechten heeft. Hoe je aan die rechten komt, maakt voor de message-class niets uit. Dat is een zorg voor de user-class. Omgekeerd geldt dat ook: hoe een bericht gemaakt wordt maakt voor de user-class niet uit. Nu stel, vandaag maak ik een systeem dat gebruikers opslaat in een txt-bestand. Ik lees dat uit en ik haal de permissies op van een bepaalde gebruiker. Die geef ik dan mee aan de message-class. De message class controleer of die permissies voldoende zijn.

Nou, morgen realiseer ik mij eigenlijk dat gebruikers in een txt-bestand opslaan misschien toch niet zo'n goed idee was van mij. Daarom besluit ik ze in een database-class op te slaan. Ik pas dus de user-class aan. De message-class die blijft hetzelfde.

Dit geeft niet de volledige kracht weer van OOP, maar toch al een heleboel. Met dit voorbeeld wil ik aantonen dat je op een eenvoudige manier aanpassingen aan je (iets grotere) applicatie kan doen, zonder dat je de hele werking dient aan te passen. Verder, als je het wat breder bekijkt, zie je ook dat ik de user-class gemakkelijk voor andere projecten kan gaan hergebruiken. Iets wat met procedurele code vaak lastiger is.

De andere sterktes van OOP kan ik jou moeilijk uitleggen. Die ga je wellicht pas zien eens je het idee echt door hebt. En dat idee, dat kunnen wij je proberen uit te leggen, maar als je het niet ziet, dan zie je het niet.
 
Pim -

Pim -

11/03/2011 09:27:58
Quote Anchor link
Waarom zou je de hongaarse notatie propageren in een loosly typed taal als PHP?
 
Write Down

Write Down

11/03/2011 09:55:51
Quote Anchor link
Pim - op 11/03/2011 09:27:58:
Waarom zou je de hongaarse notatie propageren in een loosly typed taal als PHP?


Iedereen heeft wellicht zijn persoonlijke mening hierover. De mijne is: duidelijkheid. Wanneer ik een $_sName of $this->_sName gebruik, kan ik zonder enig zoekwerk al wat nuttigs vertellen. Ik weet door de underscore dat ik de property ofwel private ofwel protected heb gezet. Ik weet eveneens door de "s" dat het hier om een string gaat.

Ik ben er mij van bewust, als je een script vandaag schrijft dat het geen meerwaarde heeft. Je weet in de meeste gevallen wel nog vanbuiten wat wat is. Maar herneem hetzelfde script binnen 1 maand nog is, zal al wat lastiger zijn.

Wat betreft loosly-typed, helemaal mee akkoord. In OOP vind ik dit persoonlijk soms ongewenst. Ik vind dat het niet mag dat je zomaar on-the-fly een property kan gebruiken. Ik los dit op via setter en getter. Wanneer dan iets wordt aangeroepen, toon ik een error dat ik stout ben. (dus om mezelf te het loosley typed gedrag tegen te gaan)
 
Wouter J

Wouter J

11/03/2011 10:06:25
Quote Anchor link
Mitchel V op 11/03/2011 00:38:13:
maar ik moet even door zetten..
Wat ik van de Public, en private begrijp:

Public.
Public is wat naar buiten worden gebracht

Private.
Private is wat binnen de class wordt gebruikt, BV tellen

Een tijdje geleden heb ik op dit forum een uitgebreide uitleg gegeven over public, private en protected: http://www.phphulp.nl/php/forum/topic/oop-visibility/76673/

En een goed script om te beginnen is een gastenboek. Zorg dat een bericht kan worden geplaatst en alle berichten kunnen worden getoond.

Mitchel V op 11/03/2011 00:38:13:
Maar dan vraag ik mij af, waarom zoveel tekst als ik met $_POST['naam'] het zelfde resultaat geeft.
dat zit op een of andere manier mij zo tegen :P
Daarom vind ik dit heel lastig om op te pakken en tuts te volgen.

Het tonen van een naam is inderdaad een beetje en onhandig voorbeeld. Want dat kun je veel sneller doen. Maar met bijv. een gastenboek zou je het zo kunnen 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
<?php

$wouter
= new User('Wouter J');
$pim = new User('Pim -');

$post = new Post();
$post->add('Wat een leuk gastenboek!', $pim->getName());
$post->add('Wat een leuk bericht!', $wouter->getName());

$gastenboek = new Book($post->getPosts());
echo $gastenboek->getContent();

?>
 
Jelmer -

Jelmer -

11/03/2011 10:11:49
Quote Anchor link
Ja, een gastenboek maken is een goed begin, en nog behoorlijk tricky als je zo ziet wat iedereen ervan bakt.

(zoals Wouter hierboven, User is uniek per user, maar Post is niet uniek per post? Je voegt twee berichten toe aan één Post? Hoezo voeg je berichten toe aan een Post? Je stopt toch juist Posts in een Book? Waarom van User een apart object maken als je alleen maar de naam wilt onthouden? Waarom maakt Book je gastenboek-html, dat zou ik liever in iets aparts hebben zodat ik dat los van Book kan aanpassen en verwisselen.)
 
Write Down

Write Down

11/03/2011 10:44:42
Quote Anchor link
@Jelmer

Hij voegt geen twee berichten aan 1 post toe. Per keer hij een add(paramters) aanroept, schrijft het het bericht weg naar de database. Al ben ik wel akkoord dat de bovenstaande code niet echt realistisch is. Normaal gezien, ga je 1 gebruiker en 1 bericht tegelijk behandelen bij een gastenboek. Verder sluit ik er me bij aan dat de werking van Book niet echt correct is. Het lijkt er nu op dat de class Book ook moet instaan voor de verwerking van berichten. Dat kan niet de bedoeling zijn. Book zou gewoon de weergave van het gastenboek moeten voorzien. (met bv. een aantal functies als setMessagesPerPage(int), orderMessages(ASC, [DATE]), selectMessages(5), ...)
Gewijzigd op 11/03/2011 10:46:32 door Write Down
 
Jelmer -

Jelmer -

11/03/2011 11:27:49
Quote Anchor link
Bij deze domain-specific objecten zoals Book en Post vind ik het wel te verantwoorden dat ze sterk afhankelijk van elkaar zijn. Ze zijn bedoeld om de structuur van de data te representeren in code, en de structuur van de data is in werkelijkheid ook sterk met elkaar verbonden. Dat het daardoor beperkend werkt is nu meer een voordeel dan een nadeel, je maakt het jezelf gemakkelijk door moeilijk te implementeren dingen onmogelijk te maken :)

Ik had zelf ook een gastenboek in een eerder topic geïmplementeerd, puur met als opzet OOP, maar wel KISS.
edit: en dan vergeet ik de link, pfff… http://phphulp.ikhoefgeen.nl/gastenboek.phps
Gewijzigd op 11/03/2011 11:28:13 door Jelmer -
 
Jasper DS

Jasper DS

11/03/2011 12:02:18
Quote Anchor link
Jelmer heeft over het gastenboek uitgelegd in dit topic
 
Write Down

Write Down

11/03/2011 12:08:29
Quote Anchor link
@Jelmer

Als je het inderdaad enkel en alleen voor een gastenboek gaat gebruiken, kan je zeggen dat de link tussen beide mag aanwezig zijn. Toch vind ik het niet onverstandig om de classes ieder hun eigen functie te geven. Neem bijvoorbeeld dat je op je site een nieuwsysteem hebt. Dan zou je de message class ook daarvoor kunnen gebruiken.
 



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.