Cours 1, 10 janvier 2005
Livre de référence non obligatoire…
Plutôt les notes de cours sur le site.
A) Intro à la POO (prog orientée objet)
Ce tableau est un objet.
1- ses caractéristiques ("attributs", "champs d'info", etc.)
ex.: de couleur noir, 3.5 mètes de largeur, 1.2 mètre de h, construit en bois, etc.
2- Que peut-on faire avec ce tableau?
ex.: écrire au tableau, effacer le tableau peinturer le tableau, laver le tableau, etc
[ce sont des verbes…]
En langage OO:
tableau.ecrire(…)
tableau.laver(…)
tableau.peinturer(…)
forme 1: objet.methode(…)
Pourquoi un langage OO?
(voir stats fin plan de cours)
B) Intro au Java
Comme C++, le java permet de faire de la POO
Le java utilise la syntaxe du C++ (c'est une extension du C)
Ceux qui connaissent le C => connaissent déjà une partie de la syntaxe du Java.
Le java est purement OO
Exemple 0:
Intro0.java (extrêmement simple)
(voir feuille)
Voir sur le site de sun (ds calendrier), lire sur les classes suivantes: string et integer.
et imprimer une liste pratique ou pluôt ds un fichier…
Afficher à l'écran
écrire à l'objet sortie du système (écran)
En C: print ou println
Java: System.out.print (ou println) [l'objet, c'est "out] (sera résumé ds cours par "sop")
int age; || age est de type int
double taille; || de type double
String nombre; || nomre est un objet de la classe String.
nota: nom d'un type en minuscules (int, double, char, boolean, …)
nom d'une classe, début de chq mot en majuscules (String, Integer, StringIokenizer, …)
1 variable: 1er mot en minus, début d'un nouv mot en majuscule: nomPre
1 méthode(fonction) toUpperCase(…)
constante, tout en majuscule
String nomPre="Charbonneau Pierre";
System.out.println("nom et prenom présentement:"+nomPre); || afficher Charbonneau Pierre
System.out.println("en minuscules: "+nomPre.toLowerCase() ); || …
…………………..("la lettre b: "+nomPre.charAt(4) ); || …
…………………..("la sous-chaîne neau: "+nomPre.substring(7,11) ); || EXCLU
…………………………………….Pierre: "+nomPre.substring(12) ); || jusqu'à la fin
Les trois formes d'accès en Java
Déclarer et initialiser le rayon d'un cercle à 7.26 double rayon=7.26;
Afficher le périmètre 2 x PI x rayon System.out.println("Périmètre:"+2*Math.PI*rayon);
[forme 3], pour champs déclaré statique
Déclarer le côté d'un carré initialisé à 9.7 double cote=9.7;
double diagonale=cote*Math.sqrt(2.0);
[forme 2], pour Méthode statique
String codePerma1="TREP27118305", || Pierre Tremblay, né le 27 nov 83
codePerma2="CHAS05628001"; || Suzane Charbonneau, née le 5 déc 80
1- Déterminer et afficher le sexe pour 1er étudiant
if ( codePerma1.charAt(6)>='5' )
s.o.p("femme");
else s.o.p("homme");
2- Déterminer et afficher l'âge de l'étudiant 2 (au 1er janv 2005)
(sortir la chaîne, changer chaîne en entier, soustraire…)
codePerma2.substring(8,10)
dans la classe Integer, il y a une méthode static qui s'appelle parseInt (convertir en entier)
Integer.parseInt("80")
Integer.parseInt(codePerma2.substring(8,10));
nota: avec parseInt, on doit d'abord nettoyer les espaces…, par ex: bla=Integer.parseInt(" 27 ".trim());
Résumé:
1- Objet d'une classe
2- objet: attributs(champs, field)
méthodesappliquées sur un objet
3- noter les 3 formes d'accès
4- être patient (accepter les termes comme static, apprendre et maîtriser par après).
5- observer qques classes dans le paquet java.lang sur le site du cours, surtout String et Integer (Math)
Cours 2, 17 janvier 2005
A) Le concept d' Encapsulation de la POO
La POO est basée sur 3 concepts:
1- Encapsulation (aujourd'hui)
2- Polymorphysme (petit à petit au long trimestre)
3- Héritage (mi-session)
1 Encapsulation
L'encapsulation propose:
i- Fusionner dans la même capsule les données et les méthodes pour traiter ces données.
ii- Protéger les données et les méthodes avec des clauses d'accessibilité/visibilité.
/¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\
| Données (95% des cas) sont privées |
| + | une classe
| Méthodes (95% des cas) publiques |
\_______________________________/
Ex.:
Construire 2 cercles:
c1 rayon 3.2
c2 rayon 5.6 par défaut
c3 rayon 4.9
- Afficher les infos des 3 cercles
- Afficher le nombre de cercles construits
- Calculer le périmètre
- Calculer l'aire
Cercle c1 = new Cercle(3.2), // On a construit les 3 cercles
c2 = new Cercle(), // (pas défaut)
c3 = new Cercle(4.9);
class Cercle {
private double rayon; // accessible que de l'intérieur de la classe
public Cercle(double r) { // plusieurs méthodes de même nom, ce sont
rayon = r; // des constructeurs.
}
public Cercle() { // …
rayon = 5.6;
}
public double perimetre() {
return 2 * Math.PI * rayon;
}
public double surface() {
return Math.PI * rayon * rayon;
}
}
System.out.println("Périmètre de c2:"+c2.perimetre()); // Pour afficher le périmètre…
Pour obtenir les infos du cercle c1 (rayon, permimetre, surface…):
c1.afficher("c1");
c2.afficher("c2 avec rayon par défaut");
c3.afficher("c3 (3e cercle)");
on ajoute la méthode suivante à la classe cercle:
public void afficher(String mess) {
System.out.println("Infos du cercle"+mess);
sop("- rayon:" + rayon);
sop("- périmètre:" + perimetre());
sop("- surface:"+ surface());
}
Pour afficher le nombre total de cercles construits:
public static int nbCercles = 0;
… ajouter des nbCercles++; dans les 2 méthodes, simplement!
sop("Le nombre total de cercles construits:"+Cercle.nbCercles);
// static fait référence à une info pour toute la classe
// contrairement aux autres infos qui sont liées à un objet
B) Quelques mots pour le #1 du TP
1- Matières: Qq méthodes de String et Integer
2- C'est assez simple vs la longueur de l'énoncé! (dizaine de ligne à peu près)
3- Basé sur l'exemple DecimalBinaire
Integer.toBinaryString(27) "11011" // (forme 2)
Notes importantes: Il n'y a pas de pointeurs
Toutes les informations sont transmises par valeur, non pas par références.
Ex.: Construire un cercle c de rayon 2.5, doubler son rayon, puis l'afficher.
"proposition 1": Cercle c = new Cercle(2.5); // Ok.
// c réfère vers l'espace mémoir réservé.
c.rayon = 2 * c.rayon // incorrect, pcq rayon est privé.
"proposition 2": Cercle c = new Cercle(2.5); // Ok.
doubler(c); // style c …
void doubler (Cercle z) {z = new Cercle(5.0)}; // créer un nouvel item mais perdu à la fin
de la méthode… donc on reste à 2.5 …
solution: Cercle = new Cercle(2.5);
c.setRayon(2*c.getRayon() ); // setRayon et getRayon sont des méthodes
publiques que je créer dans ma classe.
ce sont les méthodes d'accès et de modification
Cours 3, 24 janvier 2005
A) Tableaux classiques
1- Déclaration et initialisation:
a) Manière 1
int age[]={27,18,15,42}, nbPers=age.length; // int est le type… style C,C++
b) Manière 2
int[] nbCaf={2,0,1,5,3}; // int[] est le type … style Java
2- Schéma d'un tableau classique en Java
- Peu importe la manière de déclarer, le java considère le tableau comme un OBJET
nbCafe pointe vers les 5 cases mémoire …
Si nbCafe = age;
L'objet à gauche réfère vers la même zone mémoire que celui à droite.
nbCafe.length vaut maintenant 4…
3- Manière en "pratique"
Déclarer+Initialiser est souvent un moyen rapide pour apprendre Java.
final int MAX_PERS = 30;
int[] age = new int[MAX_PERS]; il rempli le tableau de 0 !!!
double[] taille = new double[MAX_PERS]; il rempli le tableau de 0.0 !!!
Référence versus tableau
- Déclarer et initialiser un tableau avec les 5 tailles suivantes: 1.72, 1.58, 1.80, 1.76, 1.75
- ajouter 2 cm à chaque taille
- déterminer et afficher les tailles maxi et mini
public class Tableau {
static void ajouter(double[] taille, double quantite) {
for (int i=0, nbPers=taille.length;i < nbPers; i++)
taille[i] += quantite;
}
static double maximale(double[] tableau, int nbElem);
double plugrand = Double.MIN_VALUE;
for (int i=0; i < nbElem; i++)
if (tableau[i] > plusgrand) plusgrand = tableau[i];
}
……… void main(…) {
double[] taille = {1.72, 1.58, 1.80, 1.76, 1.75};
ajouter(taille,0.02); // équivalent à Tableau.ajouter (forme 2!)
s.o.p("la taille maxi "+maximale(taille,taille.length)+etc
}
}
*** Comme c'est un tableau, on peut modifier le contenu. Si cela n'avait pas été le cas, les variables
auraient été créées et détruites! *** (on passe en qque sorte l'adresse du tableau en param)
1 / 19 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !