[OOP] geschikt class model

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack developer (NodeJS, React, AWS)

Functie Als Fullstack developer kom je te werken in het ontwikkelteam, maar zoals gezegd komt er veel meer bij kijken dan alleen maar ontwikkelen. Je bent samen met je collega’s continu bezig om de software uit te breiden maar hiernaast doe je doorlopend onderzoek naar de inzet van bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Maar waar staan ze nu? Na een onderzoeksfase van ruim een jaar zijn

Bekijk vacature »

Full-stack developer

Als Full-stack developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Samen met je SCRUM team werk je aan zowel de front- als de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en echt het verschil te kunnen maken. Ons ontwikkelteam bestaat uit ruim 40 ontwikkelaars, testers, scrum

Bekijk vacature »

Senior Lead Front End Developer

Functieomschrijving Voor Stichting Waternet zijn wij op zoek naar een senior Lead Front End Developer. Binnen het DevOps team Online zijn we op zoek naar een Senior Lead Front End developer met kennis van toegankelijkheid. Deze developer zal zich bezighouden met development van webpaginas die in verbinding staan met systemen uit het back office. Taken Ontwerpen, ontwikkelen, implementeren, documenteren en beheren van webapplicaties in een Azure-omgeving Debuggen, analyseren en oplossen van problemen in de OTAPomgevingen Je participeert in het DevOpsTeam Online voor het verder uitwerken en implementeren van gebruikerswensen Je bent betrokken bij toegankelijkheid audits en het implementeren van WCAG

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 »

Python developer Consultancy

Functie Als Python developer bij deze organisatie werk je voor verschillende klanten. Doordat de oprichter een groot netwerk heeft kun je zelf voorkeuren uitspreken in het type projecten dat je wilt gaan doen. Zo zijn er bijvoorbeeld langdurige of juist korte projecten, maar is ook het type klant, of project bespreekbaar. Werk jij bijvoorbeeld graag aan een nieuw, state-of-the-art web portaal of ben je liever betrokken bij een migratietraject van een bestaande applicatie? Wij gaan voor jou aan de slag! Eisen • Je bent een gedreven developer met sterke voorkeur voor Python • Je bent meer dan een codeklopper •

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden je HBO ICT Informatica diploma in ontvangst mogen nemen? Of heb je een aantal jaar ervaring als Software Developer en ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een gewaardeerde werkgever in de regio van Goirle zijn wij op zoek naar een junior/medior Back-end Developer met affiniteit met MS Acess. Samen met een vooruitstrevend team ben je verantwoordelijk voor het ontwikkelen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL en affiniteit met MS Acess. Je bent klantvriendelijk en flexibel ingesteld en vindt het leuk om klanten te

Bekijk vacature »

Junior PHP (Laravel) Developer

Functie omschrijving Wij zijn op zoek naar een PHP Laravel Developer! Sta je aan het begin van je carrière en ben je op zoek naar een leuke baan? Lees dan verder! Voor een softwarebedrijf in omgeving van Schiphol zijn wij op zoek naar een ervaren PHP (Laravel) Developer. Je gaat je bezighouden met het ontwikkelen van innovatieve bedrijfsapplicaties. Samen met het team, bestaande uit designers en developers, maak je mooie oplossingen voor bedrijven in diverse branches. Je zorgt dat de opgeleverde websites perfect werken en de klant meer dan tevreden is. Je kunt rekenen op een afwisselende baan met leuke

Bekijk vacature »

Backend Developer PHP Laravel SaaS

Dit ga je doen Het ontwikkelen van nieuwe features die bijdragen aan de groei van de klanten van de organisatie; Je denkt mee over nieuwe innovaties, features en verbeteringen in de applicatiearchitectuur; Je draagt bij aan de continue ontwikkeling van jouw team doordat je elke dag streeft naar het verbeteren van jouw eigen prestaties; Je neemt actief deel aan Scrum meetings en de Backend Guild. Hier ga je werken Voor een snel groeiend bedrijf, in de regio Nieuw Vennep, zijn wij opzoek naar een ervaren Backend Developer. De organisatie is actief in de e-commercebranche en ontzorgt haar klanten middels een

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 »

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »

C#.NET Developer

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

Front-end React developer

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

C# .NET Backend Developer HBO Javascript

Samengevat: Deze werkgever is een professionele speler op gebied van IT en E-Commerce. Wil jij werken voor een e-commerce platform? Heb je ervaring met C#, Javascript en Scrum? Vaste baan: C# .NET Developer Backend E-Commerce 3.400 - 4.500 Backend Developer Wij ontwikkelen software voor E-Commerce toepassingen. Ons eigen Content Management systeem biedt een integrale oplossing met diverse ERP software. Onze systemen zijn vaak complex en omvangrijk en draaien bij grote organisaties. Maar ook kleine ondernemingen hebben steeds vaker behoefte aan een vlekkeloos werkende E-Commerce oplossing. Zij bieden een uitdagende werkomgeving met gezellige collega's. Je krijgt veel vrijheid en er is

Bekijk vacature »
Majid Ahddin

Majid Ahddin

30/10/2006 16:23:00
Quote Anchor link
Hoi

ik heb meerdere meningen nodig over een 'project opzet', met name classes en extenden.
Er zijn drie specifieke onderdelen die anders gebruikt worden:

API
Waar tegen aan gepraat wordt in XML, weet niemand iets van, wordt stil afgehandeld.
Heeft db connectie nodig.
Heeft aantal db functies nodig (update, add, etc)
Heeft een aantal 'secrets' nodig opgeslagen in hoofd class (of niet dus)

(Backend) PDU Communicatie
Zelfde soort xml als API, maar dit wordt aangestuurd door de 'gebruiker'.
Heeft ook db en zijn functies nodig.
Wordt aangeroepen vanuit backend GUI
Heeft een aantal 'secrets' nodig opgeslagen in hoofd class (of niet dus)

Backend GUI
Gebruik db en Smarty om info te printen.
Heeft de 'secrets' niet nodig, maar moet wel de backend pdu comm kunnen triggeren (als new Class, niet als extended class (als $this))


Zoals het nu is, is het sowieso echt fout!
Gebruik 4 classes voor de API, waarvan de class die aangeroepen wordt, de main class is met de secrets erin. Die class heeft dus alle functies die nodig zijn in de api.
Omdat in die class de secrets zitten, en ook de db connectie, wordt ie gebruikt (extended) voor het volgende onderdeel: backend pdu communicatie. De secrets zijn keihard nodig en moeten overerfd worden, maar de db conn niet perse (wel nodig) en ook _alle_ api functies zijn beschikbaar en niet nodig.
Omdat de backend GUI de db con ook nodig heeft (en een aantal makkelijk db-data-handlers) wordt de main class weer extended voor de main GUI class. Ook daarin zitten uiteindelijk (als ie aangeroepen wordt) dus superveel (en veel te veel) functies. Weer alle API functies die niet nodig zijn.

Als je ergens een dump maakt van het object (in de GUI of in de PDU comm), is het HUGE. Ongelooflijk veel spul erin (zowel methods als properties) die niet gebruikt worden.

Het enige dat steeds gebruikt wordt (en steeds dezelfde, door deze opzet) is de db connectie. Het is SQLite en niet mijn favoriet, dus wil niet voor elke query een nieuwe db connectie maken. Begrijpelijk toch? Dus de connectie moet ergens opgeslagen worden. SQLite geeft een object terug, dus geen globale database functies (zoals mysql_connect() heeft/geeft).

Een erg belangrijk puntje is de pdu tools (api) package. Het is niet van mij :) En het is bedoeld om niet aangepast te worden. Pas de 3e en 4e class worden veranderd om aan persoonlijke wensen te voldoen... De derde wordt nu alleen gebruikt voor de constructor, waar een stel Hooks worden aangemaakt, en de vierde is de main class vh project (met de db en funcs, etc).

Je denkt vast al dat het slimmer is om het zo en zo te doen. Laat dan snel iets weten :)

Het probleem, nogmaals, is niet de db connectie die overal vanuit 1 punt beschikbaar moet zijn. API en backend worden namelijk nooit tegelijk door dezelfde 'gebruiker' uitgevoerd. Dus die kan op meer dan 1 plaats geinstantieerd worden. Geen probleem! Maar de 'secrets' in de main class staan wel maar op 1 plaats en zijn op 2 plaatsen nodig.

Ik _KAN_ natuurlijk ALLES af laten leiden van die class met secrets en db connectie. Worden nl. overal gebruikt.
Maar dan moet het PDU Tools package ge-extend worden, en daar issie niet zo goed in (en ik niet zo comfortabel).
Kan het op een nog andere manier? Een logische manier, zonder dat er 7 classes aan elkaar hangen met allemaal weer een extra stukje overbodigheid voor de volgende.
Steeds 2 of 3 die achter elkaar hangen, horen achter elkaar (PDUCommPrep -> PDUComm, en PDUToolsGeneric -> PDUToolsReceiver -> PDUToolsHandler, etc) maar _alles_ wordt aan elkaar geslingerd nu.
My doing ja :) maar ben er niet blij mee...

Tips?

Sorry voor het lange verhaal :D bedankt voor het lezen
 
PHP hulp

PHP hulp

26/12/2024 15:04:36
 
Majid Ahddin

Majid Ahddin

30/10/2006 16:26:00
Quote Anchor link
Afbeelding
 
Jelmer -

Jelmer -

30/10/2006 16:36:00
Quote Anchor link
Niet te snel 'extends' willen gebruiken. Alleen waneer ChildClass een ParentClass is, dus 'fiets' mag 'vervoermiddel' wel extenden, maar 'fiets' mag niet 'bel' extenden. Dan pak je gewoon een instance. 'bel' is in dit geval jouw database-communicatie naar mijn idee. Ik zou er gewoon een instance voor gebruiken, eventueel implementeer je een Singelton pattern zodat je overal dezelfde connectie kan gebruiken.

Verder raak ik de draad in het verhaal nog een beetje kwijt, ik denk dat ik het nog een paar keer over moet lezen.
 
Remco van Arkelen

Remco van Arkelen

30/10/2006 16:50:00
Quote Anchor link
't Is inderdaad alles behalve duidelijk, ik raak ook de draad een beetje kwijt in je class-diagram.

Naar mijn idee moet je eens wat lezen over programmeer-patronen, zoek bijvoorbeeld eens naar het befaamde boek "Gang Of Four" of een wat nieuwere: "Patterns Of Enterprise Application Architecture" van Martin Fowler.
 
Majid Ahddin

Majid Ahddin

30/10/2006 18:54:00
Quote Anchor link
Quote:
't Is inderdaad alles behalve duidelijk

nou nou nou sorry hoor :D
singleton gaat niet op in dit geval, zeker niet voor db connectie. Wil nl. niet elke keer een nieuwe db con maken en heb wel heel vaak queries nodig. Maar ook heel vaak niet in dezelfde functie. Dus kan een dbCon global maken, of opslaan in de class die gebruikt wordt. Maar singleton geeft nieuwe instance, dus met nieuwe data, dus met nieuwe connectie << naah
ken genoeg programmeermethoden, vroeg me af hoe jullie het zouden doen. Als je het niet begrijpt, zal ik proberen verder uit te leggen wat de bedoeling is. Ik kom er sowieso wel uit ( en zijn zoveel manieren, en het werkt zoals het nu is :) ), maar ben benieuwd wat als beste wordt bwschouwd door de phphulpers

dank voor reacties iig.

ken "gang of four" :) maar niet die 'wat nieuwere', dus zal es zoeken.
 
Bo az

Bo az

30/10/2006 19:28:00
Quote Anchor link
Singleton is toch juist bedoeld om juist altijd met de zelfde instantie te werken en niet steeds een nieuwe te krijgen?

Als ik je verhaal lees zou ik ook zeggen wat jelmer zegt.

Vooral niet zomaar gaan extenden, maar de verschillende 'objecten' gescheiden houden.
 
Jelmer -

Jelmer -

30/10/2006 19:29:00
Quote Anchor link
Singleton is volgens mij juist zo opgesteld dat je altijd maar 1 instance hebt, en daar via een static functie een reference naar opvraagt. (edit: iemand was mij voor...)

Ik denk dat het handiger als je even een boompje maakt van de klassen en hun kinderen (hun extends) en welken nu welke nodig hebben. Gewoon simpelweg met wat lijntjes.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Majid Ahddin

Majid Ahddin

30/10/2006 22:09:00
Quote Anchor link
Quote:
Ik denk dat het handiger als je even een boompje maakt van de klassen en hun kinderen (hun extends) en welken nu welke nodig hebben. Gewoon simpelweg met wat lijntjes.

Zie dat plaatje dat ik als eerste replie heb gepost :) Duidelijk toch? Dat is zoals het nu is.

Quote:
Singleton is toch juist bedoeld om juist altijd met de zelfde instantie te werken en niet steeds een nieuwe te krijgen?

Een static functie kan niet iets uit een class halen (niets uit $this). Een static functie is opzichzelfstaand. Toch? Dus hij maakt een instance van bijv een database class (depends on dbType dat je meegeeft), of een file handler (depends on het bestandstype dat je meegeeft), etc. Ik zou niet weten hoe een Singleton oplossing mij een instance kan geven van steeds hetzlefde object. Wel hetzelfde object natuurlijk, maar niet dezende instance van het object. Voor db class (vooral SQLite, zo heb ik begrepen) is dit niet de oplossing, omdat er steeds een live handler wordt gemaakt naar een bestand op het filesystem. Wat ik moet hebben, is een global DB instance, maar dan niet global, want ik houd niet van global :D Zoals je altijd mysql_query() kan aanroepen (de connectie is opgeslagen in de php 'buffer') als je een keer connectie hebt gemaakt, zonder de connectie mee te geven aan de functie.

Als je weet hoe het moet zou ik echt heel graag een voorbeeldje o.i.d. zien. Ik ben geen fan van Singleton, omdat ik alles zo min mogelijk aanroep en liever even opsla in de php buffer. Bijvoorbeeld in een class, in $this. Met een static functie kan ik niets uit $this halen :(

Ik maak gebruik van een DependsOn functie. Zowel met by-reference calling, als return value en ook met $this setten. Zo houd ik bijvoorbeeld de Smarty instance live en paraat. Misschien kan het ook met SQLite, maar alleen binnen het object.
DependsOn geeft een parameter mee (een constante van een class) die in een switch wordt bekeken en aan de hand daarvan wordt een waarde teruggegeven, opgeslagen in $this, of opgeslagen in de by-reference var.
Een 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
22
23
24
25
26
27
28
29
<?php

class ABC
{
    function
mf_DependsOn( $ulDependancy )
    {

        switch ( $ulDependancy )
        {
            case
ABC::Smarty:
                if ( isset($this->m_objSmarty) )
                {

                    return $this->m_objSmarty;
                }

                else
                {
                    $this->m_objSmarty = new CVM_SmartyBackofficeUI;
                    return $this->m_objSmarty;
                }

            break;

            case
ABC::SQLite:
                // zelfde verhaaltje hier, maar dan voor CVM_SQLiteDatabase("memory")
            break;
        }
    }

}


?>


Werkt redelijk. Zal echter in elk object instance een nieuwe connectie maken, omdat er nog geen is opgeslagen in $this.
In mijn huidige set-up heb ik maar op 1 locatie in de hele app een db connectie instance. In de constructor van CPServer.

Dank voor replies :)

Misschien snap ik Singleton niet, kan natuurlijk best ;)
Iemand makkelijk duidelijk voorbeeldje of website? Dank
 
Bo az

Bo az

30/10/2006 22:26:00
Quote Anchor link
Hier staat een voorbeeld van hoe ik een tijdje terug een sigleton database class gemaakt heb met zowel MySQL als ODBC.

Aangezien het al even geleden is dat ik het heb kunnen bijwerken omdat ik voor school druk ben met Java, is het niet verstandig om code over te nemen maar misschien kan je iets met het sigleton iedee.

Een beetje uitleg: Er wordt een static variabele gebruikt om de instanties op te slaan, bestaat er een instantie dan wordt die uit de static variabele gehaald, anders wordt er een nieuwe instantie gemaakt en in de static variabele opgeslagen.
 
Jelmer -

Jelmer -

30/10/2006 23:42:00
Quote Anchor link
Ook variabelen kunnen static zijn binnen een klasse. En als je nu een instance van de klasse in de static variabele doet, tada, 1 instance in je hele script. Zie dit voorbeeld op phppatterns.com.
 
Majid Ahddin

Majid Ahddin

31/10/2006 09:30:00
Quote Anchor link
maar een static var binnen een class verandert niet door een functie in die class, toch? :) Of heb ik het helemaal verkeerd begrepen? Daarom is het toch static?

-- edit
Ik ga naar de voorbeeldjes kijken. Dank!

-- edit
Het script van Boaz zluit het meest aan bij dat van mij, wel ongeveer wat ik vaker doe. Maar dan met DependsOn ipv getInstance :)
Zo ga ik het doen. Zet ik die functie onderaan in een class onderaan en laat elke class afleiden van die class. Kortere rijen, overzichtelijker en een hoop minder rotzooi die wordt onthouden.
dank voor jullie hulp!
Gewijzigd op 01/01/1970 01:00:00 door Majid Ahddin
 



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.