[OOP] geschikt class model

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Developer C#

Functie omschrijving We are looking for a dutch native speaker Ben jij een ervaren back-end developer, die graag in een in-house functie wil werken? Passen de woorden innovatie, programmeren en teamspeler bij jou? Zoek niet verder en lees snel verder. Voor een echt familiebedrijf in de regio van Uden ben ik op zoek naar een back-end developer, die met name kennis heeft van C# en .NET. Jij gaat de interne applicaties verder optimaliseren en nieuwe features ontwikkelen. Verder ga je de volgende werkzaamheden uitvoeren: Ondersteunen gebruikers; Uitvoeren van analyses van de software/applicaties; Maken van functionele ontwerpen en deze door vertalen

Bekijk vacature »

Senior .NET Ontwikkelaar

In het kort Als Senior .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag met complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek (denk aan ECT) en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan

Bekijk vacature »

C# .NET Developer

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken In een klein team van professionals ben je als C# .NET Developer verantwoordelijk voor het ontwikkelen van één van de applicaties voor het grootste inhouse product: een applicatie voor alles omtrent hypotheken. De programmeertaal die je

Bekijk vacature »

Als Front-end developer bijdragen aan het onderwij

Functie Als front-end developer om je terecht in een team van goede en ervaren developers, en ga je werken aan de software die door miljoenen mensen gebruikt wordt. Je bent in staat om designs effectief te vertalen naar werkende feautures en hebt oog voor een goede UX van het product. Je staat voor clean code en goede documentatie. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit software en code. Je dagelijkse werk bestaat uit het werken aan componenten in de Storybook. Het verbeteren en refactoren van de huidige

Bekijk vacature »

Medior PHP Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte website die in eigen beheer zijn. In onze vestiging in Nederweert zitten onze development afdelingen en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé PHP/Back-end developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het bedenken van nieuwe functionaliteiten Het verbeteren van het

Bekijk vacature »

Senior java ontwikkelaar integratie

Functieomschrijving Voor de gemeente Rotterdam zijn wij op zoek naar een senior java ontwikkelaar integratie. Taken Binnen een zelfsturend Scrumteam voer je geheel zelfstanding je opdrachten uit en levert het eindresultaat op aan het Integratieteam. Jij voelt je net als alle teamleden verantwoordelijk voor alle aspecten, vanaf de vraag tot en met de oplevering in productie. Je bent kritisch, je helpt de klant om zijn wensen helder te krijgen, je schrijft zelfstandig clean code die van hoge kwaliteit is, met bijbehorende unit- en integratietesten, je ondersteunt zo nodig bij deployments naar productie. Het Integratieteam bouwt componenten (Endpoints) op de ESB.

Bekijk vacature »

Junior .NET developer

Functie Om half 9 kom jij binnen en pak jij als eerst natuurlijk een bakje koffie of thee. Vervolgens ga jij je voorbereiden op de stand-up van kwart voor 9. Zijn er bijvoorbeeld dingen waar jij nog tegen aan loopt? Of is er nog code die getest of gereviewd moet worden? Vervolgens starten jullie met de stand up en na de stand up zoeken jullie elkaar op en gaan jullie aan de slag. Als team met 6 developers werken jullie in drie wekelijkse sprints. Het einde van een sprint is altijd op een donderdag zodat jullie op vrijdag de demo

Bekijk vacature »

SQL Database developer

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Medior C# Developer

You'll build modern applications for Coolblue's back office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Medior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become C# Developer at Coolblue? Read below if the job suits you. You enjoy doing this Working with various types of

Bekijk vacature »

Experienced Lead Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Delft Vacature ID: 13301 Introductie We are seeking a Lead Java Developer for our team in the area of Delft. You will develop an application used exclusively by the engineers and geologists for site characterizations, which imports raw field and laboratory measurements for further processing, integration, ground modelling, and geotechnical analysis and reporting. The client/server application is entirely written in Java, and the server is hosted in the Amazon cloud, utilizing frameworks such as Spring and Hibernate, and connected to an MS SQL Server RDS instance. There is a trend towards using more

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je hier

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

T-SQL Database developer

Functie omschrijving Ben jij een ETL database specialist? Houd jij ervan om te puzzelen met Databases, Query's & Stored procedures? Zoek jij uitdaging, vrijheid en verantwoordelijkheid? Zoek dan niet verder! Wij zijn per direct op zoek naar medior en senior database developers. Je gaat werken voor een relatief klein softwarebedrijf in omgeving Tilburg. Samen met 12 collega's (allemaal techneuten), ga jij je bezig houden met het bouwen en/of onderhouden van database software. Deze software wordt internationaal ingezet voor het automatiseren van logistieke processen. Jouw werkzaamheden gaan er als volgt uit zien: Je bent in een klein team met developers, verantwoordelijk

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Amersfoort gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Senior pega developer

You work on software that makes colleagues and customers happy! Thanks to your IT skills, De Mandemakers Groep really makes a difference for its customers. Do coding, testing and deployments make your heart beat faster? Then apply today as Senior Pega Developer at De Mandemakers Groep! Wat ga je doen? The job title gives it away: You will be developing Pega software. This ranges from technical design, coding and testing to test automation, deployments and bug fixing. Your goal is to continuously improve our systems so that colleagues can work efficiently and customers receive optimal service. You don't have to

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

18/05/2024 20:25:50
 
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.