Poo class abstraite

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

Re: Poo class abstraite

Message par microdevweb »

Il faudrait que tu me montre une lib que désirerais utilisée et regarderais ce qu'il est possible de faire? Du moins si cela t’intéresse :wink:
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: Poo class abstraite

Message par Kwai chang caine »

Demande à un aveugle, si il veut voir !!! 8)
Sincèrement, les bras m'en tombent de ta proposition 8O
Rien que de l'avoir faite, je t'en remercie déjà 8)

Ma question va te paraitre débile, mais bien sûr tu utiliserais un langage POO ? :oops:

En fait, on a beau tourner sur le WEB, beaucoup de chemins mènent à SELENIUM :|
Et j'ai aussi un impératif, c'est que le programme reste portable USB
C'est donc pourquoi, je ne suis même pas allé voir du coté de .NET et C#
C'est pourquoi, il m'a semblé que PYTHON était le meilleur candidat, car il existe en version portable
Et évidemment, je cherche à éviter mon ennemi de toujours JAVA, because obligation d'installation du JRE et je déteste le langage :|
ImageLe bonheur est une route...
Pas une destination

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

Re: Poo class abstraite

Message par microdevweb »

@Kwai chang caine,

Cela ne m'éclaire pas beaucoup plus sur la librairie que tu cherche à utilisé.

Concernant les langages POO, Python est évidement le plus simple mais ils est interprété ( quoi qu'il soit possible de compiler un exe).

Java est bien sur plus compliqué mais portable et est spécial puisque compilé en byte code et interprété par la jvm.

Moi personnellement je n'aime pas Python car pas assez typé, et j'aime beaucoup Java avec sa syntaxe similaire au c.
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: Poo class abstraite

Message par Kwai chang caine »

Aaaaaahhhh !!! je craignais cette réponse :|
En fait mon rêve aurait été en C++, mais apparemment les vilains messieurs créateurs de LIB, ils en veulent pas non plus , va savoir pourquoi :|

Je ne voudrais pas te faire perdre du temps, j'en perds déjà depuis plusieurs années avec mes dizaines d'essais dans tous les sens :?
Tu vois, c'est là que je me rend compte que j'ai eu une chance de cocu avec PB il y a plus de 10 ans 8O (Tiens elle fait quoi bobonne aujourd'hui ? :mrgreen:)
Car j'ai quitté VB6, pour X raisons, dont la non portabilité et les DLL activeX, et j'ai essayé plusieurs basics dont de mémoire libertybasic et peut être un ou deux autres.
Et le miracle s'est produit au bout de 2 essais de langages différents 8O
"Tout dans la R16" au 3e langage, du coups, je me suis pas rendu compte de ma chance.

Mais dans le WEB, déjà que je déteste ça, car c'est en constant mouvement, jamais vraiment au point, trop aléatoire selon la machine, le navigateur, l'OS, etc...bref...c'est toujours l'aventure....et bien je n'ai pas la même chance.
J'ai des dizaines de choix à faire, et en fin de compte je ne sais jamais si c'est vraiment le bon

Car chacun prêche pour sa paroisse, tu lis chaque site d'auteur, c'est le meilleur.
Et quant tu as perdu X heures à lire, essayer, etc...tu t'aperçois que c'est pas portable, ou qu'il faut être admin, ou tel OS, ou qu'il faut installer d'autres frameworks ou logiciels qui à leurs tours sont parfois pas vraiment opérationnels, ou ne s'entendent pas avec telle version, etc.... une histoire de dingue :?

Déjà j'ai mis un temps fou à choisir mon navigateur, j'ai écouté les conseils de ZORRO qui prêchait Firefox, et j'en suis assez content, bien que des fois je code des pilotages qui fonctionnent, puis ne marchent plus sur la version d’après...

Bref, voilà pourquoi, je préfère garder ta gentille offre, si un jour j'ai enfin trouvé la lib qui va bien "la PB du WEB" en espérant qu'elle existe, et que comme dab, il faut utiliser la POO :|
Mais si il faut que je me mette à la POO, j'essaierais de me pencher sur C++, car je ne sais pas si C# existe en portable.
Parce que bien que je t'admire, je ne rêve pas de danser la JAVA, même avec toi :wink: , à moins que tu sois blonde à forte poitrine :lol:

Encore merci pour ton offre généreuse...je continue mes recherches dans la jungle du pilotage WEB :|

Image
ImageLe bonheur est une route...
Pas une destination

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

Re: Poo class abstraite

Message par microdevweb »

Si il existe une dll (poo ou pas) elle est normalement utilisable avec Pb
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: Poo class abstraite

Message par Kwai chang caine »

Alors là......

Les bras m'en tombent !!!!
Je suis ébouriffé


Image

Tu veux dire que TOUTES les DLL (Standard bien sûr) même faites en POO, peuvent être utilisée en PB !!! 8O

Je ne le savais pas !!! 8)
Je pensais bêtement, que pour manipuler une DLL POO il fallait un langage POO :oops:
Mais alors..... ça donne un espoir infini ce que tu me dit là !!! :D
ImageLe bonheur est une route...
Pas une destination

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

Re: Poo class abstraite

Message par microdevweb »

A la base c'est la raison pour la quel les interfaces existent, maintenant je l'avoue je n'ai jamais testé
https://www.purebasic.com/french/docume ... faces.html
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: Poo class abstraite

Message par Kwai chang caine »

Alors là !!!!!! j'ai bien fait de me lever ce matin !!!! 8O
J'ai vu je ne sais pas combien de fois cette fonction "interface" dans les forums PB
Mais je ne sais pas pourquoi je me me suis arrêté de lire ici :mrgreen:
Les Interfaces sont utilisées pour accéder facilement aux modules 'Orientés Objets' tels que les bibliothèques COM (Component Object Model) ou DirectX. Ce type de bibliothèques sont de plus en plus courantes sous Windows et les interfaces permettent une exploitation de ces fonctions sans impacts de performances. Les interfaces jettent aussi les bases pour une 'Programmation Orientée Object' (OOP en anglais) avec PureBasic mais de solides connaissances sont nécessaires [Couic]
Truc de dingue, en fait dans tout ce que je t'ai écrit avant, je voulais rajouter (et oui j'ai pas tout dit :mrgreen:) que le rêve serait de trouver quelque chose qui permettrait de "traduire" la POO en quelque chose d'utilisable en PB, en fait FRED y avait déjà pensé il y a longtemps 8)
Le super panard, serait de pouvoir coder quelque chose qui créé le code du wapper d'une DLL POO quasi automatiquement.
Mais à mon avis, ça doit surement pas être demain la veille que quinquin se lancera dans ce genre de chose :|

Quand tu vois ce genre de code de DarkDragon "Interface constructor/destructor"
Tu sais déjà que tu seras jamais emmerdé par KCC parce qu'il aura fait un update dans ton code :lol:

Qui a dit que la POO était simple ??? hein qui ??? :wink:
A partir de combien d'années d'hopital psychiatrique on peut coder ce genre de choses ?? 8O

Code : Tout sélectionner

Interface Inter_Face 
  MSG(Message.s) 
EndInterface 

Structure OBJ 
  VTable.l 
  Function.l[SizeOf(Inter_Face)/4] 
EndStructure 

Procedure Message(*t.Inter_Face, Message.s) 
  MessageRequester("", Message.s) 
EndProcedure 

Procedure Constructor() 
  *OBJ.OBJ = AllocateMemory(SizeOf(OBJ)) 
  *OBJ\VTable = *OBJ+OffsetOf(OBJ\Function) 
  *OBJ\Function[0] = @Message() 
  ProcedureReturn *OBJ 
EndProcedure 

Procedure Destructor(*OBJ.OBJ) 
  FreeMemory(*OBJ.OBJ) 
EndProcedure 

*MyOBJ.Inter_Face = Constructor() 
*MyOBJ\MSG("Hallo, dies ist ein Testtext") 
Destructor(*MyOBJ)
http://www.purebasic.fr/german/viewtopi ... f7a#p10031
ImageLe bonheur est une route...
Pas une destination

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

Re: Poo class abstraite

Message par microdevweb »

Je vais t'explique et tu vas comprendre que ce n'est pas si sorcier.

On crée une structure, c'est ce qui va encapsuler les membres (variables) de la class
exemple

Code : Tout sélectionner

Structure maStructure
    nom.s
    var.l
EndStrucure
Jusque la rien de nouveau c'est une simple structure.

Ce qui est nouveau

Comme premier paramètre de la structure, on ajoute au choix
1ère solution

une pointeur par fonction (méthode) genre

Code : Tout sélectionner

Structure maStructure
    *MaFonction1
     *MaFonction2
    nom.s
    var.l
EndStrucure
etc..
Ensuite on y assigne l'adresse des fonctions
exemple:

Code : Tout sélectionner

maStructure\MaFonction1 = @MaFonction1() ; Même la fonction à des paramètres on ne les indique pas ici
;etc..
2ème solution
on ajoute un pointeur pour toute les fonctions

Code : Tout sélectionner

Structure maStructure
    *MesFonctions
    nom.s
    var.l
EndStrucure
On place l'adresse des fonctions dans un DataSection
exemple

Code : Tout sélectionner

DataSection
   MESFONCTIONS:
   data.i @MaFonction1()
   data.i @MaFonction2()
   data.i @MaFonction3()
EndDataSection
On assigne les adresses

Code : Tout sélectionner

maStructure\MesFonctions = ?MESFONCTIONS
Le constructeur :

La c'est un rien plus compliqué, on assigne à un pointeur la structure

2 méthodes

Code : Tout sélectionner

*monPointeur.maStructure = AllocateMemory(maStructure)
; ou (moi je préfère cela)
*monPointeur.maStructure =AllocateStructure(maStructure)

On peut après remplir toutes les variable de la structure ou pas, mais il faut impérativement assigner l'adresse des fonctions comme expliquer ci plus haut.

L'interface permet juste de pouvoir atteindre l'adresse de la procédure que l'on a assigné dans la structure

Voici un petit exemple complet

Code : Tout sélectionner

Structure people
  *fonctions ; adresse des procédures
  nom.s
EndStructure
; simple procédure ou l'adresse de l'objet sera automatiquement renvoyée par
; l'interface
Procedure hello(*this.people)
  With *this
    Debug "Bonjour "+\nom
  EndWith
EndProcedure
Procedure bye(*this.people)
  With *this
    Debug "Aurevoir "+\nom
  EndWith
EndProcedure
; le constructeur
Procedure newPeople(nom.s)
  Protected *this.people = AllocateStructure(people)
  With *this
    \fonctions = ?FONCTIONS
    \nom = nom
    ProcedureReturn  *this
  EndWith
EndProcedure
DataSection
  FONCTIONS:
  Data.i @hello()
  Data.i @bye()
EndDataSection
; l'interface je vais utiliser d'autre noms de fonction
; pour te montrer que le nom importe peux, l'ordre des fonction par contre
; est primordial
Interface Personne ; je peux également peux appeller l'interface comme je le veux
  Bonjour()
  Aurevoir()
EndInterface

; je crée quelques objet

Global.Personne Jean,Pierre,Alain
Jean = newPeople("Jean")
Pierre = newPeople("Pierre")
Alain = newPeople("Alain")

Debug Alain\Bonjour()
Debug Pierre\Bonjour()
Debug Jean\Bonjour()
Debug Alain\Aurevoir()
Debug Pierre\Aurevoir()
Debug Jean\Aurevoir()

Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Poo class abstraite

Message par Micoute »

La poo vue sous cet angle est simplissime, merci pour le partage du savoir faire.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Poo class abstraite

Message par Kwai chang caine »

"Simplicime" n'est pas le premier adjectif qui me vient à l'esprit, mais c'est vrai que ça fait un peu moins peur 8)

Déjà en lisant ton code, je viens d'apprendre ce qu'est un constructeur :D
Car jusque là, à part les voitures, l'immobilier et le "boa" ...je voyais pas :mrgreen:

C'est aussi un peu la faute des créateurs de la poo, si pas mal d'anciens développeurs ont eu du mal à s'y mettre.
Ils ont pris un plaisir fou, à changer tous les noms, afin qu'aucun parallèle ne soit fait avec le has been procédural.
Comme pour linux, tout est nouveau et pas du tout pensé pareil, le départ est une feuille blanche, et un developpeur amnésique

Alors que Fred pour ne citer que mon idole, il a pas eu cette prétention.
Il est au contraire resté au plus près du c, dans le comportement, la philosophie, et du basic.
Ce qui fait que en programmant pb on apprend aussi à programmer c.

Quand j'entendais parler de constructeur, je me disais c'est quoi encore cette merde.
Si on avait dit déclaration j'aurais peut être mieux compris
Alors on peut dire que en pb, les maps et listes ont un constructeur

C'est super gentil de prendre de ton temps, pour nous faire voyager dans ton monde.
Je te remercie mille fois 8)

Mais alors pour wrapper une dll poo, il faut obligatoirement avoir son source pour connaître la structure de ses pointeurs ?
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre