Passer au contenu

Utilisation d'objets et de méthodes

AP Informatique A · Sujet 1

Entrainer
Leçon vidéo pour ce sujet Ouvrir la page vidéo
15:05

Utilisation d'objets et de méthodes

Voici deux programmes Java. Le premier manque d'un point-virgule. Le second divise sept par deux et stocke la réponse dans un nombre entier. Le compilateur arrête le…

Narration en anglais · Sous-titres anglais + 中文 incrustés

1.1

Introduction aux Algorithmes, Programmation et Compilateurs

Programme

Objectif d'apprentissage 1.1.A : Représenter les modèles et algorithmes trouvés dans la vie quotidienne à l'aide du langage écrit ou de diagrammes.

  • 1.1.A.1 Les algorithmes définissent des processus étape par étape à suivre lors de l'accomplissement d'une tâche ou de la résolution d'un problème. Ces algorithmes peuvent être représentés à l'aide du langage écrit ou de diagrammes.
  • 1.1.A.2 La séquençage définit un ordre pour l'accomplissement des étapes d'un processus. Les étapes d'un processus sont accomplies une à la fois.

Objectif d'apprentissage 1.1.B : Expliquer le processus de compilation et d'exécution du code.

  • 1.1.B.1 Le code peut être écrit dans n'importe quel éditeur de texte ; toutefois, un environnement de développement intégré (IDE) est souvent utilisé pour écrire des programmes car il fournit des outils permettant à un programmeur d'écrire, compiler et exécuter du code.
  • 1.1.B.2 Un compilateur vérifie le code pour certaines erreurs. Les erreurs détectables par le compilateur doivent être corrigées avant que le programme puisse être exécuté.

Objectif d'apprentissage 1.1.C : Identifier les types d'erreurs de programmation.

  • 1.1.C.1 Une erreur de syntaxe est une erreur dans le programme où les règles du langage de programmation ne sont pas respectées. Ces erreurs sont détectées par le compilateur.
  • 1.1.C.2 Une erreur logique est une erreur dans l'algorithme ou le programme qui provoque un comportement incorrect ou inattendu. Ces erreurs sont détectées en testant le programme avec des données spécifiques pour voir s'il produit le résultat attendu.
  • 1.1.C.3 Une erreur d'exécution est une erreur dans le programme qui se produit pendant l'exécution d'un programme. Les erreurs d'exécution provoquent généralement la terminaison anormale du programme.
  • 1.1.C.4 Une exception est un type d'erreur d'exécution qui survient en raison d'une erreur inattendue non détectée par le compilateur. Elle interrompt le flux normal de l'exécution du programme.

Source : Description du cours et de l'examen AP College Board

Code source sur une station de travail — les programmes sont écrits, compilés et exécutés en tant qu'instructions précises
Code source sur un poste de travail — les programmes sont écrits, compilés et exécutés comme des instructions précises

Un algorithme 算法 est une procédure finie étape par étape qui résout un problème. Un programme 程序 exprime un algorithme dans un langage exécutable par un ordinateur. Java est compilé 编译 : le compilateur 编译器 traduit votre code source en bytecode, que la Machine Virtuelle Java (JVM) exécute. Une erreur de syntaxe 语法错误 (violant la grammaire) est détectée par le compilateur ; une erreur logique 逻辑错误 (mauvais résultat) ne l'est pas – le programme s'exécute mais se comporte mal.

Un compilateur traduit tout le programme d'un coup ; un interpréteur l'exécute ligne par ligne
Un compilateur traduit tout le programme d'un coup ; un interpréteur l'exécute ligne par ligne
Plusieurs puces de processeur d'ordinateur vues de dessous
Votre programme Java est compilé en instructions qu'un CPU comme celui-ci exécute réellement
Vocabulaire Entrainer
Anglais Chinois Pinyin
algorithm/ˈælɡərɪθəm/ 算法 suàn fǎ
program/ˈprəʊɡræm/ 程序 chéng xù
compiled/kəmˈpaɪld/ 编译 biān yì
compiler/kəmˈpaɪlə/ 编译器 biān yì qì
syntax error/ˈsɪntæks ˈerə/ 语法错误 yǔ fǎ cuò wù
logic error/ˈlɒdʒɪk ˈerə/ 逻辑错误 luó jí cuò wù
1.2

Variables et Types de Données

Programme

Objectif d'apprentissage 1.2.A : Identifier la catégorie de type de données la plus appropriée pour une spécification donnée.

  • 1.2.A.1 Un type de données est un ensemble de valeurs et un ensemble correspondant d'opérations sur ces valeurs. Les types de données peuvent être catégorisés comme primitifs ou références.
  • 1.2.A.2 Les types de données primitifs utilisés dans ce cours définissent l'ensemble des valeurs et les opérations correspondantes sur ces valeurs pour les nombres et les valeurs booléennes.
  • 1.2.A.3 Un type de référence est utilisé pour définir des objets qui ne sont pas des types primitifs.

Objectif d'apprentissage 1.2.B : Développer du code pour déclarer des variables stockant des nombres et des valeurs booléennes.

  • 1.2.B.1 Les trois types de données primitifs utilisés dans ce cours sont int, double et boolean. Une valeur int est un entier. Une valeur double est un nombre réel. Une valeur boolean est soit true soit false.
    • Énoncé d'exclusion : Les cinq autres types de données primitifs (long, short, byte, float et char) sont hors du programme du cours et de l'examen AP Computer Science A.
  • 1.2.B.2 Une variable est un emplacement de stockage contenant une valeur qui peut changer pendant l'exécution du programme. Chaque variable a un nom et un type de données associé. Une variable de type primitif contient une valeur primitive de ce type.

Source : Description du cours et de l'examen AP College Board

Une variable 变量 est une boîte nommée stockant une valeur d'un type 类型 fixe. Les principaux types primitifs 基本类型 de Java sont int (nombres entiers), double (décimaux) et boolean (true/false). Déclarez avec le type d'abord :

Les types de données de base de Java, chacun stockant un type de valeur différent
Les types de données de base de Java, chacun stockant un type de valeur différent
int score = 90;
double price = 4.99;
boolean passed = true;
Explorer

Explorer comment une variable contient une seule valeur à la fois

Une variable est une boîte nommée qui stocke une valeur d'un type fixe. Parcourez les lignes et observez chaque boîte prendre sa valeur ; notez que la réassignation score écrase l'ancien nombre au lieu de créer une nouvelle boîte.

Vocabulaire Entrainer
Anglais Chinois Pinyin
variable/ˈveərɪəbl/ 变量 biàn liàng
type/taɪp/ 类型 lèi xíng
primitive types/ˈprɪmɪtɪv taɪps/ 基本类型 jī běn lèi xíng
1.3

Expressions et Sortie

Programme

Objectif d'apprentissage 1.3.A : Développer du code pour générer une sortie et déterminer le résultat qui serait affiché.

  • 1.3.A.1 System.out.print et System.out.println affichent des informations sur l'écran de l'ordinateur. System.out.println déplace le curseur sur une nouvelle ligne après l'affichage des informations, tandis que System.out.print ne le fait pas.

Objectif d'apprentissage 1.3.B : Développer du code pour utiliser des littérales de chaîne et déterminer le résultat de l'utilisation de littérales de chaîne.

  • 1.3.B.1 Une littérale est la représentation codée d'une valeur fixe.
  • 1.3.B.2 Une littérale de chaîne est une séquence de caractères enfermée entre guillemets doubles.
  • 1.3.B.3 Les séquences d'échappement sont des séquences spéciales de caractères qui peuvent être incluses dans une chaîne. Elles commencent par un \ et ont une signification spéciale en Java. Les séquences d'échappement utilisées dans ce cours incluent guillemet double \", trait de soulignement inversé \\ et nouveau trait de soulignement \n.

Objectif d'apprentissage 1.3.C : Développer du code pour des expressions arithmétiques et déterminer le résultat de ces expressions.

  • 1.3.C.1 Les expressions arithmétiques, qui consistent en des valeurs numériques, des variables et des opérateurs, incluent des expressions de type int et double.
  • 1.3.C.2 Les opérateurs arithmétiques consistent en l'addition +, la soustraction -, la multiplication *, la division / et le reste %. Une opération arithmétique utilisant deux valeurs int évaluera vers une valeur int. Une opération arithmétique utilisant au moins une valeur double évaluera vers une valeur double.
    • Énoncé d'exclusion : Les expressions qui aboutissent à des valeurs doubles spéciales (par exemple, les infinis et NaN) sont hors du programme du cours et de l'examen AP Computer Science A.
  • 1.3.C.3 En divisant des valeurs numériques qui sont toutes deux des valeurs int, le résultat n'est que la portion entière du quotient. En divisant des valeurs numériques utilisant au moins une valeur double, le résultat est le quotient.
  • 1.3.C.4 L'opérateur reste % est utilisé pour calculer le reste lorsque le nombre a est divisé par un autre nombre b.
    • Énoncé d'exclusion : L'utilisation de valeurs inférieures à 0 pour a et l'utilisation de valeurs inférieures ou égales à 0 pour b est hors du programme du cours et de l'examen AP Computer Science A.
  • 1.3.C.5 Les opérateurs peuvent être utilisés pour construire des expressions composées. Au moment de la compilation, les valeurs numériques sont associées aux opérateurs selon la priorité des opérateurs pour déterminer comment ils sont groupés. Des parenthèses peuvent être utilisées pour modifier la priorité des opérateurs. La multiplication, la division et le reste ont une priorité supérieure à l'addition et à la soustraction. Les opérateurs ayant la même priorité sont évalués de gauche à droite.
  • 1.3.C.6 Une tentative de division d'un entier par zéro entraînera une ArithmeticException.
    • Énoncé d'exclusion : L'utilisation de la division par zéro lorsque l'une des valeurs numériques est une double est hors du programme du cours et de l'examen AP Computer Science A.

Source : Description du cours et de l'examen AP College Board

Une expression 表达式 combine des valeurs et des opérateurs pour calculer un résultat : + - * / et % (modulo 取模, le reste). La division entière tronque : 7 / 2 est 3, tandis que 7 % 2 est 1. La précedence des opérateurs suit les mathématiques (*,/,% avant +,-). Imprimer avec :

System.out.print("no newline");
System.out.println("with newline");

Diviser un entier par l'entier 0 (comme 7 / 0) n'est pas autorisé et provoque une ArithmeticException à l'exécution. Dans une chaîne, une barre oblique inverse marque une séquence d'échappement 转义序列 : \" imprime une guillemet double, \\ une barre oblique simple, et \n commence une nouvelle ligne – donc System.out.println("She said \"hi\""); imprime She said "hi".

Explorer

Explorer l'ordre des opérations étape par étape

Java applique *, /, % avant + et -, en travaillant de gauche à droite. Observez chaque étape et voyez pourquoi 2 + 3 * 4 vaut $14$, et non $20$ — la multiplication se produit en premier.

Vocabulaire Entrainer
Anglais Chinois Pinyin
expression/ekˈspreʃn/ 表达式 biǎo dá shì
modulus/ˈmɒdjʊləs/ 取模 qǔ mó
escape sequence/eˈskeɪp ˈsiːkwəns/ 转义序列 zhuǎn yì xù liè
assignment/əˈsaɪnmənt/ 赋值 fù zhí
1.4

Instructions d'Affectation et Entrée

Programme

Objectif d'apprentissage 1.4.A : Développer du code pour des instructions d'affectation avec des expressions et déterminer la valeur stockée dans la variable en conséquence.

  • 1.4.A.1 Toute variable doit être affectée d'une valeur avant qu'elle puisse être utilisée dans une expression. Cette valeur doit provenir d'un type de données compatible. Une variable est initialisée la première fois qu'elle reçoit une valeur. Les types de référence peuvent être affectés à un nouvel objet ou à null s'il n'y a pas d'objet. La littérale null est une valeur spéciale utilisée pour indiquer qu'une référence n'est associée à aucun objet.
  • 1.4.A.2 L'opérateur d'affectation = permet à un programme d'initialiser ou de modifier la valeur stockée dans une variable. La valeur de l'expression située à droite est stockée dans la variable située à gauche.
    • Déclaration d'exclusion : L'utilisation d'opérateurs d'affectation à l'intérieur d'expressions (p. ex., a = b = 4; ou a[i += 5]) est hors du programme et de l'examen AP Computer Science A.
  • 1.4.A.3 Lors de l'exécution, une expression est évaluée pour produire une valeur unique. La valeur d'une expression a un type basé sur l'évaluation de cette expression.

Objectif d'apprentissage 1.4.B : Développer du code pour lire des entrées.

  • 1.4.B.1 Les entrées peuvent provenir de diverses formes, telles que tactiles, audio, visuelles ou textuelles. La classe Scanner est un moyen d'obtenir des entrées textuelles depuis le clavier.
    • Déclaration d'exclusion : Toute forme spécifique d'entrée provenant de l'utilisateur est hors du programme et de l'examen AP Computer Science A.

Source : Description du cours et de l'examen AP College Board

Une affectation 赋值 x = expr; évalue le côté droit et le stocke dans la variable de gauche. Lire l'entrée avec un Scanner :

Scanner in = new Scanner(System.in);
int age = in.nextInt();
String name = in.next();
1.5

Casting et Plage des Variables

Programme

Objectif d'apprentissage 1.5.A : Développer du code pour convertir des valeurs primitives en différents types primitifs dans des expressions arithmétiques et déterminer la valeur produite comme résultat.

  • 1.5.A.1 Les opérateurs de conversion (int) et (double) peuvent être utilisés pour convertir une valeur de type double vers un type int (ou inversement).
  • 1.5.A.2 Convertir une valeur de type double en type int entraîne la troncature des chiffres situés à droite de la virgule décimale.
  • 1.5.A.3 Certains codes provoquent que les valeurs int soient automatiquement converties (élargies) en valeurs double.
  • 1.5.A.4 Les valeurs de type double peuvent être arrondies à l'entier le plus proche par (int)(x + 0.5) pour les nombres non négatifs ou (int)(x - 0.5) pour les nombres négatifs.

Objectif d'apprentissage 1.5.B : Décrire les conditions dans lesquelles une expression entière évalue à une valeur hors limite.

  • 1.5.B.1 La constante Integer.MAX_VALUE contient la valeur de la plus grande valeur possible de type int. La constante Integer.MIN_VALUE contient la valeur de la plus petite valeur possible de type int.
  • 1.5.B.2 Les valeurs entières en Java sont représentées par des valeurs de type int, qui sont stockées en utilisant une quantité finie (4 octets) de mémoire. Par conséquent, une valeur de type int doit se situer dans la plage de Integer.MIN_VALUE à Integer.MAX_VALUE inclusivement.
  • 1.5.B.3 Si une expression évaluerait à une valeur de type int hors de la plage autorisée, un dépassement d'entier se produit. Le résultat est une valeur de type int dans la plage autorisée mais pas nécessairement la valeur attendue.

Objectif d'apprentissage 1.5.C : Décrire les conditions limitant la précision des expressions.

  • 1.5.C.1 Les ordinateurs allouent une quantité spécifiée de mémoire pour stocker des données selon le type de données. Si une expression évaluerait à une valeur de type double plus précise que ce qui peut être stocké dans la quantité de mémoire allouée, une erreur d'arrondi se produit. Le résultat sera arrondi à la valeur représentable. Pour éviter les erreurs d'arrondi inévitables, utilisez des valeurs de type int.
    • Déclaration d'exclusion : D'autres types de données décimales spéciales pouvant être utilisées pour éviter les erreurs d'arrondi sont hors du programme et de l'examen AP Computer Science A.

Source : Description du cours et de l'examen AP College Board

plage int, dépassement et troncature

Chaque type a une plage fixe ; un int dépasse environ 2.1 milliards. Casting Type conversion convertit entre les types. L'élargissement (de int à double) est automatique ; le rétrécissement nécessite un cast explicite, qui tronque (ne fait pas d'arrondi) :

double avg = (double) total / count;   // force real division
int whole = (int) 3.9;                 // 3, truncated

Compétence d'examen : surveiller la division entière produisant un résultat tronqué alors qu'un décimal était attendu – castez un opérande en double d'abord.

Exemple résolu. Suivez chaque expression :

  • 7 / 2 → 3 (les deux int, donc la division tronque) ;
  • 7.0 / 2 → 3.5 (un double force la division réelle) ;
  • 7 % 2 → 1 (le reste) ;
  • (double) 7 / 2 → 3.5 (le casting se lie plus fortement que /, donc c'est 7.0 / 2) ;
  • (double) (7 / 2) → 3.0 (les parenthèses calculent 7 / 2 = 3 en int d'abord, puis élargissent).

Les deux derniers semblent similaires mais diffèrent – la position du casting décide si la troncature se produit.

Explorer

Pourquoi int et double stockent les nombres différemment

Un int ne contient que des nombres entiers dans une plage fixe ; un double stocke une mantisse et un exposant, échangeant la précision exacte contre une plage immense. Cast double→int jette la fraction, et une valeur dépassant la plage d'un int provoque un débordement.

Vocabulaire Entrainer
Anglais Chinois Pinyin
Casting/ˈkæstɪŋ/ 类型转换 lèi xíng zhuǎn huàn
library/ˈlaɪbrəri/ 库 kù
1.6

Opérateurs d'Affectation Composée

Programme

Objectif d'apprentissage 1.6.A : Développer du code pour des instructions d'affectation avec des opérateurs d'affectation composés et déterminer la valeur stockée dans la variable en tant que résultat.

  • 1.6.A.1 Les opérateurs d'affectation composés +=, -=, *=, /= et %= peuvent être utilisés à la place de l'opérateur d'affectation dans des expressions numériques. Un opérateur d'affectation composé effectue l'opération arithmétique indiquée entre la valeur de gauche et la valeur de droite, puis assigne le résultat à la variable de gauche.
  • 1.6.A.2 L'opérateur d'incrémentation postérieure ++ et l'opérateur de décrémentation postérieure -- sont utilisés pour ajouter 1 ou soustraire 1 de la valeur stockée dans une variable numérique. La nouvelle valeur est assignée à la variable.
    • Déclaration d'exclusion : L'utilisation d'opérateurs d'incrémentation et de décrémentation sous forme préfixe (p. ex., ++x) est hors du programme et de l'examen AP Computer Science A. L'utilisation d'opérateurs d'incrémentation et de décrémentation à l'intérieur d'autres expressions (p. ex., arr[x++]) est hors du programme et de l'examen AP Computer Science A.

Source : Description du cours et de l'examen AP College Board

Des raccourcis combinent une opération avec une affectation : x += 5 signifie x = x + 5 ; de même -=, *=, /=, %=. Les opérateurs incrémentation et décrémentation x++ et x-- ajoutent ou soustrait un.

1.7

Interface de Programme Application (API) et Bibliothèques

Programme

Objectif d'apprentissage 1.7.A : Identifier les attributs et comportements d'une classe trouvée dans les bibliothèques contenues dans une API.

  • 1.7.A.1 Les bibliothèques sont des collections de classes. Une spécification d'application programming interface (API) informe le programmeur comment utiliser ces classes. La documentation trouvée dans les spécifications API et les bibliothèques est essentielle pour comprendre les attributs et comportements d'une classe définie par l'API. Une classe définit un type de référence spécifique. Les classes dans les APIs et les bibliothèques sont regroupées en paquets. Des classes existantes et des bibliothèques de classes peuvent être utilisées pour créer des objets.
  • 1.7.A.2 Les attributs se réfèrent aux données liées à la classe et sont stockés dans des variables. Les comportements se réfèrent à ce que les instances de la classe peuvent faire (ou ce qui peut être fait avec elles) et sont définis par des méthodes.

Source : Description du cours et de l'examen AP College Board

Une API (Application Programming Interface) 应用程序接口 est la liste publiée de classes et méthodes que vous pouvez utiliser. Une bibliothèque 库 est un ensemble de classes préfabriquées (comme Math, String, Scanner). Vous lisez la documentation API pour apprendre ce dont une méthode a besoin (ses paramètres) et ce qu'elle retourne, sans voir son code interne – un exemple d'abstraction 抽象.

Vocabulaire Entrainer
Anglais Chinois Pinyin
abstraction/əbˈstrækʃn/ 抽象 chōu xiàng
Comments/ˈkɒments/ 注释 zhù shì
method signature/ˈmeθəd ˈsɪɡnɪtʃə/ 方法签名 fāng fǎ qiān míng
Interface/ˈɪntəfeɪs/ 应用程序接口 yìng yòng chéng xù jiē kǒu
1.8

Documentation avec Commentaires

Programme

Objectif d'apprentissage 1.8.A : Décrire la fonctionnalité et l'utilisation du code via des commentaires.

  • 1.8.A.1 Les commentaires sont écrits pour le programmeur original et d'autres programmeurs afin de comprendre le code et sa fonctionnalité, mais ils sont ignorés par le compilateur et ne sont pas exécutés lors de l'exécution du programme. Trois types de commentaires en Java incluent /* */, qui génère un bloc de commentaires ; //, qui génère un commentaire sur une seule ligne ; et /** */, qui sont des commentaires Javadoc et sont utilisés pour créer de la documentation API.
  • 1.8.A.2 Une précondition est une condition qui doit être vraie juste avant l'exécution d'une méthode afin qu'elle se comporte comme prévu. Il n'y a aucune attente que la méthode vérifie si les préconditions sont satisfaites.
  • 1.8.A.3 Une postcondition est une condition qui doit toujours être vraie après l'exécution d'une méthode. Les postconditions décrivent le résultat de l'exécution en termes de ce qui est retourné ou de la valeur actuelle des attributs d'un objet.

Source : Description du cours et de l'examen AP College Board

Les commentaires 注释 sont ignorés par le compilateur mais expliquent le code aux humains : // pour une seule ligne, /* ... */ pour un bloc, et /** ... */ pour un commentaire Javadoc documentant le but, les paramètres et la valeur de retour d'une méthode. Des préconditions et postconditions précises y sont écrites.

1.9

Signatures de Méthodes

Programme

Objectif d'apprentissage 1.9.A : Identifier la bonne méthode à appeler en se basant sur la documentation et les signatures de méthodes.

  • 1.9.A.1 Une méthode est un bloc de code nommé qui ne s'exécute que lorsqu'elle est appelée. Un bloc de code est toute section de code enfermée entre accolades. L'abstraction procédurale permet à un programmeur d'utiliser une méthode en sachant ce qu'elle fait, même s'il ne sait pas comment elle a été écrite.
  • 1.9.A.2 Un paramètre est une variable déclarée dans l'en-tête d'une méthode ou d'un constructeur et peut être utilisé à l'intérieur du corps de la méthode. Cela permet de passer et d'utiliser des valeurs ou arguments par une méthode ou un constructeur. Une signature de méthode pour une méthode avec des paramètres consiste en le nom de la méthode et la liste ordonnée des types de paramètres. Une signature de méthode pour une méthode sans paramètres consiste en le nom de la méthode et une liste de paramètres vide.

Objectif d'apprentissage 1.9.B : Décrire comment appeler des méthodes.

  • 1.9.B.1 Une méthode void n'a pas de valeur de retour et n'est donc pas appelée dans le cadre d'une expression.
  • 1.9.B.2 Une méthode non-void retourne une valeur qui est du même type que le type de retour dans l'en-tête. Pour utiliser la valeur de retour lors de l'appel d'une méthode non-void, elle doit être stockée dans une variable ou utilisée comme partie d'une expression.
  • 1.9.B.3 Un argument est une valeur qui est passée à une méthode lors de son appel. Les arguments passés à une méthode doivent être compatibles en nombre et ordre avec les types identifiés dans la liste des paramètres de la signature de méthode. Lors de l'appel de méthodes, les arguments sont passés par valeur. Passage par valeur initialise les paramètres avec des copies des arguments.
  • 1.9.B.4 Les méthodes sont dites surchargées lorsqu'il existe plusieurs méthodes ayant le même nom mais des signatures différentes.
  • 1.9.B.5 Un appel de méthode interrompt l'exécution séquentielle des instructions, faisant en sorte que le programme exécute d'abord les instructions dans la méthode avant de continuer. Une fois la dernière instruction de la méthode exécutée ou qu'une instruction return est exécutée, le flux de contrôle retourne au point immédiatement après où la méthode a été appelée.

Source : Description du cours et de l'examen AP College Board

Une signature de méthode 方法签名 est le nom d'une méthode suivi des types de ses paramètres, par ex. nextInt() ou substring(int, int). Pour appeler une méthode, vous devez fournir des arguments 实参 qui correspondent aux paramètres en nombre, type et ordre. L'en-tête de la méthode (la déclaration complète) indique également le type de retour – le type de valeur que la méthode renvoie (void si aucun) – mais le type de retour n'est pas partie de la signature, c'est pourquoi deux méthodes ne peuvent différer uniquement par leur type de retour.

Vocabulaire Entrainer
Anglais Chinois Pinyin
arguments/ˈɑːɡjuːmənts/ 实参 shí cān
class (static) method/klæs ˈmeθəd/ 类方法 lèi fāng fǎ
1.10

Appeler des méthodes de classe

Programme

Objectif d'apprentissage 1.10.A : Développer du code pour appeler des méthodes de classe et déterminer le résultat de ces appels.

  • 1.10.A.1 Les méthodes de classe sont associées à la classe, pas aux instances de la classe. Les méthodes de classe comprennent le mot-clé static dans l'en-tête avant le nom de la méthode.
  • 1.10.A.2 Les méthodes de classe sont généralement appelées en utilisant le nom de la classe avec l'opérateur point. Lorsque l'appel de méthode se produit dans la classe définissante, l'utilisation du nom de la classe est optionnelle dans l'appel.

Source : Description du cours et de l'examen AP College Board

Une méthode de classe (statique) 类方法 appartient à la classe elle-même, donc on l'appelle sur le nom de la classe : ClassName.method(args). Aucun objet n'est nécessaire.

Explorer

Suivre un appel de méthode de classe sur la pile

Appeler une méthode de classe comme Math.max pousse un nouveau cadre sur la pile d'appels ; lorsque la méthode retourne une valeur, son cadre est retiré et le contrôle revient à l'appelant. Parcourez pour voir la pile grandir et rétrécir.

1.11

Classe Math

Programme

Objectif d'apprentissage 1.11.A : Développer du code pour écrire des expressions intégrant des appels à des bibliothèques mathématiques intégrées et déterminer la valeur produite en résultat.

  • 1.11.A.1 La classe Math fait partie du package java.lang. Les classes du package java.lang sont disponibles par défaut.
  • 1.11.A.2 La classe Math contient uniquement des méthodes de classe. Les méthodes de classe suivantes de Math—y compris ce qu'elles font et quand elles sont utilisées—font partie de la référence rapide Java :
    • static int abs(int x) retourne la valeur absolue d'une valeur int.
    • static double abs(double x) retourne la valeur absolue d'une valeur double.
    • static double pow(double base, double exponent) retourne la valeur du premier paramètre élevé à la puissance du deuxième paramètre.
    • static double sqrt(double x) retourne la racine carrée positive d'une valeur double.
    • static double random() retourne une valeur double supérieure ou égale à 0.0 et inférieure à 1.0.
  • 1.11.A.3 Les valeurs retournées par Math.random() peuvent être manipulées à l'aide d'opérateurs arithmétiques et de cast pour produire un int ou un double aléatoire dans une plage définie basée sur des critères spécifiés. Chaque extrémité de la plage peut être inclusive, signifiant que la valeur est incluse, ou exclusive, signifiant que la valeur n'est pas incluse.

Source : Description du cours et de l'examen AP College Board

La classe Math fournit des méthodes mathématiques statiques : Math.abs(x), Math.pow(base, exp), Math.sqrt(x), et Math.random() (un double dans $[0,1)$). Pour obtenir un entier aléatoire entre 0 et n-1 : (int)(Math.random() * n).

1.12

Objets : Instances de Classes

Programme

Objectif d'apprentissage 1.12.A : Expliquer la relation entre une classe et un objet.

  • 1.12.A.1 Un objet est une instance spécifique d'une classe avec des attributs définis. Une classe est l'implémentation formelle, ou plan, des attributs et comportements d'un objet.
  • 1.12.A.2 Une hiérarchie de classes peut être développée en regroupant les attributs et comportements communs de classes apparentées dans une seule classe appelée superclasse. Les classes qui étendent une superclasse, appelées sous-classes, peuvent puiser dans les attributs et comportements existants de la superclasse sans les remplacer dans le code. Cela crée une relation d'héritage des sous-classes vers la superclasse.
    • Énoncé d'exclusion : La conception et l'implémentation de relations d'héritage sont hors du programme du cours et de l'examen AP Computer Science A.
  • 1.12.A.3 Toutes les classes en Java sont des sous-classes de la classe Object.

Objectif d'apprentissage 1.12.B : Développer du code pour déclarer des variables afin de stocker des types de référence.

  • 1.12.B.1 Une variable de type de référence contient une référence d'objet, qui peut être considérée comme l'adresse mémoire de cet objet.

Source : Description du cours et de l'examen AP College Board

= copie la référence, pas l'objet

Une classe 类 est un modèle ; un objet 对象 est une instance 实例 concrète construite à partir de celui-ci. Une classe regroupe des données (champs) avec du comportement (méthodes) – le cœur de la programmation orientée objet 面向对象编程. String, Scanner, et ArrayList sont toutes des classes que vous instanciez.

Les classes peuvent être organisées en hiérarchie. Un super-classe 父类 contient les attributs et comportements partagés par plusieurs sous-classes 子类 qui extend ce super-classe – une relation d'héritage 继承关系. Chaque classe en Java est ultimement une sous-classe de la classe intégrée Object, c'est pourquoi chaque objet possède déjà une méthode toString ; écrire une méthode de sous-classe avec la même signature qu'une méthode de super-classe est un redéfinition de méthode 方法重写. (Concevoir votre propre héritage dépasse le cadre de ce cours, mais vous êtes censé reconnaître ce vocabulaire.)

Diagramme de classe : attributs privés et méthodes publiques
Diagramme de classe : attributs privés et méthodes publiques
Une classe est un modèle ; chaque objet est une instance construite à partir de celle-ci
Une classe est un modèle ; chaque objet est une instance construite à partir de celle-ci
Vocabulaire Entrainer
Anglais Chinois Pinyin
class/klæs/ 类 lèi
object/ˈɒbdʒekt/ 对象 duì xiàng
instance/ˈɪnstəns/ 实例 shí lì
object-oriented programming/ˈɒbdʒekt ˈɔːrɪəntɪd ˈprəʊɡræmɪŋ/ 面向对象编程 miàn xiàng duì xiàng biān chéng
superclass/ˈsuːpəklæs/ 父类 fù lèi
subclasses/ˈsʌbklæsɪz/ 子类 zi lèi
inheritance relationship/ɪnˈherɪtəns rɪˈleɪʃənʃɪp/ 继承关系 jì chéng guān xì
method overriding/ˈmeθəd ˌəʊvəˈraɪdɪŋ/ 方法重写 fāng fǎ zhòng xiě
Instantiation/ˌɪnstænʃɪˈeɪʃn/ 实例化 shí lì huà
constructor/kənˈstrʌktə/ 构造函数 gòu zào hán shù
reference/ˈrefrəns/ 引用 yǐn yòng
1.13

Création et stockage d'objets (Instantiation)

Programme

Objectif d'apprentissage 1.13.A : Identifier, en utilisant sa signature, le constructeur correct appelé.

  • 1.13.A.1 Une classe contient des constructeurs qui sont appelés pour créer des objets. Ils ont le même nom que la classe.
  • 1.13.A.2 Une signature de constructeur consiste en le nom du constructeur, qui est le même que celui de la classe, et dans la liste ordonnée des types de paramètres. La liste des paramètres, dans l'en-tête d'un constructeur, répertorie les types des valeurs transmises ainsi que leurs noms de variables.
  • 1.13.A.3 Les constructeurs sont dit surchargés lorsqu'il existe plusieurs constructeurs avec des signatures différentes.

Objectif d'apprentissage 1.13.B : Développer du code pour déclarer des variables des types corrects afin de contenir des références d'objets.

  • 1.13.B.1 Une variable de type référence contient une référence d'objet ou, s'il n'y a pas d'objet, null.

Objectif d'apprentissage 1.13.C : Développer du code pour créer un objet en appelant un constructeur.

  • 1.13.C.1 Un objet est généralement créé à l'aide du mot-clé new suivi d'un appel à l'un des constructeurs de la classe.
  • 1.13.C.2 Les paramètres permettent aux constructeurs d'accepter des valeurs pour définir les valeurs initiales des attributs de l'objet.
  • 1.13.C.3 Un argument de constructeur est une valeur qui est passée à un constructeur lors de son appel. Les arguments passés à un constructeur doivent être compatibles par ordre et nombre avec les types identifiés dans la liste des paramètres de la signature du constructeur. Lors de l'appel aux constructeurs, les arguments sont passés par valeur. Le passage par valeur initialise les paramètres avec des copies des arguments.
  • 1.13.C.4 Un appel de constructeur interrompt l'exécution séquentielle des instructions, amenant le programme à exécuter d'abord les instructions du constructeur avant de continuer. Une fois la dernière instruction du constructeur exécutée, le flux de contrôle retourne au point immédiatement après l'endroit où le constructeur a été appelé.

Source : Description du cours et de l'examen AP College Board

L'instanciation 实例化 crée un objet avec le mot-clé new, qui appelle un constructeur 构造函数 :

Scanner in = new Scanner(System.in);
String s = new String("hi");   // or just "hi"

La variable contient une référence 引用 (l'adresse de l'objet), pas l'objet lui-même. Deux références peuvent pointer vers le même objet ; les comparer avec == compare les adresses, pas le contenu.

Une référence peut aussi ne pointer vers rien : la valeur spéciale null 空值 signifie "non attaché à aucun objet". Appeler une méthode sur une référence null provoque une erreur à l'exécution avec un NullPointerException. Protégez-vous contre cela en testant avec ==/!= et en vérifiant null en premier, afin que && court-circuite avant l'exécution de la méthode : if (s != null && s.length() > 0).

Une variable primitive stocke sa valeur directement, une référence contient une flèche vers l'objet
Une variable primitive stocke sa valeur directement, une référence contient une flèche vers l'objet
Vocabulaire Entrainer
Anglais Chinois Pinyin
null/nʌl/ 空值 kōng zhí
instance method/ˈɪnstəns ˈmeθəd/ 实例方法 shí lì fāng fǎ
immutable/ɪˈmjuːtəbl/ 不可变 bù kě biàn
1.14

Appeler des méthodes d'instance

Programme

Objectif d'apprentissage 1.14.A : Développer du code pour appeler des méthodes d'instance et déterminer le résultat de ces appels.

  • 1.14.A.1 Les méthodes d'instance sont appelées sur des objets de la classe. L'opérateur point est utilisé avec le nom de l'objet pour appeler des méthodes d'instance.
  • 1.14.A.2 Un appel de méthode sur une référence null entraînera une NullPointerException.

Source : Description du cours et de l'examen AP College Board

Une méthode d'instance 实例 méthode agit sur un objet spécifique, donc on l'appelle sur la référence à l'objet : object.method(args). Exemple : in.nextInt(), word.length().

1.15

Manipulation de chaînes

Programme

Objectif d'apprentissage 1.15.A : Développer du code pour créer des objets de chaîne de caractères et déterminer le résultat de la création et de la combinaison de chaînes.

  • 1.15.A.1 Un objet String représente une séquence de caractères et peut être créé en utilisant une littérale de chaîne ou en appelant le constructeur de la classe String.
  • 1.15.A.2 La classe String fait partie du package java.lang. Les classes du package java.lang sont disponibles par défaut.
  • 1.15.A.3 Un objet String est immuable, ce qui signifie qu'une fois qu'un objet String est créé, ses attributs ne peuvent pas être modifiés. Les méthodes appelées sur un objet String ne changent pas le contenu de l'objet String.
  • 1.15.A.4 Deux objets String peuvent être concaténés ensemble ou combinés à l'aide de l'opérateur + ou +=, résultant en un nouvel objet String. Une valeur primitive peut être concaténée avec un objet String. Cela provoque la conversion implicite de la valeur primitive en un objet String.
  • 1.15.A.5 Un objet String peut être concaténé avec n'importe quel objet, ce qui appelle implicitement la méthode toString de l'objet (un comportement garanti par la relation d'héritage que toute classe entretient avec la classe Object). La méthode toString d'un objet retourne une valeur de chaîne représentant l'objet. Les sous-classes de Object remplacent souvent la méthode toString par une implémentation spécifique à la classe. Le remplacement de méthode se produit lorsqu'une méthode publique dans une sous-classe a la même signature de méthode qu'une méthode publique dans la classe parente, mais que le comportement de la méthode est spécifique à la sous-classe.
    • Énoncé d'exclusion : Remplacer la méthode toString d'une classe est hors du programme du cours et de l'examen AP Computer Science A.

Objectif d'apprentissage 1.15.B : Développer du code pour appeler des méthodes sur des objets de chaîne de caractères et déterminer le résultat de l'appel de ces méthodes.

  • 1.15.B.1 Un objet String a des valeurs d'index allant de 0 à un moins que la longueur de la chaîne. Tenter d'accéder à des indices en dehors de cette plage entraînera une StringIndexOutOfBoundsException.
  • 1.15.B.2 Les méthodes String suivantes — incluant ce qu'elles font et quand elles sont utilisées — font partie de la Référence Rapide Java :
    • int length() retourne le nombre de caractères dans un objet String.
    • String substring(int from, int to) renvoie la sous-chaîne commençant à l'index from et se terminant à l'index to - 1.
    • String substring(int from) retourne substring(from, length()).
    • int indexOf(String str) retourne l'index de la première occurrence de str ; retourne -1 si non trouvé.
    • boolean equals(Object other) retourne true si this correspond à la même séquence de caractères que other ; retourne false sinon.
    • int compareTo(String other) retourne une valeur < 0 if this is less than other; returns zero if this is equal to other; returns a value > 0 si this est supérieur à other. Les chaînes sont ordonnées selon l'alphabet.
    • Énoncé d'exclusion : L'utilisation de la méthode equals pour comparer un objet String avec un objet d'un autre type que String est hors du programme du cours et de l'examen AP Computer Science A.
  • 1.15.B.3 Une chaîne identique au seul élément de la sous-chaîne à la position index peut être créée en appelant substring(index, index + 1).

Source : Description du cours et de l'examen AP College Board

Les chaînes sont immuables

Les objets String sont immuables 不可变 – les méthodes retournent une nouvelle chaîne plutôt que de modifier l'originale. Méthodes clés (tous les indices commencent à 0) :

s.length();            // number of characters
s.substring(2, 5);     // chars at index 2,3,4 (5 excluded)
s.indexOf("ab");       // first position, or -1
s.equals(other);       // content comparison (never use == for Strings)
s.compareTo(other);    // <0, 0, >0 by dictionary order

Compétence d'examen : substring(a, b) inclut l'indice a mais exclut b, et la comparaison de chaînes doit utiliser .equals, pas == – deux des pièges les plus testés concernant les String.

Exemple résolu. Soit String s = "COMPUTER"; (indices 0–7). Alors s.length() vaut 8 ; s.substring(0, 4) vaut "COMP" (indices 0,1,2,3 – l'indice 4 exclu) ; s.substring(4) vaut "UTER" (de l'indice 4 jusqu'à la fin) ; s.indexOf("PU") vaut 3 ; et s.indexOf("X") vaut -1 (non trouvé). Compter l'extrémité exclue de substring est l'erreur la plus fréquente.

Demander un indice en dehors de 0 à length()-1 (un mauvais argument substring ou charAt, par ex. s.substring(0, 20) ici) provoque une erreur avec un StringIndexOutOfBoundsException – le cousin de l'erreur d'index de tableau pour les chaînes.

Les indices de chaîne commencent à 0
Les indices de chaîne commencent à 0
Explorer

Explorer les indices de chaîne et le découpage

Chaque caractère a un index, et la numérotation commence à 0. Faites glisser le début et la fin pour voir comment substring(from, to) prend les caractères de from jusqu'à — mais sans inclure — to.

1.15

Conseils d'examen

  • Tracez le code main à la main ligne par ligne, en suivant la valeur de chaque variable dans un tableau – l'examen récompense une trace soignée plutôt que les devinettes.
  • Connaissez les types primitifs de Java et le fait que la division entière tronque ($7/2$ donne $3$) ; utilisez un cast ou un double pour une division réelle.
  • Distinguez les erreurs de compilation (syntaxe, types) des erreurs d'exécution – connaissez leurs noms : ArithmeticException (int ÷ 0), NullPointerException (méthode sur une référence null), StringIndexOutOfBoundsException / ArrayIndexOutOfBoundsException – ainsi que les erreurs de logique (mauvais résultat).
  • Respectez la priorité des opérateurs et initialisez chaque variable avant de l'utiliser.
  • Pour la question ouverte, écrivez du Java complet et compilable – retournez le bon type et correspondez exactement à l'en-tête de la méthode.

Leçons interactives sur ce sujet

Traversez-le étape par étape, avec des exercices à vérification instantanée.

Épreuves Passées

Plus de sujets dans AP Informatique A

Se connecter ou créer un compte

IGCSE, A-Level & AP