vendredi 31 mai 2013

Pour en finir avec le modificateur static...

Bonjour,

D'abord les définitions...

Une variable static ( qu'on appelle parfois une variable de classe ) est une variable qui nécessite qu'un espace en mémoire pour stocker sa valeur plutôt qu'un espace en mémoire par objet créé, ce qui est le cas pour les variables d'instance.



Par exemple, pour une classe EtudiantCegep, les variables nom et matricule ne sont pas static car chaque objet a son nom et son matricule propre; on a besoin d'un espace-mémoire par objet pour stocker ces informations. Nom et matricule sont des variables d'instance.



Cependant, les variables menuCafeteria et accèsALaBibliotheque sont des variables static car leur valeur est la même, à un instant donné, pour tous les objets EtudiantCegep ( l'accès à la bibliothèque vaut true pour tous les objets en même temps , le menuCafeteria est le même pour tous les étudiants un jour donné ) . On a donc besoin d'un seul espace mémoire pour l'ensemble de la classe pour stocker ces infos; ce sont des variables de classe.



Une méthode static est une méthode dont le résultat est indépendant des variables d'instance d'une classe.

Par exemple, une méthode calculerMoyenneCoursMaths n'est pas une méthode static car son résultat dépend des notes de chacun des étudiants.

Par contre, on pourrait considérer une méthode assignerCasier une méthode static car on assigne pas un casier en fonction du nom, du matricule ou du revenu d'un étudiant...



Les constantes

Les constantes ont tjrs le modificateur static car, par définition, une constante n'a besoin qu'un espace mémoire pour toute la classe ( on a pas besoin de stocker la même valeur dans 1000 objets créés à partir de cette classe )

On peut donc accéder à une constante directement en la précédant du nom de la classe d'où elle vient ( Ex. Font.BOLD )

De la même manière, on peut accéder à une variable statique : Ex: EtudiantCegep.accesBibliotheque ( vaut true ou false pour l'ensemble des étudiants à un instant donné de la semaine )

Une variable statique peut également être un objet, tel un objet Hashtable ( comme dans le TP 2 )



Quand les variables statiques ou les constantes sont initialisées ?

Elles sont chargées en mémoire lors de l'exécution du programme; quand la classe dont les variables font partie est chargée dans la machine virtuelle Java ( en étant présente dans le code d'une classe par exemple  ) , ses membres statiques le sont également et sont donc accessibles à tous, que ce soit des objets ou des variables de type prédéfini.

. Par exemple ,

import java.awt.Point;
public class ClasseEssai {

 public static Point variableDeClasse = new Point ( 2,3);
    

}


l'objet Point sera créé dès que cette classe est chargée en mémoire 

public class Class1 {
    public static void main(String[] args) {
       System.out.println(ClasseEssai.variableDeClasse.getX());
    }
}

"2" sera affiché.



Peut-on donner le modificateur static à une classe ? 

Très rarement, uniquement dans le cas d'une classe interne...c'est un cas assez rare, vous aurez de l'information sur le site d'Oracle ici 


Merci à Monique H. pour une expérimentation similaire.





mercredi 29 mai 2013

Modifier la couleur de fond des entêtes de colonnes d'une JTable


On doit recourir au JTableHeader...

table.getTableHeader().setBackground ( ... )  

table est votre objet JTable 

mardi 28 mai 2013

Une nouvelle utilisation du CardLayout

Nous avons vu que le layout CardLayout peut être utile lorsqu'on veut passer d'un conteneur à un autre en employant des méthodes telles que first, next, etc. De cette manière, on peut afficher différents contenus sans se soucier des problème d'affichage / rafraîchissement.

Qu'en est-il si les conteneurs à afficher ne se suivent pas ? On peut associer à chaque conteneur faisant partie du cardLayout un tag à l'aide de la méthode addLayoutComponent. Ce tag sera utile pour afficher ce conteneur à l'aide de la méthode show.


    cardLayout1.addLayoutComponent(jPanel1, "panel inscription");
  cardLayout1.addLayoutComponent(jPanel2, "panel branchement");
  cardLayout1.addLayoutComponent (jPanel3, "panel deconnexion");
J'assigne un tag à chaque panel faisant partie du CardLayout 

cardLayout1.show(FrameCardLayout.this.getContentPane(), "panel inscription"); 
On peut ainsi rendre visible un panel sans passer par plusieurs appels à next() 


Merci à Steve T. pour la collaboration.

mardi 7 mai 2013

Gala annuel du mérite étudiant - Nos gagnants au département

Le 6 mai dernier avait lieu le gala annuel du mérite étudiant du Cégep. On y remet des bourses aux étudiants méritants dans différents domaines liés à la performance académique et/ou à l'implication sociale . Deux étudiants de la technique ont été récompensés pour l'excellence de leur dossier scolaire soit :


  • Nathalie Bouchard ( groupe intensif A12 / 2ème année )
  • Marc-André Majeau ( groupe intensif H12 / finissant )

Le département d'informatique tient à féliciter ces deux étudiants pour leur rendement académique hors pair !