Programmation Orientée Objet
IUT Lumière, DUT STID 2
2007-2008
Pierre-Edouard Portier, Pierre Parrend
Consignes:
Vous disposez de
1 heure pour la partie sur papier
1 heure pour la partie sur machine
Les document autorisés sont:
partie 1: aucun
partie 2: documents papier uniquement (cours, extraits de code).
Connectez vous aux machines avec le login suivants
login: examstid; mdp: stid
Examen : partie 1 (sur papier)
1.Répondez aux questions suivantes:
Donner le nom et la définition des quatres grandes familles de langages de programmation
(les exemples sont données en plus)
Langages de programmation fonctionnels: basé sur l'évaluation de fonctions mathématiques
(Erlang, Lisp, XSLT)
Langages de programmation logiques: exploitation des propriétés de la logique mathématique
(Prolog)
Langages de programmation procéduraux: caractérisé par du code modulaire et des appels de
procédures entre modules (VB, C, Perl, Php)
Langages de programmation Objets: les applications sont subdivisées entre entités autonomes
contenant données et fonctions, les objets (Java, C++, C#).
Ecrivez une classe 'Bonjour', dans un package 'salutation', qui affiche 'Bonjour Stid'
package salutation;
public class Bonjour
{
public static void main(String[] args)
{
System.out.println(« Bonjour Stid »);
}
}
Donnez un exemple simple de diagramme de séquence, avec 2 objets et un appel de méthode
Expliquez la différence entre une classe et un objet
Classe: définition d'un type de donnée. Une classe représente l'unité de programmation. On peut
exécuter directement le code d'une classe si et seulement si ce code est 'static'.
Objet: représentation d'un type de donnée en mémoire. Un objet représente l'unité d'exécution. Un
programme objet se déroule selon les interactions entre ses objets.
Donnez les représentations UML de l'héritage (2 classes) et de l'implémentation d'interface (1
interface et 1 classe)
Héritage:
Donnez deux manières d'implémenter un compteur: avec 'while' et avec 'for'.
int i=0;
while(i<5)
{
...
i++;
}
et for(int i=0;i<5;i++)
{
...
}
Coco Rico
boitDuPorto()
2.Réalisez le diagramme de classe qui correspond au scénario
suivant:
Vous réalisez une application de suivi d'animaux dans un zoo.
Les classes représentées sont les suivantes:
Soigneur, qui contient une référence vers la classe Animal,
Animal, qui contient un attribut 'nom', et une méthode manger(),
Ours, qui hérite de Animal, et contient une méthode 'grogner()',
Lion, qui hérite de Animal, et contient une méthode 'rugir()'.
Examen : partie 2 (sur machine)
3.Énoncé
Vous devez modéliser un montage expérimental composé de bacs, de tuyaux et de robinets. La
figure 1. vous donne le montage à modéliser.
Figure 1. Le Montage
La figure 2. vous donne le schéma UML de l'application.
Figure 2. Schéma UML de l'application
Un montage est constitué d'un ensemble de bacs. Un Bac est un Element. Un Tuyau et un
Robinet sont aussi des éléments.
Un élément peut avoir plusieurs sources, il a 0 ou 1 destination. Dans le cas de notre montage, les
sources du bac n°3 sont les deux tuyaux. La source du tuyau n°1 est le robinet n°1. La source du
tuyau n°2 est le robinet n°2. La source du robinet n° 1 est le bac n°1. La source du robinet n°2 est le
bac n°2.
La méthode fermer d'un élément appelle les méthodes fermer de toutes ses sources.
La méthode ouvrir d'un élément appelle les méthodes ouvrir de toutes ses sources.
Un robinet redéfinit les méthodes fermer et ouvrir.
La méthode demarrer de Montage appelle les méthodes ouvrir de tous ses Bacs. La méthode
stopper de Montage appelle les méthodes fermer de tous ses Bacs.
Un Bac est maintenable, c'est-à-dire qu'il peut être nettoyé et réparé.
La méthode controller de Montage sert à nettoyer tous les bacs.
Après nbMaxUtilisations du montage, il faut nettoyer tous ses bacs.
Nous vous donnons le code de la classe Application :
Application.java:
package examen;
import examen.experience.Bac;
import examen.experience.Montage;
import examen.experience.Robinet;
import examen.experience.Tuyau;
public class Application {
private Montage montage;
public Application () {
this.montage = new Montage(3);
}
public void start () {
Bac bac1 = new Bac("Bac n°1");
Bac bac2 = new Bac("Bac n°2");
Bac bac3 = new Bac("Bac n°3");
Tuyau tuyau1 = new Tuyau("Tuyau n°1");
Tuyau tuyau2 = new Tuyau("Tuyau n°2");
Robinet robinet1 = new Robinet("Robinet n°1");
Robinet robinet2 = new Robinet("Robinet n°2");
bac3.ajouterSource(tuyau1);
bac3.ajouterSource(tuyau2);
tuyau1.ajouterSource(robinet1);
tuyau2.ajouterSource(robinet2);
robinet1.ajouterSource(bac1);
robinet2.ajouterSource(bac2);
montage.ajouterBac(bac1);
montage.ajouterBac(bac2);
montage.ajouterBac(bac3);
for(int i=0 ; i<4 ; i++)
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !