Poo class abstraite
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Poo class abstraite
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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Poo class abstraite
Demande à un aveugle, si il veut voir !!!
Sincèrement, les bras m'en tombent de ta proposition
Rien que de l'avoir faite, je t'en remercie déjà
Ma question va te paraitre débile, mais bien sûr tu utiliserais un langage POO ?
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
Sincèrement, les bras m'en tombent de ta proposition
Rien que de l'avoir faite, je t'en remercie déjà
Ma question va te paraitre débile, mais bien sûr tu utiliserais un langage POO ?
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
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Poo class abstraite
@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.
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
Work at Centre Spatial de Liège
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Poo class abstraite
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 (Tiens elle fait quoi bobonne aujourd'hui ? )
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
"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 , à moins que tu sois blonde à forte poitrine
Encore merci pour ton offre généreuse...je continue mes recherches dans la jungle du pilotage WEB
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 (Tiens elle fait quoi bobonne aujourd'hui ? )
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
"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 , à moins que tu sois blonde à forte poitrine
Encore merci pour ton offre généreuse...je continue mes recherches dans la jungle du pilotage WEB
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Poo class abstraite
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
Work at Centre Spatial de Liège
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Poo class abstraite
Alors là......
Les bras m'en tombent !!!!
Je suis ébouriffé
Tu veux dire que TOUTES les DLL (Standard bien sûr) même faites en POO, peuvent être utilisée en PB !!!
Je ne le savais pas !!!
Je pensais bêtement, que pour manipuler une DLL POO il fallait un langage POO
Mais alors..... ça donne un espoir infini ce que tu me dit là !!!
Les bras m'en tombent !!!!
Je suis ébouriffé
Tu veux dire que TOUTES les DLL (Standard bien sûr) même faites en POO, peuvent être utilisée en PB !!!
Je ne le savais pas !!!
Je pensais bêtement, que pour manipuler une DLL POO il fallait un langage POO
Mais alors..... ça donne un espoir infini ce que tu me dit là !!!
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Poo class abstraite
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
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
Work at Centre Spatial de Liège
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Poo class abstraite
Alors là !!!!!! j'ai bien fait de me lever ce matin !!!!
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
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
Qui a dit que la POO était simple ??? hein qui ???
A partir de combien d'années d'hopital psychiatrique on peut coder ce genre de choses ??
http://www.purebasic.fr/german/viewtopi ... f7a#p10031
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
Truc de dingue, en fait dans tout ce que je t'ai écrit avant, je voulais rajouter (et oui j'ai pas tout dit ) 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 longtempsLes 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]
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
Qui a dit que la POO était simple ??? hein qui ???
A partir de combien d'années d'hopital psychiatrique on peut coder ce genre de choses ??
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)
- microdevweb
- Messages : 1800
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Poo class abstraite
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
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
etc..
Ensuite on y assigne l'adresse des fonctions
exemple:
2ème solution
on ajoute un pointeur pour toute les fonctions
On place l'adresse des fonctions dans un DataSection
exemple
On assigne les adresses
Le constructeur :
La c'est un rien plus compliqué, on assigne à un pointeur la structure
2 méthodes
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
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
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
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..
on ajoute un pointeur pour toute les fonctions
Code : Tout sélectionner
Structure maStructure
*MesFonctions
nom.s
var.l
EndStrucure
exemple
Code : Tout sélectionner
DataSection
MESFONCTIONS:
data.i @MaFonction1()
data.i @MaFonction2()
data.i @MaFonction3()
EndDataSection
Code : Tout sélectionner
maStructure\MesFonctions = ?MESFONCTIONS
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)
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
Work at Centre Spatial de Liège
Re: Poo class abstraite
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 !
Un homme doit être poli, mais il doit aussi être libre !
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Poo class abstraite
"Simplicime" n'est pas le premier adjectif qui me vient à l'esprit, mais c'est vrai que ça fait un peu moins peur
Déjà en lisant ton code, je viens d'apprendre ce qu'est un constructeur
Car jusque là, à part les voitures, l'immobilier et le "boa" ...je voyais pas
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
Mais alors pour wrapper une dll poo, il faut obligatoirement avoir son source pour connaître la structure de ses pointeurs ?
Déjà en lisant ton code, je viens d'apprendre ce qu'est un constructeur
Car jusque là, à part les voitures, l'immobilier et le "boa" ...je voyais pas
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
Mais alors pour wrapper une dll poo, il faut obligatoirement avoir son source pour connaître la structure de ses pointeurs ?