Abstract methodes door laten erven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer te Naarden

Bedrijfsomschrijving Voor mijn klant ben ik op zoek naar een .NET Developer om het huidige team te komen versterken. Deze organisatie bevindt zich in de logistieke sector, en zij hebben een eigen ERP systeem ontwikkeld dat zij inzetten ter optimalisatie van de logistieke processen van haar eindklanten. Deze organisatie bestaat inmiddels al ruim 20 jaar, waarbij zij een duidelijke missie hebben, namelijk: het werk van de eindklant makkelijker maken door de systemen die zij leveren. Ze werken over heel de wereld, wat deze organisatie een echte internationale speler maakt. Binnen de organisatie kenmerken ze zich door een dynamische en professionele

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Applicatieontwikkelaar ABAP

Bedrijfsomschrijving Functieomschrijving De kandidaat zal worden ingezet binnen een van de DevOps teams binnen SCI (Service Centrum Inburgering) voor het ontwerpen en bouwen in SAP ABAP van de binnen SCI gebruikte informatiesystemen. Voornaamste voorkomende werkzaamheden zijn het aanpassen van en bouwen van nieuwe programmatuur in ABAP (Objects), waarbij ook gebruikt wordt gemaakt van DDD (Domain Driven Design) en het opstellen/aanpassen van Functionele/Technische ontwerpen. Daarnaast moeten ook formulieren met SAP Smartforms worden aangepast. Verder speelt de overgang naar SAP4Hana en SAP CPI. Vanwege het veelvuldig gebruik van SAP PO is kennis hiervan een pré. Achtergrond opdracht Momenteel werken meerdere DevOps teams

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 »

Medior/senior Front-end developer (Vue.js)

Functie Als Front-end developer ben je uiteindelijk overkoepelend aan de slag voor de 3 ontwikkelteams die ieder aan een specifiek product werken. In samenwerking met de UX-designer en de huidige Front-end developer zorg je voor gebruiksvriendelijke software. Lijkt het jou interessant om complexe problemen op te lossen en feautures naar een hoger niveau te tillen? En vind je het niet erg om oudere delen van de applicaties te refactoren i.c.m. het toevoegen van nieuwe functionaliteiten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en zelfredzaamheid)

Bekijk vacature »

Full stack developer Python, React

Functie Jij als full stack developer komt binnen onze Technology afdeling te werken. Deze bestaat momenteel uit 15 man. De stack waarmee wij werken is voornamelijk Python, Javascript, React en GraphQL. Binnen deze afdeling wordt er met multidisciplinaire teams gewerkt aan verschillende projecten. Projecten duren vaak langer dan 3 maanden en je bent van begin tot eind vaak betrokken. Naast dat je als full stack ontwikkelaar aan de slag gaat ben je ook Consultant. Dit betekent dat je ook klantcontact hebt in je rol en werkshops geeft. De verhouding tussen deze werkzaamheden zijn ongeveer 70% development en 30% consultancy. Een

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een uitdagende werkgever in omgeving Waalwijk zijn wij op zoek naar een enthousiaste softwareontwikkelaar met kennis of ervaring met C# en SQL. In een uitdagende rol als C#.NET Developer werk je samen met een enthousiast en informeel team aan het bouwen van maatwerk software voor variërende klanten. Verder ziet jouw takenpakket er als volgt uit: Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je houdt je bezig met het ontwikkelen

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving Startende Software Ontwikkelaar gezocht met kennis van C# .NET! Ben jij net klaar met je opleiding en ben je op zoek naar je eerste echte werkervaring? Of heb jij al enige werkervaring maar ben toe aan iets nieuws? Dan is dit de perfecte kans voor jou! Wij zoeken namelijk een Junior Software Ontwikkelaar die klaar is voor een nieuwe uitdaging bij een leuke werkgeven in de regio Zeist. In deze functie werk jij vaak aan verschillende projecten en ga je bij klanten op bezoek. Ben jij op zoek naar een functie met uitdaging, diversiteit en verantwoordelijkheid? Dan is

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

Junior full stack developer

Functie Als full stack developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

Bekijk vacature »
Johan K

Johan K

19/05/2010 09:43:16
Quote Anchor link
Ik heb een vraagje over het door laten erven van methodes in classes, en hoe ik dit eventueel mogelijk zou kunnen maken. Ik heb hier een paar dagen een topic voor geopend, er was alleen niet op gereageerd en nu is de context iets anders. Dus vandaag maar een nieuwe topic.

Dit is een voorbeeld van een classe hierarchy dat ik wil berijken.
Ik weet alleen niet of dit "professioneel" mogelijk is.

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

abstract class Connection{
    abstract function error();
}


class FTP extends Connection{
    private $pError;

    function
error(){
        return $pError;
    }
}


interface iDatabase{
    function
query( $sql );
    // en nog een hele waslijst met standaard methodes.
}

abstract class Database extends Connection{
    abstract function error(); // Here, it shall error. Function must contain body, Noooh!
}

class MySQL extends Database implements iDatabase{
    function
error(){
        return mysql_error();
    }
    function
query( $sql ){
        return mysql_query( $sql );
    }
}


class MySQLi extends Database implements iDatabase{
    function
error(){
        return mysqli_error();
    }
    function
query( $sql ){
        return mysqli_query( $sql );
    }
}


class PostGreSQL extends Database implements iData //... etc

?>


Dit is alleen niet mogelijk omdat "Database" een body verwacht op de methode error.
Is er een mogelijkheid om dit wel te laten werken, zonder daarvoor nog een andere methode te maken en door te linken zoals "getError()",

Door personelijke onstandigheden heb ik momenteel thuis geen Internet, ik heb alleen de mogelijkheid om dit op een andere locatie te doen, dus verwacht niet per direct antwoord.

Alvast bedankt.
Gewijzigd op 19/05/2010 10:24:12 door Johan K
 
PHP hulp

PHP hulp

16/05/2024 02:03:20
 
Jelmer -

Jelmer -

19/05/2010 10:10:56
Quote Anchor link
Mijn PHP (5.3.nogwat) geeft een iets duidelijkere foutmelding: PHP Fatal error: Can't inherit abstract function Connection::error() (previously declared abstract in Database). En inderdaad, wanneer ik Connection::error weglaat dan gaat het goed. Die eis dat alle classes die Database extenden een method genaamd error() moeten hebben zit al in Connection. En die eis kan je niet overschrijven.
 
Johan K

Johan K

19/05/2010 10:22:31
Quote Anchor link
Ik heb een van de nieuwste PHP versies, 6.0.#, stom dat ik dat er niet had bij vermeld.
Grappig dat je dit ook even heb uitgetest, heb deze code met de losse hand geschreven. Had wel een syntax errortje verwacht.

Ik begrijp deze error wel, ik moet een body "{}" op de error methode in classe Database declareren, maar dan kan de methode niet overschreven worden, toch? Ik had namelijk wel iets gelezen over de final keyword.
Ik begin de laatste tijd echt in te zien hoe handig het verlengen van een classe is, dus ik weet er nog niet alle "tricks".

En bedankt voor je snelle reactie, ik ga het thuis even proberen want ik had niet verwacht dat hij geen error zou geven als hij gedeclareerd is in de kinderen van Database.

Misschien nog iets, bestond of bestaat er nog ergens een optie in PHP zoiets als "required"?
Dus dat deze classes eventueel worden geladen standaard met __autoload, voordat ze daadwerkelijk gebruikt worden.
Zou handig zijn voor error handeling classes, met set_*_handler(array( 'class', 'static method' ) );

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php class FooBar requires Foo, Bar extends MehBar implements iBar{} ?>
Gewijzigd op 19/05/2010 10:38:53 door Johan K
 
Jelmer -

Jelmer -

19/05/2010 10:37:15
Quote Anchor link
Database extends Connection, en daarmee erft hij ook de eisen van Connection, namelijk dat er een method error() moet zijn. Normaal gesproken moet de class Database daaraan voldoen, maar Database is ook abstract. PHP weet dan dat Database nooit een instantie kan worden, en daarom hoeft het niet direct alle eisen van Connection waar te maken. Alleen een class die daadwerkelijk een instantie kan worden, de uiteindelijke classes zoals PgSQL, moeten dus voldoen aan alle eisen van de bovenliggende classes in die hiërarchie.

Als Database abstract is, hoef je de method niet te voorzien van een body. (mits je er het abstract keyword voor zet) Maar een class die Database extends, PgSQL bijv, en die niet abstract is, moet wel aan alle eisen voldoen. En die moet dus wel een method error met een body hebben.

PS: Gebruik je PHP 6, of gewoon de laatste build van PHP's trunk? Want PHP 6 zelf is op het moment niet in ontwikkeling. Volgens mij is de trunk tegenwoordig weer gebaseerd op PHP 5.3.
 
Johan K

Johan K

19/05/2010 10:44:16
Quote Anchor link
Heel erg bedankt voor de verduidelijking, helpt erg.
En persoonlijk weet ik niet precies wat voor build het is, thuis heb ik geen Internet, dus ik had aan een vriend van mij gevraagd of hij het even op een jumpdrive kon zetten, en simpelweg gewoon geinstalleerd. Hij zei dat het versie 6 was, dus daarop vertrouwde ik op.

Ik zal wel voor je kijken, maar daar kan ik vandaag geen antwoord op geven.
Gewijzigd op 19/05/2010 10:47:48 door Johan K
 
Willem Jan Z

Willem Jan Z

19/05/2010 10:53:45
Quote Anchor link
Enkel ter informatie:
Op dit moment is er nog geen beslissing gemaakt over de volgende versie van PHP. Het kan 5.4 zijn, 6.0 maar ook 7.0. Heeft onder andere te maken met Unicode support wat een beetje drama is geworden binnen het ontwikkelteam.
Waarschijnlijk heb je dus gewoon een snapshot van de trunk.

Deze informatie weet ik via de internals list van PHP. Heb dus niks met de ontwikkeling ervan te maken :)

Verder ontopic:
Je implement overal iDatabase, maar voor zover ik nu zie is het logischer om de abstracte class iDatabase te laten implementeren.

Over het 'final' keyword. Als je een class maakt, met een final method, kan je bij een extend van die class, die specifieke method niet overrulen. Je kan ook een complete class dus final maken, zodat van die class geen extend gemaakt kan worden,
 



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.