On utilise les constructeurs pour construire de nouvelles instances
La création d'un objet fait intervenir l'opérateur new
Remarque : Date est une classe de la bibliothèque standard
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.
<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
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
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.
Prenons l'exemple de la classe Date. On construit un objet Date de la façon suivante :
new Date()
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 ! !
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
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
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;
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
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
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 ?
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
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]);
}
}
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()
}
}
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
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.
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 ...
}
access_specifier modifier return_value nameofmethod (parameters)
throws ExceptionList
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
La variable iam et la méthode privateMet ne peuvent pas être utilisées par la classe Beta
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.
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
On appelle méthode d'accès en consultation une méthode qui renvoie simplement les valeurs des champs d'instance
public String getNom()
{
return nom;
}
public double getBourse()
{
return bourse;
}
public byte getEtude()
{
return anneeEtude;
}
On appelle méthode d'accès en modification une méthode qui modifie la valeur de la donnée
public void augmenteBourse (double pourct)
{
double augment = bourse * pourct /100;
bourse = bourse + augment;
}
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()