1 La sobrecarga de funciones y operadores le da al programador la oportunidad de asignar nuevos significados a las funciones y a los operadores.

Slides:



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

Métodos y parámetros.
Curso de java básico (scjp)
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Creación y destrucción de objetos
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.
Entendiendo la definición de clases
POO en C++: Sintaxis En el .h debe aparecer la declaración de la clase: class NombreClase { private: // atributos y métodos privados public: // atributos.
FUNCIONES EN C.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA A OBJETOS
Ingeniero Anyelo Quintero
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C

Programación Orientada a Objetos usando C++
Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
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.
Tema 9 Estructuras.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Semana 5 Subprogramas..
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
M.C. Juan Carlos Olivares Rojas
EL PODER DE SOLVER.
Desarrollador Profesional de Juegos Programación III Unidad II Una clase thread para window.
Índice. Revisando conceptos acerca de la memoria.

Estructura de Datos y Algoritmos
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.
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
Tipo de Datos Básicos.
Sobrecarga de operadores
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Herramientas de polimorfismo y herencia en C++
Resumen Fundamentos de Programación/ Programación I
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
1 Polimorfismo y Funciones Virtuales Agustín J. González Versión original de Kip Irvine ELO329.
Programación Orientada 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.
Detalles Generales sobre Java
Metodología de la programación
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Estequiometría de reacciones
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Clases “ Es una Abstracción de un elemento del mundo real ”
M ODELO DE DATOS DE ENTIDAD - VÍNCULO El modelo de entidad-vínculo es un modelo de datos conceptual de uso muy extendido. Este modelo, y sus variantes,
GENERICIDAD Es una propiedad que permite definir una clase o función sin especificar el tipo de datos de uno o mas de sus parámetros (Módulos Parametrizados).
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
This y static. This Normalmente, dentro del cuerpo de un método de un objeto se puede referir directamente a las variables miembros del objeto. Sin embargo,
Sobrecarga de operadores Pablo San Segundo (C-206)
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Transcripción de la presentación:

1 La sobrecarga de funciones y operadores le da al programador la oportunidad de asignar nuevos significados a las funciones y a los operadores.

2  La mayoría de los operadores de C++ se les puede dar significados especiales con relación a clases especificas, se pueden tambien sobrecargar.  Por ejemplo: en la clase JuegoDidactico donde se define una lista de figuras, se podría usar el operador + para añadir un nuevo objeto a la lista; mientras que otra clase puede usar el operador + de otra forma completamente diferente.  Cuando se sobrecarga un operador no se pierde ninguno de sus significados previos, simplemente significa que se ha definido una nueva operación con relación a una clase especifica.  Para sobrecargar un operador se debe definir que operación significa con relación a la clase a la que se aplica.  La sobrecarga ayuda a crear código mas fácil de leer y depurar, pero si no se utiliza apropiadamente puede producir graves problemas.

3  El operador + por si mismo esta sobrecargado, porque opera sobre enteros, reales, y otros.  No todos los operadores se pueden sobrecargar por ejemplo: el operador de resolución de ámbito (::), el ternario (?:).  Los significados originales de los operadores no se pierden. Si se sobrecarga el +, de todas formas seguirá sumando enteros, reales, y otros.  El compilador se encarga de seleccionar el código que se acomode a los operandos que se le pasan.  Por ejemplo, se puede crear una clase que represente un número Complejo y sobrecargar el operador + para poder realizar la siguiente operación: Complejo ComPrimero(5,-2), ComSegundo(4, -1), ComSuma; ComSuma = ComPrimero + ComSegundo;  En las expresiones, la prioridad de los operadores se conserva. Por ejemplo el * y el / tienen mayor prioridad que el + y el -.

4 Aunque se le puede dar cualquier significado a un operador sobrecargado, por claridad es mejor que su nuevo significado este relacionado con el anterior. Restricciones: - No se pueden construir nuevos operadores. - La sobrecarga funciona con objetos de la clase que se sobrecargo. - No se puede cambiar la prioridad. - Los operadores no pueden cambiar el número de operandos. - No se puede sobrecargar un operando que funcione sólo con punteros. El formato general de una operación operador es: Donde # es el operador que se desea sobrecargar. Argumentos: Los argumentos del operador. La cantidad depende de si es unitario(1) o binario(2). El primero debe ser una clase. Tipo_Retorno NombreClase:: operator # (Lista_Argumentos) { //operación definida con relación a la clase }

5  Cuando se sobrecarga un operador binario usando una función miembro solo se le pasa un argumento explícitamente. El otro argumento se pasa en forma implícita utilizando el puntero this.  En todos los casos es el objeto de la parte izquierda de la operación el que produce la llamada a la función operador, el objeto del lado derecho se pasa a la función.  Solo se necesita un parámetro para sobrecargar un operador binario.  No se puede alterar el numero de operandos requeridos por el operador.  Excepto para el operador =, los operadores sobrecargados se heredan en cualquier clase derivada.  Los operadores que no se pueden sobrecargar son:..* :: ?

6 class Tiempo { int Horas, Minutos, Segundos; public: Tiempo(int H, int M, int S); int ConsultarHoras(); int ConsultarMin(); int ConsultarSeg(); void AsignarSegundos(int S); Tiempo operator + (Tiempo Otro); void operator = (Tiempo Otro); }; Tiempo Tiempo::operator + (Tiempo Otro) { Tiempo T; T.AsignarSegundos(Segundos + Otro.ConsultarSeg()); return T; } Void Tiempo::operator = (Tiempo Otro) { Horas = Otro.ConsultarHoras(); Minutos = Otro.ConsultarMin(); Segundos = Otro.ConsultarSeg(); }

7  Cuando se sobrecarga un operador unitario usando una función miembro no se pasan argumentos. void Tiempo::operator ++ () { Segundos++; if (Segundos > 59) {Segundos=0; Minutos++;} if (Minutos > 59) {Minutos=0; Horas++;} } Tiempo Tiempo1(1,2,3), Tiempo2(5,8,6), Tiempo3(8,7,1); Tiempo1 = Tiempo1 + Tiempo2; //Se debe sobrecargar el igual Tiempo1 = Tiempo1.operator+(Tiempo2); //Igual al anterior Tiempo1 = Tiempo1 + Tiempo2 + Tiempo3; Tiempo3++; Nota: se puede trabajar ocn polimorfismo, utilizando la misma interfaz para trabajar con diferentes clases de una misma jerarquía.