Object georienteerd programmeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

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 »

Front-End React Developer

Als Front-End React Developer verbeter je de user experience van onze eigen webapplicaties voor onze collega's binnen Coolblue. Wat doe je als Front-End React Developer bij Coolblue? Als Front-end React Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten met React.js. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end React Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar start jij in een multidisciplinair team met 7 ontwikkelaars. Dit team is verdeeld onder Front-end ontwikkelaars en backend developers. De backend developers werken voornamelijk aan desktop applicaties in combinatie met backend systemen. Hier ga jij dus ook mee aan de slag! Hierbij wordt voornamelijk gebruik gemaakt van C# .NET, WPF, UWP, XAML en MVVM. WPF, UWP, .NET Core, Azure Devops en Entity Framework. WPF en UWP worden dan ook voornamelijk gebruikt voor de user interface van de desktop applicatie. Het development team is dan ook erg gedreven m.b.t. het ontwikkelen van vooruitstrevende en innovatieve horeca automatiseringsoplossingen.

Bekijk vacature »

Robot Programmeur

Een verantwoordelijke baan met leuke uitdagingen. Heb jij ervaring met het programmeren van robots? Kan jij goed samenwerken met collega's die verschillende specialisaties hebben? Ben je oplossingsgericht, analytisch en flexibel? Ga dan aan de slag als Robot Programmeur bij Gibas in Nijkerk! Als Robot Programmeur kom je te werken bij Gibas. Dat betekent dat je gegarandeerd meewerkt aan unieke oplossingen in productieprocessen. Bij elk project moet er opnieuw geëngineerd en geprogrammeerd worden. Dat maakt jouw werk uitdagend! Voordat je robots gaat programmeren komt er het volgende bij kijken: De opdracht gaat van de afdeling Sales naar de afdeling Operations door

Bekijk vacature »

Developer Front-end

Functie omschrijving Front-end Developer gezocht! Wij zijn op zoek naar een front-end developer voor een organisatie in de regio Veenendaal die de eindverantwoordelijkheid op zich neemt van alles wat met design te maken heeft. Je hebt in deze functie een adviserende rol hiervoor moet je beschikken over een grote dosis vakinhoudelijke kennis. Je creëert unieke concepten door samen met collega’s en klanten te overleggen over aangeleverde designs. Hiermee draag jij je steentje bij aan de groeiambities van de klant. Jij wordt het vaste aanspreekpunt voor klanten wanneer het gaat over planningen, hierin is het jouw taak om alle betrokkenen goed

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar een ontwikkelaar ter versterking van het huidige developers team. Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten

Bekijk vacature »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

Database Developer

Functieomschrijving Wat ga je doen? Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te voeren, maar het is ook prettig als je in de omgeving van Tilburg woont om naar het kantoor te kunnen komen. Vind jij het leuk om jouw creatieve vaardigheden te benutten om complexe systemen te ontwikkelen? Lees dan snel verder! Bedrijfsprofiel Voor wie

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving: De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van bromen snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie.De opdracht bestaat uit: het programmeren van de diverse modules;het tijdens demo's tonen van de

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

PHP developer (Symfony, Doctrine)

Functie Als PHP developer wordt er een hoge mate van zelfstandigheid verwacht, maar ook dat je goed opereert in een team waar kennis wordt gedeeld en dingen als codereviews erg veel voorkomen. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »
Chris visser

chris visser

10/09/2010 22:56:36
Quote Anchor link
Hey mensen. Ik heb een class gemaakt die modules inlaad. Het is een hele simpele class en mijn doel is om het volledige OOP te laten zijn. In dit geval word de module geladen aan de hand van een moduleID. Vervolgens word de module ingeladen aan de hand van de bestanden die aan de parameters zijn gekoppeld en opgeslagen in een variabele.

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
45
46
47
<?php

class module
{
    //This function loads a module controllerfile and headerfile. when this module contains output
    //it will store the output to the corresponding output parameter and return the paramaters back to the system

    public function load_module($parameters)
    {

      //Check if the controllerfile has been given
      if(isset($parameters['controllerFile']))
        {

          //Load the controllerfile and return any output to the controllerOutput parameter
      $controllerContent = $this->file_to_var($parameters['controllerFile']);
            if(!empty($controllerContent))
            {

                $parameters['controllerOutput'] = $controllerContent;
            }

            //Check if the headerFile has been given        
            if(isset($parameters['headerFile']))
            {

              //Load the headerFile and return any output to the headerOutput parameter
              $headerContent = $this->file_to_var($parameters['headerFile']);
              if(!empty($headerContent))
                {

                  $parameters['headerOutput'] = $headerContent;
                }
            }
        }

        return $parameters;
    }

    //The below function loads a file and returns its output
    protected function file_to_var($file)
    {

      global $db;
    if (is_file($file))
        {

      ob_start();
      include($file);
            $content = ob_get_contents();
      ob_end_clean();
            return $content;
        }
    }
    
}


?>


Nu kan een module bijvoorbeeld op de volgende manier geladen worden:

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
<?php
$blocks
= array();
$module = new module();
if(isset($_GET['MID']) && !empty($_GET['MID']) && is_numeric($_GET['MID']))
{

    $sql = 'SELECT * FROM core_modules WHERE moduleID='.$_GET['MID'].' OR blockMode=1';
}

else
{
    $sql = 'SELECT * FROM core_modules WHERE home=1 OR blockMode=1';
}

if(!$ModuleQuery = $db->query($sql))
{

  trigger_error('Error in the modulequery: '.$db->error);
}

else
{
  while($ResultModule = $ModuleQuery->fetch_assoc())
  {

    $i=0;
    $modules[$i]['positionTag']   = $ResultModule['positionTag'];
      $modules[$i]['title']         = $ResultModule['title'];
      $modules[$i]['controllerFile']= $moduleDir.$ResultModule['controllerFile'];
      $modules[$i]['headerFile']    = $moduleDir.$ResultModule['headerFile'];
      $modules[$i]['layoutFile']    = $templateDir.$ResultModule['layoutFile'];
      //load_module uses the moduleclass and adds the controllerOutput and headerOutput
        //parameters containing the output

      $blocks[] = $module->load_module($modules[$i]);  
      $i++;
  }
}

?>


Wat er verder word gedaan met de output is nu natuurlijk niet van toepassing. In mijn geval heb ik hiervoor ook een class gemaakt die de template inlaad en combineerd met de output van deze modules. Die class heet uiteraard "Content". Mijn vraag is nu. IS DIT DE CORRECTE DENKWIJZE VOOR OOP????
Gewijzigd op 10/09/2010 22:57:24 door Chris visser
 
PHP hulp

PHP hulp

22/12/2024 12:03:22
 
Wim E

Wim E

10/09/2010 23:12:21
Quote Anchor link
Denkwijze is heel eenvoudig...denk in objecten.
Bijvoorbeeld:

Een stoel is een object. Deze heeft eigenschappen (kleur, grote, aantal poten, vorm etc). Daarnaast heeft een stoel functies zoals erop zitten, verplaatsen etc.
Ook een tafel is een object. Deze heeft ook eigenschappen en methoden(functies). Echter bij een tafel horen stoelen. Dit kun je eenvoudig maken doormiddel van meerdere objecten van een stoel te maken.

Om even terug te komen op jou vraag. Hoe je nu hebt gedaan kan ik persoonlijk niet veel van OOP er nog uit halen.
Je hebt een klasse, eigenlijk maar 2 functies waarvan 1 protected is maar geen onderliggende klasse heeft (overerving). Je hebt in je 2e file eigelijk alleen PHP gebruikt en roept hier 2 functies aan.
Als ik hier bijv. title zie. Is dat een property van de klasse methode. Dus wil ik het via een setter de title zetten en dit niet gaan versturen als een verzameling (array)
 
Chris visser

chris visser

12/09/2010 00:19:08
Quote Anchor link
Okok, ik heb de module herschreven. Ik probeer het te leren en dit zijn slechts voorbeelden natuurlijk. Hieronder eerst mijn 2e versie van de module class en daaronder het procedurele gedeelte.

Class:
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
45
46
<?php
class module
{
    private $controllerFile;
    private $headerFile;
    private $title;
    
    public function __construct($controllerFile, $headerFile = '', $title)
    {

      if(is_file($controllerFile))
        {

          $this->controllerFile = $controllerFile;
        }

    if(is_file($headerFile))
        {

          $this->headerFile = $headerFile;
        }

        if(is_string($title))
        {

          $this->title = $title;
        }
    }

    
    public function setOutputType($outputType)
    {

      if($outputType == 'body')
        {

      $this->file = $this->controllerFile;
        }

        else
        {
          $this->file = $this->headerFile;
        }
    }

    
    public function getContent()
    {

    ob_start();
    include($this->file);
      $content = ob_get_contents();
    ob_end_clean();
      return $content;
    }
}


?>

index.php
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
<?php
include('classes/class_database.php');
include('classes/class_module.php');

$db = new database($host, $username, $password, $database);

if(isset($_GET['MID']) && !empty($_GET['MID']) && is_numeric($_GET['MID']))
{

    $sql = 'SELECT * FROM core_modules WHERE moduleID='.$_GET['MID'].' OR blockMode=1';
}

else
{
    $sql = 'SELECT * FROM core_modules WHERE home=1 OR blockMode=1';
}

if(!$ModuleQuery = $db->query($sql))
{

  trigger_error('Error in the modulequery: '.$db->error);
}

else
{
  $modules = array();
  while($ResultModule = $ModuleQuery->fetch_assoc())
  {

      
      $modules[$ResultModule['moduleID']] = new module('Modules/'.$ResultModule['controllerFile'], 'Modules/'.$ResultModule['headerFile'], $ResultModule['title']);
  }
}

$modules[1]->setOutputType('body');
echo $modules[1]->getcontent();
?>
Gewijzigd op 12/09/2010 00:21:01 door chris visser
 
Chris visser

chris visser

15/09/2010 23:16:40
Quote Anchor link
Ik heb inmiddels mijn module class zoveel mogelijk voltooid mbv de OOP tutorials die te vinden zijn op deze website. Ik ben erg benieuwd. Zelf merk ik nu echt de voordelen die het even later gaat geven. De module class laad een module in op basis van de gegevens (links naar bestanden) die het systeem geeft. Het is in staat om bestanden in te laden en de content terug te geven en controleert of de links daadwerkelijk bestanden zijn. Vervolgens heb ik een extend gemaakt die de layout van de module bijvoegt. Dit is voor alsnog een experiment, maar het werkt al aardig. Op en aanmerkingen zijn welkom!

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php

class module
{
    private $controllerFile;
    private $headerFile;
    private $title;
    
    public function __construct($controllerFile, $headerFile = '', $title)
    {

      if(is_file($controllerFile))
        {

          $this->controllerFile = $controllerFile;
        }

    if(is_file($headerFile))
        {

          $this->headerFile = $headerFile;
        }

        if(is_string($title))
        {

          $this->title = $title;
        }    
    }

    
    public function getTitle()
    {

      return $this->title;
    }

    
    public function getControllerFile()
    {

      return $this->controllerFile;
    }

    
    public function getHeaderFile()
    {

      return $this->headerFile;
    }

    
    public function getBody()
    {

      if(isset($this->controllerFile))
        {

      $output = $this->getContent($this->controllerFile);
            if($output)
            {

              return $output;
            }
        }
  }

    
    public function getHeader()
    {

      if(isset($this->headerFile))
        {

          return module::getContent($this->headerFile);
        }

        else
        {
          return '';
        }
    }

        
    public function getContent($file)
    {

    ob_start();
    include($file);
      $content = ob_get_contents();
    ob_end_clean();
      return $content;
    }

}


class container extends module
{
    
    public function setLayout($layoutFile)
    {

      if(is_file($layoutFile))
        {

      $this->layout = module::getContent($layoutFile);
        }
    }
    
    
    public function getOutput()
    {

      $body = module::getBody();
        $output = preg_replace('/<!-- blockcontent -->/', $body, $this->layout);
        $output = preg_replace('/<!-- blocktitle -->/', $this->getTitle(), $this->layout);
        return $output;
    }
}
 



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.