Méthodes & Paramètres et Objet

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous avançons vers les méthodes et les objets. L'objectif est d'apprendre à définir une méthode avec des paramètres. L'objet est un concept très important dans le langage de programmation orienté objet (OOP), donc avoir une bonne compréhension de celui-ci vous sera bénéfique.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/DataStructuresGroup -.-> java/arrays("Arrays") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ProgrammingTechniquesGroup -.-> java/recursion("Recursion") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/class_methods("Class Methods") subgraph Lab Skills java/arrays -.-> lab-178547{{"Méthodes & Paramètres et Objet"}} java/method_overloading -.-> lab-178547{{"Méthodes & Paramètres et Objet"}} java/recursion -.-> lab-178547{{"Méthodes & Paramètres et Objet"}} java/classes_objects -.-> lab-178547{{"Méthodes & Paramètres et Objet"}} java/class_methods -.-> lab-178547{{"Méthodes & Paramètres et Objet"}} end

Méthodes et paramètres

Dans certains cas, vous avez besoin de code qui peut être réutilisé pour résoudre des problèmes similaires, tels que l'affichage de l'âge et du nom de quelqu'un. Pour différentes personnes, le nom et l'âge sont différents. Ces deux variables peuvent être passées à un bloc de code en tant que paramètres. C'est là que nous introduisons le concept de méthode, qui effectuera la tâche.

Exemple :

Écrivez le code suivant dans le fichier /home/labex/project/methodTest.java :

public class methodTest
{
    public static void main(String[] args)
    {
        // appelez notre méthode définie par nous-même
        printInfo("Mike", 18);
        // appelez notre méthode définie par nous-même
        System.out.println(fibonacci(10));
        System.out.println(fibonacciNormal(10));
    }
    // nous définissons une méthode de classe pour afficher les informations personnelles
    public static void printInfo(String name, int age){
        System.out.println("Hello " + name + ", your age is " + age);
    }
    // définissez une méthode de classe pour calculer la suite de Fibonacci par récursion
    public static int fibonacci(int n){
        if(n<=2){
            return 1;
        }else{
            return fibonacci(n-1)+fibonacci(n-2);
        }
    }
    // définissez une méthode de classe pour calculer la suite de Fibonacci par boucle d'itération
    public static int fibonacciNormal(int n){
        if(n<=2){
            return 1;
        }
        int n1=1,n2=1,sum=0;
        for(int i=0;i<n-2;i++){
            sum=n1+n2;
            n1=n2;
            n2=sum;
        }
        return sum;
    }
}

Sortie :

Exécutez le fichier methodTest.java en utilisant les commandes suivantes :

javac /home/labex/project/methodTest.java
java methodTest

Voyez la sortie :

Hello Mike, your age is 18
55
55

Dans l'exemple ci-dessus, nous écrivons une fonction appelée printInfo. Vous pouvez lui donner le nom que vous voulez. Il y a deux paramètres et le type de retour est void, ce qui signifie qu'aucune valeur ne sera renvoyée. Vous pouvez déterminer le type de retour de votre fonction comme n'importe quel type dont vous avez besoin, et le nombre et les types des paramètres peuvent être n'importe quoi. Vous pouvez définir votre méthode comme suit :

Exemple :

public/private static/final/{non nécessaire} TYPE_DE_RETOUR NOM_DE_LA_MÉTHODE( LISTE_DES_PARAMÈTRES ) {
    // INSTRUCTIONS
}
public String getName(){}
public void setName(){}
public static void newInstance(){}
public final String msg(){}

Java fournit de nombreuses fonctions qui effectuent les opérations les plus courantes en tant que méthodes de bibliothèque intégrée, telles que les fonctions mathématiques. Ces fonctions sont appelées méthodes. Les méthodes sont invoquées en utilisant une syntaxe similaire aux instructions d'affichage que nous avons déjà vues :

Exemple :

double root = Math.sqrt(16.0);   // root = 4.0
double height = Math.sin(1.5);   // height = 0.9974949866040544

Objet

En Java, il existe deux types de types : les types primitifs et les types d'objets. Les primitifs, comme int et boolean, commencent par des minuscules ; les types d'objets commencent par des majuscules. Cette distinction est utile car elle nous rappelle certaines des différences entre eux :

Lorsque vous déclarez une variable primitive, vous obtenez une espace de stockage pour une valeur primitive. Lorsque vous déclarez une variable d'objet, vous obtenez un espace pour une référence à un objet. Pour obtenir de l'espace pour l'objet lui-même, vous devez utiliser l'opérateur new.

Si vous n'initialisez pas une variable primitive, elle est donnée une valeur par défaut qui dépend de son type. Par exemple, 0 pour les int et false pour les boolean. La valeur par défaut pour les types d'objets est null, ce qui indique qu'aucun objet n'est référencé par les variables de référence.

Les variables primitives sont bien isolées dans le sens où il n'y a rien que vous pouvez faire dans une méthode qui affectera une variable dans une autre méthode. Les variables d'objets peuvent être difficiles à manipuler car elles ne sont pas aussi bien isolées. Si vous passez une référence à un objet en tant qu'argument, la méthode que vous appelez peut modifier l'objet, auquel cas vous verrez l'effet. Bien sûr, cela peut être une bonne chose, mais vous devez en être conscient.

Si nous passons des variables primitives à une méthode (passage de paramètre par valeur), nous copions en fait les valeurs des primitives et les utilisons à l'intérieur de la méthode. Toutes les opérations à l'intérieur de la méthode s'effectuent sur les copies ; et, en dehors de la méthode, les valeurs des variables primitives restent inchangées. Mais, si nous passons des objets non primitifs à une méthode (passage de paramètre par référence), nous passons les variables de référence à la méthode. Toutes les opérations utiliseront et/ou affecteront les objets originaux.

Exemple :

Écrivez le code suivant dans le fichier /home/labex/project/objectTest.java :

public class objectTest {
    public static void main(String[] args){
        // utilisez new pour créer un objet Array avec deux éléments
        int[] numbers = new int[2];
        // affectez des valeurs à l'objet tableau
        numbers[0] = 1;
        numbers[1] = 2;
        // créez des variables primitives de cette manière
        int a = 1, b = 2;

        // créez un objet de test
        objectTest test = new objectTest();

        test.changeInt(a, b);
        System.out.println("Maintenant a est " + a + ", b est " + b);

        test.changeArray(numbers);
        System.out.println("Maintenant numbers contient :");

        for(int i : numbers){
            System.out.print(i + "\t");
        }
    }
    // définissez une méthode d'objet, changez la valeur de int
    public void changeInt(int a,int b){
        a = 2;
        b = 3;
        System.out.println("Dans la méthode changeInt, a est " + a + ", b est " + b);
    }
    // définissez une méthode d'objet, changez la valeur du tableau
    public void changeArray(int[] number){
        for(int i = 0;i < number.length;i++){
            number[i] = number[i]+1;    // changez la valeur de l'élément du tableau en augmentant de 1
        }
        System.out.println("Dans la méthode changeArray, numbers contient :");
        for(int i : number){
            System.out.print(i + "\t");
        }
        System.out.println();
    }
}

Sortie :

Exécutez le fichier objectTest.java en utilisant la commande suivante dans le terminal :

javac /home/labex/project/objectTest.java
java objectTest

Voyez la sortie :

Dans la méthode changeInt, a est 2, b est 3
Maintenant a est 1, b est 2
Dans la méthode changeArray, numbers contient :
2    3
Maintenant numbers contient :
2    3

Il y a une autre différence entre les primitifs et les types d'objets. Vous ne pouvez pas ajouter de nouveaux primitifs à Java (sauf si vous vous inscrivez au comité de normalisation), mais vous pouvez créer de nouveaux types d'objets! Nous verrons comment dans le chapitre suivant.

Récapitulatif

Les méthodes sont courantes dans les classes. Une méthode est un bloc de code qui effectue certaines opérations spécifiques. Java fournit de nombreuses classes intégrées que nous pouvons utiliser directement. Il existe deux manières de passer des paramètres à des méthodes : par valeur et par référence. Leurs effets sont différents. Dans le prochain laboratoire, nous vous les présenterons. Nous espérons que cela sera utile.