En Programmation Orientée Object (POO), la généricité est un concept permettant de définir des algorithmes (types de données et méthodes) identiques qui peuvent être utilisés sur de multiples types de données. Cela permet donc de réduire les quantités de codes à produire.
Le code qui utilise la généricité a de nombreux avantages par rapport au code non générique: Contrôles de type plus forts au moment de la compilation. Un compilateur Java applique un contrôle de type fort au code générique et émet des erreurs si le code enfreint la sécurité au niveau de typage.
Le polymorphisme est un mécanisme important dans la programmation objet. Il permet de modifier le comportement d'une classe fille par rapport à sa classe mère. Le polymorphisme permet d'utiliser l'héritage comme un mécanisme d'extension en adaptant le comportement des objets.
Une classe est un modèle de définition pour des objets ayant le même ensemble d'attributs, et le même ensemble d'opérations. A partir d'une classe on peut créer un ou plusieurs objets par instanciation ; chaque objet est une instance d'une seule classe.
Les attributs sont des variables ou des objets nécessaires au fonctionnement de l'objet. En Java, une application est un objet. La classe est la description d'un objet. Un objet est une instance d'une classe.
L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de visibilité définissent les droits d'accès aux données selon que l'on y accède par une méthode de la classe elle-même, d'une classe héritière, ou bien d'une classe quelconque.
Définition du polymorphisme
Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et leur hiérarchie), le polymorphisme est relatif aux méthodes des objets.
La programmation orientée objet obéit à des principes. Les 4 principaux principes sont l'encapsulation, l'héritage, le polymorphisme et la généricité.
La surcharge d'une méthode ou d'un constructeur permet de définir plusieurs fois une même méthode/constructeur avec des arguments différents. Le compilateur choisit la méthode qui doit être appelée en fonction du nombre et du type des arguments .
L'héritage permet de représenter la relation "est-un" entre deux objets (is-a en anglais). Donc tout ce qui est vrai pour la classe mère est vrai pour ses classes filles. En particulier si une classe C exprime une association avec une classe A dont hérite B, cela signifie que C peut être associée à B.
Un objet est une instance d'une classe, qui est l'outil fondamental de programmation en Java. Une classe peut aussi être considérée comme une description de ce qu'il faut faire pour créer un objet. Les classes sont composées de méthodes et d'attributs qui peuvent être public, private ou protected.
Langage Java
Son but était de pallier une déficience des langages de programmation en produisant un langage conçu pour des machines et des logiciels hétérogènes.
Java est un langage de programmation largement utilisé pour coder des applications web.
L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de visibilité définissent ce qu'on appelle la portée (ou encore le périmètre) de la l'attribut/méthode. La portée est ainsi définie par méthode et par attribut et indique les droits à leur accès.
L'abstraction est l'un des concepts clés dans les langages de programmation orientée objet (POO). Son objectif principal est de gérer la complexité en masquant les détails inutiles à l'utilisateur.
En programmation fonctionnelle, une fonction est l'unité de manipulation principale. En POO, un objet est l'unité de manipulation principale. En programmation fonctionnelle, ses fonctions n'ont pas d'effets secondaires, cela n'a aucun impact sur le code qui s'exécute sur plusieurs processeurs.
extends permet d'étendre une classe ou une interface. Il ne peut y avoir qu'un seul extends pour une classe. (Héritage simple). implements permet de spécifier quelle interface on souhaite utiliser pour une classe.
Classes abtraites et interfaces ont chacune une fonction bien distincte : les classes abstraites servent à factoriser du code, tandis que les interfaces servent à définir des contrats de service.
Le mot clé protected est un modificateur d'accès utilisé pour les attributs, les méthodes et les constructeurs. Lorsqu'une méthode ou une variable est marquée comme protected, elle est accessible : Dans la classe mère. Autres classes dans le même package que la classe mère.
Le mot clé static est utilisé pour désigner une propriété dont la valeur est identique pour tous les objets de la classe. Le mot clé static est aussi utilisé pour désigner une méthode qui n'accède à aucune propriété non static. Une méthode qui accède à une propriété static doit être déclarée static.
Une méthode de classe ou une méthode statique est une méthode qui n'agit pas sur des variables d'instance mais uniquement sur des variables de classe.
Une fonction membre déclarée static a la particularité de pouvoir être appelée sans devoir instancier la classe. Elle ne peut utiliser que des variables et des fonctions membres static elles aussi, c'est-à-dire qui ont une existence en dehors de toute instance.