Fiche de révision : Fondamentaux de Java et objets

Plan du Cours

  1. Programmation procédurale et objet
  2. Concepts fondamentaux de l’objet
  3. Modélisation objet et technologie Java
  4. Bases du langage Java
  5. Variables et types Java
  6. Expressions, contrôle et tableaux
  7. Chaînes, programme et entrées-sorties
  8. Classes, objets et constructeurs
  9. Membres, portée et classes utilitaires
  10. Introduction à l’héritage
  11. Usage et structure de l’héritage
  12. Membres et relations d’héritage
  13. Encapsulation et redéfinition
  14. Polymorphisme et abstractions Java
  15. Classe Object et modificateurs
  16. Interfaces et héritage multiple
  17. Expressions lambda et interfaces fonctionnelles
  18. Références de méthodes

1. Programmation procédurale et objet

Points essentiels

📌 La programmation traditionnelle décompose un problème en sous-problèmes élémentaires selon une approche descendante, sépare les données des traitements et assemble des structures de données avec des algorithmes.

  • La programmation procédurale produit une solution liée au problème, peu générique et peu réutilisable, dont les différentes portions sont fortement dépendantes.

  • La conception objet cherche à minimiser l’information partagée afin de réduire les effets imprévus et les bugs, puis favorise la réutilisation de composants indépendants du contexte et leur spécialisation.

Astuce mémo

Procédural : données séparées des traitements ; objet : composants réutilisables et moins dépendants.

2. Concepts fondamentaux de l’objet

Notions clés & Définitions

  • Objet : Élément complètement identifié qui possède un état, un comportement et une identité ; les termes objet et instance sont synonymes.
  • Classe : Définit abstraitement un ensemble d’objets ayant des états et des comportements similaires, avec une structure commune et des opérations communes.
  • Encapsulation : Masque aux utilisateurs les états et le fonctionnement interne d’un objet en séparant l’interface, qui définit les services rendus, de l’implémentation, qui décrit leur réalisation.

★ À maîtriser

📌 L’instanciation est la relation et le mécanisme qui permettent de créer un objet à partir de sa classe, et un objet est l’instance d’une seule classe.

Compléments

📌 Une variable d’instance appartient à un objet particulier, tandis qu’une variable de classe contient une donnée commune aux instances et s’utilise avec des méthodes de classe invoquées sur la classe.

📌 Un message synchrone bloque l’appelant jusqu’à la fin de l’opération, tandis qu’un message asynchrone permet à l’appelant de poursuivre son traitement et peut rendre plusieurs objets actifs simultanément.

Astuce mémo

AE-MH : abstraction, encapsulation, modularité, hiérarchie.

3. Modélisation objet et technologie Java

Notions clés & Définitions

  • Modèle : Représentation du système informatique à réaliser, construite par affinements successifs depuis les éléments de la réalité jusqu’aux éléments informatiques réalisables.

★ À maîtriser

  • Les caractéristiques essentielles de l’orienté objet sont:

    • l’abstraction
    • l’encapsulation
    • la modularité
    • la hiérarchie
  • La modélisation objet construit le système de façon ascendante comme un assemblage de composants unitaires, contrairement à l’approche descendante de la programmation procédurale.

  • Java est un environnement orienté objet comprenant un langage, une machine virtuelle appelée JVM et un ensemble d’API et d’outils tels que jdb et javadoc.

  • Java est portable parce que les programmes sont traduits en Java bytecode, indépendant de la cible et interprété par une plateforme Java.

Compléments

📌 UML est un formalisme graphique normalisé par l’OMG qui définit des diagrammes statiques ou dynamiques, mais ce n’est pas une méthode de modélisation.

Astuce mémo

Réalité → modèles affinés → composants informatiques → bytecode exécuté par la JVM.

4. Bases du langage Java

Notions clés & Définitions

  • Variable : Entité composée d’un nom et d’un type, et qui ne peut être définie que dans une classe, jamais globalement.

Points essentiels

  • Le cycle de développement Java transforme les fichiers source en bytecode : le compilateur produit un fichier .class par classe, puis l’interpréteur charge dynamiquement les classes et exécute les instructions de bytecode.

📌 Un fichier Java peut contenir une ou plusieurs classes, mais une seule peut y être déclarée public et son nom doit être exactement celui du fichier, dont l’extension est .java.

  • Les quatre catégories de variables selon leur portée sont:
    • la variable d’instance
    • la variable locale
    • le paramètre de méthode
    • le paramètre de gestionnaire d’exception

📌 En Java, les variables numériques sont initialisées par défaut à 0, les variables objets à null, et une variable final ne peut plus changer après son initialisation.

Astuce mémo

Fichier .java → compilation en .class → chargement et exécution du bytecode.

5. Variables et types Java

Notions clés & Définitions

  • Variable : Entité possédant un nom et un type, qui ne peut être définie que dans une classe et reçoit par défaut 0 pour une valeur numérique ou null pour une référence d’objet.

Points essentiels

📌 La valeur d’une variable final ne peut plus changer après son initialisation, et une variable locale final déclarée mais non encore initialisée est appelée blank final.

  • Les types primitifs Java comprennent byte, short, int, long, float, double, char et boolean, avec respectivement des formats de 8, 16, 32, 64, 32, 64 et 16 bits pour les types numériques ou caractères, tandis que boolean représente true ou false.

Astuce mémo

Variable d’instance par objet, variable de classe partagée

6. Expressions, contrôle et tableaux

Notions clés & Définitions

  • Expression : Combinaison de variables, d’opérateurs et d’appels de méthodes qui s’évalue en une valeur unique.
  • Tableau : Structure de données de taille fixe dont tous les composants ont le même type, y compris éventuellement un autre tableau.

Points essentiels

📌 Une instruction est une unité d’exécution complète terminée par un point-virgule, tandis qu’un bloc regroupe zéro ou plusieurs instructions entre accolades.

  • Les opérateurs Java comprennent les opérateurs arithmétiques +, -, *, / et %, les opérateurs relationnels >, >=, <, <=, == et !=, les opérateurs logiques &&, || et !, les opérateurs de décalage >>, << et >>>, les opérateurs binaires &, |, ^ et ~, les opérateurs d’affectation, ainsi que ?:, [], ., (), le cast, new et instanceof.

📌 Lorsque plusieurs opérateurs ont le même niveau de priorité, leur associativité détermine le sens d’évaluation ; la soustraction est associative de gauche à droite, donc 1-2-3 vaut -4.

  • Les instructions de contrôle comprennent:
    • if-else et switch-case
    • while, do-while et for
    • break, continue et return
    • try, catch et throw

📌 Dans un tableau Java, l’indice commence à 0 et se termine à la taille du tableau moins 1, tandis que l’attribut length donne sa taille.

Astuce mémo

Expression → instruction → bloc

7. Chaînes, programme et entrées-sorties

Notions clés & Définitions

  • String : Chaîne de caractères créée à partir d’un littéral ou d’un tableau de caractères, dont la longueur se consulte avec length et un caractère avec charAt.

★ À maîtriser

  • La méthode main est la première méthode invoquée automatiquement et sa signature utilise public, static et void avec un unique argument String[] args.

Compléments

  • Le nombre d’arguments transmis à la méthode main est obtenu par l’expression args.lengthargs.length.

  • 🔄 La lecture d’une valeur primitive suit ces étapes:

    1. lire les caractères
    2. les stocker dans une String
    3. convertir la String vers le type primitif

Astuce mémo

String immuable, StringBuffer modifiable

8. Classes, objets et constructeurs

Notions clés & Définitions

  • Classe : Prototype d’objets qui définit un nouveau type et contient des variables et des méthodes comme membres.
  • Constructeur : Un constructeur initialise les variables d’instance, porte le nom de la classe, ne possède pas de type de retour et peut être surchargé.

Points essentiels

  • Pour utiliser un objet Point, on déclare une référence, on instancie l’objet avec new, puis on accède à ses variables ou on invoque ses méthodes.

📌 Si aucune classe ne définit de constructeur, Java en fournit un par défaut ; dès qu’un constructeur est défini, ce comportement par défaut disparaît.

Astuce mémo

Classe → instance → constructeur → méthodes

9. Membres, portée et classes utilitaires

Notions clés & Définitions

  • Composition d’objets : Utilisation d’une instance d’une classe comme variable d’instance d’une autre classe, comme un Cercle contenant un Point centre.

★ À maîtriser

  • Chaque objet possède une copie de ses variables d’instance, tandis que toutes les instances d’une classe partagent une seule copie de ses variables de classe.

  • Le mot-clé static déclare un membre de classe et le mot-clé final indique que sa valeur ne peut pas changer.

  • Les arguments sont passés par valeur : pour un type primitif, la méthode ne modifie pas la valeur originale, tandis que pour une référence d’objet elle peut modifier les données de l’objet mais pas la référence originale.

  • String est destinée aux chaînes dont la valeur ne change pas, tandis que StringBuffer est destinée aux chaînes modifiables.

Compléments

  • Une méthode statique n’accède pas directement aux variables d’instance, et le mot-clé this désigne l’objet sur lequel une méthode d’instance a été invoquée.

  • Les classes enveloppes Integer, Double, Float et Long fournissent notamment valueOf pour convertir une String en objet de la classe enveloppe et parseXxx pour convertir une String en donnée primitive.

Astuce mémo

Instance indépendante, classe partagée

10. Introduction à l’héritage

Points essentiels

  • L’héritage favorise la réutilisation de code existant, l’utilisation de bibliothèques stables, la maintenance et la simplification de la représentation de la réalité.

📌 L’héritage est envisagé lorsque des classes ont des fonctionnements ou des services semblables afin de factoriser des attributs ou des méthodes, mais il n’apparaît généralement pas au début de la modélisation.

Astuce mémo

Réutilisation du code → maintenance facilitée

11. Usage et structure de l’héritage

Notions clés & Définitions

  • Arbre : graphe non orienté, connexe et acyclique

★ À maîtriser

📌 L’héritage est généralement introduit après le début de la modélisation, lorsque des classes ont des fonctionnements ou des services semblables afin de factoriser des attributs ou des méthodes.

📌 En Java, une classe hérite directement d’une seule classe, hérite par défaut de la classe Object et ne peut participer à un cycle d’héritage.

Compléments

📌 La relation d’héritage dépend du contexte du problème, mais la modélisation doit aussi envisager les réutilisations futures lorsque le programme s’enrichit de nouvelles ressources.

Astuce mémo

Classes comparables → factorisation des attributs et méthodes

12. Membres et relations d’héritage

Notions clés & Définitions

  • Généralisation : factoriser les propriétés communes d’un ensemble de classes dans une classe plus générale dont les autres héritent
  • Spécialisation : dériver une nouvelle classe en lui ajoutant des propriétés et des comportements propres, ou en spécialisant un comportement existant

★ À maîtriser

📌 Une classe D hérite d’une classe B si D est une sorte de B, de sorte que tout ce qui est vrai pour B le soit également pour D.

  • Lorsqu’une méthode est invoquée, Java la recherche d’abord dans la classe de l’objet, puis remonte de superclasse en superclasse jusqu’à trouver la première méthode qui convient.

Compléments

  • La classe générale est appelée classe de base, classe mère ou superclasse, tandis que la classe spécialisée est appelée classe dérivée, classe fille ou sous-classe.

  • Une classe peut avoir un nombre illimité de sous-classes et l’héritage peut s’étendre sur plusieurs niveaux.

Astuce mémo

Généralisation factorise, spécialisation enrichit

13. Encapsulation et redéfinition

★ À maîtriser

  • La surcharge propose plusieurs méthodes de même nom avec des signatures différentes, tandis que la redéfinition remplace dans une sous-classe une méthode héritée de même signature.

  • Une méthode redéfinie doit conserver le même nom, le même type de résultat, le même nombre et les mêmes types de paramètres que la méthode de la superclasse, avec un accès identique ou moins restrictif.

  • Un membre private est accessible uniquement dans sa classe, un membre par défaut dans les classes du même package, un membre protected dans les sous-classes et les classes du même package, et un membre public dans toutes les classes.

  • Le constructeur d’une sous-classe doit appeler en premier le constructeur de sa superclasse, qui initialise les attributs hérités, tandis que le constructeur de la sous-classe initialise ses propres attributs.

Compléments

📌 Une méthode redéfinie peut être appelée avec le mot-clé super, mais une méthode déclarée final ou static dans la classe de base ne peut pas être redéfinie.

Astuce mémo

Surcharge : signatures différentes ; redéfinition : même signature

14. Polymorphisme et abstractions Java

Notions clés & Définitions

  • Polymorphisme : la capacité d’objets d’une même hiérarchie à répondre différemment à une même opération selon leur classe réelle
  • Interface : structure qui spécifie des opérations sans en donner l’implémentation et constitue un contrat de service pour les classes qui l’implémentent
  • Classe abstraite : factorise des méthodes et des attributs communs, peut contenir des opérations implémentées et des attributs, mais ne peut pas être instanciée
  • Généricité : permet de définir un code applicable à tout type d’objet, puis de récupérer ces fonctionnalités pour un type donné

Points essentiels

📌 Le principe de substitution autorise l’utilisation d’une instance de sous-classe partout où une instance de superclasse est attendue, mais l’utilisation inverse exige une conversion explicite.

📌 Java interdit le multihéritage de classes, mais une classe peut hériter d’une classe et implémenter autant d’interfaces qu’elle le souhaite.

Astuce mémo

Superclasse accepte la sous-classe ; l’inverse exige un cast

15. Classe Object et modificateurs

Notions clés & Définitions

  • Classe Object : Classe qui définit l’état de base et le comportement que tout objet doit avoir et constitue la classe de base de toute la hiérarchie des objets.
  • Classe abstraite : Classe qui représente un concept abstrait et ne peut pas être instanciée ; elle se déclare avec le mot-clé abstract et peut contenir des méthodes abstraites sans implémentation.

★ À maîtriser

📌 La méthode equals de Object utilise l’identité pour considérer deux références comme égales lorsqu’elles désignent le même objet, mais elle peut être redéfinie pour comparer le contenu de deux objets.

  • La méthode clone crée un objet à partir d’un autre objet existant ; la classe doit implémenter Cloneable et le clonage doit appeler super.clone plutôt que l’opérateur new ou un constructeur.

📌 Une classe finale ne peut pas avoir de classe dérivée, tandis qu’une méthode finale ne peut pas être surdéfinie dans les sous-classes.

Compléments

  • La méthode toString retourne une représentation de l’objet sous forme de chaîne composée du nom de la classe et d’une représentation hexadécimale non signée du hashcode, ce qui est utile pour afficher ses informations.

  • La méthode getClass retourne un objet Class représentant à l’exécution la classe de l’objet.

Astuce mémo

final bloque l’héritage, abstract bloque l’instanciation

16. Interfaces et héritage multiple

Notions clés & Définitions

  • Interface : Contrat de service pouvant être implémenté par une classe et contenant notamment des déclarations de méthodes ainsi que des constantes implicitement public, static et final.

Points essentiels

  • Une classe qui implémente une interface doit implémenter toutes les méthodes déclarées par cette interface ou hériter de leur implémentation depuis une superclasse.

  • Java 8 permet aux interfaces de déclarer des méthodes static et des méthodes default avec une implémentation afin que les classes existantes puissent évoluer sans implémenter explicitement chaque nouvelle méthode default.

  • En cas d’héritage en diamant entre interfaces fournissant des méthodes default concurrentes, la classe peut résoudre l’ambiguïté en redéfinissant la méthode et en appelant explicitement l’implémentation voulue avec Interface.super.methode().

Astuce mémo

Méthodes default ajoutées → évolution non intrusive des interfaces

17. Expressions lambda et interfaces fonctionnelles

Notions clés & Définitions

  • Expression lambda : Fonction anonyme et raccourci syntaxique pour une interface fonctionnelle ne possédant qu’une seule méthode abstraite.

★ À maîtriser

📐 Formule — La syntaxe générale d’une expression lambda est (parameˋtres)→corps\text{(paramètres)} \to \text{corps}.

📌 Une lambda peut avoir zéro, un ou plusieurs paramètres, dont le type peut être explicite ou inféré ; les parenthèses sont facultatives pour un paramètre unique dont le type est inféré.

📌 Le corps d’une lambda peut être une expression unique ou un bloc de plusieurs instructions entre accolades ; avec une seule instruction, les accolades sont facultatives et la valeur de retour est celle de l’instruction si elle en possède une.

  • Les interfaces fonctionnelles courantes sont:
    • Function avec apply pour transformer et retourner une valeur
    • Predicate avec test pour retourner un booléen
    • Supplier avec get pour fournir une instance
    • Consumer avec accept pour effectuer une action sans valeur de retour

Compléments

  • Consumer<T> définit accept(T t) sans valeur de retour et sa méthode default andThen permet d’exécuter successivement le Consumer courant et celui fourni en paramètre.

Astuce mémo

Paramètres → flèche → corps

18. Références de méthodes

Notions clés & Définitions

  • Référence de méthode : Syntaxe simplifiée pour invoquer une méthode ou un constructeur dans le contexte d’une interface fonctionnelle et utilisant l’opérateur ::.
  • Exception : Événement survenant pendant l’exécution d’un programme et interrompant le flot normal des instructions.
  • Collection : Objet qui regroupe plusieurs éléments en une seule unité afin de stocker, récupérer et gérer des données.

Points essentiels

  • Les formes de référence de méthode sont: une méthode statique avec nomClasse::nomMethode, une méthode d’une instance avec objet::nomMethode, une méthode d’un objet arbitraire avec nomClasse::nomMethode, un constructeur avec nomClasse::new

📌 Après l’instruction de package, une classe peut utiliser directement le nom court d’un élément importé au lieu de son chemin complet.

📌 Le code d’une classe ou d’une interface est placé dans un fichier portant son nom et l’extension .java, dans une arborescence de répertoires reflétant la structure du package.

  • À la compilation, le compilateur crée un fichier .class pour chaque classe définie, et ces fichiers sont placés dans une arborescence correspondant au package.

  • Lancer une exception consiste à créer un objet Exception et à le transmettre à l’environnement d’exécution.

📌 Lorsqu’une méthode peut potentiellement générer une exception, elle doit soit la traiter avec try/catch, soit déclarer throws, sinon une erreur de compilation se produit, sauf pour les erreurs et exceptions de java.lang.

  • Lorsqu’une exception est lancée dans un bloc try, son exécution s’interrompt, un gestionnaire correspondant est recherché en remontant la pile d’appels, puis l’exécution reprend après les gestionnaires et passe par finally.

  • Un bloc try peut être associé à un ou plusieurs blocs catch, et un bloc finally permet de nettoyer l’état d’une méthode avant la poursuite du programme.

  • Throwable est la classe de base du traitement des erreurs, Error représente un échec grave de la machine virtuelle, Exception représente des erreurs moins graves et RuntimeException regroupe des exceptions non contrôlées acceptées par le compilateur.

  • Une exception personnalisée doit dériver de Exception ou de RuntimeException, et non de Error.

  • Pour lancer une exception, on utilise le mot-clé throw suivi d’un objet dont la classe dérive de Throwable, et la méthode concernée déclare cette possibilité avec throws.

📌 Les méthodes pouvant lancer des exceptions contrôlées doivent inclure une clause throws nom_exception afin d’informer le compilateur et d’imposer à la méthode appelante un traitement ou une propagation.

  • Le framework fournit:
    • des interfaces
    • des implémentations réutilisables
    • des algorithmes de traitement

Astuce mémo

S-I-A-C : statique, instance, arbitraire, constructeur

Tableaux de synthèse

Programmation procédurale et objet

DimensionProgrammation procéduraleConception objet
DécompositionApproche descendante par sous-problèmesApproche ascendante par composants
Données et traitementsSéparésRegroupés au sein d’objets
RéutilisationSolution liée au problème et peu génériqueComposants indépendants et réutilisables
DépendancesPortions fortement dépendantesModules faiblement couplés

Variables d’instance et de classe

DimensionVariable d’instanceVariable de classe
CopiesUne copie par objetUne seule copie par classe
AccèsAccessible par les méthodes d’instanceAccessible par les méthodes de classe selon les règles de portée
InvocationVia l’objet courantVia la classe, par exemple NomDeClasse.methode(arg)

Teste tes connaissances

Teste tes connaissances sur Fondamentaux de Java et objets avec 64 questions à choix multiples et corrections détaillées.

1. Quelle démarche caractérise la programmation traditionnelle lorsqu’elle traite un problème complexe ?

2. Quelle caractéristique décrit le mieux une solution produite par la programmation procédurale ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Fondamentaux de Java et objets avec 85 flashcards interactives.

Comment la programmation traditionnelle décompose-t-elle un problème ?

Elle le décompose en sous-problèmes élémentaires selon une approche descendante.

Que sépare la programmation traditionnelle dans son approche ?

Elle sépare les données des traitements.

Comment la programmation traditionnelle assemble-t-elle les structures de données ?

Elle les assemble avec des algorithmes.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches