Programmation - A. Cohen
Cours

Java et les objets

Création et manipulation d'objet

Création/définition d'objet

On utilise les constructeurs pour construire de nouvelles instances

La création d'un objet fait intervenir l'opérateur new

Remarque :

Remarque : Date est une classe de la bibliothèque standard

Qu'est ce qu'un constructeur ?

Un constructeur est une fonction particulière dont le rôle est de créer un nouvel objet à partir d'une classe et à l'initialiser

  • porte le même nom que la classe qui le contient

  • un constructeur ne renvoie aucune valeur

  • un constructeur est toujours appelé à l'aide de l'opérateur new

L'appel à un constructeur se fait par le nom de la classe à instancier.

Syntaxe :

<NomClasse> <nomInstance> = new <Constructeur()>;

Une fois que vous avez créé une instance, vous pouvez utiliser son nom pour accéder aux membres de cette classe

Rôle du constructeur

Un constructeur crée une nouvelle instance d'une classe :

  • réserve un emplacement en mémoire pour le nouvel objet

  • initialise les attributs de cet objet, c'est-à-dire leur donne une valeur initiale, ce qui les rend immédiatement disponibles

  • peut aussi exécuter n'importe quelle routine de démarrage requise par l'objet

Remarque :
  • Une classe peut avoir plus d'un constructeur (ils doivent se distinguer par leurs paramètres)

  • Si un champ n'est pas initialisé explicitement dans un constructeur, une valeur par défaut lui est automatiquement attribuée :

    • zéro pour les nombres,

    • false pour les valeurs booléennes,

    • null pour les références d'objet.

  • Si aucun constructeur n'est défini, Java en fournit automatiquement un par défaut. Ce dernier affecte une valeur par défaut à tous les champs d'instance.

Instanciation d'un objet

Prenons l'exemple de la classe Date. On construit un objet Date de la façon suivante :

new Date()

Remarque :

Remarquons que nous pouvons directement écrire l'instruction suivante :

System.out.println (new Date());

  • new Date() construit un nouvel objet, initialisé avec l'heure et la date courante.

  • Construit de cette façon, l'objet n'est utilisé qu'une seule fois ! !

Objet et variable objet

Pour disposer de l'objet pour plusieurs utilisations il faut stocker sa référence dans une variable

Date dateNaissance = new Date();

dateNaissance fait référence à l'objet qui vient d'être construit

Attention :

Il existe une différence entre un objet et une variable objet

On peut écrire la déclaration suivante :

Date dateLimite ;

dateLimite est une simple variable,

  • ce n'est pas un objet

  • on ne peut employer de méthode de Date avec cette variable

Comment initialiser la variable dateLimite ?

Il existe deux façons d'initialiser la variable dateLimite :

1. initialiser la variable à l'aide de new

  • Date dateLimite = new Date();

2. lui attribuer la référence à un objet existant

  • dateLimite = dateNaissance;

On peut aussi lui attribuer la valeur null

(==> la variable ne référence aucun objet)

  • dateLimite = null;

Qu'est ce qu'une méthode main ?

Rappel

Tout programme Java comporte une classe principale qui est composée de la méthode main(). Les programmes plus complexes peuvent comporter plusieurs classes MAIS il n'y a qu'une classe qui possède une méthode main. Toutes les classes peuvent se trouver dans le même fichier ou alors on crée un fichier par classe.

  • C'est la 1ère méthode exécutée par le programme lors de son lancement

  • La méthode main peut avoir des arguments en entrée. Ces arguments sont fournis au moment de l'exécution du programme et ils sont stockés dans un tableau de chaînes de caractères dont le nom est à préciser. Par exemple :

    "String[] args "

    args est un tableau de chaînes de caractères qui contient les paramètres passés à l'application java sur la ligne de commande.

    Dans le corps de la méthode, on accède à ces paramètres en écrivant args[0], args[1], etc...

  • Attention, le 1er paramètre a le numéro 0 et le nombre de paramètres est fourni par args.length

Remarque :
  • La méthode main n'opère sur aucun objet

  • Lorsqu'un programme démarre, il n'existe encore aucun objet

  • Quand la méthode main s'exécute, elle construit les objets dont le programme a besoin

Complément : Paramètres sur la ligne de commande

Les paramètres passés sur la ligne de commande sont des chaînes de caractères.

Pour les utiliser sous forme d'entiers il faut les transformer en variables de type int.

Question : Comment Convertir un String en int ?

Rappel : Méthode parseInt

Cette méthode parseInt de la classe Integer permet de convertir un string en integer.

Pour illustrer ceci reprenons l'exemple de comparaison de deux nombres :

public class Compare1

{

public static void main(String args[])

{

int a = 10;

int b = 12;

System.out.println("L'entier A vaut "+a+".");

System.out.println("L'entier B vaut "+b+".");

if (a<b) System.out.println("A est plus petit que B.")

else if (a == b) System.out.println("A est egal à B.")

else System.out.println("A est plus grand que B.");

}

}

Cette fois les deux nombres à comparer seront passés en paramètres

Il suffit de remplacer les deux lignes qui déclarent et initialisent les variables a et b

par :

int a = Integer.parseInt(args[0]);

int b = Integer.parseInt(args[1]);

Lors de l'exécution, faire suivre le nom de l'application par deux valeurs entières

On lancera la commande :

>java compare1 20 40

Exemple : Emploi de la méthode length

Rappelons que cette méthode retourne le nombre d'éléments dans un tableau.

public class test

{

public static void main(String args[])

{

int i = 0;

int m;

m = args.length;

System.out.println("Nombre d'arguments =" + m);

for (i=0; i<m; i++)

System.out.println(args[i]);

}

}

Exemple de sortie
Exemple de sortie

Exemple

Dans cet exemple, il y a une méthode imprime() qui est appelée par la méthode main.

class ReHello

{

// déclaration de la classe principale

public static void imprime()

{

// création de la méthode qui affiche le texte

// ci-dessous les instructions de la méthode

System.out.println("HelloWorld ! Encore une fois...");

}

// fin de la méthode imprime()

public static void main(String args[])

{

// la méthode main()...

imprime();

// ... qui fait appel à la méthode imprime()

}

}

Définition d'une méthode

Introduction

Une méthode est un ensemble d'instructions qui reçoit éventuellement des données en entrée, effectue des traitements (un certain nombre d'actions) et produit éventuellement des résultats en sortie.

La notion de méthode diffère de celle de "fonction" dans les langages procéduraux dans la mesure où une méthode est toujours "accrochée" à une instance d'objet : les instructions sont donc exécutées dans le contexte de l'instance.

Une méthode est donc toujours associée à la classe responsable de l'opération

une méthode peut donc avoir zéro, un ou plusieurs paramètres en entrée et elle peut retourner ou pas une valeurs en sortie

Une méthode a deux parties :

  • déclaration

  • corps

Exemples de déclaration

Il s'agit ici d'exemple de méthode qui

  • reçoit un paramètre en entrée à savoir la variable remarque définie de type String

  • retourne un résultat qui lui aussi est de type String

Pour retourner un résultat, la méthode doit utiliser le mot réservé "return"

En principe il faut faire suivre return par le nom de la variable contenant la valeur à retourner. Evidemment cette variable doit être de même type que le type de la méthode.

Autres exemples de déclaration

Méthode sans paramètre en entrée et sans résultat en retour

public void nomméthode ()

{

.....

}

Méthode avec des paramètre en entrée et sans résultat en retour

public void nomméthode (String xxx, int yyy)

{

.....

}

Méthode avec des paramètre en entrée et un résultat en en retour (ici le type de retour choisi est float mais cela peut être un autre type)

public float nomméthode (String xxx, int yyy)

{

.....

return ...

}

Méthode sans paramètre en entrée mais avec un résultat en en retour (ici le type de retour choisi est int mais cela peut être un autre type)

public int nomméthode ()

{

.....

return ...

}

Syntaxe générale de déclaration de méthode

Méthodes d'accès

Syntaxe :

access_specifier modifier return_value nameofmethod (parameters)

throws ExceptionList

Explication
Méthodes : Access_specifier
  • Règle générale : une méthode est toujours accessible à partir d'autres méthodes appartenant à la même classe.

  • Public : méthode accessible à partir de n'importe quelle autre classe ou package.

  • Protected : méthode accessible à partir de n'importe quelle autre classe ou sous-classe du même package.

  • Private : méthode accessible à partir de n'importe quelle autre méthode de la même classe.

  • Package (par défaut) : méthode accessible à partir de n'importe quelle autre méthode de la même classe ou d'autres classes appartenant au même package

Exemple : Exemples pour Private

La variable iam et la méthode privateMet ne peuvent pas être utilisées par la classe Beta

Méthodes : modifier

Parmi les valeurs que peut prendre modifier

  • Static : la méthode appartient à la classe et non pas aux instances.

    Une méthode statique ne sera pas dupliquée pour chaque instance.

  • Abstract : une méthode abstraite est déclarée mais non implantée.

    C'est la responsabilité d'une sous-classe de la classe courante.

Type de retour (return_value)
  • C'est le type de données que la méthode doit renvoyer

  • Votre méthode peut renvoyer des données de n'importe quel type primitif

  • Si une méthode n'a pas besoin de renvoyer quelque chose, le type de retour doit être void

Définition : Méthodes d'accès
  • On appelle méthode d'accès en consultation une méthode qui renvoie simplement les valeurs des champs d'instance

Exemple :

public String getNom()

{

return nom;

}

public double getBourse()

{

return bourse;

}

public byte getEtude()

{

return anneeEtude;

}

Définition :

On appelle méthode d'accès en modification une méthode qui modifie la valeur de la donnée

Exemple :

public void augmenteBourse (double pourct)

{

double augment = bourse * pourct /100;

bourse = bourse + augment;

}

Appel de la méthode

Une fois que la méthode est définie, il vous reste

  • à y faire référence par son nom

  • lui passer les arguments dont elle a éventuellement besoin pour faire correctement son travail

afficherChaîne(remarque);

obtenirDonnées()

Fichiers et Applets (page suivante)Programmation orientée objet - Terminologie (page Précédente)
AccueilImprimerRéalisé avec SCENARI