Fiche de Révision : Paradigmes de Programmation
Définition d’un programme
- Description d’une méthode pour résoudre un problème
- Suite d’instructions d’un langage
- Transforme des données → résultat
Étapes de développement
- Analyse : comprendre le problème
- Conception : créer l’algorithme
- Développement : coder
- Mise au point : compilation + tests
Traducteurs de programmes
- Compilateur : traduit tout le programme
- Interpréteur : traduit et exécute ligne par ligne
Langage haut niveau : compréhensible par humain
Langage bas niveau : compréhensible par machine
Types de programmation
Procédurale
- Basée sur des procédures
- Exécution séquentielle
- Peu modulaire
- Maintenance difficile
Orientée objet
- Basée sur des objets
- Données + méthodes
- Modélisation du monde réel
Concepts OOP
- Classe : modèle (abstrait)
- Objet : instance (concret)
- Héritage : classe fille hérite de la mère
- Polymorphisme : plusieurs formes possibles
- Transtypage : changer le type perçu
Compilation vs Interprétation
- Compilation : rapide à l’exécution
- Interprétation : exécution directe
- Semi-compilation : bytecode + machine virtuelle
- Le bytecode est un code binaire, ce qui permet un traitement plus rapide que le code source Java, et qui rassemble (compile) tous les codes dispersés dans différents fichiers lors de l'écriture du programme.
Cycle de développement
Problème → Analyse → Algorithme → Programme → Compilation → Exécution
Questions clés
- Quelles sont les données sur lesquelles le programme travaille.
- Quels sont les services qu'il doit offrir.
- Quels sont les traitements qu'il doit effectuer pour offrir ces services
- Comment faut-il organiser et représenter les données pour que les traitements soient possibles
- Comment les traitements s'appellent-ils les uns – les autres / sont-ils appelés par l'interface de requête
- Comment peut-on construire au mieux les différents traitements.
- Implémenter les structures de données dans le langage choisi / Implémenter les traitements.
POO et Cybersécurité
Points forts
- Encapsulation : protège les données sensibles (accès contrôlé)
- Modularité : code organisé → plus facile à sécuriser et tester
- Réutilisation : moins de duplication → moins de failles potentielles
- Abstraction : cache les détails internes → réduit les risques d’exploitation
Points faibles
- Complexité : erreurs de conception peuvent créer des failles
- Mauvaise gestion des accès : attributs publics exposés
- Héritage mal utilisé : peut propager des vulnérabilités
- Surface d’attaque : plus de code → plus de points d’entrée possibles
Risques spécifiques
- Injection : si les objets manipulent des entrées non sécurisées
- Désérialisation : objets manipulés peuvent être exploités
- Fuite de données : mauvaise encapsulation
Une bonne conception orientée objet améliore la sécurité, mais une mauvaise implémentation peut introduire des vulnérabilités.