Constructeurs
This presentation is the property of its rightful owner.
Sponsored Links
1 / 33

Constructeurs PowerPoint PPT Presentation


  • 41 Views
  • Uploaded on
  • Presentation posted in: General

Constructeurs. H Batatia. Variable statique. Une variable statique est partagée par tous les objets d’une classe. Exemple. class Fraction{ int n;//numérateur int d;//dénominateur static String type; //type de nombre void setN(int x) { n = x}; void setD(int x) { d = x};

Download Presentation

Constructeurs

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Constructeurs

Constructeurs

H Batatia


Variable statique

Variable statique

  • Une variable statique est partagée par tous les objets d’une classe


Exemple

Exemple

class Fraction{

int n;//numérateur

int d;//dénominateur

static String type; //type de nombre

void setN(int x) { n = x};

void setD(int x) { d = x};

void getN() {return n};

void getD() {return d};

static String getType(){

return type;

}

}

class T {

public static void main(String [] s){

new Fraction();

Fraction.type = "Rationnel;

String s = Fraction.getType();

Fraction.n = 100; //erreur

}

}


Exemple1

Exemple

class Fraction{

int n;//numérateur

int d;//dénominateur

static String type; //type de nombre

void setN(int x) { n = x};

void setD(int x) { d = x};

void getN() {return n};

void getD() {return d};

static String getType(){

return type;

}

}

class T {

public static void main(String [] s){

Fraction var = new Fraction();

var.type = "Rationnel;

String s = var.getType();

var.n = 1;

var.d = 2;

}

}


De multiples objets

De multiples objets

  • Ecrire la classe Rationnel dont la méthode main crée les objets fractions :

  • ½, 1/3, …, 1/10

  • Et afficher leurs états


Exemple2

Exemple

class Rationnel {

public static void main(String [] s){

Fraction f

for(int i=2; i<11; i++){

f = new Fraction();

f.setN(1);

f.setD(i);

System.out.println( "("+ f.getN() + "/" + f.getD()+ ")");

}

}

}


Exercice

Exercice

  • Ajouter à Fraction la méthode

    Public String Chaine()

  • qui retourne la chaine

    (n/d)


Exemple3

Exemple

class Fraction{

int n;//numérateur

int d;//dénominateur

void setN(int x) { n = x};

void setD(int x) { d = x};

void getN() {return n};

void getD() {return d};

public String chaine(){

return "(" + n + "/" + d + ")" ;

}

}


Exercice1

Exercice

  • Modifier la classe Rationnel pour utiliser la méthode chaine() pour afficher l’état des fractions


Suite

suite

class Rationnel {

public static void main(String [] s){

Fraction f

for(int i=2; i<11; i++){

f = new Fraction();

f.setN(1);

f.setD(i);

System.out.println( f.chaine());

}

}

}


Exercice2

Exercice

  • Modifier la classe Rationnel pour créer les objets

    ½, -1/3, ¼, -1/5, 1/6, -1/7, 1/8, -1/9, 1/10


Suite1

suite

class Rationnel {

public static void main(String [] s){

Fraction f

for(int i=2; i<11; i++){

f = new Fraction();

int x = (i%2 == 0?1:-1);

f.setN(x);

f.setD(i);

System.out.println( f.chaine());

}

}

}


Constructeurs

this

  • Dans le corps d'un objet this désigne la référence à ce même objet

  • Modifier la méthode chaine pour utiliser this


R f rence this

Référence this

class Fraction{

int n;//numérateur

int d;//dénominateur

void setN(int x) { n = x};

void setD(int x) { d = x};

void getN() {return n};

void getD() {return d};

public String chaine(){

return "(" + this.n + "/" + this.d + ")" ;

}

}


M thodes get et set

Méthodes get et set

  • L'accès des attributs privés doit se faire à l'aide de méthodes publiques

    public type getAttribut(){ return this.attribut;}

    public void setAttribut(type v) { this.attribut = v;}


Exercice3

Exercice

  • Ajouter à la classe Fraction, la méthode

    public Fraction add(Fraction f)

    qui crée la fraction somme de la fraction courante et la fraction f.


R f rence this1

Référence this

class Fraction{

int n;//numérateur

int d;//dénominateur

void setN(int x) { n = x};

void setD(int x) { d = x};

void getN() {return n};

void getD() {return d};

public String chaine(){

return "(" + this.n + "/" + this.d + ")" ;

}

public Fraction add(Fraction f){

int x = this.getN() * f.getD() + this.getD() * f.getN();

int y= this.getD() * f.getD();

Fraction r = new Fraction();

r.setN(x);

r.setD(y);

return r;

}

}


Exercice4

Exercice

  • Modifier la classe Rationnel pour afficher la somme de toutes les fractions créées


Suite2

suite

class Rationnel {

public static void main(String [] s){

Fraction f ;

Fraction r=null;

for(int i=2; i<11; i++){

f = new Fraction();

int x = (i%2 == 0?1:-1);

f.setN(x);

f.setD(i);

System.out.print( f.chaine() + " + ");

if(r != null){

r = f.add(r);

}else{

r = f;

}

}

System.out.println( "= " + r.chaine());

}

}


Constructeur

Constructeur

  • L'instanciation de la classe Fraction se fait par

    new Fraction();

  • Dans cette instruction Fraction() est un constructeur

  • D'une manière générale, un constructeur

    • est une méthode qui

      • porte le nom de la classe;

      • peut prendre des paramètres;

      • ne retourne aucune valeur

    • sa déclaration prend la formeClasse (paramètres) {…}

    • peut être précédée d'un modificateur de visibilité (public, …)

    • son corps peut comprendre n'importe quel traitement

    • généralement, on l'utilise pour initialiser les attributs de l'objet


Constructeur1

constructeur

import es.*;

class Fraction{

private int n;//numérateur

private int d;//dénominateur

Fraction(int x, int y){

this.n = x;

this.d = y;

}

….

}

class T {

public static void main(String [] s){

Fraction f = new Fraction(1,2);

String s = f.chaine();

System.out.println(s);

}

}


Exercice5

Exercice

  • Modifier les classes Fraction et Rationnel pour utiliser le constructeur de Fraction


Suite3

suite

class Fraction{

int n;//numérateur

int d;//dénominateur

void setN(int x) { n = x};

void setD(int x) { d = x};

void getN() {return n};

void getD() {return d};

public String chaine(){

return "(" + this.n + "/" + this.d + ")" ;

}

public Fraction add(Fraction f){

int x = this.getN() * f.getD() + this.getD() * f.getN();

int y= this.getD() * f.getD();

Fraction r = new Fraction(x,y);

return r;

}

}


Suite4

suite

class Rationnel {

public static void main(String [] s){

Fraction f

for(int i=2; i<11; i++){

f = new Fraction((i%2 == 0?1:-1), i);

System.out.println( f.chaine());

}

}

}


Multiples constructeurs

Multiples Constructeurs

  • Dans une classe, on peut créer de multiples constructeurs

    • ils ont tous le même nom (nom de la classe)

    • ils doivent avoir des paramètres différents

    • ils seront différenciés par le type de leurs paramètres


Exemple4

class Fraction {

private int n;

private int d;

public Fraction( ){

this.n=0;

this.d= 1;

}

public Fraction( int x){

this.n= x;

this.d= 1;

}

public Fraction(int x, int y){

this.n= x;

this.d= y;

}

public String chaine(){

return ( "Fraction: (" + this.n + "/" + this.d + ")");

}

}

class T {

public static void main(String [] s){

Fraction var1 = new Fraction ();

System.out.println (var1.chaine());

Fraction var2 = new Fraction (5);

System.out.println (var2.chaine());

Fraction var3 = new Fraction (5, 10);

System.out.println (var3.chaine());

}

}

Exemple


Constructeurs

this()

  • Dans le corps d'un constructeur, on peut appeler un autre constructeur de la même classe

  • Pour cela, on doit utiliser this()


Exemple 15

class F {

private int n;

private int d;

public Fraction( ){

this(0,1);

}

public Fraction( int x){

this(x,1);

}

public Fraction(int x, int y){

this.n= x;

this.d= y;

}

public String chaine(){

return ( "Fraction: (" + this.n + "/" + this.d + ")");

}

}

class T {

public static void main(String [] s){

Fraction var1 = new Fraction ();

System.out.println (var1.chaine());

Fraction var2 = new Fraction (5);

System.out.println (var2.chaine());

Fraction var3 = new Fraction (5, 10);

System.out.println (var3.chaine());

}

}

Exemple (15)


Constructeur par d faut

Constructeur par défaut

  • Si aucun constructeur n'a été programmé, JAVA utilise un constructeur par défaut sans paramètres

  • Si des constructeurs sont créés, le programmeur ne peut utiliser que ceux-la

    • c'est à dire que si on ne programme que des constructeurs avec paramètres, on ne peut plus appeler le constructeur sans paramètres (on peut néanmoins le programmer)


Exemple5

class F {

private int n;

private int d;

public Fraction(int x, int y){

this.n= x;

this.d= y;

}

public String chaine(){

return ( "Fraction: (" + this.n + "/" + this.d + ")");

}

}

class T {

public static void main(String [] s){

//erreur

Fraction var1 = new Fraction ();

System.out.println (var1.chaine());

//erreur

Fraction var2 = new Fraction (5);

System.out.println (var2.chaine());

Fraction var3 = new Fraction (5, 10);

System.out.println (var3.chaine());

}

}

Exemple


O sont pass s les objets

Où sont passés les objets?

import es.*;

class Fraction{

private int n;//numérateur

private int d;//dénominateur

Fraction(int x, int y){

this.n = x;

this.d = y;

}

void setN(int x) { this.n = x;}

void setD(int x) { this.n = x;}

public String chaine(){

return ( "Fraction: (" + this.n + "/" + this.d + ")");

}

}

class T {

public static void main(String [] s){

Fraction f;

f = new Fraction(1,2);

String s = f.chaine();

Ecran.ecrireLigne(s);

f = new Fraction(1,3);

String s = f.chaine();

Ecran.ecrireLigne(s);

}

}

f

n=1

d=2

n=1

d=3


Ramasse miettes

Ramasse miettes

  • Un programme de la JVM qui se charge de ramasser les zones mémoires correspondant aux objets n'ayant aucune référence

  • Ces zones seront recyclées

  • Ce programme s'appelle aussi Garbage Collector


Exercice6

Exercice

  • On se propose de programmer une application permettant de simuler le fonctionnement d'un contrôleur de pression des 4 pneus d'une voiture. Celles-ci doivent être entre 2.2+-10% à l'avant, et entre 2.0 +-10% à l'arrière.

  • Le programme doit lire les 4 pressions depuis le clavier et afficher un diagnostic montrant l'état de chaque pneu :

    • normal, surgonflé, sous-gonflé

    • la pression nécessaire à ajouter (positive) ou retrancher (négative)

  • Le programme doit aussi vérifier l'équilibre gauche-droite. La différence entre les pressions à gauche et à droite doit être au plus 3%.

  • Représenter puis Ecrire les classes nécessaires


  • Login