Vous êtes sur la page 1sur 5

BASMA K’HIL Atelier Programmation Orientée Objet

Java

Atelier n°1 : Méthodes publiques et les Méthodes statiques

Objectifs :
À la fin de cet atelier, vous serez à même d’effectuer les tâches suivantes :

- Créer une classe et ses éventuels attributs.


- Développer des méthodes itératives et récursives.
- Développer des méthodes publiques.

Compte-rendu est demandé pour ce TP

Expliquez ce que vous faites avec des commentaires dans le code ou encore mieux avec des
phrases qui explique le principe de l'algorithme (Ceci permet aux autres personnes de
comprendre ce que vous voulez faire avant même de lire l'algorithme lui-même, et facilite
donc la compréhension).

1
Un attribut déclaré finale ne change plus de valeur une fois initialisée.

S’il est aussi public, il est utilisable partout.

Questions:

// 1. Implémenter une classe Traitement définie par deux attributs n de type entier et s
de type chaine de caractères.

public class Traitement{


int n;
String s;

………..
}

// 2. Définir son constructeur paramétré et les méthodes accesseurs get et set afin
d’accéder aux attributs privés.

// 3. Développer une méthode qui calcule la factorielle de l'entier n d'une façon


récursive. La factorielle d'un entier naturel n est le produit des nombres entiers
strictement positifs inférieurs ou égaux à n.

public int factRec(int n)


{

….. }

// 4. Développer une méthode qui calcule la factorielle de l'entier nombre d'une


façon itérative

int factIterative(int nombre) { int


fact = 1;
……
}

2
// 5. Développer une méthode qui retourne la somme de 1 à n (l'attribut ) d'une façon
itérative

public int somIterative()


{
int som = 1; ……….
}

// 6. On veut écrire un algorithme qui décide si un mot est un palindrome. Notre


algorithme sera une méthode prenant en entrée une chaîne de caractères et renvoyant
un booléen.

Un mot est un palindrome si sa première lettre est identique à la dernière, sa deuxième


à l'avant dernière etc ...

Développer une méthode qui vérifie si (l'attribut s) est palindrome d'une façon
récursive

public boolean palindromRec()


{

……. }

// 7. Créer la classe ci-dessous et tester les méthodes développez dans la classe ci-
dessus..

public class TestTrait


{
public static void main (String[] args)
{
Traitement t = new Traitement (5,"RADAR");
.

Exercice
Nous allons dans cet exercice reprendre l’exemple sur les équations du second degré et le
coder en utilisant les principes de la programmation orientée objet (en utilisant des classes et
des méthodes). Le but est de résoudre une équation de la forme : ax 2 + bx+ c=0

Définir une classe Eq2Degré avec les caractéristiques suivantes :

- La classe possède les attributs réels suivants : r1 et r2 (les éventuelles solutions), delta
(le discriminant), a, b et c les coefficients du polynôme ;

3
- Écrire un constructeur Eq2Degré à trois paramètres réels x1, x2 et x3 qui
correspondent aux coefficients du polynôme à résoudre. Ce constructeur affectera les
valeurs passées en paramètre aux attributs a, b et c et calculera la valeur du
discriminant delta ;
- Écrire une méthode afficheDiscriminant() qui affiche la valeur du discriminant ;
- Écrire une méthode résoudre () qui résout l’équation et affecte aux attributs r1 et r2 les
racines des solutions (on ne prendra pas en compte le cas des solutions complexes) ;
- Écrire une méthode afficheSolutions() qui affiche les solutions de l’équation.

Exercice 1 - Des articles

Écrire une classe Item représentant un article ayant deux champs, name pour son nom de
type String et price pour son prix de type long (on supposera que toutes les manipulations de prix doivent se
faire avec des entiers long).
Cette classe devra posséder deux accesseurs permettant d'obtenir le nom de l'article et son prix, ainsi qu'un
constructeur qui permet d'en créer des instances.
On veut que le prix d'un article et son nom ne changent pas pour toute la durée de vie de l'objet.
Écrire une classe Main permettant de tester la création d'un article et le fonctionnement des
accesseurs de la manière suivante:
1. Item item = new Item("corn flakes", 500);
2. System.out.println(item.getPrice()); // affiche: 500
3. System.out.println(item.getName()); // affiche: corn flakes

Éléments statiques

Bien que Java soit un langage objet, il existe des cas où une instance de classe est inutile.
Le mot clé static permet alors à une méthode de s'exécuter sans avoir à instancier la classe qui la
contient.
On appelle élément statique d'une classe tout élément attaché à cette classe plutôt qu'à l'une de ses
instances. Il peut s'exécuter même si aucune instance de cette classe n'existe. L'appel à une
méthode statique se fait alors en utilisant le nom de la classe, plutôt que le nom de l'objet.
Un attribut statique est un attribut commun à tous les objets que vous pourrez créer. Il est
utilisable sans créer d'instance de la classe.
Questions :
// 1. Implémenter une classe Traitement définie par deux attributs n de type entier et s de type
chaine de caractères.
public class Traitement{ int n; String s; ……….. }
4
// 2. Définir son constructeur paramétré et les méthodes accesseurs get et set afin d’accéder aux
attributs privés.
// 3. Développer une méthode statique qui calcule la factorielle de l'entier n d'une façon récursive.
La factorielle d'un entier naturel n est le produit des nombres entiers strictement positifs inférieurs
ou égaux à n.
public static int factRec(int n) { ….. }
// 4. Développer une méthode statique qui calcule la factorielle de l'entier nombre d'une façon
itérative static int factIterative(int nombre)
{ int fact = 1; …… } 3
// 5. Développer une méthode qui retourne la somme de 1 à n (l'attribut ) d'une façon itérative
public int somIterative() { int som = 1; ………. }
// 6. On veut écrire un algorithme qui décide si un mot est un palindrome. Notre algorithme sera
une méthode prenant en entrée une chaîne de caractères et renvoyant un booléen. Un mot est un
palindrome si sa première lettre est identique à la dernière, sa deuxième à l'avant dernière etc ...
Développer une méthode qui vérifie si (l'attribut s) est palindrome d'une façon récursive public
boolean palindromRec() { ……. }
// 7. Créer la classe ci-dessous et tester les méthodes développez dans la classe ci-dessus..
public class TestTrait { public static void main (String[] args)
{ Traitement t = new Traitement (5,"RADAR"); . }

Problème :
On veut réaliser un programme pour analyser les données concernant les tremblements de terre. Chaque
séisme est représenté par le lieu de l'épicentre, la magnitude (un réel de 0 à 10) et la durée (en
secondes). Un lieu est représenté par un nom et deux réels pour la latitude et la longitude.
1- Proposer un ou des types de données structurés permettant de représenter les données concernant les
tremblements de terre.
2- On veut calculer la durée totale des séismes ayant eu lieu à un endroit donné à partir d’un tableau de
tremblements de terre et le nom d'un lieu (c'est-à-dire la somme des durées des séismes ayant eu lieu à
cet endroit).
3- On veut créer un tableau de tremblements de terre et renvoie un tableau ne contenant que les séismes de
magnitude supérieure ou égale à 8.

Vous aimerez peut-être aussi