Le but de ce projet était de compléter notre formation au C en nous faisant travailler par groupe de 3 sur un sujet de notre choix entre deux: compression d’un fichier jpeg ou création d’interface graphique. J’ai choisi le deuxième sujet.
Etait mis à notre disposition un squelette de projet et nous avions 3 semaines pour nous organiser et produire un résultat fonctionnel.
Les plus grandes difficultés ont résidé dans la gestion de projet. En effet, nous avons dû apprendre à travailler à distance et installer tout l’environnement sur nos machines sachant que celles-ci n’avaient pas nécessairement le même OS. En effet, dans notre cas, j’étais le seul sous Linux et les deux autres étaient sous Windows. Un certain nombre des fonctions qu’elles codaient ne fonctionnaient pas sous Linux et il a fallu que je corriger leur code en plus du mien en vue de la soutenance. Comme j’étais de très loin le plus investi du groupe, je me suis retrouvé en situation de crunch, à travailler toute la semaine y compris le week-end plus de 12 heures par jour avec une pointe à 15 et 18h les deux derniers jours afin de réussir ce projet.
Le point le plus intéressant à mon sens était le polymorphisme. En effet, afin d’intégrer plusieurs instances de type différents mais issus du même type parent (pour des widgets notamment), il était nécessaire de disposer d’une forme d’héritage. Toutefois, le C n’étant pas un langage orienté-objet, il ne le permet pas et en interprêtant un pointeur différemment selon notre usage, il était alors possible d’en simuler le fonctionnement.
La gestion du raffraichissement d’une page était également un point particulièrement éveillant puisqu’il était nécessaire de réfléchir à comment diminuer au maximum le temps d’exécution pour avoir un déroulé fluide. Cela impliquait notamment de comparer et fusionner des surfaces.
Dans un tout autre esprit, la gestion des évènements de la souris et du clavier dans leurs interactions avec les fenêtres était une expérience étrange et un point technique très sensible à gérer qui a posé de nombreux soucis et remises en questions.