[LAJ 1] Les constantes.

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [LAJ 1] Les constantes.

Message  Jeyminee le Mer 12 Mai 2010, 14:54

Bien le bonjour à vous (bien que les conditions atmosphériques sur Jodoigne ne soient pas si bonnes que cela...)

Dans un soucis de compréhension et de précision dans mon étude de l'examen oral de Java 1ère un problème me turlupine...

Voici un extrait de la troisième édition de "Programmer en java" de CLAUDE DELANNOY (Chapitre 3 page 42)

6.3 Constantes et expressions constantes

6.3.1 Le mot clé final

Java permet de déclarer que la valeur d’une variable ne doit pas être modifiée pendant l’exécution
du programme. Par exemple, avec :

Code:
final int n = 20 ;

on déclare la variable n de type int, de valeur initiale 20. De plus, toute tentative ultérieure de
modification de la valeur de n sera rejetée par le compilateur :

Code:
n = n + 5 ; // erreur : n a été déclarée final
n = Clavier.lireInt() ; // idem

D’une manière générale, le mot clé final peut être utilisé quelle que soit l’expression d’initilisation
de la variable :

Code:
int p ;
.....
p = Clavier.lireInt() ;
final int n = 2 * p ; // OK, bien que la valeur de n ne soit connue
// qu’à l’exécution
.....
n++ ; // erreur de oompilation : n est déclarée final


6.3.2 Notion d’expression constante

Les deux expressions utilisées pour initialiser les variables n de nos deux exemples précédents
sont de nature différente. Dans le premier cas, il s’agit de la valeur 20, bien définie et
connue dès la compilation. Dans le second cas, il s’agit d’une expres​sion(2*p) dont la valeur,
connue qu’à l’exécution, peut différer d’une exécution à l’autre.
Vous constatez que final ne fait pas la distinction. On ne peut donc pas dire que final sert à
déclarer ce que l’on nomme des constantes symboliques dans certains autres langages. En
fait, final demande simplement que la valeur d’une variable n’évolue plus après avoir été
fixée (nous verrons qu’il n’est même pas nécessaire que cette première valeur soit définie
dans la déclaration).
En revanche, nous rencontrerons des situations où il est néssaire de distinguer les deux sortes
d’expressions. On parlera d’expression constante pour désigner une expression calculable par
le compilateur.
Lorsque final est utilisé conjointement avec une expression constante, on retrouve la notion
usuelle de définition de constante symbolique, autrement dit d’un symbole dont la valeur est
parfaitement connue du compilateur. En Java, il est d’usage d’écrire les constantes symboliques
en majuscules :

Code:
final int NOMBRE = 20 ;
.....
final int LIMITE = 2 * NOMBRE + 3 ;


J'en ai déduit ceci mais je me demande si je ne me trompe pas royalement...

a) Le mot-clé Final
Java permet de déclarer que la valeur d’une variable ne doit pas être modifiée pendant l’exécution du programme. Toute tentative ultérieure de modification de la valeur sera rejetée par le compilateur.

b) La constante
Final demande simplement que la valeur d’une variable n’évolue plus après avoir été fixée. En revanche, on parlera d’expression constante pour désigner une expression calculable par le compilateur.

c) Constante VS Final
La constante permet d'affecter une valeur différente à la variable pour chaque exécution du programme, tout en garantissant que la variable, une fois initialisée avec une valeur, ne subira plus aucune modification.

d) Constante symbolique
Lorsque final est utilisé conjointement avec une expression constante, on retrouve la notion usuelle de définition de constante symbolique, autrement dit d’un symbole dont la valeur est parfaitement connue du compilateur. En Java, il est d’usage d’écrire les constantes symboliques en majuscules.


Final n'est-il pas un type de constante??? Dois-je vraiment marquer une différence entre Final et Constante ou les deux sont liés???


D'avance je vous remercie grandement de m'éclairer quant à ce dilemme.


==> Une constante sera donc toujours Final en Java si j'ai bien compris.


Dernière édition par Jeyminee le Mer 12 Mai 2010, 17:33, édité 1 fois

Jeyminee

Nombre de messages : 20
Age : 27
Prénom : Frederic
Date d'inscription : 12/12/2009

Revenir en haut Aller en bas

resolu Re: [LAJ 1] Les constantes.

Message  Anthoblack le Mer 12 Mai 2010, 16:46

Jeyminee a écrit:Final n'est-il pas un type de constante??? Dois-je vraiment marquer une différence entre Final et Constante ou les deux sont liés???
final permet bien de créer une valeur constante et déjà initialisée.

Les deux sont donc liés et dépendent en fait de la manière de voir les choses (et d'utiliser la variable). constante est indépendant du langage, contrairement à final... PI est une constante et, dans le cas de JAVA, une variable final

Ça répond à ta question ?

Anthoblack

Nombre de messages : 764
Age : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

resolu Re: [LAJ 1] Les constantes.

Message  pbt le Mer 12 Mai 2010, 17:08

L'explication fournie me semble assez claire ... et bien détaillée.

final est un mot clé (keyword) qui permettra, selon son utilisation, de définir une constante symbolique par exemple.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

resolu Re: [LAJ 1] Les constantes.

Message  mba le Mer 12 Mai 2010, 21:24

Jeyminee a écrit:
a) Le mot-clé Final
Java permet de déclarer que la valeur d’une variable ne doit pas être modifiée pendant l’exécution du programme. Toute tentative ultérieure de modification de la valeur sera rejetée par le compilateur.
Oui et on parle bien de modification (la variable est donc déjà initialisée). Quant à l'affectation (la premmière donc), elle peut bien être faite par une expression non constante et à l'exécution contrairement à d'autres langages.
Anthoblack a écrit:final permet bien de créer une valeur constante et déjà initialisée.
. mais n'oblige pas à initialiser à la déclarative, il est tout à fait possible de créer une variable final sans pour autant l'initialiser immédiatement
Code:

public final int NB_ESSAIS;
...
NB_ESSAIS = clavier.nextInt();

mba

Nombre de messages : 1493
Statut : prof
Localisation : Lessines
Date d'inscription : 07/10/2006

Revenir en haut Aller en bas

resolu Re: [LAJ 1] Les constantes.

Message  Anthoblack le Mer 12 Mai 2010, 23:50

mba a écrit:
Anthoblack a écrit:final permet bien de créer une valeur constante et déjà initialisée.
. mais n'oblige pas à initialiser à la déclarative, il est tout à fait possible de créer une variable final sans pour autant l'initialiser immédiatement
Code:

public final int NB_ESSAIS;
...
NB_ESSAIS = clavier.nextInt();
Au temps pour moi Smile

Anthoblack

Nombre de messages : 764
Age : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

resolu Re: [LAJ 1] Les constantes.

Message  nvs le Jeu 13 Mai 2010, 00:16

ok avec ce qui a été dit. mais cela ne couvre qu'une partie (un tiers ?) de la portée du mot clé final en java. ce qui a été abordé : final et un attribut ou une variable de type primitif. reste : final et un attribut ou une variable de type objet (qu'est-ce qui est constant : la référence et / ou l'objet référencé). reste encore : final et la notion de classe. et aussi : les méthodes et le mot clé final. ceci dit, je donne pas java en première, donc tout n'a peut-être pas été vu au cours.

bon travail, car il en reste Wink















_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [LAJ 1] Les constantes.

Message  Contenu sponsorisé Aujourd'hui à 14:31


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum