[oop] abstract vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

PHP Programmeur

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda, ontwikkel je als PHP programmeur niet alleen webapplicaties, maar ben je verder ook gefocust op het constant inspelen op nieuwe innovaties m.b.t software ontwikkeling. Naast het ontwikkelen van webapplicaties, bouwt deze toffe werkgever ook webshops en websites voor hun opdrachtgevers. Wat ga je doen? Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klanten; Het ontwerpen en implementeren van webapplicaties met het Symfony framework; Het schrijven van een schone en efficiënte code volgens het Symfony framework; Onderhouden en updaten van bestaande applicaties die

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en staan

Bekijk vacature »

Front-end Developer

Dit ga je doen Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Mede-verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en API ontwerp; Participeren in diverse projecten t.b.v. optimalisatie van diverse applicaties; Het opzetten van API koppelingen met externe applicaties. Hier ga je werken Betreffende organisatie is gevestigd in de regio van Swifterbant en is al ruim 20 jaar lang bedreven in het ontwikkelen en aanbieden van

Bekijk vacature »

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 »

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 Dordrecht zijn wij op zoek naar versterking voor op de afdeling Software Development! 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

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Front end ontwikkelaar

Functie Het huidige team bestaat uit momenteel uit 5 back end developers verdeeld van senior tot junior. Omdat de gehele front end van applicaties anders gaan insteken zijn ze op zoek naar een ervaren Front end developer die hen kan helpen de juiste keuzes te maken. Je krijgt veel vrijheid om te bepalen hoe je dit wilt ontwikkelen en vrijheid in welke techniek je hiervoor wilt gebruiken. Je zult je dus bezighouden met architectuur, documentatie en natuurlijk ontwikkeling van nieuwe functionaliteiten binnen de verschillende applicaties. natuurlijk heb jij ook mogelijkheden om te sparren binnen het team, maar ze gaan uit

Bekijk vacature »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

Bekijk vacature »

PHP developer (Symfony, Doctrine)

Functie Als PHP developer wordt er een hoge mate van zelfstandigheid verwacht, maar ook dat je goed opereert in een team waar kennis wordt gedeeld en dingen als codereviews erg veel voorkomen. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden

Bekijk vacature »

Back-End Developer in Laravel / PHP

Functie omschrijving Wij zijn op zoek naar een Medior PHP Laravel Developer voor een gaaf bedrijf in de omgeving van Amsterdam! Voor een enthousiast team die zich graag bezig houdt met softwareontwikkeling zijn wij op zoek naar versterking. Je werkt in een klein ontwikkelteam en bent zeer betrokken bij alle aspecten van de softwareoplossingen. Van het ontwerpen tot de oplevering. Binnen deze functie ga je aan de slag met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je krijgt veel te maken met koppelingen naar systemen en de verzoeken van de klant. Je komt terecht in een team, waarbij

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

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 »

Medior/Senior Software Developers gezocht in de Ra

Functie Op dit moment staan er posities open voor de volgende functies: Front-end, Back-End & Fullstack software developer. Als Front-End software developer werk je met JavaScript en de bijbehorende technologieën zoals TypeScript, Angular, React, Vue en Svelte. Als Back-End software developer ben je bezig in NodeJS en doe je dit met behulp van AWS, NoSQL, REST en GraphQL. Je krijgt leuke en uitdagende opdrachten met een gemiddelde duur van anderhalf jaar. Hier werk je in een team met andere IT’ers aan het ontwikkelen en verbeteren van software. Je wordt begeleid door een accountmanager die fungeert als jouw aanspreekpunt. Het team

Bekijk vacature »

Full Stack Developer

Ben jij een kei van een full-stack developer? Heb je ambitie om te groeien en jezelf te ontwikkelen binnen een ambitieus bedrijf? Gaat jouw hart sneller kloppen van transpilers of frameworks zoals Angular, Vue of React? Dan ben jij de persoon die wij zoeken! Voor onze opdrachtgever zijn wij op zoek naar een full-stack developer om onderdeel te zijn van een team dat bestaat uit gedreven developers. Ieders met hun eigen specialiteiten en kennis van de projecten en behoeften vanuit de product owners. We zoeken iemand die met zijn/haar huidige competenties en domeinen dit team wil begeleiden, stimuleren en tevens

Bekijk vacature »

Pagina: « vorige 1 2

Wouter J

Wouter J

23/02/2014 20:06:40
Quote Anchor link
Dat laatste voorbeeld is compleet anders dan je voorbeeld met Users. In je laatste voorbeeld behoor je het strategy pattern te gebruiken. Hier hoor je helemaal geen inheritance voor te gebruiken (inheritance is 1 van de meeste misbruikte methodes in OO).

Met het strategy pattern heb je 1 klasse: Vehicle (voertuig, hoe je het beestje noemen wil) Dan hebben we vele andere strategy klassen die het gedrag van dit voortuig bepalen. Bijv:
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
40
41
42
43
44
45
46
47
48
49
50
<?php

interface VehicleHorn
{
    public function alert();
    public function normal();
}


class Toot implements VehicleHorn
{
    public function alert() { return 'TOOOEET!!'; }
    public function normal() { return 'toettoet'; }
}


class Bell implements VehicleHorn
{
    public function alert() { return 'TRIIING!'; }
    public function normal() { return 'tringtring'; }
}


class NoHorn implements VehicleHorn
{
    public function alert() { return '*silence*'; }
    public function normal() { return '*even more silence*'; }
}


class Vehicle
{
    protected $horn;

    public function __construct(VehicleHorn $horn)
    {

        $this->horn = $horn;
    }


    public function useHorn($alert = false)
    {

        return $alert ? $this->horn->alert() : $this->horn->normal();
    }
}


$car = new Vehicle(new Toot);
echo $car->useHorn(); //> 'toettoet'

$bicycle = new Vehicle(new Bell);
echo $car->useHorn(true); //> 'TRIIING!'

$oldBicycle = new Vehicle(new NoHorn);
echo $car->useHorn(); //> '*silence*'
?>
 
PHP hulp

PHP hulp

18/11/2024 10:36:45
 
Dennis Stolmeijer

Dennis Stolmeijer

23/02/2014 20:22:30
Quote Anchor link
Ozzie PHP op 23/02/2014 19:57:01:
Jongens, de discussie dwaalt een beetje af. Ik ga mijn vraag nog een keer stellen en ben dan benieuwd naar jullie antwoord. We vergeten even het hele database gebeuren.

Stel we hebben een auto en een fiets. Beiden zijn voertuigen, dus het lijkt me dan zinvol om een abstracte class Voertuig te maken. Mee eens?

Nu is mijn vraag wat er in die abstracte class thuis hoort.

We kunnen stellen dat ieder voertuig kan sturen, remmen en gasgeven. Dus in de voertuig class kunnen we de methods stuurLinks, stuurRechts, rem en gas zetten. Maar... hoort daar bijv. ook een method getNummerbord in? Veel voertuigen hebben een nummerbord, maar een fiets bijvoorbeeld niet. Plaatsen we de getNummerbord method in de voertuig class en accepteren we dat het mogelijk is dat iemand van een fietsobject het nummerbord opvraagt? Of plaatsen we getNummerbord alleen in de auto class?


Dit is een hele goeie vraag, zoals jij een paar berichten terug al zei: zijn er twee mogelijke manier van handelen. Welke manier van handelen het wij aanraden ligt naar mijn mening aan het aantal methoden/variabelen die fiets en auto van elkaar verschillen. Wanneer je er dus veel verschil is tussen auto en fiets zou ik 2 aparte klassen maken die ook mappen naar een Fiets/Auto tabel waarna die verwijzen naar een Voertuig tabel.

Wanneer de verschillen tussen een auto en fiets klein zijn dan zal ik een klasse en een tabel Voertuig ook accepteren.
 
Ozzie PHP

Ozzie PHP

23/02/2014 20:34:38
Quote Anchor link
@Wouter: thanks voor je voorbeeld. Ik snap ook wel wat je bedoelt. Maar wat doe je dan met een voertuig wat wel of niet een nummberbord heeft? En ieder voertuig moet sturen, remmen en gasgeven. Dan gebruik je daar toch wel een abstracte class voor die je extend?
 
Wouter J

Wouter J

23/02/2014 23:17:38
Quote Anchor link
>> Dan gebruik je daar toch wel een abstracte class voor die je extend?

Je extend niet, je hebt maar 1 klasse: Vehicle.

En om maar in het voorbeeld te blijven, ieder voertuig moet sturen, remmen en gasgeven. Maar als ik rem op een fiets doe ik dat met mijn handen en in een auto met mijn voet. Gasgeven doe ik op de fiets door als een gek rondjes te maken met mijn voet en in een auto door een pedaal door de vloer te drukken. Als ik stuur in een auto doe ik dat door het stuur te draaien, zit ik in een vliegtuig dan doe ik dat weer met 2 pedaaltjes en zit ik in een helikopter dan doe ik dat door een knuppel alle hoeken van de cabine te laten zien.
Zit ik op een segway dan doe ik dit allemaal door mijn lichaam te bewegen.

Dat alles iets moet kunnen hoeft niks te zeggen dat de manier waarop overal hetzelfde is. En als je ergens niet zeker van kan zijn dan mag je in de OO wereld jezelf er zeker niet op limiteren.

Gelukkig zijn er nog wel dingen die zeker zijn. Een User heeft bijv. altijd een naam en geboortedag. Of die een adres heeft weet je niet. En dan komen we weer bij een ander belangrijk OO principe: Iets wat veranderd moet los worden gekoppeld van hetgeen dat constant is.
 
Ozzie PHP

Ozzie PHP

23/02/2014 23:23:39
Quote Anchor link
>> Je extend niet, je hebt maar 1 klasse: Vehicle.

Oké... maar hoe doe je dat dan met een nummerbord?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$car
= new Vehicle;
$car->getLicensePlate();

$bike = new Vehicle;
$bike ->getLicensePlate(); // dit klopt niet, want een fiets heeft geen nummerbord
?>

>> En dan komen we weer bij een ander belangrijk OO principe: Iets wat veranderd moet los worden gekoppeld van hetgeen dat constant is.

Oké... je weet niet of ie een adres heeft zeg jij. Bedoel je dan dus, dat het adres NIET tot de default user class behoort?
 
Wouter J

Wouter J

23/02/2014 23:36:45
Quote Anchor link
>> maar hoe doe je dat dan met een nummerbord?

Een fiets heeft ook een registratie nummer, die staat welliswaar niet op een nummerbord, maar hij heeft er wel 1 (waarschijnlijk ergens in het frame gegraveerd). En een marineschip heeft ook een nummerbord, maar dan niet zo'n geel ding, maar een grote naam op de zijkant van het schip. Een nummerbord in nederland is ook weer anders dan een nummerbord in frankrijk (kleur enzo...). Dus ook dit wordt doormiddel van het Strategy pattern opgelost.

>> Bedoel je dan dus, dat het adres NIET tot de default user class behoort?

Er is geen default user class, er is maar 1 user class. En inderdaad, het adres hoort daar naar mijn mening van losgekoppeld te worden.

Edit:
Even mijn laatste statement uitleggen. Ik zou een Address class linken aan een User object ipv een User object aan een Address klasse. Dus:
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
// jij
$person = Person::born('Jaap', new \DateTime());
$person->livesIn(Address::parse('Janpietstraat 12', Postcode::parse('1643 KS')));

$post->sendCartTo($person);

// ik
$address = Address::parse('Janpietstraat 12', Postcode::parse('1643 KS'));
$address->assignTo(Person::born('Jaap', new \DateTime()));

$post->sendCarTo($address);
?>
Gewijzigd op 23/02/2014 23:42:24 door Wouter J
 
Ozzie PHP

Ozzie PHP

23/02/2014 23:40:47
Quote Anchor link
>> Er is geen default user class, er is maar 1 user class.

Ik bedoel eigenlijk een abstract user class, bijv.

Admin extends User

Is dat niet goed?

>> Een nummerbord in nederland is ook weer anders dan een nummerbord in frankrijk (kleur enzo...). Dus ook dit wordt doormiddel van het Strategy pattern opgelost.

Ah oké :)
 
Wouter J

Wouter J

23/02/2014 23:49:32
Quote Anchor link
>> Is dat niet goed?

Nee, dat is 1 van de gevallen waarin inheritance overgebruikt wordt. Ik was vroeger een normaal lid van dit forum en nu ben ik een moderator. Ben ik nu ineens een andere persoon? Nee, ik ben nog steeds Wouter en noch mijn lichaam noch mijn ziel zijn veranderd (voor zover ik kan zien...). Waarom zou ik dan wel ineens een andere klasse zijn?

Om weer terug te komen op het principe van toen net: Het veranderlijke is hier wat de user kan, de rest blijft het zelfde. Dit is dus niet op te lossen door het veranderlijke gewoon nog een klasse op te schuiven, het zit dan nog steeds bij elkaar, alleen zie je dat in je code niet meer. Wat we echt moeten doen is wat een User mag loskoppelen van een User. Dit kun je bijv. doen door een Role object erbij te maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$ozzie
= User::register('Ozzie');
$ozzie->setRoles(Role::create('READ'), Role::create('WRITE'), Role::create('EDIT_OWN'));

$wouter = User::register('Wouter');
$wouter->setRoles(Role::create('READ'), Role::create('WRITE'), Role::create('DELETE'), Role::create('EDIT'));

$guest = User::register('guest1235');
$guest->setRoles(Role::create('READ'));
?>


Bekijk trouwens ook even mijn edit, mocht je die gemist hebben.
Gewijzigd op 23/02/2014 23:49:57 door Wouter J
 
Ozzie PHP

Ozzie PHP

24/02/2014 00:03:49
Quote Anchor link
>> Nee, dat is 1 van de gevallen waarin inheritance overgebruikt wordt. Ik was vroeger een normaal lid van dit forum en nu ben ik een moderator. Ben ik nu ineens een andere persoon? Nee, ik ben nog steeds Wouter en noch mijn lichaam noch mijn ziel zijn veranderd (voor zover ik kan zien...). Waarom zou ik dan wel ineens een andere klasse zijn?

Maar zo zie ik het toch echt heel vaak hoor. En nee, je bent niet een ander persoon, maar je hebt bijv. andere rechten. In plaats van dat je zegt $wouter = new User(), zeg je dan $wouter = new Admin(), waarbij de Admin klasse dan meer rechten heeft dan de "default" user.

Begrijp me overigens niet verkeerd. Ik begrijp jouw insteek ook. Ik vraag me dus af, is dit een kwestie van persoonlijke voorkeur, of is het een daadwerkelijk beter dan het ander?

>> Bekijk trouwens ook even mijn edit, mocht je die gemist hebben.

Thanks, had 'm inderdaad gemist. Ik snap wat jij doet en ik snap oop de gedachtengang. Wat ik alleen niet begrijp... als je iemand een kaart wil sturen, dan ga je uit van die iemand, en niet van die iemand z'n adres. In je code wil je toch zoiets kunnen doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$user
= $this->getUser();
$post->sendCardTo($user->getAddress());
?>
 
Wouter J

Wouter J

24/02/2014 00:26:34
Quote Anchor link
>> Ik vraag me dus af, is dit een kwestie van persoonlijke voorkeur, of is het een daadwerkelijk beter dan het ander?

De een (1 klasse) volgt de OO basisprincipes, de ander niet.

>> als je iemand een kaart wil sturen, dan ga je uit van die iemand, en niet van die iemand z'n adres

Mijn brief gaat uit van de persoon. De enveloppe gaat uit van het adres, die je ergens hebt verkregen.
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

$person
= ...;

$letter = Letter::write(<<<EOT
Hallo {$person->getName()},

...

EOT
);

// YellowPages#getAddressForPerson is de factory van Address object (DataMapper als het ware)
$address = YellowPages::getAddressForPerson($person);

$post->sendCardTo($address);
?>


Merk ook op hoe veel dichter deze code bij de waarheid staat dan jouw code. Ik heb geen persoon waarvan ik het adres krijg, dat adres haal ik uit het telefoonboek of een adresboekje.
Gewijzigd op 24/02/2014 00:28:02 door Wouter J
 
Ozzie PHP

Ozzie PHP

24/02/2014 00:32:20
Quote Anchor link
>> Merk ook op hoe veel dichter deze code bij de waarheid staat dan jouw code. Ik heb geen persoon waarvan ik het adres krijg, dat adres haal ik uit het telefoonboek of een adresboekje.

Hehe, ja, ik snap wel wat je bedoelt. Maar ik vind het wel lastig om dat zelf zo te bedenken. En hoe zit dat dan bijv. met een e-mailadres? Koppel je die wel aan de persoon zelf?
 

Pagina: « vorige 1 2



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.