Portfolio de Dasek Joiakim - Semestre 4
Semestre 2
Module
Programmation

Programmation

La programmation est le processus de création d'un ensemble d'instructions qui permettent à un ordinateur d'exécuter des tâches spécifiques. En tant que développeur Java, je peux écrire des programmes en utilisant ce langage de programmation pour résoudre des problèmes et créer des applications.

Paradigme objet

Le paradigme objet est une approche de programmation qui se base sur les objets. Un objet est une entité qui combine des données (appelées attributs) et des actions (appelées méthodes). En utilisant le paradigme objet, je peux modéliser des problèmes du monde réel et les résoudre en manipulant des objets.

Définition de classes

Dans la programmation orientée objet, une classe est un modèle ou un plan pour créer des objets. Une classe définit les attributs et les méthodes communes à un groupe d'objets. Par exemple, si je crée une classe "Voiture", elle pourrait avoir des attributs tels que la couleur et la marque, ainsi que des méthodes comme "accélérer" et "freiner".

Composition/Encapsulation

La composition est un concept qui permet de combiner plusieurs objets pour en créer un nouveau. Cela signifie qu'un objet peut contenir d'autres objets en tant qu'attributs. Par exemple, je pourrais avoir une classe "Maison" qui est composée d'objets tels que des chambres, une cuisine et une salle de bains. L'encapsulation est un principe qui consiste à cacher les détails internes d'un objet et à ne permettre l'accès qu'à travers des méthodes spécifiques. Cela aide à organiser le code et à le rendre plus modulaire.

Héritage

L'héritage est un concept qui permet à une classe d'hériter des attributs et des méthodes d'une autre classe. La classe dont on hérite est appelée classe parent ou classe de base, et la classe qui hérite est appelée classe enfant ou classe dérivée. Par exemple, si j'ai une classe "Animal" avec des attributs et des méthodes communes à tous les animaux, je peux créer des classes dérivées telles que "Chien" et "Chat" qui hériteront de ces caractéristiques communes.

Classes abstraites et interfaces

Une classe abstraite est une classe qui ne peut pas être instanciée directement, mais qui sert de modèle pour d'autres classes. Elle peut contenir des méthodes abstraites, qui sont des méthodes sans implémentation. Les classes qui héritent d'une classe abstraite doivent fournir une implémentation pour ces méthodes abstraites. Une interface est une collection de méthodes abstraites qui peut être implémentée par n'importe quelle classe. Les interfaces permettent de définir un contrat que les classes doivent respecter. Par exemple, je pourrais avoir une interface "Volant" avec une méthode " voler", et les classes "Avion" et "Oiseau" pourraient implémenter cette interface.

Polymorphisme

Le polymorphisme est la capacité d'un objet à prendre plusieurs formes. Cela signifie qu'un objet peut être traité comme s'il était d'un type différent. Par exemple, si j'ai une classe "Animal" avec une méthode "crier", et que j'ai des objets de types "Chien" et "Chat" qui héritent de cette classe, je peux les traiter tous les deux comme des objets " Animal" et appeler leur méthode "crier".

Exceptions

Les exceptions sont utilisées pour gérer les erreurs et les situations exceptionnelles dans un programme. Une exception est une condition anormale qui interrompt le flux d'exécution normal du programme. Par exemple, si j'essaie de diviser un nombre par zéro, une exception de type "ArithmeticException" sera levée. Je peux utiliser des blocs "try-catch" pour attraper et gérer les exceptions, en prenant des mesures appropriées lorsque celles-ci se produisent.

Structures de données

Les structures de données sont des moyens de stocker et d'organiser des données dans un programme. Elles fournissent des méthodes pour l'ajout, la suppression et la manipulation des données. Par exemple, un tableau est une structure de données qui permet de stocker plusieurs éléments de même type. Une liste chaînée est une autre structure de données qui permet de stocker des éléments liés les uns aux autres.

Types de données abstraites

Les types de données abstraites (TDA) sont des modèles de données qui définissent les opérations possibles sur ces données, sans préciser leur implémentation interne. Par exemple, une pile est un TDA qui permet de stocker des éléments et de les retirer selon le principe du "dernier entré, premier sorti" (LIFO). Une file d'attente est un autre TDA qui suit le principe du "premier entré, premier sorti" (FIFO).

Algorithmique

L'algorithmique concerne la conception et l'analyse d'algorithmes, qui sont des séquences d'instructions pour résoudre un problème. En tant que développeur Java, je dois comprendre les différents algorithmes et choisir celui qui convient le mieux à chaque situation.

Récursivité, algorithmes de tri

La récursivité est un concept où une fonction s'appelle elle-même pour résoudre un problème. Par exemple, l'algorithme de calcul de la factorielle d'un nombre est souvent implémenté de manière récursive. Les algorithmes de tri sont utilisés pour trier une liste d'éléments dans un ordre particulier. Des exemples d'algorithmes de tri populaires sont le tri par sélection, le tri à bulles et le tri rapide.

Backtracking

Le backtracking est une technique algorithmique utilisée pour résoudre des problèmes de manière itérative en explorant toutes les possibilités. L'idée est de revenir en arrière (backtrack) chaque fois qu'une solution partielle ne peut pas être complétée. Par exemple, le problème du "voyageur de commerce" peut être résolu en utilisant l'algorithme de backtracking.