Propedéutico de Programación

Documentos relacionados
Propedéutico de Programación

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Tema: Arreglos de Objetos en C++.

CONTENIDOS. 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno

Tema: Sobrecarga de Operadores.

Propedéutico de Programación

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

Clases y Objetos. Informática II Ingeniería Electrónica

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Constructores y Destructores

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

El lenguaje de Programación C. Fernando J. Pereda

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Examen de Fundamentos de sistemas distribuidos

Modulo 1 El lenguaje Java

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C.

Objetos y memoria dinámica

2. Estructura de un programa en Java

Prof. Dr. Paul Bustamante

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de Certamen Final

Uso de excepciones en Java

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Prof. Dr. Paul Bustamante

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Asignación Dinámica de Memoria. Agustín J. González Versión original de Kip Irvine ELO 326: Seminario II 2do. Sem. 2001

Java Inicial (20 horas)

Guía Corta: Alcance y Asociaciones. 1. Preliminares: Nombres y Asociaciones

9. Objetos y clases Clases

Tema 7. Construcción de Applets en Java

Introducción a la programación orientada a objetos

Prof. Dr. Paul Bustamante

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Organización de Computadoras

Capítulo 6. Introducción a la POO

Universidad Central de Bayamón COLEGIO DE DESARROLLO EMPRESARIAL Y TECNOLOGIA. Número Estudiante:

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Programación Orientada a Objetos con Java

Introducción a ZEUS. Introducción. Curso Doctorado Sistemas Multi-agente. Zeus es una herramienta de desarrollo de SMA.

Los bloques DLL (Figura A.1) externos permiten al usuario escribir su propio código y

2.1. Introducción al lenguaje Java

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Introducción al lenguaje Java

Elementos léxicos del lenguaje de programación Java

Programación Orientada a Objetos en Java

Tema: Clases y Objetos en C++.

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

15. Parámetros o argumentos

11. Algunas clases estándar de Java (II)

Mensajes. Interbloqueo

Son objetos cuya función es el tratamiento de varios registros exclusivamente durante la ejecución de un programa.

Programación Avanzada para Sistemas de Telecomunicación Arrays

Objetivo de aprendizaje del tema

Índice ÍNDICE EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.) EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Polimorfismo y Funciones Virtuales. Agustín J. González Versión original de Kip Irvine ELO326: Seminario II 2do. Sem 2001

Práctica 2: Simón dice

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

Colecciones. Nadjet Bouayad-Agha Programación 2007

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Clases y funciones amigas: friend

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Tablas internas 1-12

Primer Parcial Septiembre 5 de 2009

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

Proyecto de ISIII. Pruebas Extra. Pruebas de Caja Blanca

Instructivo - Instalación y Uso de Screen Hunter

LENGUAJE. Tema 1 - Introducción

Patrones para persistencia (I) Ingeniería del Software II

Se guardan en archivos con extencion c y los cabezales con extension h

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

TEMA 3. CLASES. EJERCICIOS

Práctica 2: Java Remote Method Invocation (RMI)

MANUAL DE USUARIO. DESCRIPCION DEL USO DEL SERVICIO POR WEB SERVICE DOCUMENTACION TECNICA PARA EL CONSUMO DE WEB SERVICE 2015

MANUAL WHM EN ESPAÑOL

Tipos primitivos y clases de interés

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenido. Capítulo 1. Introducción a lenguaje C 1

- Bases de Datos - - Diseño Físico - Luis D. García

Clase adicional 3. Métodos. Temas

1. Introducción. 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.) Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...

Programación Orientada a Objetos en JAVA

SISTEMAS OPERATIVOS AVANZADOS

Conceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

El Modelo de Geometrías

Desarrollo Cobol/DB2

Curso de Excel Avanzado

Manejo de Punteros y objetos en memoria dinámica en C++ Agustín J. González ELO 329

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Transcripción:

Propedéutico de Programación Coordinación de Ciencias Computacionales 6/13 Material preparado por: Dra. Pilar Gómez Gil

Chapter 15 Pointers, Dynamic Data, and Reference Types (continuación) Dale/Weems

What happens here? int* ptr = new int; *ptr = 3; ptr = new int; *ptr = 4; 3 ptr // Changes value of ptr 3 ptr 4 Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed. Instructor material, 2005

Inaccessible Object An inaccessible object is an unnamed object created by operator new that a programmer has left without a pointer to it. int* ptr = new int; *ptr = 8; int* ptr2 = new int; *ptr2 = -5; How else can an object become inaccessible? ptr ptr2 8-5 Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed. Instructor material, 2005

Making an Object Inaccessible int* ptr = new int; *ptr = 8; int* ptr2 = new int; *ptr2 = -5; ptr = ptr2; //Here the 8 becomes // inaccessible ptr ptr2 ptr 8-5 8-5 ptr2 Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed. Instructor material, 2005

Memory Leak A memory leak is the loss of available memory space that occurs when dynamic data is allocated but never deallocated Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed. Instructor material, 2005

A Dangling Pointer A dangling pointer is a pointer that points to dynamic memory that has been deallocated Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed. Instructor material, 2005

Leaving a Dangling Pointer int* ptr = new int; *ptr = 8; int* ptr2 = new int; *ptr2 = -5; ptr = ptr2; ptr ptr2 8-5 delete ptr2; // ptr is left dangling ptr2 = NULL; ptr NULL ptr2 8 Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed. Instructor material, 2005

Ejemplo corrida_dangling.pdf apuntadores2.cpp

Tipo de Dato Reference ReferenceVariableDeclaration { DataType& Variable; DataType &Variable, &Variable; Este tipo de variables también contienen direcciones de memoria El único operador que manejan es inicialización, después de esto cada aparición de la variable es implícitamente desreferenciado Normalmente las usamos para pasar argumentos tipo by reference Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed.

Ejemplo Void Swap( float& x, float& y) /* esta función intercambia el contenido de 2 variables */ { float temp = x ; x = y ; y = temp; } Llamado de la función: Swap(alpha,beta); Tomado de: Dale, N. Weems, C. Programming and problem solving With C++. 4th. Ed.

Clases y Datos Dinámicos Que pasa cuando una clase tiene un componente que es un dato dinámico? Ejemplo: Message.h

Clase Message Message Time time; Char* msg void Print() Void CopyFrom(Message othermsg); Message(Time time,const char* msgstr); Message( const Message& othermsg ); ~Message();

Suponiendo que se generaran 2 mensajes.. int main() { Time time; string msg; // Time object // Input message time.set(10, 30, 0); Message msg1(time, Call Boby"); time.set(10, 35, 30); Message msg2(time, Call Sue");

Se tendría

Consideraciones: Como se libera el espacio dinámico cuando ya no se desea usar el objeto? Como se copia el contenido de todo el objeto, incluyendo a la parte generada dinámicamente Como se pasa este objeto como parámetro by value

Constructores El constructor tiene que apartar memoria para un arreglo dinámico de caracteres, con el tamaño requerido por el argumento (string) que se pase al constructor Ver Message.cpp

Tipos de constructores/destructores Class constructor Class destructor Deep copy operation Class copy constructor Ver Message.h Ver MessageDemo.cpp

Destructores Van precedidos por ~ Son implícitamente invocados cuando se destruye el objeto, esto es, cuando sale de zona de alcance (termina el bloque en que está declarado, si es de tipo automático o termina el programa si es de tipo estático ) No tiene argumentos ni tipo Ver ejemplo de destructor en Message.cpp

Copias superficiales vs. Copias profundas El estatuto de asignación en estos casos genera una copia superficial, es decir solo se copia el valor del apuntador del dato dinámico, pero no la información del dato. msg1 = msg2 genera:

Copias profundas Debe construirse un método que permita copiar no solo el objeto, sino también copiar datos que están apuntados Ver código del método CopyFrom() en Message.cpp El estatuto: msg1.copyfrom(msg2); dará como resultado:

Constructores tipo copy class Cuando se pasan objetos by-value, o en un estatuto return por default se pasan los valores a través de hacer una copia superficial, pero puede incluirse un copyclass constructor para hacer una copia de la parte dinámica. Este tipo de constructores tienen la forma: class SomeClass { public: : SomeClass( const SomeClass& someobject); // Copy Constructor : } No hay nada especial que diga que esto es un copy class constructor, excepto que hay como parámetro el mismo tipo del objeto

Ejemplo Ver código en Message.cpp Note que el código tiene la palabra const en la definición del parámetro; esto para evitar que se modifique othermsg, aún y cuando pasa by reference

Ejemplo Si no existiera un copy constructor y se ejecutara el siguiente código: int main() { Time time; time.set(10,30,0); Message quizmsg(time, Geography quiz ); : DoSomething(quizMsg); : Se mandaría una copia superficial como parámetro (ver figura )