[OOP] geschikt class model

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

SQL database ontwikkelaar

Functie omschrijving Ben jij niet bang voor complexe algoritmes? Schikt het schrijven van procedures in T-SQL jouw niet af en heb jij al de nodige informatie in SQL, dan is functie precies wat voor jou! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat werken aan de complexere projecten waar jij van A tot Z bij betrokken bent. Je gaat zorg dragen voor het ontwerp, de ontwikkeling en het updaten van SQL databases. Dit doe je op basis van T-SQL. Jij bent van start tot finish betrokken bij de projecten die jij leidt. Je houdt contact met klanten en

Bekijk vacature »

Front-end developer (Medior/Senior)

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Junior Back end developer PHP, Symfony

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Full Stack Developer

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail; Verantwoordelijk voor de front-end werkzaamheden; Naast de front-end werk je ook aan de backend. Hier ga je werken Als Full Stack Developer komt je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development

Bekijk vacature »

C# Developer

Dit ga je doen De requirements in kaart brengen van de klant; Implementeren van functionele en technische specificaties bij opdrachtgevers; Oplossen van bugs; Meewerken aan maatwerksoftware voor nieuwe opdrachtgevers; Het testen en uitleveren van nieuwe functionaliteiten naar de acceptatie en productieomgeving De database ontwikkelen en onderhouden; Hier ga je werken Onze klant is gevestigd in het westen van Nederland en is gespecialiseerd in het ontwikkelen van software voor de levensmiddelen industrie. De software die het team maakt optimaliseert voornamelijk de administratieve processen, maakt deze meetbaar en zorgt ervoor dat de data zo goed mogelijk gebruikt kan worden. Binnen een van

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

Belastingdienst - Freelance Applicatieontwikkelaar

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Hybride. Kantoordagen in Utrecht, incidenteel in Apeldoorn Functieomschrijving: De afdeling IV – Generieke Voorzieningen – Interactie Online is onderdeel van de keten Interactie. De missie van de keten is: “het faciliteren van de interactie met alle burgers, bedrijven en hun vertegenwoordigers om hen in staat te stellen aan hun fiscale verplichtingen te voldoen en aanspraak te maken op hun rechten.” De afdeling Interactie Online heeft een belangrijke bijdrage binnen deze keten. Dit door het ontwikkelen

Bekijk vacature »

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

Python Developer

Dit ga je doen Als Python Developer ben je verantwoordelijk voor: Het ontwikkelen van Stuurprogramma's in Python zodat er verbindingen kunnen worden gelegd tussen besturingssystemen en (AV) hardware; Het testen en debuggen van Stuurprorgamma's; Het communiceren met noodzakelijke partijen in gevallen waar extra technische details nodig zijn om een Stuurprogramma te ontwikkelen of problemen op te lossen; Het maken van de nodige technische documentatie (in het Engels); Het participeren in een Scrum/Agile omgeving. Hier ga je werken Deze internationale organisatie is wereldwijd een succesvol producent en leverancier van professionele AV hard- en software. Klanten gebruiken de producten o.a. voor het

Bekijk vacature »

TypeScript developer (tot € 6.000, - bruto pe

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een ervaren Typecript developer die niet alleen zichzelf verder ontwikkelt, maar het ook leuk vinden om op termijn meer junior collega’s op pad te helpen. Je zult aan de slag gaan met het migreren van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde aan User Experience en kiezen ze duidelijk voor kwaliteit i.p.v. snelheid. Je krijgt dus de ruimte om vanuit gedegen onderzoek te werk te gaan en het borgen van kwaliteit staat hoog in het vaandel.

Bekijk vacature »

PHP Web Developer

Functie omschrijving Voor een klein softwarebedrijf in de omgeving Roosendaal, zijn wij op zoek naar een PHP web developer met een aantal jaar werkervaring. Wil jij graag werken aan in-house software projecten voor diverse klanten? Voel jij je prettige in een klein team developers, waar jouw inbreng enorm gewaardeerd wordt? Lees dan snel verder! Jouw werkzaamheden zien er als volgt uit: Je wordt verantwoordelijk voor de ontwikkeling van diverse applicaties. Dit kan de ene keer een online platform voor aanbiedingen zijn, en de andere keer een software pakket dat gebruikt wordt om interne processen te automatiseren. Het zijn stuk voor

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Modern, innovatief en Informeel bedrijf waar veel mogelijk is Werken met diverse robot merken Meehelpen met inbedrijfstellingen bij de klant De organisatie Hier ga je aan de slag Dit groeiende bedrijf van totaaloplossingen in de automatisering van productieprocessen, is hoofdzakelijk actief in de Benelux. Vanuit het kantoor in regio Amersfoort worden veel oplossingen geboden in de vorm van robotica. Geen project is hetzelfde wat garant staat voor bijzonder veel afwisseling. De bedrijfsgrootte is ongeveer 80 man. Van gerobotiseerde machinebeladingen tot aan assemblage automatiseringen wordt vanuit krachtige engineering maatwerk equipment geleverd.

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

23/11/2024 11:18:05
 
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.