LP24 Object Oriented Programing Final Exam - Spring 2017 Documents, Computer, Calculator unauthorized
1. Theoretical questions (3 pts)
A. What are the pillars of OOP?
B. What is inheritance? Explain the differences between inheritance and composition. When should we prefer one or the other?
C. Explain the difference between a class and an object.
2. Exercise #1: Computations (8 pts)
The goal of this exercice is to develop a program aimed at evaluating arithmetical equations such as the one presented in the figure. For this purpose, we will use binary trees for representing an expression. Thus, the tree presented in the figure corresponds to the following expression: 3+5*(4+2)
A tree representing an expression is composed of nodes from two types: (1) constant value (2) binary operator.
The code which evaluates the value of the example can be written as follows:
class TestExprExample{
public static void main(String [] arg){
Constant c1 = new Constant (3) , c2 = new Constant (5) , c3 = new Constant (4) , c4 = new Constant (2);
Operator o1 = new Addition(), o2 = new Multiplication(), o3 = new Addition();
o1.setRL ( c1 ) ; o1.setLL ( o2 ) ; o2.setRL ( c2 ) ; o2.setLL ( o3 ) ; o3.setRL ( c3 ) ; o3.setLL ( c4 ) ;
System.out.println (o1.eval ( ) ) ; }
}
System . out . p r i n t l n ( ” V e h i c u l e s : ”+v1+v2+v3 ) ; System . out . p r i n t l n ( ) ;
v2 . a p p r o v i s i o n n e r ( 3 5 . 0 ) ; // l i t r e s d ’ e s s e n c e v3 . a p p r o v i s i o n n e r ( 7 0 . 0 ) ;
System . out . p r i n t l n ( ) ;
v1 . t r a n s p o r t e r ( ” Di jon ” , ” Valence ” ) ; v2 . t r a n s p o r t e r ( 5 , 3 0 0 ) ;
v3 . t r a n s p o r t e r ( ” t u i l e s ” , 1 0 0 0 ) ; }
Ce programme est-il correct ? Le corriger si n´ecessaire. Qu’affiche-t-il ? Question 10
On voudrait maintenant d´efinir des v´ehicules ´ecologiques. Les v´ehicules sans moteur et la voiture ´electrique sont
´ecologiques.
1. Que faut-il rajouter `a la hi´erarchie des classes pour mod´eliser les v´ehicules ´ecologiques ?
2. Comment doit-on modifier les classes d´ecrites initialement pour rendre les v´ehicules sans moteur ´ecologiques ? 3. Comment ´ecrire la classe VoitureElectrique?
Exercice 2
On souhaite ´evaluer des expressions arithm´etiques repr´esent´ees sous forme d’arbre.
Par exemple l’expression 3 + 5 * (4 + 2) peut ˆetre repr´esent´ee par l’arbre de la figure.
Un arbre est constitu´e de noeuds valu´es. On distingue deux sortes de noeud :
• les op´erateurs dont la valeur est celle de l’expression arithm´etique associ´ee
• et les constantes.
La classe suivante permet d’´evaluer l’expression pr´ec´edente : c l a s s TestExprArith{
public s t a t i c void main ( S t r i n g [ ] a r g ){
Constante c1 = new Constante ( 3 ) , c2 = new Constante ( 5 ) , c3 = new Constante ( 4 ) , c4 = new Constante ( 2 ) ;
Operateur o1 = new A d d i t i o n ( ) , o2 = new M u l t i p l i c a t i o n ( ) , o3 = new A d d i t i o n ( ) ; o1 . setFD ( c1 ) ;
o1 . setFG ( o2 ) ; o2 . setFD ( c2 ) ; o2 . setFG ( o3 ) ; o3 . setFD ( c3 ) ; o3 . setFG ( c4 ) ;
System . out . p r i n t l n ( o1 . e v a l ( ) ) ; }
}
Question 1
Ecrire la classe Noeud permettant de repr´esenter un noeud de l’arbre avec ces deux fils. Pourquoi est-elle abstraite ? Question 2
Ecrire la classe Constante.
Question 3
Les op´erateurs sont des noeuds ayant la propri´et´e d’ˆetre ´evalu´e. Comment d´eclarer la classe Operateur en Java ? Ecrire l’ensemble des classes n´ecessaires pour repr´esenter les 4 op´erations.
Polytech’Paris-UPMC Electronique Informatique Syst`emes Embarqu´es - 3e ann´ee´ 2