Flux rss
Collection CommentÇaMarche.net
Bookmark Ajouter aux favoris / Partager

La notion d'accessibilité

Le concept d'accessibilité (généralement appelé encapsulation) définit la possibilité qu'a le concepteur d'une classe de restreindre l'accès à certaines données, ou plus généralement à certains éléments (méthodes, classes, ...).

En effet, les classes sont prévues pour être diffusées (parfois de façon payante) afin de pouvoir être réutilisées par certains programmeurs. Or il est généralement souhaitable que les utilisateurs de la classe se servent de celle-ci de la manière de laquelle le concepteur a prévu qu'elle le soit. Ainsi, il est possible de restreindre l'accès à (ou bien l'instanciation de) certains éléments en leur associant une étiquette.

La protection des données membres

l'encapsulation consiste donc à définir des étiquettes pour les données membres et les méthodes afin de préciser si celles-ci sont accessibles à partir d'autres classes ou non...

De cette manière, des données membres portant l'étiquette private ne peuvent pas être manipulées directement par les méthodes des autres classes. Ainsi, pour pouvoir manipuler ces données membres, le créateur de la classe (vous en l'occurrence) doit prévoir des méthodes spéciales portant l'étiquette public, permettant de manipuler ces données.

  • Les fonctions membres permettant d'accéder aux données membres sont appelées accesseurs, parfois getter (appelation d'origine anglophone)
  • Les fonctions membres permettant de modifier les données membres sont appelées mutateurs, parfois setter (appelation d'origine anglophone)

On appelle généralement "interface" l'ensemble des méthodes permettant à l'utilisateur de manipuler une classe.

Les niveaux d'accès

Java définit quatre niveaux d'accès pour les variables d'instances (données membres) et les méthodes :

  • public : un élément public est accessible de partout et sans aucune restriction. Certaines classes (comme la classe principale main) doivent obligatoirement être déclarées publiques (pour pouvoir exécuter l'application...)
  • protected : un élément protected (protégé) est accessible uniquement aux classes d'un package et à ses classes filles
  • private : un élément private (privé) est accessible uniquement au sein de la classe dans laquelle il est déclaré. Ces éléments ne peuvent être manipulés qu'à l'aide de méthode spécifiques appelés accesseur et mutateur
  • "friendly" : un élément est friendly par défaut (cette appellation n'est pas officielle et est empruntée au langage C++) est accessible uniquement aux classes d'un package et à ses classes filles.

La notion d'accesseur

Un accesseur est une méthode permettant de récupérer le contenu d'une donnée membre protégée. Un accesseur, pour accomplir sa fonction :

  • doit avoir comme type de retour le type de la variable à renvoyer
  • ne doit pas nécessairement posséder d'arguments
Une convention de nommage veut que l'on fasse commencer de façon préferrentielle le nom de l'accesseur par le préfixe get, afin de faire ressortir sa fonction première.

La syntaxe d'un accesseur réduit à sa plus simple expression ressemble donc à ceci :

public class MaClasse{
	public static void main(String[] argv){
		new MaSecondeClasse();

	}
}

class MaSecondeClasse{
		private TypeDeMaVariable maVariable;

		public TypeDeMaVariable getMaVariable(){
			return maVariable;

		}
}
Sur l'exemple précédent, l'accesseur minimal de la donnée membre age pourrait être le suivant :

class Toto{
	private int age;

	public int getAge(){
		return age;

	}
}

La notion de mutateur

Un mutateur est une méthode permettant de modifier le contenu d'une donnée membre protégée. Un mutateur, pour accomplir sa fonction :

  • doit avoir comme paramètre la valeur à assigner à la donnée membre. Le paramètre doit donc être du type de la donnée membre
  • ne doit pas nécessairement renvoyer de valeur (il possède dans sa plus simple expression le type void)
Une convention de nommage veut que l'on fasse commencer de façon préferrentielle le nom du mutateur par le préfixe set.

La syntaxe d'un mutateur réduit à sa plus simple expression ressemble donc à ceci :

class MaClasse{
	private	TypeDeMaVariable maVariable;

	public	void setMaVariable(TypeDeMaVariable maValeur){
		maVariable = maValeur;

	}
}
Sur l'exemple précédent, le mutateur minimal de la donnée membre age pourrait être le suivant :

class Toto{
	private int age;

	public void setAge(int nouveauAge){
		age = nouveauAge;

	}
}

L'intérêt principal d'un tel mécanisme est le contrôle de la validité des données membres qu'il procure. En effet, il est possible (et même conseillé) de tester la valeur que l'on assigne à une donnée membre, c'est-à-dire que l'on effectue un test de validité de la valeur de l'argument avant de l'affecter à la donnée membre. Le mutateur ci-dessus peut par exemple vérifier si l'âge de Toto est correct (on considérera pour cela que Toto ne peut pas vivre plus de 200 ans...c'est avec des hypothèses telles que celle-ci que peuvent apparaître des bogues...ah les progrès de la génétique!).

class Toto{
	private int age;

	public int setAge(int nouveauAge){
	if (nouveauAge < 200) {
		age = nouveauAge;

		return 1;

	}
	else return 0;

	}
}


Dernière modification le mardi 14 octobre 2008 à 17:40:31.Ce document intitulé « Java - L'accessibilité » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Java - Premier programme Première application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main... www.commentcamarche.net/contents/java/javaprem.php3
Java - Les types de données Les primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et... www.commentcamarche.net/contents/java/javatype.php3
J2EE - Java 2 Enterprise Edition Introduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des... www.commentcamarche.net/contents/j2ee/j2ee-intro.php3
[Firefox] plugin Java Jre de SunA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes... www.commentcamarche.net/faq/sujet-1824-firefox-plugin-java-jre-de-sun
Installer Java sous UbuntuPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ... www.commentcamarche.net/faq/sujet-5400-installer-java-sous-ubuntu
Java Runtime MachineJava Runtime Machine Certains sites internet mais aussi certains programmes requièrent la présence de la Java Runtime Machine (JRM) pour exécuter les applets Java. Si vous n'avez pas, ou plus, cette Java Runtime Machine,... www.commentcamarche.net/faq/sujet-640-java-runtime-machine
Lire un fichier texte en java (Résolu)Salut ! je voudrai lire un fichier texte ligne par ligne en java mais je ne sais pas comment faire. Merci d'avance Nathalie www.commentcamarche.net/forum/affich-590149-lire-un-fichier-texte-en-java
Connection a Mysql via java (Résolu)Salut les gens, Je commence en java alors soyez gentils plzzzzz :-) J'essai de me connecter a ma base de donner Mysql en passant par un programme en java développé sous eclipse dont voici le code : import java.sql.*; class affichage{ public static... www.commentcamarche.net/forum/affich-2658844-connection-a-mysql-via-java
Télécharger Java Runtime EnvironmentJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces... www.commentcamarche.net/telecharger/telecharger-34055318-java-runtime-environment
Télécharger Cavaj Java DecompilerCavaj Java Decompiler est un éditeur gratuit de code Java. Il permet de recomposer le code source Java d'un fichier CLASS. Il prend en charge la décompilation des applets Java, des archives ZIP et JAR. Le code source Java obtenu est précis. Il intègre... www.commentcamarche.net/telecharger/telecharger-34056787-cavaj-java-decompiler
Télécharger Java ToolsJava Tools est un IDE très léger pour la création, la compilation, l'exécution et le débogage des applications Java et des applettes. L'outil inclus des points et des clics d'accès aux commandes Java, aux documents, au répertoire et aux fichiers. Il... www.commentcamarche.net/telecharger/telecharger-34056297-java-tools
Introduction aux Java Server PagesPrésentation des Java Server Pages Les JSP (Java Server Pages) sont un standard permettant de développer des applications Web interactives, c'est-à-dire dont le contenu est dynamique. C'est-à-dire qu'une page web JSP (repérable par l'extension... www.commentcamarche.net/contents/jsp/jspintro.php3
Java: les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Java sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/java/javavar.php3
Java - L'API JDBCIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec... www.commentcamarche.net/contents/java/javajdbc.php3