Vous êtes sur la page 1sur 3

UMP , EST Oujda.

Filière: DAI 2. A.U 2021/2022

DS n°1 en Java. "Civilite" qui prend trois valeur { "Mme", "Mlle",


"Mr". }
2. Créer une classe nommée "Personne" qui a :
Exercice 1 : trois champs ; nom : chaîne, prenom : chaîne, age :
Le programme suivant contient deux fichiers, le pre- numérique, et civilite : Civilite.
mier contient deux classes Deux Constructeurs : un a pour paramètre, nom, pre-
class A { nom et age. Et un autre qui a pour paramètres, nom,
private int y ; prenom , age et civilite.
int x ; Une méthode toString() qui retourne une chaîne dé-
} crivant la personne. Comme exemple, elle retourne :
public class B{ Je suis Mr. Patati Patata âgé de 20 ans.
} 3. Ecrire une autre classe nommé "Etudiants" qui hé-
et le deuxième fichier contient une seule classe rite de la classe Personne. Cette classe a pour champs.
public class Main{ filière : chaîne et niveau : entier.
public satic void main(){ Elle a un constructeur qui initialise tous les champs y
}} compris les champs de la classe mère.
1. Écrire les commande qui permettent d’ajouter les toString() qui retourne une chaine, Comme exemple,
classes du premier fichier au package PremierPack et elle retourne : Je suis Mr. Patati Patata agé de 20 ans,
la classe du deuxième fichier au package Deuxieme- étudiant à 2 année DAI.
Pack. 4. Dans une classe Test :
2. Donner des noms aux fichiers. a. Créer l’objet p de type "Personne" et initialisé ses
3. Peut on accéder à y et x dans la classe B ? champs à "Toto", "Titi" , 30, Mme.
4. Peut on accéder à y et x dans la classe Main ? b. Creer l’objet 0 de type "Etudiant" et initialisé ses
5. Donner la commande qui permet de compiler les champs à "Tati", "Toti" , 19, Mlle, ASR, 2.
deux fichiers. c. Quelle est la valeur de : 0.equals(p) // Justifier.
6. Créer un fichier archive nommé "MyAppli" conte- d. Qu’affiche le code suivant. System.out.println(o)
nant tous les fichiers .class de l’application. Donner la //Justifier
commande qui permet d’exécuter l’application à par- Exercice 3 : Soit le code suivant
tir de l’archive. public class Outer {
Exercice 2 : 1. Créer un type énumération nommée

Page 1
UMP , EST Oujda.
Filière: DAI 2. A.U 2021/2022

Inner inner ; public Base(int x) {this.x = x ; }


class Inner{ int x ; int m() { return 2*x ; }
public Inner(int x) { public int getX() {return x ;}
this.x = x ; }
inner=this ; } } public class Derivee extends Base {
} public Derivee(int x) {super(x) ;}
1. Créer un objet o de type Outer double g(int a) { return 3*a ;}
2. Créer un objet e de type inner avec x=3. }
Exercice 4 : Considerons la classe suivante : public class DeriveeSecond extends Derivee{
public class ClassStatic { private static int y=0 ; public DeriveeSecond(int x) { super(x) ;}
private int x ; int m() { return 3*getX() ;}
public ClassStatic(int x) { double g(double a) { return a ;}
this.x = x ; }
y++ ;} public class Test {
static int m() { public static void main(String[] args) {
return 2*y*x ;} // 1. Les déclaration suivantes sont-elles cor-
public static void main(String[] args) { rectes ? Jutifier !
ClassStatic s1 = new ClassStatic(3) ; Base b = new Derivee(2) ;
ClassStatic s2 = new ClassStatic(2) ; Derivee c = new DeriveeSecond(10) ;
ClassStatic s3 = new ClassStatic(8) ; //2. Les casts suivants sont ils correctes. Jus-
System.out.println(s1.y +" "+s1.x+" " +s1.m() ) ; tifier !
System.out.println(s2.y +" "+s2.x+" " +s2.m() ) ; Derivee r= (Derivee)b ;
System.out.println(s3.y +" "+s3.x+" " +s3.m() ) ;}} DeriveeSecond t = (DeriveeSecond)b ;
1. Corriger le code de la méthodes m(). Justifier vos /* 3. Analyser chaque ligne de codes suivant
réponses. puis expliquer et donner l’affichage de la sortie.
2. Donner la sortie du code dans la méthodes main(). En cas d’erreur, expliquer sa cause et coriger-
Justifier ! la ! */
Exercice 5 : COnsidérons les classes ci-dessous System.out.println(b.g(2)) ;
public class Base { private int x ; System.out.println(c.g(2.5)) ;

Page 2
UMP , EST Oujda.
Filière: DAI 2. A.U 2021/2022

System.out.println(b.m()) ; catch( ArithmeticException e ){... }


System.out.println(c.m()) ; catch(IOException e ){... }
}} catch( Exception e ){... }
Exercice : 6 Soit les classes et interfaces suivantes. 2. Compléter le code dans le programme ci-dessous
class A{....} suivants les directives dans les commentaire.
abstract class B { import java.util.Scanner ;
...... class NegativeException extends Exception{
abstract int h() ; public NegativeException() {
.....} super() ; }
interface I1 { int f() ; } public NegativeException(String message) {
interface I2 {int g() } super(message) ; } }
1. Parmis les déclarations de la classe C suivantes, les- // 1. Completer le code des méthodes m et g.
quels sont correctes ? Justifier ! public class ErrClass { int m(int n) /* Si n est néga-
a. class C extends A, B{....} tive, l’exceptionne new NegativeException("Pas d’ar-
b. class C extends B implements I1 {......} gument negative !"), est levée*/
c. class C extends A implements I1,I2{.....} return n ;}
2. Utiliser une classe anonyme pour créer un objet de int g(int p){/*si p==0 l’Exception new Arithmeti-
type I1. cException(" Pas de valeur nulle ! ") est levée*/
Exercice 7 : return m(p)/p ;}
1. lesquels des blocs try-catch suivants sont correctes ? /* Traiter dans un bloc try-catch multiple toutes les
justifier. exceptions susceptibles d’être levées dans la méthodes
a) try{ ...} main. */
catch( ArithmeticException | IOException | Excep- public static void main(String[] args) {
tion e ){ ...} ErrClass r =new ErrClass() ;
b) try {.... } Scanner n= new Scanner(System.in) ;
catch( ArithmeticException e ){...} int p=n.nextInt() ;
catch( Exception e ){.... } System.out.println(r.g(p)) ; }
catch(IOException e ){.... } }
c) try{ ... }

Page 3

Vous aimerez peut-être aussi