cm informatique : java -...

27
CM INFORMATIQUE : JAVA Chapitre I : Introduction ......................................................................................................... 2 I) Les classes.................................................................................................................................. 2 Chapitre II : Les tableaux ....................................................................................................... 6 I) Tableau à 1 dimension ............................................................................................................. 6 II) Les tableaux à deux dimensions ............................................................................................ 11 Chapitre III : Classes et objets .............................................................................................. 14 I) Rappels .................................................................................................................................... 14 II) Surcharge des méthodes ........................................................................................................ 14 III) Le this ...................................................................................................................................... 15 L'objet courant .............................................................................................................................. 15 Appel de constructeur ................................................................................................................... 16 Objet courant ................................................................................................................................ 16 IV) Les références ......................................................................................................................... 18 V) Les static .................................................................................................................................. 19 VI) Encapsulation des données .................................................................................................... 20 Chapitre IV : Héritage ........................................................................................................... 21 Chapitre V : Les collections................................................................................................... 24 I) Les vectors ............................................................................................................................... 24 Chapitre VI : Les Exceptions ................................................................................................ 26

Upload: doancong

Post on 05-Jan-2019

233 views

Category:

Documents


0 download

TRANSCRIPT

CM INFORMATIQUE : JAVA

Chapitre I : Introduction ......................................................................................................... 2

I) Les classes .................................................................................................................................. 2

Chapitre II : Les tableaux ....................................................................................................... 6

I) Tableau à 1 dimension ............................................................................................................. 6

II) Les tableaux à deux dimensions ............................................................................................ 11

Chapitre III : Classes et objets .............................................................................................. 14

I) Rappels .................................................................................................................................... 14

II) Surcharge des méthodes ........................................................................................................ 14

III) Le this ...................................................................................................................................... 15 L'objet courant .............................................................................................................................. 15

Appel de constructeur ................................................................................................................... 16

Objet courant ................................................................................................................................ 16

IV) Les références ......................................................................................................................... 18

V) Les static .................................................................................................................................. 19

VI) Encapsulation des données .................................................................................................... 20

Chapitre IV : Héritage ........................................................................................................... 21

Chapitre V : Les collections ................................................................................................... 24

I) Les vectors ............................................................................................................................... 24

Chapitre VI : Les Exceptions ................................................................................................ 26

Chapitre I : Introduction

Java plus simple que C,C++

pas de pointeurs

Utilisation de Netbeans

Langage objet

Répertoire

Programmes

Fichier java, on compile le programme (permet de corriger les typos)

Ligne de commande : javac____.java

Sur Netbeans : « ampoules rouges » pour savoir ce qui est à corriger

Exécution ligne de commande : java___.

Sur Netbeans : cliquodrome ▶

Seules les classes avec 1 main sont exécutables

Langage Apprendre les règles

Machine virtuelle

Bibliothèque tout est objet, on indique au programme où ils se trouvent

I) Les classes

Netbeans ou éditeur de texte

Windows ou linux

1 classe = 1 fichier : nomclasse.java.

public class nom { signature de la classe

Attributs (variable dans laquelle on va stocker quelque chose)

Constructeur (permet de construire les objets)

Méthode

}

Exemple :

Classe Creation objetL'objet appelle les

méthodes de sa classe

Classe Classe ... Classe Principale

Public class Personne {

String nom,

Personne (string n) {

Nom=n ;

}

void affiche () {

System.out. println (nom) ;

}

public static void main (String a [ ]) {

Personne p = new Personne

(« Rico ») ;

p. affiche ( ) ;

}

}

A l’écran après exécution on

affiche :

Rico

On pourra la mettre dans une

autre classe

≠ Python : on pourra avoir plusieurs constructeurs

Déclaration des variables

type nom ;

↳ existence de la variable entre les { } de sa création variable locales

Types :

- Primitif :

o int = entier

o double = réel

o boolean = booléen

o char = caractère

o == , <, <=, >, >=, != pour comparer les classe il faut faire une méthode

- Les classes :

o De la bibliothèque

o Nos classes

Exemple: int a ;

a = 2

System.out.println(a);

Personne b;

b=new Personne ("rico");

b.affiche ( );

méthode définie dans la classe personne

Chaine de caractères : String

Une classe mais les opérateurs ==,… ont été redéfini.

On peut utiliser System.out.println

Déclaration des méthodes :

typeretour nom (type arg1, type arg2,…)

{

instructions

}

On peut retourner un élément ou rien : void

Exemple void affiche ( ) {

system.out.println ("bonjour");

}

double renvoiereel ( ) {

return 2.5;

}

Déclaration constructeur

Nomdelaclasse (type arg1, type arg2)

{

instructions

}

On peut mettre plusieurs constructeurs il suffit de ne pas mettre les mêmes arguments.

On change le type ou le nombre.

Exemple

public class Exemple {

// attributs

int x, y ,s;

// constructeur

Exemple (int a, int b){

x =a;

y = b;

}

Exemple (int a ) {

x=a;

y=a;

s=0;

}

// méthodes

void affiche ( ) {

System.out.println(x+" "+y+" "+s);

}

void somme( ){

s=x+y;

}

int produit(int p){

return x*y*p;

}

} //classe

public class Principale {

public static void main (String arg[])

{

Exemple e=new Exemple(3,4);

e.affiche( );

e.somme( );

Déclaration

La classe exemple n'est pas exécutable car

elle n'a pas de fonction main.

On crée un objet de type exemple

On fait afficher l'attribut x de l'objet e

3 4 0 ce qu'il va afficher

3 4 7

e.affiche( );

e.produit (2);

System.out.println(e.produit(2));

Exemple b=new Exemple(1);

e.somme( );

e.affiche( );

System.out.println(e.produit(3));

System.out.println(e.produit(3));

} //main

} //class

24

on déclare un nouvel élément b de type

exemple. Il affiche 1 1 2

3

Exemple

Déclarez une classe Cercle avec

º 3 attributs, des réels (2 pour les coordonnées du centre un pour le rayon)

º un constructeur qui prend en paramètre 3 réels

º une méthode affiche

º une méthode main pour appeler les méthodes

public class Cercle {

double x, y, R;

Cercle (double a, double b, double c)

{

x=a;

y=b;

R=c;

}

void affiche () {

System.out.println(x+" "+y+" "+R);

}

public satic void main (String a []) {

Cercle c = new Cercle (3,4,8);

c.affiche( );

} // main

} //class

Chapitre II : Les tableaux

Fonction main

String arg [ ]

Stockage de données

Tableau à 1 dimension , 1 ligne plusieurs colonnes

Tableau 2D

Déclaration

Création

Remplissage

Affiche

I) Tableau à 1 dimension

Parcourt à l'aide d'un entier de 0 à tailledutableau – 1

nomtableau.length renvoie la taille du tableau

length ! accès en lecture

Ex: a

↳ a[0] ↳a[a.length-1]

Déclaration : typedesdonnées nom []

↳ même pour toutes les cases

Ex : int t [];

double a [];

String b [];

On ne peut pas écrire dedans : il faut les

créer

Création : nom = new typededonnées [taille]

On réserve de la place en mémoire

Ex: t = new int [2];

a = new double [3];

b = new String [2];

↳ classe de la bibliothèque

t 0 0

a 0.0 0.0 0.0

b null null

On remplit et on affiche un tableau case par case

Ex :

t[0] = 23;

t[1]=22;

for(int i=0 ; i< t.length; i++)

{

System.out.println (t[i]);

System.out.println

("t["+i+"]"+t[i]);

}

rempli lors de la création

22 23

t[0] 23 t[1] 22

Remplir a avec 0.5, 0.75 et 1 et l'afficher a[0]=0.5

a[1]=0.75

a[2]=1

for (int i=0; i<a.length; i++)

{

System.out.println("a["+i+"]"+a[i]);

}

a[0] 0.5

a[1] 0.75

a[2] 1

Remplir b avec "cours", "td" et l'afficher b[0]="cours";

b[1]="td";

for (int i=0; i<b.length; i++)

{

System.out.println ("b["+i+"]"+b[i]);

}

b[0] cours

b[1] TD On peut déclarer et créer en une seule fois avec le contenu.

Ex:

int t [] = {2,4,5} t 2 4 5

Faire la même chose pour un tableau de réels et un tableau de String double a []={2.5, 3.5, 6};

String b[]={"OK", "TD"};

Remarque : public class maclasse

Déclaration attributs

Constructeur création

intitialisation

Main

On crée un tableau rapidement pour tester

Ex:

public class Remarque

{

int t[];

Remarque(int tab[])

{

t=new int[tab.length];

for (int i=0; i<t.length; i++)

t[i]=tab[i];

}

void affiche ()

{

for (int i=0; i<t.length; i++)

System.out.println(t[i]);

}

public static void main (String

arg[])

{

int temp[] = {1,4,6}:

Remarque q = new Remarque(temp)

q.affiche(à;

} //main

} // class

j=0 j=t.length-1

t

tab

i=0 i=tab.length-1

t.length qui vaut tab.length

1

4

6

Remarque

Si on considère un tableau d'objets. On affiche case par case en appelant la méthode affiche

de la classe de l'objet.

Ex: public class Personne

{

String nom;

String prenom;

Personne (String n, String p) // Personne (classe fermée)

{

nom=n;

prenom=p;

}

void affiche ()

{

System.out.println(nom+prenom);

}

}

public class Maclass

{

Personne t[];

Maclass (Personne tab[])

{

t = new Personne[tab.length];

for (int i =0; i<t.length; i++)

t[i]=tab[i];

}

void affiche()

{

for(int i=0; i<t.length; i++)

t[i].affiche( )

}

} // Classe

Dans une classe principale :

- déclarer une fonction main

- créer 2 personnes

- on crée un objet ma classe contenant ces deux personnes

- afficher l'objet de type Maclasse

public class Principale

{

public static void main (String arg[])

{

Personne a= new Personne("Rahis", "Erwan");

Personne b= new Personne("Nique", "Tarace");

Personne t[]={a,b}

Maclass m = new Maclass(t);

m.affiche();

} //main

} //principale

Type / Nom

de la classe

Maclasse

Ex:

public class Maclasse

{

double tab[];

Maclasse (int n)

{

tab= new double [n];

for (int i=0;i<tab.length;i++)

tab[i]=Math.random();

}

void affiche()

{

for (int i=0; i<tab.length;i++)

Méthode static qui

renvoie un réel

compris entre 0 et 1

Classe de la

bibliothèque

Personne

est dans la classe Personne

dans Maclass

System.out.println(tab[i]);

}

public static void main (String arg [])

{

Maclasse m= new Maclasse(3);

m.affiche();

m.ajoute(2);

m.affiche();

m.supprime();

m.affiche();

} // Main

} //classe

m.tab tableau de réels

avec 3 cases remplies

aléatoirement

Question : On veut écrire une méthode qui ajoute un réel dans le tableau tab. Ce réel sera passé en

paramètre de la méthode

Il faut créer une nouvelle case :

- création d'un tableau temporaire (variable locale : temp) de taille tab.length+1

- on parcourt et on recopie case par case tab dans temp

- On met le réel dans la dernière case de temp

- On recrée tab avec 1 tab de plus

- On recopie temp dans tab case par case

void ajoute (double r)

{

double [] temp= new double [tab.length+1];

for (int i=0; i<tab.length;i++)

temp[i]=tab[i];

temp [temp.length-1]=r;

tab = new double [temp.length];

for (int i=0;i<tab.length;i++)

tab[i]=temp[i];

}

}

Question : Ecrire une méthode qui supprime la dernière case de tab

void supprime ()

{

double [] tempo = new double [tab.length-1];

for (int i=0; i<tab.length-1;i++)

{

tempo [i]=tab [i];

tab = new double [tempo.length];

for (int i=0;i<tab.length;i++)

tab[i]=tempo[i];

}

II) Les tableaux à deux dimensions

Tableau de tableaux

0

j

tab [0].length-1

i

tab.length-1

tab est un tableau 2D :

tab.length nbr de lignes

tab[i].length nbr de colonnes de ième+1 ligne

Le reste du cours est une applicationdes tableaux 1D

Déclaration : type nom [][];

Ex : M = new int[2][3]

s= new String[2][2]

m= new Maclasse [2][1]

0 0 0

0 0 0

null null

null null

null

null

Remplir ou afficher le tableau se faire case par case

2 indices : i = lignes

j = colonnes

One parcourt les lignes i. Pour chaque ligne on parcourt les colonnes j : nom [i][j]

Ex : for (int i = 0; i<M.length;i++)

for (int j = 0;j<M[i].length;j++)

M[i][j] =

(int)(Maths.random()*10)

cast (math random renvoi un entier , on

prend la partie entière)

Création: nom = new type [nbr ligne][nbr colonnes];

Ex: s[0][0]="Java";

s[0][1]="TD";

s[1][0]="cours";

s[1][1]="TP";

Java TD

Cours TP

Ex: m[0][0]= new Maclasse();

m[1][0]= new Maclasse();

Objet dont l'attribut est un tableau réel 1D il y a 2 cases remplies aléatoirement

Ex :

Afficher M for (int i=0;i<M.length;i++){

for (int j=0;j<M[i]length;j++){

System.out.print(M[i][j]);

}

System.out.println();

}

Ex:

Afficher s for (int i=0;i<s.length;i++){

for (int j=0;j<s[i]length;j++){

System.out.print(s[i][j]);

}

System.out.println();

}

Ex:

Afficher m for (int i=0;i<m.length;i++){

for (int j=0;j<m[i]length;j++){

m[i][j].affiche(); de type Maclasse

}

System.out.println();

}

Ex:

0 0

1 1 1

2

int[ ][ ] t = new int [3][ ];

t[0] = new int [2];

for (int j=0;t[0].length;j++)

t[0][j]=0;

t[1]= new int [3];

for (int j=0; j<t[1].length;j++)

t[1][j]=1;

t[2]= new int [1];

t[2][0]=2;

en une seule fois :

int t [][]={{0,0},{1,1,1},{2}};

Maclasse m[][]={{new Maclasse(2)};

{new Maclasse(3), new Maclasse(1)}};

Chapitre III : Classes et objets

I) Rappels

Constructeur

Méthode Création d'objets

initialiser

créer les attributs

nomdelaclasse (paramètres){

On peut définir plusieurs constructeurs

Objet new

Déclaration type nom;

Création new constructeur (paramètres)

Après la déclaration l'objet n'existe pas

TP tableaudePoints

Point t[]

créer t

créer t[i] pour toutes les cases

Pour les cases t[i] on appelle le constructeur Point

Un objet peut appeler les méthodes de sa classe

System.out.print

System.out.println

types primitifs

Double, int, boolean, char

String

Sinon on fait une méthode affiche

II) Surcharge des méthodes

On peut définir plusieurs méthodes avec le même nom. On change les arguments en type en

nombre.

Lors de l'appel la méthode est choisie en fonction des paramètres donnés. (Héritage (plus

tard))

Ex : class Point {

double x,y;

Point (double a, double b){

x=a;

y=b;

}

Méthode qui calcule la distane entre le point courant (point qui appelera la méthode) et

l'origine.

double distance ( ) {

return Math.sqrt (x*x+y*y);

}

Méthode qui calcule la distance entre le point courant et un Point passé en paramètre.

double distance (Point p){

return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));

}

↱ pas d'objet courant

public static void main (String a []){

Point p= new Point (0,1);

System.out.println(p.distance());

Point q = new Point(1,1);

System.out.println(p.distance(q));

}

} //Classe

Dans la classe String

boolean equals (String)

retourne true si les 2 string sont égaux et false sinon.

Dans la classe Point on va surcharger la méthode equals. boolean equals (Point p){

return ((x==P.x)&&(y==P.y)); entre type primitif

↳boolean ↳boolean

}

III) Le this

L'objet courant

- constructeur

objet qu'on créera à l'appel du constructeur

- méthode

objet qui appellera la méthode

Ex public class Exemple {

double x;

Exemple (double x){

this.x=x;

}

void affiche () {

System.out.println (this.x);

}

Appel de constructeur public class Exemple {

double x;

Exemple (double x){

this.x=x

}

Exemple (){

this(5); j'appelle le constructeur qui prend en paramètre un réel

}

Exo

Créer une classe Personne ayant deux attributs pour le nom et le prénom. Ecrire un

constructeur qui prend deux String en paramètre.

Ecrire un constructeur qui prend une personne en paramètre. Ce constructeur appellera le

précédent.

public class Personne {

String nom;

String prenom;

Personne (String nom, String prenom){

this.nom=nom;

this.prenom=prenom;

}

Personne (Personne P){

this(P.nom,P.prenom)

}

Dans un main appelez ces deux constructeurs.

Exo public static void main (String a[]){

Personne p= new Personne ("Rahis","Erwan");

Personne q= new Personne(p);

}

}

Objet courant

C'est le paramètre d'une méthode appelée

class Point {

int x,y;

Point(int x, int y){

this.x=x;

this.y=y;

}

}// Point

class Cercle {

Point p;

double r;

Cercle (Point p; double r){

this.p= new Point(p.x,p.y);

this.r=r;

}

void ajouter (Figure f)

{

f.setcercle(this);

}

} // Cercle

class Figure {

Cercle c;

Point p;

Figure (Cercle c, Point p){

this.c= new Cercle (c.p, c.r);

this.p= new Point (p.x,p.y);

}

void setcercle (cercle a){

c=a;

}

} // Figure

class Principale {

public static void main (String arg[]){

Point p=new Point (1,1);

Cercle c=new Cercle (p,1);

Point q = new Point (0,1);

Cercle d= new Cercle (q,2);

Figure h= new Figure (c,p);

d.ajouter(h);

}// Main

} // Principale

IV) Les références

class Exemple {

int x;

Exemple (int x){

this.x=x;

}

Exemple copie (){

Exemple temp;

temp = new Exemple (this.x);

return temp;

}

public static void main (String a[]){

Exemple b = new Exemple (2);

Exemple c = new Exemple (3);

System.out.println (b.x +" "+c.x);

b = c;

b.x = 1;

System.out.println (b.x+" "+c.x)

c.x=2;

System.out .println (b.x+" "+c.x);

b= c.copie(); b.x=1;

System.out.println (b.x+" "+c.x)

c.x=2;

System.out .println (b.x+" "+c.x);

2 3

Affectation : b et c sont maintenant le même objet 1 1

2 2

b et c sont 2 objets différents avec même contenu.

Le constructeur est appelé dans la méthode copie.

1 2

1 2

Pb 1: Les tableaux à 1 ou 2 dimensions sont des instances cachées de la classe Arrays

↳Si on a deux tableaux t1 et t2 contenant des données de même type. Si on écrit t1=t2, t1 et t2

désignent de le même tableau.

Pb 2: dans les méthodes la transmission des arguments se fait par référence (affectation).

↳ Toute modification de l'objet passé en paramètre, dans la méthode affecte l'objet initial.

class Maclasse {

void change (int t[]){

for (int i=0;i<t.length;i++){

if (t[i]==1)

t[i]=0;

}

public static void main (String a[]){

int b[]={1,2,1,3};

Maclasse m = new Maclasse (); Constructeur vide par défaut m.change(b);

for (int i=0;i<b.length;i++)

System.out.print(b[i]); 0203

}

}

V) Les static

- attributs

- méthodes Ne dépendent pas de l'objet

On les appelle avec le nom de la classe (quand on est à l'extérieur).

Ex: Math.random()

Integer.parseInt("3")

Classe.méthode

Ex:on va écrire une classe outil où on aura que des méthodes statiques.

Rq : ces classes n'ont pas d'attribut non static public class Outil {

static void multaffecation (double s, double

v[])

{

double temp[];

temp=v;

for (int i=0;i<v.length;i++)

temp[i]=s*v[i];

}

} // Outil

class Principale {

public static void main (String a[])

{

double b[]={1,2,3};

Outil.multaffecation(2,b);

for (int=0;i<c.length;i++)

System.out.print(b[i]);

}}

déclaration d'une

méthode static

Exemple – attributs static class Personne{

String nom;

static int cpt=0;

Personne (String n){

nom=n;

cpt=cpt+1;

}

Public static void main (String a

[])

{

Personne b = new Personne

("Rulliere");

Personne c = new Personne ("Rico";

System.out.println(Personne.cpt);

}

pour indiquer combien

d'objets Personne ont

été crées.

VI) Encapsulation des données

On met des étiquettes pour donner ou non accès aux attributs ou méthode.

public visible de partout, paquetage

private on n'a pas accès en dehors de la classe

protect on a accès dans la classe et dans les classes heritières

Remarque :

Tout ne peut pas être privé

on donne l'accès à l'aide de methode public qui vérifie le bon format des attributs

Ex: class Maclasse{

private int a;

Maclassse (int va){

a=va;

}

void public seta (int v){

a=v;

}

public static void main (String a[])

{

Maclass m= new Maclasse (2);

m.seta(3); Car le a est private

}

}

Chapitre IV : Héritage Toute classe peut hériter d'une autre classe. La classe qui hérite est la classe

dérivée. Elle ajoute des propriétés attributs ou méthodes.

Problèmes :

1) les deux classes ne sont pas dans le même fichier.

2) Constructeur par défaut. Ne prend pas de paramètre il crée un objet vide.

Si le constructeur de la classe 2 n'appelle pas un constructeur de la classe 1, il sera

appelé automatiquement. Il risque de ne plus exister.

B est une sous classe de A.

A est la super classe.

class A{

// attributs

// constructeurs

// méthodes

}

class B extends A {

// attributs

// constructeurs

// méthodes

}

A.java

Possède automatiquement les attributs et méthodes de A

Une classe a au plus une super classe.

Remarque :

Un tableau de complexe est une collection de complexes. "import"

Un complexe de module 1 est un complexe particulier. Héritage

Classe 1

Classe 2

Classe 3

Classe A A.java

Classe B B.java

class personne {

String nom;

Personne (String nom)

{ this.nom=nom;

}

void affiche (){

System.out.println(nom);

}

}

class Etudiant extends Personne {

String filière;

Etudiant (String nom, String filiere)

{

super(nom);

this.filiere=filiere;

}

void affiche (){

super.affiche();

System.out.println(filiere);

}

}// Etudiant

class Principale {

public static void main (String arg[]){

Personne p = new Personne ("Moi");

p.affiche();

Etudiant e= new Etudiant ("Rahis","Erwan");

e.affiche();

}

}

class client {

double t[];

client()

{

t=new double ((int)(Math.random()*20));

for(int i=0; i<t.length;i++){

t[i]=Math.random()*10;;

}

}

double prix () {

double s=0;

for (int i=0; i<t.length;i++)

s=s+t[i];

reutrn s;

}

}//

Le constructeur par défaut

n'existe plus

Appelle le constructeur de la

super classe (mot clé)

on appelle la méthode affiche de

la super classe

Un client fidèle est un client qui a un numéro de client de 20% de remise. Ecrire la classe Clientfidele

class clientfidfele extends Client {

int numero;

clientfidele (int n){

super();

numero=n;

}

double prix (){

double s=0;

s=super.prix()*0.8;

return s;

}

Un magasin est une collection de clients et clients fidèle.

- Créer une classe Magasin

ayant pour attributs un tableau de clients.

ayant un constructeur vide (le tableau est crée mais de taille 0)

- Ecrire une méthode qui ajoute dans le tableau un client passé en paramètre.

- Ecrire une classe Principale contenant le main. Dans ce main créer un lient fidèle et un magasin dont l'attribut

contient ces deux clients.

Remarque : Un client fidèle est un client

class Magasin {

Client t[];

Magasin (){

t= new Client [0];

}

void ajoute (Client c){

Client temp[];

temp=new Client [t.length+1];

for (int i=0;i<t.length;i++)

temp[i]=t[i];

temp[temp.length-1]=c; Affectation différent de copie, on garde

le type

t = new Client [temp.length];

t = temp;

}

class Principale {

public static void main (String a[])

{

Client a= new Client();

Client fidele b= new Clientfidele(1);

Magasin g=new Magasin ();

g.ajoute(a);

g.ajoute(b);

}

}

Rq : ABC (Transitivité)

Chapitre V : Les collections

Stockage dans les tableaux : lourd

Penser à aller voir la javadoc

I) Les vectors ↳ classe de Java

Import

Sous netbeans on vous le propose dès l'appel du constructeur de la classe Vector. On doit

indiquer le type des objets qu'on va stocker dans le constructeur.

Ce type est forcement une classe.

Pour des int on indique Integer

double Double

On peut mettre dans le Vector des objets du type indiqué ou d'un type dérivé (héritage), ou du

type primaire correspondant (s'il existe).

Toutes les classes en Java héritent de la classe Object. On peut faire des Vector d'object. On

fait des sacs de trucs. Quand on récupère il faut indiquer le type.

Tout cela reste vrai pour les autres classes (Arraylist,…)

Déclaration Vector < T >v;

Création v=new vector <T>( );

Exemple Vector <Double>v;

v = new Vector <Double> ( );

v.add(2.5);

v.add(3);

V.elementAt(1);

for (int i=0;i<v.size();i++)

System.out.println(v.elementAt(i));

Type, nom

vecteur de réels

méthode : add (Object) , renvoi un booléen

méthode : size ( ), renvoi un int , nombre

d'élément du vector. Quand on a appelé le

constructeur vide pour la création ce nombre

correspond à la taille du Vector. Les indices vont

de 0 à v.size () -1.

méthode : elementAt (int), renvoi un élément se

trouvant à l'indice passé en paramètre.

méthode : isEmpty(), renvoi un boolean

Exemple class Personne {

String nom;

Personne (String nom){

this.nom=nom;

}

void affiche(){

System.out.println(nom);

}

}

class Etudiant extends Personne {

int num;

Etudiant (String a, int b){

super(a);

num=b;

}

void affiche (){

super.affiche();

System.out.println(num);

}

}

Exemple class CollectionPersonnes { Vector <Personne>c; déclaration d'un vecteur de personne CollectionPersonnes ( ){ Constructeur qui crée le vector vide (on ajoutera plus loin avec une méthode ajoute) c=new Vector <Personne>( );

}

void ajoute (Personne p){ méthode qui ajoute dans c une personne passée en paramètre c.add(p);

}

void affiche( ){ méthode qui affiche le contenu de c for (int i=0; i<c.size();i++)

c.elementAt(i).affiche();

}

}

class Principal {

Chapitre VI : Les Exceptions

Bien lire le cours sur Héritage

Etudiant, Etudiant tricheur, collection : Javadoc

Le but du chapitre est de programmer nous-même des exceptions

Les exceptions se lancent quand une erreur se produit, par exemple lorsque l'on sort d'un tableau à cause

d'un indice trop grand, on divise par 0.

On récupère un message ainsi que la ligne de l'erreur.

Exemple:

La division par 0 class calculatrice {

double a, b ;

calculatrice(double a, double b){

this.a=a ;

this.b=b ;

}

double division () trhows Exception {

if(b==0) { throw new Exception(« division par 0 ») ;}

return a/b ;

}

}

public static void main (String arg[]){

calculatrice c = new calculatrice(2,1) ;

try{

System.out.println(c.division()) ;

}

catch(Exception e){

e.getmessage() ;

e.printStackTrace

}

Si une méthode appelle une méthode lançant une exception, on peut soit :

- relancer l'exception: throws dans la signature de la méthode

- traiter l'exception : try{…} puis catch (Exception e){…}

On doit toujours traiter une exception

On ne peut pas relancer indéfiniment une exception sans la traiter plus tard. Dans le main on sera bloqué (on ne

change pas sa signature) il faudra le try et le catch.

Dans la classe calculatrice, on ajoute une méthode pour afficher le résultat de la division.

Exemple :

Solution n°1 : void afficherresultat()throws Exception{ méthode qui lance une exception

System.out.println(division()) ;

}

Cette méthode sera appelée dans le try du main

Solution n°2 : void afficherresultat(){

try{

System.out.println(division()) ;

}

catch(Exception e){

e.printStackTrace() ;

}

}

Exemple :

- écrire une classe additionvecteur dont l'attribut est un tableau de double à une dimension

- constructeur

- affiche

- méthode qui ajoute à l'attribut un tableau de double passé en paramètre

t

t[0] t[1] t[2] …

u

u[0] u[1] u[2] …

Résultat :

t[0]+u[0] t[1]+u[1] t[2]+u[2] …

Si les deux tableaux n'ont pas la même taille , une exception sera lancée

- Main

class addition vecteur {

double t[] ;

addition(double tab[]){

t = newdouble[tab.length] ;

for(int i=0 ; i<t.length ;i++)

t[i]=tab[i] ;

}

void affiche(){

for(int i=0 ;i<t.length ;i++) ;

System.out.println(t[i]) ;

void ajoute(double u[]) throws Exception {

if(u.length != p.length) throw new Exception(«tailles incompatibles»)

;

for(int i=0 ; i<u.length ;i++)

t[i]+=u[i] ;

}

}

public static void main (String arg[]){

double a[]={1,2,3} ;

double b[]={1,1,1} ;

additionvecteur x = new additionvecteur(a) ;

try{

x.ajoute(b) ;

x.affiche() ;

}

catch(Exception e){

e.printStackTrace() ;

e.getmessage() ;

}

}