Oop ontwerp voor captcha

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Nieuwenhuisen

Jeroen Nieuwenhuisen

09/08/2008 13:49:00
Quote Anchor link
Aangezien mijn reactie op de tutorial “Object georiënteerd denken” te specifiek was, heb ik op advies van Jelmer hier een nieuw topic aangemaakt.

Mijn reactie op de tutorial was als volgt:

Sinds kort ben ik me eigen aan het oriënteren op het gebied van object georiënteerd programmeren, daarom ben ik de schrijver van deze tutorial zeer dankbaar voor het leveren van een bijdrage in mijn leerproces.

Ik ben wat aan het oefenen gegaan, maar ik wil even weten of ik op de juiste wijze bezig ben.

Ik ben nu bezig met een captcha script die uit drie klassen bestaat: Captcha, Code en Image. De Captcha klasse maakt een nieuw object Code, en extends de klasse Image. Volgens mijn gedachtegang is dit een goede wijze, een Captcha is namelijk ook een Image.

Maar wat vinden de OOP experts ervan?

Edit:
Ik zit alleen te twijfelen of ik Image wel moet extenden in de Captcha klasse, aanzien de Captcha klasse eigenlijk meer een soort van controller is. In de Captcha klasse worden de instellingen gedaan en deze maakt een code aan via de klasse Code, daarna wordt de code op een afbeelding getoond via de functies in de Image klasse. De Captcha klasse heeft dus eigenlijk geen specifieke afbeelding functies maar hij roept ze aan in de Klasse Image.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen Nieuwenhuisen
 
PHP hulp

PHP hulp

04/05/2024 15:36:37
 
Jelmer -

Jelmer -

09/08/2008 14:35:00
Quote Anchor link
Het is maar hoever je wilt gaan. Je zou het helemaal uit kunnen zetten en zoals je zelf al aangeeft een Captcha-controle klasse kunnen maken. Deze genereert vervolgens een nieuw Code-object (het Code-object genereert z'n code) en maakt een nieuwe CaptchaImage object aan. CaptchaImage extend Image en slikt en Code-object. Aan de hand van dat Code object tekent hij zichzelf en dankzij de Image-eigenschappen kan je hem aan de gebruiker laten zien.
 
Jeroen Nieuwenhuisen

Jeroen Nieuwenhuisen

09/08/2008 15:25:00
Quote Anchor link
Ik heb mijn ontwerp weer iets verder uitgebreid.

Ik heb een diagram van de structuur gemaakt, hieronder staat een linkje.
Link naar diagram

Uitleg van de klassen:
  • Catcha: De captcha klasse is een soort van controller, via deze klasse kun je instellingen maken. De Captcha klasse maakt 2 objecten aan Code en CaptchaImage, via deze object worden de juiste functies aangeroepen om een captcha afbeelding te genereren.
  • Code: Via deze klasse kan op verschillende wijze een code gegenereerd worden, deze klasse is niet afhankelijk van andere klasse.
  • CaptchaImage: Deze klasse genereert de uiteindelijke afbeelding, hiervoor maakt hij gebruik van de klasse Image die algemene afbeelding functionalist bevat. Omdat een CaptchaImage ook een Image is wordt de klasse afgeleid van Image, doormiddel van extending.
  • Image: De klasse Image bevat de algemene functionaliteit voor het creëren van een afbeelding, deze klasse is niet afhankelijk van een andere klasse
Gewijzigd op 01/01/1970 01:00:00 door Jeroen Nieuwenhuisen
 
Jelmer -

Jelmer -

09/08/2008 16:31:00
Quote Anchor link
Ik vind het een goeie opzet.

Ik heb in mijn achterhoofd nog iets zitten dat bij het lezen van je bericht constant 'canvas', 'canvas!' roept. Dit omdat je eigenlijk niet tekent op een image, maar op een canvas wat je vervolgens kan exporteren naar bijvoorbeeld een image (maar ook naar een SVG-document, of een PDF-document etc.) Echter, wanneer je deze laag van abstractie er ook nog in zou aanbrengen (en het is maar de vraag of je ooit gebruik van deze extra laag gaat maken) wordt je code voor het simpelweg genereren van een captcha-image relatief enorm. Ik denk dat je huidige opzet uitgebreid en abstract genoeg is voor gebruik in de praktijk.

Enige waar je nog even over moet nadenken is dat je je captcha-plaatje los van de rest van het document moet opsturen. Hij heeft z'n eigen request. Je controller zal bij het starten dus niet automatisch een nieuwe code moeten genereren, maar alleen wanneer hij vanuit het formulier wordt aangeroepen. Bij het verwerken van het plaatje, en van het uiteindelijk opgestuurde formulier moet deze code gelijk blijven.
 



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.