Class maker

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1797
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Class maker

Message par microdevweb »

Je ne veux pas une fois de plus lancer la polémique, mais j'adore la Poo et j'adore Pb. Bien que j'utilise d'autre langages mieux adaptés à la Poo tel-que java ou c++, j'aime quand même le résultat que donne Pb (pas de frawework, un exe rapide et de petite taille). Mais ce dernier n'étant pas adapté à la Poo demande beaucoup de travaille pour implémentés les classes.
J'ai donc commencer le développement d'un petit soft qui va faire cela à ma place. Et partage ce dernier

Remarque:
Le code obtenu respecte les normes Poo au point de vue d'encapsulation, il ne gère ni l'héritage ni le polymorphisme. Pour tirer pleinement parti des ce petit logiciel, il est préférable de faire une analyse du projet de type "uml" pour ainsi concevoir la structure de toutes les classes et méthodes.

:arrow: current version: BETA 1.1 Dowload

:?: GITHUB
Voici ce qu'il fait

Image

Exemple de code obtenu

Code : Tout sélectionner

Interface Country
	getName.s()
	getId.i()
	setName(name.s)
	setId(id.i)
	free()
	teste(name.s)

EndInterface

Code : Tout sélectionner

DeclareModule Country
  Declare new(name.s,id.i)
EndDeclareModule
Module Country
  ;-* PRIVATE MEMBERS
  Structure _country
		*Country_METHODS
		name.s
		id.i
  EndStructure
  ;}
	;-* GETTERS
	Procedure.s getName(*this._country)
		With *this
			ProcedureReturn \name
		EndWith
	EndProcedure

	Procedure.i getId(*this._country)
		With *this
			ProcedureReturn \id
		EndWith
	EndProcedure

	;}
	;-* SETTERS
	Procedure setName(*this._country,name.s)
		With *this
			;TO DO: write your code here to verify the attribute
			\name=name
			ProcedureReturn #True
		EndWith
	EndProcedure

	Procedure setId(*this._country,id.i)
		With *this
			;TO DO: write your code here to verify the attribute
			\id=id
			ProcedureReturn #True
		EndWith
	EndProcedure

	;}
	;-* CONSTRUCTOR
	Procedure new(name.s,id.i)
		Protected *this._country = AllocateStructure(_country)
		With *this
			If Not setName(name) : ProcedureReturn #False : EndIf
			If Not setId(id) : ProcedureReturn #False : EndIf
			\Country_METHODS = ?METHODS
			ProcedureReturn *this
		EndWith
	EndProcedure
	;}

	;-* DESTRUCTOR
	Procedure free(*this._country)
		ClearStructure(@_country,*this)
	EndProcedure
	;}

	;-* PUBLIC METHODS
	Procedure teste(*this._country,name.s)
		; TO DO: write your code here
	EndProcedure

	;}

	DataSection
		METHODS:
		Data.i @getName()
		Data.i @getId()

		Data.i @setName()
		Data.i @setId()

		Data.i @teste()
	EndDataSection
EndModule
Dernière modification par microdevweb le lun. 06/nov./2017 14:41, modifié 5 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Class maker

Message par Kwai chang caine »

Tout ce qui peut nous aider un jour à utiliser la POO (qui pour certains de nous est un monde inconnu) si le besoin ou l'envie se faisait sentir, est le bienvenu. :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1797
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Class maker

Message par microdevweb »

La bêta 1 est en ligne
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Class maker

Message par Patrick88 »

à essayer plus longuement, mais ça à l'air de marcher.

Code : Tout sélectionner

[{"myMembers":[],"myMethods":[{"valReturned":1,"codeToInclude":"","name":"Demarrer","note":"","myAttributs":[]},{"valReturned":1,"codeToInclude":"","name":"Debrayer","note":"","myAttributs":[]},{"valReturned":1,"codeToInclude":"","name":"Manoeuvrer_levier_vitesse","note":"","myAttributs":[]}],"name":"voiture","pointeur":0,"note":""}]
Répondre