Annotations Java

Plonge dans le monde des annotations Java grâce à ce guide complet. Allant de leur rôle et de leur fonctionnalité à l'exploration détaillée des annotations Override et Custom, ce matériel d'étude t'offre une compréhension approfondie du sujet. Tu découvriras comment utiliser au mieux le processeur d'annotations de Java, comment gérer les erreurs et comment faire fonctionner ces outils puissants dans ton code. Avec des exemples pratiques fournis pour chaque niveau d'expertise, ce guide sert de ressource indispensable pour toute personne désireuse d'étendre sa compréhension et son utilisation des annotations Java.

C'est parti

Des millions de fiches spécialement conçues pour étudier facilement

Inscris-toi gratuitement

Achieve better grades quicker with Premium

PREMIUM
Karteikarten Spaced Repetition Lernsets AI-Tools Probeklausuren Lernplan Erklärungen Karteikarten Spaced Repetition Lernsets AI-Tools Probeklausuren Lernplan Erklärungen
Kostenlos testen

Geld-zurück-Garantie, wenn du durch die Prüfung fällst

Review generated flashcards

Inscris-toi gratuitement
Tu as atteint la limite quotidienne de l'IA

Commence à apprendre ou crée tes propres flashcards d'IA

Équipe éditoriale StudySmarter

Équipe enseignants Annotations Java

  • Temps de lecture: 20 minutes
  • Vérifié par l'équipe éditoriale StudySmarter
Sauvegarder l'explication Sauvegarder l'explication
Tables des matières
Tables des matières

Sauter à un chapitre clé

    Comprendre les annotations Java

    Les annotations Java sont un type de métadonnées qui peuvent être ajoutées au code source Java. Tu peux les utiliser pour fournir des informations supplémentaires au compilateur Java, aux outils de développement et même à l'environnement d'exécution.

    Qu'est-ce qu'une annotation en Java : Une introduction complète

    L'annotation Java est une balise qui représente les métadonnées associées à une classe, une interface, des méthodes ou des champs. Elle a été introduite avec la sortie du JDK 5. Les annotations peuvent être utilisées pour :
    • les instructions du compilateur
    • Instructions de construction
    • Instructions d'exécution
    Java possède trois annotations intégrées : @Override, @Depreciated et @SuppressWarnings. Tu peux également définir des annotations Java personnalisées.

    Les annotations sont similaires aux interfaces dans la façon dont elles sont définies. Cependant, elles sont précédées du caractère "@".

    Voici un exemple d'utilisation d'une annotation :
    @Override public String toString() { return "This is a string." ; }

    Le rôle et la fonctionnalité des annotations en Java

    En Java, les annotations jouent un rôle crucial :
    • Vérification de la compilation : Les annotations telles que @Override permettent de vérifier les erreurs pendant le processus de compilation.
    • Traitement au moment de la compilation et du déploiement : Les outils logiciels peuvent traiter les informations des annotations pour générer du code et des fichiers XML.
    • Traitement au moment de l'exécution : Certaines annotations peuvent être examinées au moment de l'exécution.

    Prenons l'exemple d'une méthode annotée avec @Deprecated. Cette annotation indique au compilateur que la méthode est obsolète et ne doit pas être utilisée dans un code plus récent.

    Principaux avantages de l'utilisation des annotations Java

    Les annotations Java présentent plusieurs avantages :
    • Simplification du code : Les annotations peuvent véhiculer des métadonnées directement dans le code au lieu de fichiers XML.
    • Amélioration de la lisibilité : Elles peuvent rendre ton code plus facile à comprendre et à maintenir.
    • Efficacité accrue : L'utilisation d'annotations permet d'économiser le temps de l'unité centrale pour l'analyse XML au moment de l'exécution.
    Les annotations ont plusieurs cas d'utilisation dans les domaines suivants :
    Test JUnit Dans le célèbre cadre de test pour Java, le test de la logique commerciale sans serveur est permis par l'annotation @Test.
    Hibernate ORM Au lieu d'utiliser XML, le mappage d'objets Java vers des tables de base de données utilise des annotations.
    Spring MVC et service web RESTful L'annotation @Controller dans un fichier de classe indique qu'il sert de contrôleur dans Spring MVC.

    Plongée dans l'annotation Java Override

    L'annotation Java Override est l'une des annotations prédéfinies de Java. En termes simples, il s'agit d'une directive adressée au compilateur Java, signalant que la méthode annotée est destinée à remplacer une méthode de sa superclasse.

    L'importance de l'annotation Java Override dans la programmation informatique

    En matière de programmation informatique, le concept de surcharge de méthode est au cœur des principes de la conception orientée objet. Il permet de modifier la logique d'implémentation d'une méthode fournie par un parent (ou une superclasse). Quelle est la place de l'annotation Java Override ? L'annotation @Override est un excellent outil qui interprète ton intention. Lorsque tu déclares qu'une méthode doit @Override une méthode de sa superclasse, le compilateur vérifie si c'est vrai. Si ce n'est pas le cas, il signale une erreur de compilation. Par exemple, disons que tu as une faute d'orthographe dans le nom de ta méthode, ou peut-être que la signature de la méthode ne correspond pas exactement à la méthode de la classe parente. Voici la syntaxe de l'annotation @Override :
    @Override public void myMethod() { // code... }
    La validation du compilateur, activée par @Override, sert de mécanisme de rétroaction précoce pour les développeurs et protège ton code contre les erreurs logiques potentielles. Cet accent mis sur les défaillances précoces est un aspect important des principes de programmation modernes, améliorant l'efficacité et l'efficience de ton processus d'écriture de code.

    Exemples pratiques d'utilisation de l'annotation Java Override

    Pour mieux comprendre l'utilisation de l'annotation @Override, prenons un exemple. Tu réalises que la définition d'une méthode dans la classe mère ne répond pas aux besoins de la sous-classe. Tu veux fournir une implémentation différente dans la sous-classe. En ajoutant l'annotation @Override lors de la définition de la méthode dans la sous-classe, tu indiques au compilateur que la méthode suivante est destinée à surcharger une méthode de sa superclasse.
    public class ParentClass { public void showDetails() { // code....
      } } public class ChildClass extends ParentClass { @Override public void showDetails() { // code avec une implémentation différente
    ... } } Dans ce scénario, le code de la méthode showDetails de ChildClass remplace l'implémentation de showDetails de ParentClass.

    Pièges et mises en garde concernant l'annotation Java Override

    Bien que l'annotation @Override joue un rôle indéniable dans la programmation Java, elle comporte son lot de mises en garde. Tout d'abord, l'annotation @Override elle-même ne modifie pas la fonctionnalité de la méthode. Elle signale simplement au compilateur qu'en tant que programmeur, tu penses que la méthode doit remplacer une méthode de sa superclasse. Si tu te trompes, le compilateur te le signalera. C'est pourquoi il est essentiel de bien comprendre la méthode que tu essaies de remplacer et de t'assurer qu'elle remplit le contrat établi par la méthode de la classe mère. Deuxièmement, @Override n'est pas disponible pour les variables ou les attributs d'une classe. Il ne peut être utilisé qu'avec les méthodes. Enfin, rappelle-toi qu'avec l'héritage, l'accessibilité des méthodes joue un rôle crucial. Si la méthode de la superclasse est marquée comme privée, la sous-classe ne sait pas qu'elle existe et la voit comme une nouvelle méthode plutôt que comme une surcharge. Comprendre ces pièges et utiliser correctement l'annotation @Override peut s'avérer important pour prévenir les bogues potentiels et améliorer la maintenabilité de ton code.

    Explorer les annotations personnalisées de Java

    Les annotations personnalisées sont un moyen de créer tes propres annotations en Java. Tout comme les annotations prédéfinies, elles peuvent fournir des métadonnées sur les composants de ton code, ce qui le rend plus lisible, plus facile à maintenir et plus efficace.

    Les bases des annotations personnalisées en Java

    La définition d'annotations personnalisées en Java suit une syntaxe simple, similaire à la façon dont les interfaces sont déclarées. Plutôt que de travailler avec l'ensemble existant d'annotations Java prédéfinies (comme @Override, @Deprecated, etc.), les annotations personnalisées te permettent d'ajouter tes propres métadonnées à ton code. Tout ce dont tu as besoin, c'est du mot-clé "@interface" et les règles pour faire des annotations personnalisées sont qu'elles sont déclarées avant une interface, une classe ou une méthode, et la déclaration de la méthode à l'intérieur de l'annotation personnalisée ne doit pas avoir de paramètres ni lancer de clause. Les types de retour de ces méthodes doivent être limités à des primitives, des chaînes, des classes, des énumérations, des annotations ou un tableau des éléments précédents. Voici la structure de base d'une déclaration d'annotation personnalisée :
    public @interface MyAnnotation { // methods... }
    Chaque méthode de cette @interface représente un élément de l'annotation. Par exemple :
    public @interface Schedule { String dayOfMonth() default "first" ; String dayOfWeek() default "Mon" ; int hour() default 12 ; }
    Dans cet exemple, dayOfMonth, dayOfWeek et hour sont trois éléments de l'annotation @Schedule. Les caractéristiques importantes des annotations personnalisées sont les suivantes :
    • Politique de conservation : Elle définit la durée pendant laquelle l'annotation sera conservée. @Retention(RetentionPolicy.SOURCE) signifie qu'elle sera éliminée par le compilateur, et RetentionPolicy.CLASS (la valeur par défaut) maintient les annotations dans le bytecode mais les élimine au moment de l'exécution. Il existe également RetentionPolicy.RUNTIME, qui conserve les annotations pour que la JVM puisse les utiliser au moment de l'exécution.
    • Cible : Spécifie où cette annotation peut être utilisée, comme TYPE (pour les classes), METHOD, FIELD, etc.
    • Documenté : Si une annotation est présente sur la déclaration d'une classe, d'une méthode ou d'un champ, elle doit être documentée dans le style java doc.

    Annotation personnalisée Java : Quand et pourquoi les utiliser

    Les annotations personnalisées jouent un rôle important pour rendre le code auto-descriptif et garantir son intégrité. Elles peuvent aider à :
    • Injecter des dépendances : Avec des frameworks comme Spring, tu peux utiliser des annotations comme @Autowired pour auto-injecter les dépendances des beans.
    • Configurer les composants de l'application : L'utilisation d'annotations comme @Component, @Service, @Controller, peut t'éviter d'écrire des tas de configurations XML pour chaque composant.
    • Teste ton code : Les annotations comme @Test dans JUnit peuvent convertir n'importe quelle méthode Java en un cas de test.
    Par essence, les annotations personnalisées Java viennent à la rescousse lorsqu'aucune annotation existante ne répond à tes besoins. Elles peuvent également améliorer la lisibilité du code en mettant en évidence des caractéristiques ou des comportements spécifiques de tes composants, leurs intentions ou même la façon dont ils doivent être utilisés ou traités par d'autres.

    Annotation personnalisée en Java : Exemples pas à pas

    Pour mieux comprendre le concept, examinons un exemple de création et d'utilisation d'une annotation Java personnalisée. Supposons que tu aies une application qui doit effectuer une action uniquement à un moment précis de la journée. Cependant, cette plage horaire peut devoir changer en fonction de différents facteurs et la coder en dur dans tes méthodes serait une mauvaise pratique. Ici, tu peux utiliser une annotation personnalisée. 1. Définis ton annotation :
    @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface TimeWindow { int startHour() default 0 ; int endHour() default 24 ; }
    2. Annote ta méthode :
    public class MyClass { @TimeWindow(startHour=8, endHour=16) public void doSomething(){ //code... } } Dans
    ce scénario, l'annotation personnalisée @TimeWindow prête à l'emploi spécifie quand la méthode "doSomething" dans MyClass peut être invoquée. Développer et apprendre à utiliser correctement les annotations personnalisées Java peut économiser beaucoup d'efforts et contribuer énormément à la robustesse, à la réutilisation et à la qualité générale de ton code Java.

    Décodage du processeur d'annotations Java

    Les processeurs d'annotations Java sont un outil convaincant de la boîte à outils Java que tu peux trouver incroyablement utile en tant que programmeur. Ils entrent en jeu au moment de la compilation et te permettent d'examiner et de traiter les métadonnées des annotations dans ton code.

    Processeur d'annotation Java : Un outil essentiel pour les programmeurs

    Au cœur de l'API d'un compilateur Java se trouve l'API de traitement des annotations, conçue pour traiter les annotations. Elle permet à l'outil d'analyser le code Java, de détecter les annotations et de générer des fichiers source supplémentaires. Cette génération automatique de source est extrêmement utile pour gagner du temps et maintenir la cohérence du code. Pour aller plus loin, le traitement des annotations se fait en plusieurs étapes. Au cours du premier tour, il traite les annotations trouvées dans les fichiers source initialement soumis au compilateur. Au cours des cycles suivants, toutes les nouvelles classes introduites à partir des sources générées sont traitées. Cela continue jusqu'à ce qu'il n'y ait plus de nouvelles sources. Pour créer ton processeur d'annotations, tu dois préparer une classe qui étend une classe abstraite, **javax.annotation.processing.AbstractProcessor**. Cette classe fournit les fonctionnalités de base nécessaires au traitement des annotations. Tu peux ensuite surcharger la méthode process qui sera appelée à chaque tour du traitement.
    public class MyAnnotationProcessor extends AbstractProcessor { @Override public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) { // code....
            return true ; } } Pour aller
    plus loin, afin d'informer le compilateur de l'existence de ton processeur, tu utilises les annotations @SupportedAnnotationTypes et @SupportedSourceVersion. En exploitant la puissance du processeur d'annotations, tu peux automatiser la génération de fichiers auxiliaires, tels que des fichiers de configuration XML, des fichiers contenant des métadonnées, ou même de nouvelles classes Java.

    Tirer le meilleur parti du processeur d'annotations Java

    Pour tirer le meilleur parti du processeur d'annotations Java, il est recommandé de bien comprendre l'environnement de traitement. Voici quelques points clés à garder à l'esprit :
    • L'environnement de traitement te fournit plusieurs méthodes utiles, te donnant accès aux types, aux éléments et aux messages.
    • Tu peux communiquer avec ton processeur en utilisant les paramètres d'annotation. En accédant à AnnotationValue, tu peux lire les valeurs fournies à une annotation.
    • N'oublie jamais que la méthode process doit renvoyer true si ton processeur d'annotation a traité l'annotation et false dans le cas contraire. C'est le signal pour les autres processeurs potentiels.
    De plus, grâce à des fonctionnalités de manipulation étendues, tu peux même modifier ou générer des sources Java entières :
    JavaFileObject jfo = processingEnv.getFiler().createSourceFile("my.generated.Class") ; try (Writer writer = jfo.openWriter()) { writer.write("package my.generated ; public class Class {}") ; }
    Ce faisant, tu peux réduire la duplication du code, renforcer certaines structures de code ou établir des conventions de codage.

    Comprendre la gestion des erreurs dans le processeur d'annotations Java

    Comme pour tous les outils de codage, il est essentiel de gérer soigneusement les erreurs et les exceptions dans le Traitement des annotations Java pour obtenir des résultats cohérents. L'interface Messager est ton principal outil, car elle fournit des méthodes pour imprimer des documents, des avertissements et des erreurs pendant le traitement des annotations.
    processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "message d'erreur de compilation") ;
    Considère un scénario dans lequel tu appliques certaines règles avec tes annotations personnalisées, et un programmeur enfreint accidentellement ces règles. Tu peux utiliser le messager pour imprimer un message d'erreur pendant la compilation. Cela renforce la détection préventive des bogues et facilite la maintenance. Une autre chose à noter est que les méthodes raiseNote, raiseWarning ou raiseError n'arrêtent pas la compilation. La seule différence dans leur impact est le 'Kind' qui apparaît dans les journaux : **NOTE**, **WARNING** et **ERROR** respectivement. C'est à toi de choisir le "type" en fonction de la gravité du problème. Maîtriser les processeurs d'annotation Java Les processeurs d'annotation Java peuvent automatiser les tâches répétitives, assurer la cohérence et améliorer la capacité de révision du code. La compréhension de leur fonctionnement et de leurs caractéristiques peut constituer un ajout important à tes connaissances en programmation Java.

    Guide pratique de l'utilisation et des fonctions des annotations en Java

    Les annotations sont un type de métadonnées qui offrent une méthode utile pour ajouter des informations à ton code. Introduites dans Java 5.0, les annotations sont principalement utilisées pour la validation des données, la configuration des options et le traitement au moment de la compilation et du déploiement, entre autres opérations. En couplant ces métadonnées directement au code, ton code peut être plus rationalisé, plus robuste et plus facile à maintenir.

    Comprendre l'utilisation et les fonctions des annotations Java

    Une connaissance approfondie de l'utilisation et des fonctions des annotations Java peut grandement améliorer tes compétences en tant que développeur Java. Les annotations n'affectent pas directement la sémantique du programme, mais elles influencent la façon dont les outils et les bibliothèques traitent ton code, ce qui peut avoir un effet beaucoup plus large. Comprendre la sémantique des annotations Java implique de comprendre leurs éléments de base, qui sont les suivants :
    • Le nom de l'annotation : Il commence par le caractère "@" suivi du nom de l'annotation.
    • Nom de l'élément et valeurs : Il comprend un ou plusieurs éléments, chacun étant suivi d'une valeur.
    Une facette importante à retenir à propos des annotations Java est leur politique de rétention. L'énumération RetentionPolicy définit la durée de conservation des annotations. Elle est codée dans l'annotation @Retention qui prend l'une des trois valeurs possibles :
    • SOURCE : Les annotations ne sont pas incluses dans le fichier de classe.
    • CLASSE : Les annotations sont incluses dans le fichier de classe, mais la JVM n'a pas besoin de les charger.
    • RUNTIME : Les annotations sont incluses dans le fichier de classe, et la JVM peut les charger à l'exécution pour les utiliser par une méthode réflexive.
    Les annotations, en vertu de leurs puissantes options de métadonnées, trouvent leur utilité dans plusieurs domaines critiques de la programmation Java :
    • Instructions du compilateur : Les annotations peuvent demander au compilateur d'afficher des avertissements, de supprimer des avertissements ou même de provoquer des erreurs.
    • Traitement au moment de la construction et du déploiement : Les outils logiciels peuvent traiter les informations d'annotation pour générer des fichiers source supplémentaires ou des fichiers XML, et les programmeurs peuvent écrire leur processeur d'annotation.
    • Traitement au moment de l'exécution : Certaines annotations sont disponibles au moment de l'exécution.

    Exemples d'annotations Java : Des notions de base aux notions intermédiaires

    Voici quelques exemples qui illustrent la diversité et la flexibilité de l'utilisation et des fonctions des annotations Java : 1. Annotation de base : Override Lorsque l'on veut signaler que la méthode annotée est destinée à remplacer une méthode de la superclasse, on peut utiliser l'annotation @Override.
    public class Example { @Override public String toString() { return "Override toString method" ; } }
    2. Annotation de marqueur : Deprecated Si le programmeur utilise une méthode marquée, le type d'annotation 'Deprecated' demande au compilateur de générer un message d'avertissement.
    public class Example { @Deprecated public void display() { System.out.println("Deprecated method") ; } } 3.
    Annotation de membre unique : SuppressWarnings Lorsqu'un programmeur souhaite supprimer un ou plusieurs avertissements du compilateur, l'annotation @SuppressWarnings permet d'indiquer la suppression des avertissements spécifiés dans les éléments annotés. Un type d'avertissement non vérifié est l'un des avertissements du compilateur les plus couramment supprimés :
    public class Example { @SuppressWarnings("unchecked") public void display() { //code } }.

    Comment exploiter les fonctions d'annotation Java dans ton code ?

    Voici plusieurs façons d'exploiter l'utilité des fonctions d'annotation Java dans ton code : 1. Documentation : Elle aide à préparer la documentation du code Java.
    public class Example { /** * Usages de la documentation Java * @param args */ public static void main(String[] args) { // code } }
    2. Vérification de l'héritage : Si une méthode est destinée à remplacer une méthode d'une superclasse, utilise l'annotation @Override :
    public class Example extends SuperClass { @Override public void display() { // code } }
    3. Supprimer les avertissements : Si une méthode produit des avertissements du compilateur et que tu veux les supprimer, utilise l'annotation @SuppressWarnings :
    public class Example { @SuppressWarnings("unchecked") public void display() { // code } }
    En conclusion, investir du temps pour comprendre les utilisations et les concepts avancés des annotations Java peut te permettre d'insérer de manière robuste des métadonnées qui peuvent contrôler le comportement de ton code de manière significative. Les annotations, lorsqu'elles sont utilisées correctement, peuvent considérablement accélérer l'efficacité de ton code et réduire la redondance.

    Annotations Java - Principaux enseignements

    • L'annotation Java Override est une directive au compilateur Java indiquant qu'une méthode annotée est destinée à remplacer une méthode d'une superclasse.
    • L'annotation @Override est un outil important en Java qui vérifie si une méthode doit remplacer une méthode de sa superclasse, ce qui permet d'éviter les bogues potentiels et d'améliorer l'efficacité du code.
    • Les annotations personnalisées en Java, définies à l'aide du mot-clé "@interface", permettent aux développeurs d'ajouter des métadonnées personnalisées à leur code, ce qui le rend plus lisible, plus facile à maintenir et plus efficace.
    • Le processeur d'annotations Java fait partie de l'API du compilateur Java, il analyse le code Java, détecte les annotations et génère des fichiers source supplémentaires, réduisant ainsi la duplication du code et aidant à établir des conventions de codage.
    • Les annotations en Java sont un type de métadonnées ajoutées au code. Elles n'affectent pas la sémantique du programme mais modifient la façon dont les outils et les bibliothèques traitent le code, aidant ainsi à la validation des données, à la configuration des options et au traitement au moment de la compilation ou du déploiement.
    Apprends plus vite avec les 15 fiches sur Annotations Java

    Inscris-toi gratuitement pour accéder à toutes nos fiches.

    Annotations Java
    Questions fréquemment posées en Annotations Java
    Qu'est-ce qu'une annotation en Java ?
    Une annotation en Java est un type de méta-donnée qui fournit des informations supplémentaires sur le code. Elle ne modifie pas le comportement du code.
    Comment utiliser @Override en Java ?
    @Override est utilisé pour indiquer qu'une méthode est destinée à écraser une méthode dans une classe parente. Cela aide à éviter les erreurs.
    À quoi sert l'annotation @Deprecated en Java ?
    L'annotation @Deprecated avertit que l'élément marqué ne doit plus être utilisé, car il pourrait être supprimé dans le futur.
    Quand utiliser @SuppressWarnings en Java ?
    @SuppressWarnings est utilisé pour indiquer au compilateur d'ignorer les avertissements spécifiques dans le code, afin de rendre le code plus propre.
    Sauvegarder l'explication

    Teste tes connaissances avec des questions à choix multiples

    Que sont les annotations Java et comment sont-elles définies ?

    Quels sont les rôles et les fonctionnalités des annotations en Java ?

    Quels sont les principaux avantages et cas d'utilisation des annotations Java ?

    Suivant

    Découvre des matériels d'apprentissage avec l'application gratuite StudySmarter

    Lance-toi dans tes études
    1
    À propos de StudySmarter

    StudySmarter est une entreprise de technologie éducative mondialement reconnue, offrant une plateforme d'apprentissage holistique conçue pour les étudiants de tous âges et de tous niveaux éducatifs. Notre plateforme fournit un soutien à l'apprentissage pour une large gamme de sujets, y compris les STEM, les sciences sociales et les langues, et aide également les étudiants à réussir divers tests et examens dans le monde entier, tels que le GCSE, le A Level, le SAT, l'ACT, l'Abitur, et plus encore. Nous proposons une bibliothèque étendue de matériels d'apprentissage, y compris des flashcards interactives, des solutions de manuels scolaires complètes et des explications détaillées. La technologie de pointe et les outils que nous fournissons aident les étudiants à créer leurs propres matériels d'apprentissage. Le contenu de StudySmarter est non seulement vérifié par des experts, mais également régulièrement mis à jour pour garantir l'exactitude et la pertinence.

    En savoir plus
    Équipe éditoriale StudySmarter

    Équipe enseignants Informatique

    • Temps de lecture: 20 minutes
    • Vérifié par l'équipe éditoriale StudySmarter
    Sauvegarder l'explication Sauvegarder l'explication

    Sauvegarder l'explication

    Inscris-toi gratuitement

    Inscris-toi gratuitement et commence à réviser !

    Rejoins plus de 22 millions d'étudiants qui apprennent avec notre appli StudySmarter !

    La première appli d'apprentissage qui a réunit vraiment tout ce dont tu as besoin pour réussir tes examens.

    • Fiches & Quiz
    • Assistant virtuel basé sur l’IA
    • Planificateur d'étude
    • Examens blancs
    • Prise de notes intelligente
    Rejoins plus de 22 millions d'étudiants qui apprennent avec notre appli StudySmarter !