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.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Curso de java básico (scjp)
Fundamentos de Diseño de Software INFT.1
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Uso de variables de tipo referencia
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Orientación a Objetos con Java SE
Clase 3: Punteros y Referencias
Tema 1. Introducción a la programación (Lenguaje java).
Aplicación del paradigma orientado a objetos
Encapsulamiento y Abstracción
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Herramientas para el acceso directo a memoria en C++
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Programación Orientada a Objetos usando C++
Modificadores.
Lic. Rosemary Torrico Bascopé
PROGRAMACIÓN ORIENTADA A OBJETOS
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
6. Herencia. Clases abstractas. Genericidad
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
SCJP Sun Certified Programmer for Java 6
Semana 5 Subprogramas..
Programación III Clase 07 Funciones.
Estructuras.
Programación Orientada a Aspectos (POA)
Patrones Creacionales
Clases y objetos. La unidad fundamental del lenguaje Java es la clase, que proporciona la estructura de los objetos y mecanismos para fabricarlos, a partir.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Abstracción de Datos y Orientación a Objetos.. Vista General. Por qué la abstracción de datos y la programación orientada a objetos. Módulos y módulos.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
Material de apoyo Unidad 4 Estructura de datos
Alcance Dinámico La Asociación Actual para un Nombre dado es el encontrado recientemente durante la ejecución, y no a sido destruido aun por el retornado.
Herramientas de polimorfismo y herencia en C++
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
Módulo 7: Programación Orientada a Objetos en Visual Basic 2005.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Programación orientada a objetos. Existen 3 niveles de visibilidad: ◦ public: significa que los atributos de una clase pueden ser accedidas desde fuera.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Metodología de Programación Clase 1 Leonel Lagos V
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Acceso a Datos Erick López Ovando Licenciado en Informática.
Programación Orientada a Objetos: CLASES Y OBJETOS
MEMORIA DINÁMICA.
Clases “ Es una Abstracción de un elemento del mundo real ”
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
GENERALIDADES DEL NIVEL ISA DE LA MAQUINA VIRTUAL JAVA (JVM) Generalidades del nivel ISA.
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

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)

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)

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

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

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

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)

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)

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

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

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.

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

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).

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

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.