Kommunauty
Connexion
Inscription

[Projet] libPOO De l'orienté objet en C


seb776 Messages : 8

Salut à tous, comme promis dans ma présentation, je viens vous faire part aujourd'hui d'un projet que j'ai commencé le mois dernier .

libPOO

  • libPOO Kezako ?

libPOO est une librairie orientée objet que je développe en C pour le langage C.

Elle contient une collection complète d'outils divers et variés qui ont pour but, d'alléger le côté purement "technique" du langage C.

  • libPOO Pourquoi ?

A la base l'idée était de me faire une librairie pour mon année scolaire. Je suis actuellement à epitech, et la pédagogie veut que si on utilise quelque chose, c'est que nous l'avons codé nous même (on nous demande pas de re-coder tous les appels systèmes non plus hein ).

Je suis totalement en accord avec ça, donc pour me faciliter la vie, j'ai décidé de me créer cette librairie pour y mettre tous mes outils. L'orienté objet pourquoi ? Eh bien, j'ai un esprit un peu farfelue et j'adore faire des choses non scolaires (pour titiller mes correcteurs ) puis il faut avouer que c'est quand même la classe 8).

J'ai donc fait en sorte de pouvoir me rapprocher de la syntaxe orienté objet malgré que le C ne soit pas fait pour.

J'ai commencé le C# il y a quelques mois pour un stage, l’expérience de l'orienté objet et mon amour pour le langage C ont donc fait naître le projet.

  • libPOO Cahier des Charges

    implé : fonctionnel et totalement vérifié (ne changera pas)

    implé : fonctionnel et implémenté et/ou début de vérification (peut être changé)

    implé : Non implémenté

    *implé : Incomplète

    • mots clefs :

      new(type()) *implé Permet d'instancier new(intArray(50)) par exemple

      this(type) implé Permet de récupérer la totalité de la structure dans une fonction (cf orienté objet)

      obj(type, obj) implé Permet de stocker l' "objet" afin de l récupérer grâce à this.

      foreach(type, obj, typeEnum, Enum) implé Permet de parcourir une structure qui contient une methode Foreach qui est conforme au mécanisme (je le detaillerais plus tard)

      stopforeach(Enum, instruction) implé Permet d'interrompre une boucle foreach (par un break, un return ou un goto)

      AS_STRING(str) *implé Permet de faire AS_STRING("toto a de belles fesses").Split(" ", SPLIT_EACH_OCCUR) (qui donne une tableau de mots...)

      throw, try, catch, finally *implé Pour avoir une gestion d'erreur plus précise à l'execution

    • Types :

      bool implé true ou false

      byte implé variable numérique non-signée d'un octet

      object implé Permet de stocker des références.

      string implé string a = "mon texte";

      Tuple implé une simple structure qui contient 2 object

      Comparison implé Pointeur sur fonction de type bool ma_fonction(object fromIterator, object fromUser);

      List *implé Structure qui contient un tableau qui se réalloue automatiquement à l'ajout d'éléments. (Contient beaucoup de méthodes préfaites)

      LinkedList *implé Pareil que la liste sauf qu'elle ne marche pas avec un tableau.

      Tuple(typeA, typeB) implé type référence à une structure contenant un typeA et un typeB (type générique)

      Exception implé pour le module throw-try-catch

Par la suite je pense faire un pdf pour décrire la totalité de la librairie, car même la je n'ai pas détaillé ce que contiennent LinkedList et List, donc voici un ptit screen pour vous . Donc bien sur le projet sera gratuit et open source, avoir un retour la dessus me serait très utile .

Par contre ça sera copyrighté.

Si certains veulent participer à ce projet il faudra attendre un petit peu le temps que je puisse sortir une version totalement stable...

Bon... ok mais à l'utilisation ça donne quoi ?


List mots;

mots = AS_STRING(monTexte).Split(" ", SPLIT_EACH_OCCUR);

foreach(string, tmp, List, mots)
{
printf("%s\n", tmp);
}

output->

tous

les

mots

de

mon

texte

Bon j'espère que l'idée en séduira certains, surtout n'hésitez pas, proposez vos idées, que ça soit sur la présentation ou sur la lib en elle même , Bonne journée

lundi 16 décembre 2013 (Dernière édition lundi 16 décembre 2013)

Ryu Messages : 1975

Je développe pas en C, donc je suis pas trop concerné, mais je peux toujours te dire que le partage est très sympa, même si je ne peux juger moi-même de la qualité de ton taf. D'autres s'en chargeront bien.

lundi 16 décembre 2013

seb776 Messages : 8

Erf y'a pas beaucoup de développeurs C sur le forum visiblement ><.

mercredi 18 décembre 2013

Lucho Messages : 153

perso je comprends rien à ce que tu as écrit c'est loin d'être mon niveau

mercredi 18 décembre 2013

MMK Messages : 246

Alors je suis pas un expert mais pourquoi faire une bibliothèque objet en C alors que le C++ est tellement plus puissant ?

mercredi 18 décembre 2013 (Dernière édition mercredi 18 décembre 2013)

Mizur Messages : 6618

Pareil que MMK ! Enfin je ne suis pas expert, et justement : le C, ok, mais franchement il y a des langages tellement plus puissants et simples (et modernes !) de disponibles...! En dehors du C vraiment bas niveau genre limite matériel pour programmer sur des PIC ou des AVR, ok, mais sinon, aïe aïe aïe !

jeudi 19 décembre 2013

seb776 Messages : 8

C'est vrai qu'il y a beaucoup de langages plus puissant, mais il y a peu de langages de bas niveau...

Pour moi le c++ ajoute une couche d'abstraction qui en fait un langage de haut niveau (je ne crache pas sur les langages de haut niveau hein ).

Par exemple les références, ça marche sur le même principe que les pointeurs, sauf que l'utilisateur n'a pas a trop se casser le cul pour comprendre ce qu'il fait. L’inconvénient c'est qu'au détriment des performances, on préfère laisser l’opportunité d'un code "simple" à comprendre.

Je trouve important en tant que développeur, de savoir à chaque instruction, le coup approximatif en terme de puissance de calcul et de mémoire.

Il ne faut pas oublier que le métier de développeur est avant tout un métier technique, donc pourquoi essayer de cacher la technique ?

EDIT: Ceci dis j'ai peut-être présenté la librairie d'une mauvaise façon, c'est vraiment très simple à utiliser, je fais ça aussi pour que la prise en main soit rapide.

jeudi 19 décembre 2013 (Dernière édition jeudi 19 décembre 2013)

Vanyali Messages : 1298

moi je code surtout en C++ et à vrai dire revenir sur le C pour faire presque un nouveau langage alors que le C++ permet de faire la même chose avec de nombreuses choses déjà implémentas, je ne vois pas vraiment l'utilité pour les autre, après je dis pas, ça peut être une bonne chose pour apprendre.

Le C++ reste le langage le plus bas niveau que je connaisse et permet de gérer les choses les plus énervantes du C comme les malloc tout seuls mais étant rétrocompatible, tout ce que tu peut faire en C tu peut le faire en C++. donc de l'assembleur aussi vu qu'on peut faire de l'assembleur en C

En tout cas ça m'a l'air bien complexe et j'aurais jamais su comment m'y prendre pour démarrer bien joué

vendredi 20 décembre 2013

seb776 Messages : 8

Merci pour cette réponse , à vrai dire y'a un truc qui me chagrine dans pas mal de langages, c'est pour toutes ces "fonctions" déjà implémentées, il est difficile de trouver une documentation qui détaille l'implémentation, donc du coup, pour connaître les instructions asm générées par le code c'est un peu galère (quand on veut faire des optis).

Là, il s'agit d'un projet open source, donc laissant accès aux utilisateurs à l'implémentation. Ça me permet en parallèle de tester plusieurs approches d'implémentation.

lundi 23 décembre 2013

Vanyali Messages : 1298

sur le C++ il y a cplusplus.com qui est très complet et où on trouve généralement toute les informations

jeudi 26 décembre 2013

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !