Informática II Prof. Dr. Gustavo Patiño MJ 16- 18 28-01-2014.

Slides:



Advertisements
Presentaciones similares
ANALIZADOR SEMANTICO DIANA CAROLINA CASTAÑO YANCI VIVIANA CASTRO PEDRO LUIS FLÓREZ SANTIAGO GUTIÉRREZ A.
Advertisements

Curso de java básico (scjp)
Unidad 15 Características de C++ no relacionadas con el DOO.
Curso de java básico (scjp)
Programación Interactiva Manejo de Excepciones
POLIMORFISMO "una interfaz, múltiples métodos".
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.
Introducción Abdelahad, Corina Natalia Abdelahad, Yanina Zoraida
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Informática II Prof. Dr. Gustavo Patiño MJ
Algoritmo y Estructura de Datos I
Objetos y Clases en Java
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
Análisis Semántico y Chequeo de Tipos
Manipulación de caracteres e hileras de texto
Conceptos Básicos de Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Medio de tele-comunicación
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
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
Variables polimórficas (plantillas): definición, uso y aplicación
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
M.C. Juan Carlos Olivares Rojas
Tema 2: Los tipos de datos
Algoritmos y Desarrollo de Programas I
INGENIERIA EN SISTEMAS COMPUTACIONALES
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Sintaxis de C# (Declaraciones y Tipos)
Tipo de Datos Básicos.
Tipos de Datos (Data Types)
Resumen Fundamentos de Programación/ Programación I
El Concepto de Tipo Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa. Toda variable tiene asociado un tipo.
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
Ivette C. Martínez - Héctor Palacios Java – Modulo 1 Introducción y Fundamentos del lenguaje de programación Java.
Programación avanzada en Java Miguel Ángel Corella 16 de Septiembre de 2005.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
1 Definición y Conversión de datos Agustín J. González ELO-329.
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.
Tipo de dato char El tipo de dato char ocupa un byte de memoria. Con un byte solo se puden guardar 256 números enteros sin signo, del 0 – 255. Si a cada.
INSTITUTO TECNOLOGICO SUPERIOR DE LIBRES
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Análisis Semántico y Chequeo de Tipos. Resumen Introducción Tablas de Símbolos Chequeo Semántico Chequeo de Tipos Semántica de un Programa Orientado a.
Algunas Características de C++ no presentes en C
Algunas Características de C++ no presentes en C
Definición y Conversión de datos
Algunas Características de C++ no presentes en C
Definición y Conversión de datos
Algunas Características de C++ no presentes en C
Algunas Características de C++ no presentes en C
Algunas Características de C++ no presentes en C
Transcripción de la presentación:

Informática II Prof. Dr. Gustavo Patiño MJ

Conversión explícita de un tipo a otro Tanto widening como narrowing Ejemplo int A; float B; A = A + (int)B Typecasting ilimitado puede ser peligroso

Conversiones sin pérdida de información Ejemplos: integers a floats shorts a longs

Conversiones que pueden perder información Ejemplos: integers a chars longs a shorts Raro en lenguajes

C++ maneja conversiones automáticamente en el caso de tipos numéricos intrínsecos (int, double, float) Mensajes de advertencia (warning) pueden aparecer cuando hay riesgo de perdida de información (precisión). Hay variaciones de un compilador a otro Ejemplos... 7

8 int n = 26; double x = n; double x = 36; int b = x; // possible warning bool isOK = 1; // possible warning int n = true; char ch = 26; // possible warning int w = 'A';

Una operación de casteo cast explícitamente convierte datos de un tipo a otro. Es usado en conversiones seguras que podrían ser hechas por el compilador. Son usadas para abolir mensajes de advertencia (warning messages). El operador tradicional del C pone el nuevo tipo de dato entre paréntesis. C++ mejora esto con una operador cast tipo función. Ejemplos... 9

10 int n = (int)3.5; // traditional C int w = int(3.5); // estilo de función bool isOK = bool(15); char ch = char(86); // símbolo ascii string st = string("123"); // errors: no conversions available: int x = int("123"); string s = string(3.5); double x=3.1415; char *p = (char*)&x; // para acceder a //x byte por byte

Una expresión de una clase es forzada como una clase ancestro cuando así se requiera Pero no al revés Llamado up-casting Siempre legal porque la subclase contiene todos los campos de la superclase Down-casting Esto es más permisivo Conversión explícita de una clase ancestro a una clase descendiente Sólo tiene sentido si el objeto fue creado inicialmente como en la subclase, pero después convertido a la superclase No puede chequearse en tiempo de compilación.

Consecuencia de up-casting Implementación del método declarado en una superclase puede ser desconocida al momento de compilar. El método es sobreescrito en una subclase. Variaciones de Lenguajes Todos los métodos no declarados estáticos pueden ser up- casted Sólo los métodos declarados virtuales pueden ser up-casted Análisis e implementación de métodos dinámicos No se puede efectuar ningún chequeo semántico Necesitamos soporte en tiempo de corrida (runtime) al generar el código

El operador static_cast<> es la forma preferida para hacer conversiones seguras en C++. Éste reemplaza ambos el operador tradicional de C y el estilo función de C++. Existe también el dynamic_cast<>, éste asegura que el resultado de la conversión es un dato compatible. Sólo se aplica a punteros a objetos. dynamic_cast<> lanza error cuando el resultado de la conversión no es un objeto completo de la clase requerida. 13

14 int w = static_cast (3.5); bool isOK = static_cast (1); char ch = static_cast (86);

15 int w = static_cast (3.5); bool isOK = static_cast (1); char ch = static_cast (86); class CBase { }; class CDerived: public CBase { }; CBase b; CBase* pb; CDerived d; CDerived* pd; pb = dynamic_cast (&d); // ok: derived-to-base pd = dynamic_cast (&b); // wrong: base-to-derived

Ejemplo 2 de static_cast Ejemplo 2 de static_cast