[OOP] Abstract class plus interface

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Application Developer Tech Lead

We’re Hiring! A UPS Application Developer Tech Lead *REMOTE WORK POSSIBLE FOR THIS ROLE As a Tech Lead Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as

Bekijk vacature »

Dynamics NAV / 365 BC Developer

Bedrijfsomschrijving Als Dynamics Business Central Developer kom je te werken bij een organisatie in regio Ede die gespecialiseerd is in het ontwikkelen en implementeren van software. Zo hebben ze een eigen ontwikkelde applicatie in de markt gezet voor de agrarische sector die internationaal zeer succesvol is en waar grote vraag naar is. Door deze software worden klanten op een slimme manier ondersteund bij voorraden, administratie, het maken van planningen, het tonen van real time informatie en nog veel meer. Dit platform is ontwikkeld op basis van Dynamics 365 Business Central, waar bovenop applicaties middels .NET Core, React en Azure worden

Bekijk vacature »

Cloud Developer - Smart Logistics

Bouw jij de professionele applicaties die onze klanten zo hard nodig hebben? En wil je graag met de nieuwste technologieën werken binnen een DevOps scrumteam? Lees dan snel verder! Wat ga je doen? “Use digital to move smarter De unit Smart Logistics binnen de Transport & Logistics sector van CGI ontwerpt, bouwt en onderhoudt veelal missie-kritische applicaties voor onze klanten uit de transport en logistieke sector. Zonder deze sector worden onze pakketjes niet op tijd afgeleverd, rijden de treinen niet meer van a naar b en varen schepen niet veilig de haven binnen. Om deze transport en logistieke ketens te

Bekijk vacature »

Developer / .NET Core

Bedrijfsomschrijving Voor een technisch bedrijf in regio Den Bosch zijn wij op zoek naar een Software Developer. Het betreft een bedrijf dat IT oplossingen ontwikkelt voor hun klanten, bestaande uit ruim 50 medewerkers, verdeeld over verschillende teams. Het is een platte organisatie met een vlotte besluitvorming, een informele cultuur en veel passie voor het vak. Als Developer werk je samen in een development subteam dat bestaat uit ongeveer 7 personen. Je werkt samen met developers, business analisten en een projectleider. Samen werken jullie aan klantspecifieke oplossingen waarmee processen geautomatiseerd worden, processen met elkaar verbonden worden of waarmee het gebruik van

Bekijk vacature »

GIS Ontwikkelaar - Utilities

Bij onze klanten vormen Geographical Information Systems (GIS) de basis van het Asset Data Management van de toekomst. Zie jij het als een uitdaging om als onderdeel van een DevOps team de systemen van onze klanten te helpen vormgeven en continu te verbeteren? Wat ga je doen? Ons team bestaat uit GEO/GIS specialisten en wij spelen een belangrijke rol op het gebied van GIS ontwikkelingen bij onze klanten. Binnen onze organisatie hebben wij een grote GEO-ICT practice waarmee we in staat zijn om een fundamenteel deel van de assets basisregistratie voor onze klanten vorm te geven. Dat doen we door

Bekijk vacature »

Full-stack Java Developer

Functieomschrijving Wil jij continu een organisatie en processen optimaliseren? Maak jij graag IT applicaties die impact hebben? Wil jij jezelf en Nederland in beweging houden? Wat ga je doen als Full-stack Java Developer bij Randstad Nederland? Als je als full-stack java developer ergens impact hebt, dan is het hier wel. Wij ondersteunen onze HR-dienstverlening met hightech apps en software, die we continu verbeteren. Zodat onze mensen ervoor kunnen zorgen dat bijvoorbeeld jouw koffer op de band terecht komt op het vliegveld, jouw pakketjes netjes op tijd worden geleverd en goed verzorgt wordt in het ziekenhuis. Onze innovaties volgen elkaar in

Bekijk vacature »

Back-end Developer

Cube in Twente is op zoek naar een Back-end Developer Medior / Senior Functie omschrijving Als Back-end Developer bouw je met jouw kennis de beste oplossingen voor de vragen van onze klanten en kun je goed onderbouwen waarom nu juist déze techniek het beste aansluit bij zijn wensen. Daarnaast sta je ervoor open je kennis te delen met je collega developers. Op deze manier haal jij het maximale uit de samenwerking met de klant en til jij je collega’s naar een hoger niveau. We zijn gegroeid door focus te houden op het plezier van het team en op de details

Bekijk vacature »

Software Architect / Developer / C# / Azure / CQRS

Bedrijfsomschrijving Als Software Architect/Senior Developer kom je te werken bij een organisatie in regio Veenendaal wiens core business software development is voor oplossingen voor de vastgoed branche. Deze applicaties vormen de basis voor financiële processen en planningen en worden door een groot tal gerenommeerde organisaties in Nederland gebruikt. Samen met een team van 15 collega's (bestaande uit ontwikkelaars, testers, UX/UI Designer en een Product Owner), verdeeld over Nederland en een andere locatie in Europa, ga je als Software Architect / Senior Developer aan de slag om het gehele platform te moderniseren. Hiervoor maakten ze gebruik van Delphi en is het

Bekijk vacature »

Ontwikkelaar

Wij zoeken een capabele Magento developer, die mee willen werken aan het realiseren van mooie webshops. Wij zoeken een creatief, enthousiast, leergierig, gezellig en capabel persoon. Zelfstandig kunnen werken. Goed kunnen communiceren. De wil hebben om verder te groeien. Als Magento developer werk je samen met je team aan de allerbeste webshops voor onze opdrachtgevers. Wat ga je doen als Magento developer? Ontwikkelen van webshops in Magento Onderhoud plegen aan bestaande webshops Behalve kennis van Magento heb je ook kennis van Javascript, HTML, CSS Je bent in staat om zowel zelfstandig als in teamverband te werken Je bent in staat

Bekijk vacature »

Full Stack .NET Developer voor zakelijke vergelijk

Dutch is mandatory for this position. Als Full Stack C#.NET Developer zorg jij ervoor dat het vergelijkingsplatform over de nieuwste functionaliteiten beschikt. Deze applicatie ondersteunt assurantiekantoren in het inzichtelijk maken en vergelijken van verschillende verzekeringsproducenten. Denk hierbij aan de meest actuele gegevens over premies en voorwaarden. Dit doen zij volledig onafhankelijk. Als Developer ben je bedreven in het samenvoegen van verschillende web services en databasen. Samen met jouw collega’s ben je verantwoordelijk voor het volledige ontwikkeltraject. Je schakelt makkelijk met verschillende afdelingen over bestaande en nieuw te ontwikkelen functionaliteiten. Naast het ontwikkelen van nieuwe functionaliteiten, zal je ook de bestaande

Bekijk vacature »

IT Architect

Voel jij je thuis op het scheidsvlak tussen de Business en IT? Ben jij in staat om de behoefte van de organisatie te vertalen naar een passende (IT)architectuur? En wil je graag werken voor een internationale verzekeraar? Dan ben jij onze nieuwe IT Architect. IT Architect / Developer Wat je bij ons doet Jij bent verantwoordelijk voor het ontwerpen, inrichten en waarborgen van een markt-conforme (IT) architectuur die de organisatie ondersteund bij de realisatie van haar strategie. Daarnaast sta je in directe afstemming met je collega architecten op onder andere ons hoofdkantoor. Hoe kan een werkdag eruit zien? Je woont

Bekijk vacature »

Front-end Developer

As a Front-End Developer at Coolblue you improve the user-friendliness of our webshop for millions of customers. How do I become a Front-end Developer at Coolblue? As a Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. Would you also like to become a Front-End Developer at Coolblue? Read below if the job suits you.

Bekijk vacature »

.NET DEVELOPER - GRADUATE PROGRAMMA

Functieomschrijving Ben je onlangs afgestudeerd van een IT-opleiding of heb je nog maar weinig ervaring opgedaan? En wil je toch graag aan de slag als .NET Developer? Lees dan snel verder, want op 5 juli en 9 augustus 2021 starten wij weer met een graduate programma waarin jij jezelf kunt ontwikkelen tot een volwaardige Fullstack .NET Developer! In juli en augustus krijg jij via de Experis Academy een unieke kans om jouw IT-carrière een kickstart te geven en jezelf te ontwikkelen tot Fullstack .NET Developer. Zo volg je de eerste drie maanden een full time op maat gemaakte training waarin

Bekijk vacature »

Senior C# Developer

UPS Nederland zoekt een Senior Developer C# * Remote werken mogelijk Wil jij werken aan complexe IT-systemen bij een van de grootste logistieke werkgevers ter wereld? Als ontwikkelaar bij UPS werk je aan opkomende technologieën en DevOps processen om ervoor te zorgen dat onze logistieke processen zo soepel en efficiënt mogelijk verlopen. Dit ga je doen Je bent betrokken bij alle facetten van applicatieontwikkeling. Je bent betrokken bij alle facetten van applicatieontwikkeling: van ontwerpen en bouwen tot testen en implementeren. Je levert ontwerpen die passen bij de onderliggende frameworks en concepten, bouwt efficiënte en testbare code, identificeert en integreert modulaire

Bekijk vacature »

C# .NET Developer

Bedrijfsomschrijving Als .NET Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven. De organisatie heeft ook een adviserende rol, omdat het de klantprocessen raakt en de markt constant in beweging is. Je werkt voor toonaangevende klanten, waaronder o.a. grote financiële dienstverleners, overheidsorganisaties, verzekeringsmaatschappijen en telecombedrijven. De organisatie wordt gekenmerkt als een

Bekijk vacature »
Ward van der Put
Moderator

Ward van der Put

20/11/2013 13:08:06
Quote Anchor link
Voor een API heb ik een abstract class AbstractRequest die het dataverkeer regelt:
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 NewCo;

abstract class AbstractRequest
{
    public function __construct($api_key)
    {

        $this->setApiKey($api_key);
    }

    // <...>
}
?>

Voor elk type API-transactie geldt daarnaast de interface TransactionInterface:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
namespace NewCo;

interface TransactionInterface
{
    public function __construct($api_key);
    public function startTransaction();
    public function validateTransaction($transaction_id);
}

?>

Elk transactieklasse ziet er tot slot zo uit:
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
namespace NewCo;

class Foo extends AbstractRequest implements TransactionInterface
{
    public function __construct($api_key)
    {

        parent::__construct($api_key);
    }


    public function startTransaction()
    {

        // <...>
    }

    public function validateTransaction($transaction_id)
    {

        // <...>
    }
}

?>


Klinkt dit logisch? Of zie ik iets over het hoofd? Zouden jullie ergens iets anders doen? Ik hoor het graag!
 
PHP hulp

PHP hulp

08/05/2021 16:07:24
 
Ozzie PHP

Ozzie PHP

20/11/2013 13:53:06
Quote Anchor link
Volgens mij kan het wel. Het enige wat ik me afvraag is of een request en transactie bij elkaar horen in 1 class, maar dat kun jij beter inschatten dan ik. Wat je nu zegt is dat een transactieklasse een request is "Foo extends AbstractRequest".
 
Ward van der Put
Moderator

Ward van der Put

20/11/2013 15:18:14
Quote Anchor link
Ozzie PHP op 20/11/2013 13:53:06:
Volgens mij kan het wel. Het enige wat ik me afvraag is of een request en transactie bij elkaar horen in 1 class, maar dat kun jij beter inschatten dan ik. Wat je nu zegt is dat een transactieklasse een request is "Foo extends AbstractRequest".

Klopt, de Request-klasse bouwt een URL op voor de API inclusief de API-sleutel via een eigen setter. Alle transacties voegen daaraan vervolgens unieke parameters toe. Het abstracte Request-object is een onbesmeerd broodje en de transactie het beleg, zeg maar, zodat je een broodje ham of een broodje kaas kunt maken.
 
Wouter J

Wouter J

20/11/2013 15:23:12
Quote Anchor link
Een transactie is ook een request.

Ward, ja dit is ook hoe ik het zou doen, behalve...
- De constructor hoort niet bij de interface, maar bij de AbstractRequest. Haal die weg uit de interface. Mocht je vinden dat ze wel bij elkaar horen dan laat je de AbstractRequest meteen de interface testen.
- bij klasse Foo regel 6 - 9 zijn nutteloos, waarom heb je dat gedaan?
- Waarom krijgt startTransactie geen parameter?
- Als je klasse al Transaction heet zou ik gewoon een method ->start() en ->validate() gebruiken
- Ik vraag me sterk af wat de klasse precies doet. Ik zou het bijv. al in 3 delen onderdelen: Transaction (entity/document), TransactionHandler (doet de transactie), Validation

Toevoeging op 20/11/2013 15:24:00:

- Je stopt alles in de hoofdnamespace, bundel het eens lekker in subnamespaces :)
 
Ward van der Put
Moderator

Ward van der Put

20/11/2013 15:51:10
Quote Anchor link
Dank je Wouter! Die constructor is inderdaad niet fris. (Het viel me op toen ik de code ging kopiëren naar een andere klasse en dat had al een teken aan de wand moeten zijn.)

De API-sleutel moet er wel altijd in. Zou dat een apart object moeten worden of is dat een brug te ver?

De transactie en de validatie van de transactie kunnen eigenlijk inderdaad wel worden gesplitst. Je gebruikt ze nooit beide tegelijk, maar altijd na elkaar. Je kunt immers niet valideren of een transactie is geslaagd als je die nog niet hebt gestart (en daarom stonden ze oorspronkelijk in één klasse, maar dat is niet zaligmakend).
 
Wouter J

Wouter J

20/11/2013 16:00:39
Quote Anchor link
Oh, wacht. Met validatie bedoel je of de request geslaagd is? Dan zou ik het wel in deze klasse stoppen. Dan krijg je iets als:
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
$transaction
= new IBANTransaction($apiKey);
$transaction->start();

while (true) {
    if ($transaction->isFinished()) {
        break;
    }
}


if ($transaction->hasErrors()) {
    echo 'Errors: '.implode(', ', $transaction->getErrors());
}
else {
    // ... rest van de applicatie
}
?>


De API sleutel moet er altijd in vanwege het Request object. De Transactie heeft niet perse een API sleutel nodig. Vandaar dat ik zeg: Stop hem in de AbstractRequest object en haal hem weg uit de TransactionInterface.
 



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.