La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Avanzada

Presentaciones similares


Presentación del tema: "Programación Avanzada"— Transcripción de la presentación:

1 Programación Avanzada
Ejercicio sobre pasaje de Diseño a Implementación

2 Ejercicio Considere los siguientes diagramas de comunicación:
Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

3 : B : A 1*:[for each] e:= next() «association» f (s: string, i: int) e: B 2 * : m ( s ) 3 b = i X 4 [ ] l o c a return x; m(s.length) m(s: string) : B : B1 m(i: int) : A setAttr(i) «association» : B2 m(i: int) : A setAttr(2*i) «association» Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

4 Ejercicio (3) Parte a) A partir de los diagramas anteriores, construya el DCD que se deduce de ellos. Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

5 Ejercicio (4) B A - x : bool - attr : int + B(a : A)
+ f(s : string, i : int) + m(s : string) 1 * + setAttr(i : int) + isX() : bool + m(i : int) B1 B2 + B1(a : A) + B2(a : A) + m(i : int) + m(i : int) Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

6 Ejercicio (5) Parte b) De una implementación C++ de las clases involucradas (según lo que se pueda extraer de las interacciones). Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

7 Ejercicio (6) // A.cpp #include "A.h" #include "B.h" A::A() {…}
void A::f(String s, int i) { B* e; for (int j = 0; j < colB.getCount(); j++) { e = colB.get(j); e->m(s); if (e->isX()) { e->m(i); } void A::setAttr(int i) { attr = i; // A.h #include "Vector.h" class A { private: int attr; Vector colB; public: A(); void f(String s, int i); void setAttr(int i); }; Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

8 Ejercicio (7) // B.cpp #include "B.h" // B.h B::B(A *a) {
miA = a; } void B::m(String s) { m(s.Length); bool B::isX() { return x; A* B::getMiA() { return miA; // B.h #include "A.h" class B { private: bool x; A * miA; public: B(A * a); bool isX(); A* getMiA(); void m(String s); virtual void m(int i) = 0; }; Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

9 Ejercicio (8) // B1.h #include "B.h" // B1.cpp class B1 : public B {
B1(A *a); void m(int i); }; // B1.cpp #include "B1.h" B1::B1(A *a) : B(a) {…} void B1::m(int i) { getMiA()->setAttr(i); } // B2.h #include "B.h" class B2 : public B { public: B2(A *a); void m(int i); }; // B2.cpp #include "B2.h" B2::B2(A *a) : B(a) {…} void B2::m(int i) { getMiA()->setAttr(i*2); } Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

10 Ejercicio (9) Parte c) Considerando el siguiente snapshot, de la secuencia de métodos que se ejecutarán para la invocación a.f(“pp”, 4) Discutir según el valor de los atributos. a : A e1 : B1 e2: B2 Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación

11 Ejercicio (10) A.f(string, int) B.m(string) B1.m(int) A.setAttr(int)
B.isX() Si isX() retorna true se ejecuta A.setAttr() B.m(String) B2.m(int) Programación Avanzada - Curso 2017 Ejercicio: Pasaje de Diseño a Implementación


Descargar ppt "Programación Avanzada"

Presentaciones similares


Anuncios Google