La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida.

Presentaciones similares


Presentación del tema: "Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida."— Transcripción de la presentación:

1 Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida de memoria a asignar ● Posibles soluciones: – Asignar la cantidad de memoria necesaria sólo para la clase base (C++) – Asignar la cantidad de memoria máxima para cualquier valor legal (difícil de implementar) – Asignar sólo la memoria para tener un apuntador y asignar el espacio neceario en el montículo en tiempo de ejecución (C++, Java, Object Pascal, Smalltalk, otros)

2 Herencia y tipos En C++ ● Si el objeto se asigna en memoria dinámica se determina en tiempo de ejecución la cantidad de memoria requerida por la clase ● Si la variable se asigna en la pila se asigna sólo la cantidad de memoria necesaria para la clase base (estáticamente) ● Cuando se invoca un método se usa enlace estático (se ejecutan solo los métodos declarados en la clase base)

3 Herencia y tipos ● Ejemplo class Ventana { int altura; int ancho;... public: virtual void oops(); }; class VentanaDeTexto : public Ventana { char *indice; int ubicacionCursor; public: virtual void oops(); } Ventana X; Ventana *Y; Y = new VentanaDeTexto; X = *Y// el objeto *Y es truncado

4 Herencia y tipos En Java (Object pascal, smalltalk) ● Los objetos siempre son asignados en memoria dinámica en tiempo de ejecución ● Al declarar una variable dentro de un método en la pila solo se guarda la referencia del objeto

5 Asignación e igualdad Asignación ● Semántica de copia. ● Semántica de apuntadores.

6 Asignación e igualdad Asignación en C++ ● El comportamiento por defecto en C++ es copiar cada miembro del objeto ● Es posible hacer sobrecarga del operador = ● En este caso el programador determina lo que ocurrirá cuando se asigna un objeto a otro ● No se debe confundir la asignación con la inicialización (constructores de copia)

7 Asignación e igualdad Asignación en Java ● El operador = usa semántica de apuntadores ● El método clone() se puede usar para producir una copia del objeto ● Propósito general de clone() – x.clone() != x – x.clone().getClass() == x.getClass() ● Estos no son requerimientos absolutos ● El método clone() definido en la clase objeto – Requiere que la clase del objeto implemente la interfaz clonable – Realiza una copia poco profunda (shalow copy)

8 Asignación e igualdad Igualdad ● Identidad ● Igualdad de valores

9 Asignación e igualdad ● Igualdad en C++ – No está definida para objetos – Se puede sobrecargar el operador ==

10 Asignación e igualdad Igualdad en Java ● El operador == utiliza semántica de punteros (identidad) ● El método equals definido en la clase objeto permite determinar la igualdad de dos objetos. ● Al redefinir equals se debe cumplir con lo siguiente – Es reflexivo: para cualquier referencia x, x.equals(x) debe devolver true. – Es simétrico: para dos referencias x, y, x.equals(y) debe devolver true si y solo si y.equals(x) devuelve true. – Es transitiva: para cualesquiera referencias x, y, z, si x.equals(y) devuelve true y y.equals(z) devuelve true, x.equals(z) debe devolver true. – Es consistente: para cualquier referencia x and y, múltiples invocaciones de x.equals(y) consistentemente devuelven true or consistentemente devuelven false. – Para cualquier referencia no-nula x, x.equals(null) devuelve false.

11 Acoplamiento y cohesión ● Conceptos introducidos para evaluar el uso efectivo de módulos ● Acoplamiento: se refiere al grado de interconexión entre módulos ● Cohesión: se refiere a que tan integrados están los componentes de un módulo ● Estos conceptos pueden ser extendidos a clases

12 Acoplamiento y cohesión Tipos de acoplamiento ● Acoplamiento interno de datos. Se hace acceso directo a variables de un módulo (o clase). ● Acoplamiento global de datos. Dos o más módulos acceden a variables globales comunes. ● Acoplamiento de control o de secuencia. Ciertos métodos deben ser ejecutados en un orden predeterminado ● Acoplamiento de parámetros. Inevitable. ● Acoplamiento de clases (herencia).

13 Acoplamiento y cohesión Cohesión ● Cohesión coincidente. Los elementos se agrupan sin razón aparente. ● Cohesión lógica. La conexión es a nivel conceptual. No se manipulan datos comunes. ● Cohesión temporal. Los procedimientos se agrupan porque todos deben ejecutarse en un momento determinado (ej. inicialización). ● Cohesión de comunicación. Acceso común a dispositivos de entrada/salida. ● Cohesión secuencial. Los elementos del módulo se juntan porque deben ser ejecutados en cierto orden

14 Acoplamiento y cohesión ● Cohesión funcional. Todos los elementos se unen para ejecutar una función única. ● Cohesión de datos. Un módulo define internamente un conjunto de valores datos y exporta rutinas que manipulan dicha estructura de datos.


Descargar ppt "Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida."

Presentaciones similares


Anuncios Google