Vous êtes sur la page 1sur 5

/* Correction TP_Java_2

Le Diagramme de classe :

Nous avons trois classes :


- Compte
- Opération
- Appli : le main pour tester le bon fonctionnement des Comptes

La classe Compte a une relation d’association avec la classe Opération. La mis en œuvre se
réalisera en définissant dans la classe Compte un attribut de type tableau d’opérations avec
une taille de 10.

En Analyse on ne spécifie généralement pas les constructeurs et les accesseurs. Il faudra


penser à les réaliser. Ils pourront également être générés automatiquement avec un AGL
/*L’objectif de ce TP est la mis en œuvre des classes. On considère la partie algorithmique
comme secondaire notamment pour la gestion du tableau d’opérations */

import java.util.*;

public class Operation


{
// attributs ( private )
private float somme;
private String type;
private String date ;

// constructeurs
public Operation ( float _somme , String _type )
{
somme = _somme ;
type = _type ;
date = new Date().toString();

//version formatée de la date


/*Calendar c = Calendar.getInstance() ;
date = c.get ( Calendar.DAY_OF_MONTH ) + "/" +
( c.get ( Calendar.MONTH ) + 1 ) + "/" +
c.get ( Calendar.YEAR ) ;*/
}

// accesseurs en lecture
public float getSomme ()
{
return somme ;
}

public String getType ()


{
return type ;
}

public String getDate ( )


{
return date ;
}

// Conversion d'une opération en chaine de caractères


public String toString()
{
return type +" " + somme + "Date : " + date ;
}
}
public class Compte // nom de classe commence tjrs par une majuscule
{
// attributs ( private )

private int numero ;


private float solde ;
private Operation listeOperations []= new Operation [10] ;

// variable pour la gestion du nombre d'opérations


private int nbrOperations ;

//méthodes

// constructeurs ( même nom que la classe et pas de valeur de retour )


// Il est appelé de façon implicite à chaque création

public Compte( int _numero , float _solde )


{
numero = _numero ;
solde = _solde ;
}

public Compte( int _numero )


{
numero = _numero ;
solde = 0 ;
}

public Compte ()
{
this (0 , 0); // appel d'un autre constructeur
}
// accesseurs en lecture ( getNomAttribut )

public int getNumero ()


{
return numero ;
}

public float getSolde ()


{
return solde ;
}

public Operation [] getListeOperations ()


{
return listeOperations ;
}

public int getNbrOperations ()


{
return nbrOperations ;
}
// services

public void crediter ( float somme )


{
solde += somme ;
addOperations ( somme , "Credit" ) ;
}

public void debiter ( float somme )


{
if ( somme <= solde )
{
solde -= somme ;
addOperations ( somme , "Debit" ) ;
}
else
System.out.println ( " pas assez de sous " ) ;
}

public void visualiser ()


{
System.out.println ( "numero " + numero + " solde " + solde ) ;
}

public void editerReleve ()


{
for ( int i = 0 ; i < nbrOperations && i < 10 ; i++ )
System.out.println ( listeOperations[i].toString() ) ;
}

public void editerReleve ( String type )


{
for ( int i = 0 ; i < nbrOperations && i < 10 ; i++ )
if ( type.equals ( listeOperations[i].getType() ))
System.out.println ( listeOperations[i].toString() ) ;
}

private void addOperations ( float somme , String type )


{
listeOperations[nbrOperations % 10 ] = new Operation ( somme , type ) ;
nbrOperations++ ;
}
}