Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Session 1 - 2013-14
- /*Question 1
- 1 - A
- 2 - B
- 3 - C
- 4 - A C
- 5 - B
- 6 - B C
- 7 - B C D
- 8 - A D ?
- Question 2*/
- def translationH(s : Scene3D, d : Double) : Scene3D = {
- s match {
- case Boite(a, b, c) => new Boite(new Position(a.x+d, a.y, a.z), b, c)
- case Sphere(a, b) => new Sphere(new Position(a.x+d, a.y, a.z), b)
- case Groupe(x) => new Groupe(x.map(translationH(_, d)))
- case _ => null
- }
- }
- def map(f : Scene => Scene, s : Scene3D) : Scene3D = {
- s match {
- case Groupe(x) => new Groupe(x.map(f))
- case _ => f(s)
- }
- }
- /*Question 3*/
- trait PosteTel {
- protected var tel : String
- protected var bureau : Bureau
- def getBureau : Bureau
- def setBureau(b: Bureau) : Unit
- def getTel : String
- def setTel(s : String) : Unit
- }
- trait Employe {
- protected var nom : String
- protected var bureau : Bureau
- def getBureau : Bureau = this.bureau
- def setBureau(b : Bureau) : Unit {
- require(b.listEmp.size<4)
- setBureauImp(b) ensuring(b.getEmps.contains(this) && b.getEmps.size<=4)
- }
- def getTel : String ensuring(res => res == this.getBureau.getTel)
- protected def setBureauImp(b : Bureau) : Unit
- }
- trait Bureau {
- protected var nom : String
- protected var posteTel : PosteTel
- protected var listEmp : List[Employe]
- def setPosteTel(p : PosteTel) : Unit
- def addEmploye(e : Employe) : Unit
- def getEmps : List[Employe]
- }
- /* Session 2 - 2013-14
- Question 1
- 1 - B C D E
- 2 - B C D
- 3 - B
- 4 - D
- 5 - A
- 6 - C
- 7 - B D
- 8 - B
- Question 2
- 1 & 2 & 3 -
- 4 - */
- sealed trait File{var nom : String; var parent : Repertoire}
- case class Fichier(var nom : String, var parent : Repertoire) extends File
- case object Fichier{def apply(nom : String, parent : Repertoire) = new Fichier(nom, parent)}
- sealed trait Repertoire extends File {var nom : String; var parent : Repertoire; var children : List[File]}
- case class Dossier(var nom : String, var parent : Repertoire) extends Repertoire {
- var children = List[File]()}
- case object Dossier{def apply(nom : String, parent : Repertoire) = new Dossier(nom, parent)}
- case object Root extends Repertoire { var nom : String = "/"; var parent : Repertoire = Root; var children = List[File]()}
- class System{
- val root : Repertoire = Root
- var current : Repertoire = root
- def ls : Unit = {
- println(current.children.foldLeft("") {(x,y) => {
- val n = y match {
- case Dossier(_,_) => y.nom + "[D]\t"
- case _ => y.nom + "\t"
- }
- x + n
- }
- })
- }
- def cd(s : String) : Unit = {
- if(s == ".." && current != root) {current = current.parent}
- else if (current.children.find(x => x.nom == s && x.isInstanceOf[Repertoire]) != None) { current = current.children.find(x => x.nom == s && x.isInstanceOf[Repertoire]).get.asInstanceOf[Repertoire] }
- }
- def pwd : Unit = println(current.nom)
- }
- /** EX 3 Idem que Session 1 **/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement