Herencia y Polimorfismo en C++

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Herencia y Polimorfismo en C++"

Transcripción

1 Herencia y Polimorfismo en C++ Informática II Fundamentos de Programación 1 Herencia Concepto de "herencia" herencia": Una clase -clase derivada- puede definirse a partir de otra clase ya existente (clase base), de la que hereda sus variables y funciones miembro. La clase derivada puede añadir y/o redefinir nuevas variables y/o funciones miembro. La clase base suele ser más general que la clase derivada. Ésta añade nuevas determinaciones o especificaciones (nuevas variables y/o funciones miembro). A su vez, la clase derivada puede ser clase base de una nueva clase derivada, que hereda sus variables y funciones miembro. Se puede constituir una jerarquía de clases. Además de public y private,, C++ permite también definir miembros protected. Los miembros protected, al igual que los private, no son accesibles desde fuera de la clase. En una clase base, los miembros protected se diferencian de los private en que sí pueden ser accesibles para las clases derivadas de dicha clase base. Para la clase derivada,, la clase base se puede heredar como pública o como privada: La clase derivada no tiene acceso a los miembros private de la clase base. Sí tiene acceso a los miembros public y protected. Si la clase base se hereda como public, la clase derivada hereda los miembros public y protected de la clase base como miembros public y protected, respectivamente. Si la clase base se hereda como private, la clase derivada hereda todos los miembros de la clase base como private. 2

2 Ej. de herencia: clase "empleado" Supóngase que un departamento de una empresa utiliza tres tipos de empleados: subcontratado: cobra por horas. vendedor: cobra por horas, más una comisión de las ventas. encargado: cobra una cantidad fija por mes. y que se desea hacer una función llamada calcular_pago() que calcule lo que hay que pagar cada mes a cada empleado. Se puede pensar en una jerarquía de empleados de la forma indicada en la figura: Subcontratado Encargado Vendedor Los principios de esta jerarquía son los siguientes: Enc_ ventas Todos son empleados. Los vendedores cobran por horas como los subcontratados (de hecho son un tipo especial de subcontratados), pero tienen además una comisión, por lo que pueden ser considerados como una particularización de éstos. Los encargados sólo tienen en común con los demás el hecho de ser empleados. 3 Ej. de herencia (cont( Clase base empleado: class empleado private: char nombre[31]; empleado(); empleado(const char *nom); char *devolver_nombre(); float calcular_pago() return 0.0; Clase derivada subcontratado: Clase derivada vendedor: class subcontratado : public empleado class vendedor : public subcontratado private: private: float tarifa; float comision; float no_horas; float ventas_realizadas; vendedor(const char *nom); subcontratado(const char *nom); void fijar_comision(float com); void fijar_tarifa(float tar); void contar_ventas(float ventas); void contar_horas(float horas); float calcular_pago(); float calcular_pago(); Obsérvese la forma en que, en cada clase derivada, se define la forma en que se hereda la clase base como public o private. 4

3 Ej. de herencia (cont( Definición de la clase derivada encargado: class encargado : public empleado private: float sueldo_mensual; encargado(const char *nom); void fijar_sueldo(float sueldo); float calcular_pago(); Recuérdese que cada una de las clase derivadas hereda todos los miembros de la clase base correspondiente. La clase vendedor hereda los miembros de las clases subcontratado y empleado. La clase derivada no puede acceder directamente a las variables miembro privadas de la clase base: hay que utilizar las funciones públicas de la clase base. Una clase derivada puede redefinir (definir una función diferente con el mismo nombre) alguna de las funciones miembro de la clase base. La función de la clase base es accesible en la clase derivada por medio del operador (::). La función redefinida es utilizable directamente en la clase derivada. 5 Ej. de herencia (cont( Definición de la función calcular_pago() en cada una de las clases: float subcontratado::calcular_pago() return tarifa * no_horas; float vendedor::calcular_pago() return (subcontratado::calcular_pago() + comision * ventas_realizadas); float encargado::calcular_pago() return sueldo_mensual; No sería correcto utilizar las definiciones: float vendedor::calcular_pago() return (tarifa * no_horas + comision * ventas_realizadas); float vendedor::calcular_pago() return (calcular_pago() + comision * ventas_realizadas); pues vendedor::calcular_pago() no tiene acceso a las variables privadas de subcontratado. La función calcular_pago() de vendedor no debe llamarse a sí misma, sino a la de subcontratado. 6

4 Constructores de clases derivadas Un objeto de una clase derivada contiene todos los miembros de la clase base. El constructor de la clase derivada debe llamar al de la clase base. Cuando se define un constructor para una clase derivada, se debe especificar un inicializador base (llamada al constructor de la clase base). El inicializador base se especifica poniendo, a continuación de los argumentos del constructor, el carácter (:) y un constructor de la clase base seguido de una lista de argumentos entre paréntesis. Por ejemplo: // constructor para la clase subcontratado subcontratado::subcontratado(const char *nom) : empleado(nom) tarifa = 0.0; no_horas = 0.0; Al declarar un objeto de la clase derivada, se ejecuta primero el constructor de la clase base y luego el de la clase derivada. El inicializador base puede ser omitido si la clase base tiene un constructor por defecto. El constructor de una clase derivada debe disponer de valores para sus propias variables y para el constructor de la clase base. 7 Herencia múltiple. Clases base virtuales Una clase derivada puede heredar variables y funciones miembro de varias clases base. Por ejemplo, la clase encargado_ventas puede heredar los miembros de las clases encargado y vendedor. Se definiría en la forma: class encargado_ventas : public encargado, public vendedor... // definición de variables y funciones miembro Una clase base no puede figurar directamente más de una vez en la definición de la clase derivada. Sin embargo, indirectamente una clase puede ser clase base más de una vez de una clase derivada. Por ejemplo, la clase empleado es clase base por duplicado de la clase encargado_ventas. La clase encargado_ventas tiene por duplicado los miembros de la clase base empleado. Se puede utilizar el operador (::). Al llamar a la función devolver_nombre() dará error de ambigüedad, ya que no sabe cual de las dos utilizar (por encargado o por vendedor). Para evitar esto, la clase base empleado debe ser declarada clase base virtual. En las definiciones de las clases derivadas hay que hacer: class subcontratado : public virtual empleado... class encargado : public virtual empleado... El constructor de la clase base virtual (empleado) siempre se llama antes que los constructores de las clases base no virtuales (encargado o subcontratado), por lo tanto en hay que llamar primero al constructor de empleado: vendedor(..,..,..) : empleado(..), subcontratado(...) ; 8

5 Conversiones entre objetos de clases base y clases derivadas Es posible realizar conversiones o asignaciones entre un objeto de una clase derivada a un objeto de la clase base (se puede ir de lo más particular a lo más general, aunque se pueda perder información). Es posible hacer: un_empleado = un_encargado; un_subcontratado = un_vendedor; No son posibles las conversiones en sentido contrario (de lo más general a lo más particular, pues no se dispone de valores para todas las variables miembro de la clase derivada y habría variables que quedarían sin inicializar). De forma análoga, se puede convertir un puntero a una clase derivada en un puntero a la clase base. Un puntero a la clase base puede almacenar la dirección de un objeto de cualquiera de las clases derivadas de esa clase base. Se puede hacer referencia a un objeto de una clase derivada con un puntero a la clase base. Cuando se hace referencia a un objeto por medio de un puntero, el tipo de puntero determina la función miembro que se aplica a dicho objeto, en el caso de que dicha función esté definida en las clases base y derivada. 9 Punteros a la clase base para manejo de objetos de clases derivadas En una jerarquía de clases con funciones del mismo nombre definidas en todas las clases, el tipo de objeto determina la función que se aplica. por ejemplo, con nombres de objetos: vendedor1.calcular_pago(); operario3.calcular_pago(); y con punteros a objetos: encargado *pntr1; pntr1->calcular_pago(); A una función que espera un puntero a la clase base se le puede pasar un puntero a cualquiera de sus clases derivadas (por las leyes de conversión de punteros). De esta forma, una lista de objetos de distintas clases puede tratarse con la interface -con las funciones miembro- de la clase base. Este tratamiento es genérico, sin tener en cuenta las peculiaridades de las clases derivadas, pues si se utiliza un puntero a una clase base con un objeto de una clase derivada, se utiliza la función de la clase base. El tratamiento personalizado con punteros genéricos (a objetos de la clase base) se consigue por medio del polimorfismo. 10

6 Polimorfismo y funciones virtuales La palabra polimorfismo hace referencia a la capacidad de llamar a funciones miembro: con un único nombre y análoga pero diferente misión, que actúen sobre objetos distintos de una jerarquía de clases, que se llamen del modo preciso sin tener que especificar el tipo exacto de los objetos. Operario for (i=0; i<n_empleados; i++) pempleado[i]->calcular_pago(); Oficial Tecnico Directivo La función calcular_pago() debe actuar correctamente con cada objeto de las clases derivadas de la clase, sin tener que pasar el tipo de objeto. Esto se hace: con punteros genéricos a la clase base : *pempleado; cantidad = pempleado->calcular_pago(); declarando calcular_pago() como función virtual en la clase base. si la función no se declara como virtual se utiliza siempre la función de la clase base ::calcular_pago(). Si una clase no tiene definida una función, utiliza la heredada de la clase base. 11 Polimorfismo y funciones virtuales (cont( De ordinario, en C++ la llamada a una función determinada se establece en el momento de la compilación (vinculación estática o temprana). Con funciones virtuales esto no es posible, pues no se sabe en ese momento a qué tipo de objeto apuntará el puntero en el instante de la llamada. La función a llamar se determina en tiempo de ejecución (vinculación dinámica o tardía). Con funciones virtuales es posible que un usuario añada nuevas clases a una jerarquía de clases, sin modificar o recompilar el código original (por tanto, sin necesidad de conocer los ficheros fuentes). Las funciones virtuales son algo menos eficientes que las funciones normales: cada clase que utiliza funciones virtuales tiene un vector de punteros (uno por cada función virtual) llamado v-table. cada uno de estos punteros apunta a la función virtual que es apropiada para esa clase, en principio a la propia definición si existe. si una clase no tiene su propia definición de la función virtual, el puntero apunta a la función virtual de su clase base más próxima que tenga una definición propia. cada objeto contiene un puntero oculto a la v-table de su clase. Con el puntero al objeto se accede a la v-table de la clase y a través de ella se accede a la definición adecuada de la función virtual. Éste es el trabajo extra. 12

7 Funciones virtuales puras Una función virtual debe estar definida en la clase base de la jerarquía, aunque no se vaya a utilizar nunca: porque no existen objetos de esa clase, porque cada clase derivada tiene su propia definición de esa función. Una función virtual de la clase base que no se va a utilizar nunca no necesita ser definida: basta declararla como función virtual pura. Una función virtual pura se declara en la forma: virtual float calcular_pago() const = 0; // virtual pura En este caso: no hace falta definir el código de empleado::calcular_pago(). no se pueden definir objetos de la clase base empleado, pues las funciones virtuales puras no pueden ser llamadas. sí se pueden definir punteros a la clase empleado, pues a través de ellos pueden manejarse objetos de clases derivadas. Es necesario redefinir la función como const: float calcular_pago() const... Clases abstractas: A las clases que declaran funciones virtuales puras se les llama clases abstractas, pues no tienen objetos concretos de esa clase. Si una clase derivada no redefine una función virtual pura heredada, la clase derivada la hereda como función virtual pura y se convierte también en clase abstracta. 13 Func.. virtuales puras (cont( Es habitual utilizar jerarquías de clases en las que las clases superiores son clases abstractas, que definen funciones virtuales puras que las clases concretas derivadas redefinen del modo adecuado. El constructor de la clase base se llama antes que el constructor de la clase derivada. Los destructores se llaman en orden opuesto a los constructores: primero el de la clase derivada y luego el de la clase base. Problema que puede presentarse: con reserva dinámica de memoria, si delete se aplica a un puntero de la clase base, se llama al destructor de la clase base, aunque dicho puntero apunte a un objeto de una clase derivada (se debería llamar primero al destructor de la clase derivada). la solución es declarar el destructor de la clase base como virtual: virtual ~empleado(); esto hace que los destructores de las clases derivadas sean virtuales, aunque tengan nombres diferentes. así, si delete se aplica a un puntero de la clase base, el destructor adecuado se aplica según el objeto de que se trate. si se define una clase con funciones virtuales, conviene definir un destructor virtual aunque la clase no lo necesite (puede haber clases derivadas que lo necesiten) No hay constructores virtuales. empleado *emp1 = new encargado("carla",2500); delete emp1; Al eliminar el objeto con delete, sólo se ejecutará el destructor de la clase base, si éste no es declarado como virtual. 14

8 Ejemplo 1 // Fichero.h // ejemplo de funciones virtuales #include <iostream.h> class virtual void imprime_cargo() cout << "es un cargo no definido\n"; class Directivo : public void imprime_cargo() cout << "es un directivo\n"; class Operario : public void imprime_cargo() cout << "es un operario\n"; class Oficial : public Operario void imprime_cargo() cout << "es un oficial\n"; class Tecnico : public Operario void imprime_cargo() cout << "es un tecnico\n"; Operario Directivo Oficial Tecnico 15 Ejemplo 1 (cont( // Fichero dpto.cpp #include "empleado.h" #include <string.h> void main(void) Rafa; Directivo Mario; Operario Anton; Oficial Luis; Tecnico Pablo; // El tipo del objeto determina la función que se llama cout << "Primero con nombres de objetos:" << endl; cout << "Rafa "; Rafa.imprime_cargo(); cout << "Mario "; Mario.imprime_cargo(); cout << "Anton "; Anton.imprime_cargo(); cout << "Luis "; Luis.imprime_cargo(); cout << "Pablo "; Pablo.imprime_cargo(); *pe; cout << "\ny ahora con punteros:" << endl; pe = &Rafa; cout << "Rafa "; pe->imprime_cargo(); pe = &Mario; cout << "Mario "; // continúa a la dcha. Con funciones virtuales, el tipo de objeto apuntado por un puntero a clase base determina la función que es llamada Oficial Operario Tecnico Directivo // cont. pe->imprime_cargo(); pe = &Anton; cout << "Anton "; pe->imprime_cargo(); pe = &Luis; cout << "Luis "; pe->imprime_cargo(); pe = &Pablo; cout << "Pablo "; pe->imprime_cargo(); 16

9 // Fichero empleos.h #include <iostream.h> Ejemplo 2 class empleado protected : char nombre[25]; long salario; empleado(char*, long); virtual void display() cout << "Nada\n"; Operario Directivo class directivo : public empleado private: char titulo[25]; directivo(char*, long, char*); void display() Oficial Tecnico cout << " El directivo " << nombre << " gana " << salario << " y tiene el titulo de " << titulo << endl; class operario : public empleado protected: char puesto[25]; operario(char*, long, char*); void display() cout << " El operario " << nombre << " gana " << salario << " y ocupa un puesto de " << puesto << endl; 17 Ejemplo 2 ( class tecnico : public operario tecnico(char*, long, char*); void display() cout << " El tecnico " << nombre << " gana " << salario << " y ocupa un puesto de " << puesto << endl; Operario Directivo Oficial Tecnico class oficial : public operario oficial(char*, long, char*); void display() cout << " El oficial " << nombre << " gana " << salario << " y ocupa un puesto de " << puesto << endl; 18

10 Ejemplo 2 (cont( // Fichero Empleos.cpp // funciones miembro de clases Directivo y Operario #include "empleos.h" #include <iostream.h> #include <string.h> // definición de los constructores empleado::empleado(char* name = "", long sueldo = 0) : salario(sueldo) strcpy(nombre, name); Operario Directivo Oficial Tecnico directivo::directivo(char* name = "", long sueldo = 0, char* title = "") : empleado(name, sueldo) strcpy(titulo, title); operario::operario(char* name = "", long sueldo = 0, char* job = "") : empleado(name, sueldo) strcpy(puesto, job); tecnico::tecnico(char* name = "", long sueldo = 0, char* job ="") : operario(name, sueldo, job) ; oficial::oficial(char* name = "", long sueldo = 0, char* job ="") : operario(name, sueldo, job) ; 19 Ejemplo 2 (cont( // fichero empresa.cpp // utilización de la clase empleos #include <iostream.h> #include "empleos.h" void main(void) // punteros a objetos de distintas clases directivo *m; operario *j; oficial *k; tecnico *i; // creación de cuatro objetos de distintas clases m = new directivo("maria", , "Ingeniera"); j = new operario("juan", , "Soldador"); k = new oficial("koldo", , "Teniente"); i = new tecnico("ignacio", , "Ingeniero"); Operario Directivo Oficial Tecnico // vector de punteros a la clase base empleado *lista[8]; // se guardan direcciones de objetos de // distintas clases lista[0] = m; lista[1] = j; lista[2] = k; lista[3] = i; lista[4] = new directivo("pedro", , "Economista"); lista[5] = new operario("leire", 25000, "Becaria"); lista[6] = new oficial("jon", , "Entrenador"); lista[7] = new tecnico("mario", , "Electricista"); // Se tratan todos los objetos de las distintas clases de una forma unificada for (int ii=0; ii<8; ii++) lista[ii]->display(); cout << "Ya he terminado." << endl; 20

3. LA HERENCIA. Necesidad de la herencia

3. LA HERENCIA. Necesidad de la herencia página 1 3. LA HERENCIA Necesidad de la herencia La mente humana clasifica los conceptos de acuerdo a dos dimensiones: pertenencia y variedad. Se puede decir que el Ford Fiesta es un tipo de coche (variedad

Más detalles

4. POLIMORFISMO. Figura 6: Funciones virtuales

4. POLIMORFISMO. Figura 6: Funciones virtuales página 1 4. POLIMORFISMO Polimorfismo, por definición, es la capacidad de adoptar formas distintas. En el ámbito de la Programación Orientada a Objetos se entiende por polimorfismo la capacidad de llamar

Más detalles

Polimorfismo. Métodos virtuales

Polimorfismo. Métodos virtuales Polimorfismo. Métodos virtuales El polimorfismo indica que una variable pasada o esperada puede adoptar múltiples formas. Cuando se habla de polimorfismo en programación orientada a objetos se suelen entender

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 07 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 07 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1:

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 8 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante ÍNDICE ÍNDICE... 1 1. INTRODUCCIÓN... 1 1.1 EJERCICIO 1: HERENCIA Y POLIMORFISMO I... 1 1.2 EJERCICIO

Más detalles

Clases y Objetos en C++

Clases y Objetos en C++ Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar

Más detalles

Programación orientada a objetos I

Programación orientada a objetos I Introducción Programación orientada a objetos I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es Qué es la POO? Un paradigma de programación Un paradigma es una forma de afrontar

Más detalles

Herencia y polimorfismo

Herencia y polimorfismo Herencia y polimorfismo Programación Orientada a Objeto Ing. Civil en Telecomunicaciones Herencia Hemos visto cómo crear nuestras propias clases Clase InfoAlumno para calcular las notas Supongamos ahora

Más detalles

PROGRAMACION ORIENTADA A OBJETOS EN C++

PROGRAMACION ORIENTADA A OBJETOS EN C++ PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje

Más detalles

Programación Orientada a Objetos

Programación Orientada a Objetos Programación Orientada a Objetos Informática II Fundamentos de Programación 1 Concepto de POO Un Objeto es una encapsulación de un conjunto de datos y de los métodos para manipular éstos. Las características

Más detalles

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo. Programación II. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Comprender que es ligadura e identificar sus tipos.

Más detalles

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo. Programación II. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Específicos Comprender que es ligadura e identificar

Más detalles

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez 6 Herencia y Polimorfismo La Herencia y el Polimorfismo son dos de los principales mecanismos de programación que caracterizan a la programación orientada a objetos. La herencia sustenta su mecanismo en

Más detalles

INTRODUCCIÓN A LA POO EN C++

INTRODUCCIÓN A LA POO EN C++ INTRODUCCIÓN A LA POO EN C++ ÍNDICE DEL TEMA 1.- Introducción 2.- Diferencias C/C++ 3.- Programación orientada a objetos 4.- Aspectos avanzados C++ 1 1. Introducción Lenguaje C Lenguaje de propósito general

Más detalles

Francisco Javier Peña Escobar Universidad del Valle

Francisco Javier Peña Escobar Universidad del Valle Francisco Javier Peña Escobar Universidad del Valle franpena@univalle.edu.co Universidad del Valle - 2009 Relaciones entre clases Relaciones entre clases. Herencia. Constructores y destructores. Lista

Más detalles

APUNTES PROII 2º PARCIAL.

APUNTES PROII 2º PARCIAL. APUNTES PROII 2º PARCIAL. MEMORIA DINÁMICA. Hay que distinguir entre: Estática: memoria que se reserva en tiempo de compilación. Dinámica: memoria que se reserva en tiempo de ejecución. 5 pasos: 1. Declaración

Más detalles

Tema 6: Memoria dinámica

Tema 6: Memoria dinámica : Programación 2 Curso 2013-2014 Índice 1 2 3 El tamaño es fijo y se conoce al implementar el programa Declaración de variables int i=0; char c; float vf[3]={1.0, 2.0, 3.0}; i c vf[0] vf[1] vf[2] 0 1.0

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona

Más detalles

Seminario C++ Introducción a la programación orientada a objetos. Parte IV v Cristina Cachero Pedro J. Ponce de León

Seminario C++ Introducción a la programación orientada a objetos. Parte IV v Cristina Cachero Pedro J. Ponce de León Seminario C++ Introducción a la programación orientada a objetos Parte IV v. 20070918 Cristina Cachero Pedro J. Ponce de León Departamento de Lenguajes y Sistemas Informáticos Universidad de Alicante Indice

Más detalles

Programación C++ (5 Parte) Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional

Programación C++ (5 Parte) Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional Programación C++ (5 Parte) Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional Polimorfismo, métodos virtuales y estáticos Todos los métodos vistos hasta ahora son estáticos, estos

Más detalles

Programación Dirigida a Objetos. MATERIAL COMPLEMENTARIO Tema 5.- Herencia

Programación Dirigida a Objetos. MATERIAL COMPLEMENTARIO Tema 5.- Herencia Tema 5.- Herencia 1. Herencia múltiple en C++: ambigüedad de nombres...2 2. Herencia en SMALLTALK...4 2.1. Determinación de los métodos a ejecutar: self y super...4 2.2. Herencia de métodos y variables

Más detalles

Polimorfismo y Métodos Virtuales. Agustín J. González ELO329

Polimorfismo y Métodos Virtuales. Agustín J. González ELO329 Polimorfismo y Métodos Virtuales Agustín J. González ELO329 1 Jerarquía de clases Motor Consideremos la jerarquía de clases establecida en la sesión sobre Herencia: Motor ElectricMotor GasMotor 2 Clase

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase

Más detalles

Introducción a la Programación orientada a objetos con C++

Introducción a la Programación orientada a objetos con C++ Introducción a la Programación orientada a objetos con C++ Informática Industrial Ing. en automática y electrónica Industrial Isidro Calvo Informática Industrial 2006/07 2 Objetivos principales Exponer

Más detalles

Objetos y memoria dinámica

Objetos y memoria dinámica Objetos memoria dinámica 1. Punteros a objetos 2. Vectores dinámicos de objetos 3. Uso de objetos dinámicos 4. Atributos dinámicos 5. Creación de objetos con atributos dinámicos 6. Destrucción de objetos

Más detalles

Programación orientada a objetos II

Programación orientada a objetos II Repaso de conceptos Programación orientada a objetos II Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributos! Métodos! Cambio de enfoque! Constructor! Creación

Más detalles

Polimorfismo en C++ y Métodos Virtuales. Agustín J. González ELO329

Polimorfismo en C++ y Métodos Virtuales. Agustín J. González ELO329 Polimorfismo en C++ y Métodos Virtuales Agustín J. González ELO329 Jerarquía de clases Motor Recordemos la jerarquía de clases establecida para el estudio sobre Herencia: Motor ElectricMotor GasMotor Diseño

Más detalles

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

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Empresa Videojuegos (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Rectangulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores Programación Orientada a Objetos Resumen de Temas Unidad 3: Constructores y destructores 3.1 Conceptos de métodos constructor y destructor Java inicializa siempre con valores por defecto las variables

Más detalles

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos Academia de computación de IE, ICA e ISISA Unidad didáctica Programación Orientada a Objetos Elaboración y diseño de cien reactivos de opción múltiple para la unidad didáctica programación orientada a

Más detalles

Temas. Taller III 2007 Gentile,Vazquez

Temas. Taller III 2007 Gentile,Vazquez Temas Arreglos de Objetos Punteros de Objetos Arreglos de Punteros de Objetos Constructor de Copia Herencia Constructores y Destructores en Herencia Accesibilidad en Herencia 1 Arreglo de objetos Televisor

Más detalles

Universidad Nacional del Santa E.A.P. Sistemas e Informática Microcomputación III

Universidad Nacional del Santa E.A.P. Sistemas e Informática Microcomputación III HERENCIA Se entiende por herencia el proceso por el que un objeto puede tomar características de otro objeto. La herencia Se puede usar de dos formas: 1. Cuando una clase escrita no llega a cubrir las

Más detalles

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente:

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente: La Herencia Es la capacidad de compartir atributos y métodos entre clases. Es la propiedad que permite definir nuevas clases usando como base clases ya existentes. La nueva clase (clase derivada) hereda

Más detalles

5. El Polimorfismo Superposición y sobrecarga

5. El Polimorfismo Superposición y sobrecarga 5. El Polimorfismo Con este capítulo se tendrán las herramientas básicas para el desarrollo de un buen programa en C++. Aún quedaría el uso de plantillas, pero estas pueden ser sustituidas en muchos casos

Más detalles

Tres elementos esenciales de la programación orientada a objetos

Tres elementos esenciales de la programación orientada a objetos Tres elementos esenciales de la programación orientada a objetos Abstracción Herencia Polimorfismo Modelado en objetos importancia del diagrama de clases: es el diagrama esencial para UML es eldepositorio

Más detalles

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ OBJETIVO En este documento se presentan las construcciones básicas de orientación a objetos del lenguaje de programación C++, y recomendaciones

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS GRADO EN INGENIERÍA INFORMÁTICA SEGUNDO CURSO DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO ESCUELA POLITÉCNICA SUPERIOR UNIVERSIDAD DE CÓRDOBA CURSO ACADÉMICO: 2011

Más detalles

Tema 1. Herencia y Polimorfismo

Tema 1. Herencia y Polimorfismo ÍNDICE EDA. Unidad didáctica I: Conceptos de Java para Estructuras de Datos Tema 1. Herencia y Polimorfismo 1. Relaciones entre clases: Reutilización del software. 2. La Herencia como soporte Java del

Más detalles

La Herencia: Teoría (1)

La Herencia: Teoría (1) Introducción a la Herencia Presentación basada en: 1. Construcción de Software Orientado a Objetos. Bertrand Meyer.1998. 2. Java 2., Curso de programación. Fco. Javier Ceballos. Ed. Alfoomega&RA-MA, 2003.

Más detalles

B.- Ejercicio de Herencia y Polimorfismo: FORMAS

B.- Ejercicio de Herencia y Polimorfismo: FORMAS B.- Ejercicio de Herencia y Polimorfismo: FORMAS 1. Defina una clase Forma que tenga los siguientes miembros de datos: - Color - Coordenada del centro de la forma (objeto Punto) - Nombre de la forma (char

Más detalles

Tema 13: Apuntadores en C

Tema 13: Apuntadores en C Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción

Más detalles

TEMA 5: Subprogramas, programación modular

TEMA 5: Subprogramas, programación modular TEMA 5: Subprogramas, programación modular 5.1.-Definición de módulo. Programación modular La programación modular está basada en la técnica de diseño descendente, que como ya vimos consiste en dividir

Más detalles

Herencia y Clases Abstractas

Herencia y Clases Abstractas Herencia y Clases Abstractas Reutilización de código y código genérico ELO329: Diseño y Programación Orientados a Objetos Introducción La idea básica es poder crear clases basadas en clases ya existentes.

Más detalles

PUBLICACIÓN DEL ENUNCIADO: Semana del 10 de noviembre de ENTREGA: Clase de laboratorio de la semana del 8 de diciembre de 2003.

PUBLICACIÓN DEL ENUNCIADO: Semana del 10 de noviembre de ENTREGA: Clase de laboratorio de la semana del 8 de diciembre de 2003. TELECOMUNICACIÓN Página 12 PRÁCTICAS 6ª, 7ª y 8ª: Operaciones con polinomios. OBJETIVOS: Repaso de listas dinámicas. Objetos como datos miembro de otros objetos (introducción a la herencia). Objetos con

Más detalles

Definición y Conversión de datos. Agustín J. González ELO-329

Definición y Conversión de datos. Agustín J. González ELO-329 Definición y Conversión de datos Agustín J. González ELO-329 1 Calificador Const El calificador const previene que un objeto sea modificado con posterioridad a su definición. El objeto calificado como

Más detalles

Herencia. Hay clases que comparten gran parte de sus características.

Herencia. Hay clases que comparten gran parte de sus características. Herencia Hay clases que comparten gran parte de sus características. El mecanismo conocido con el nombre de herencia permite reutilizar clases: Se crea una nueva clase que extiende la funcionalidad de

Más detalles

Necesidad de la herencia pertenencia variedad is a has a herencia variedad definir una clase modificando una o más clases añadir nuevos miembros

Necesidad de la herencia pertenencia variedad is a has a herencia variedad definir una clase modificando una o más clases añadir nuevos miembros Necesidad de la herencia La mente humana clasifica los conceptos de acuerdo a dos dimensiones: pertenencia y variedad. Se puede decir que el Ford Fiesta es un tipo de coche (variedad o, en inglés, una

Más detalles

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA Implementación de conceptos P.O.O. en Java Temario 2. Conceptos de Programación Orientada a Objetos 1. Conceptos de P.O.O. 2. Implementación de conceptos P.O.O

Más detalles

Polimorfismo. Taller III 2007 Gentile,Vazquez

Polimorfismo. Taller III 2007 Gentile,Vazquez Polimorfismo Definición. Implementación del Polimorfismo. Polimorfismo en C++ - Ejemplo de Funciones Virtuales. Polimorfismo - funcionamiento Clases Abstractas Funciones virtuales puras. Ejemplos en C++.

Más detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 2: Jerarquía de clases en Java Objetivos Implementar una jerarquía de clases para crear una aplicación en Java Comprender

Más detalles

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +. APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje

Más detalles

Programación orientada a Objetos (POO) La POO está compuesta por una serie de elementos que se detallan a continuación.

Programación orientada a Objetos (POO) La POO está compuesta por una serie de elementos que se detallan a continuación. Clase 3: 22/08/2016 Programación orientada a Objetos (POO) La POO está compuesta por una serie de elementos que se detallan a continuación. Clase Una clase es un modelo que se utiliza para crear objetos

Más detalles

Tema 6. Gestión dinámica de memoria

Tema 6. Gestión dinámica de memoria Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la

Más detalles

Sobrecarga de Operadores II

Sobrecarga de Operadores II D é c i m o q u i n t a S e s i ó n Metodologías y Técnicas de Programación II Programación Orientada a Objeto (POO) C++ Sobrecarga de Operadores II 1 Sobrecarga de operadores unitarios (o unarios) Son

Más detalles

Programación I Unidad III. Tema: Tipos, estructuras y uniones

Programación I Unidad III. Tema: Tipos, estructuras y uniones Programación I Unidad III Tema: Tipos, estructuras y uniones El especificador typedef La palabra reservada typedef representa un especificador de clase de almacenamiento, y se utiliza para definir nuevos

Más detalles

Introducción a OOP. Programación Orientada a Objeto

Introducción a OOP. Programación Orientada a Objeto Introducción a OOP Programación Orientada a Objeto Evolución Programación no Estructurada, Programación procedimental, Programación modular y Programación orientada a objetos. Programación no Estructurada

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1 Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1 Contenidos: 1. Características generales de C++ 2. Entrada/salida estándar 3. Variables y tipos de datos

Más detalles

Funciones Definición de función

Funciones Definición de función Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas

Más detalles

Generalidades sobre el concepto de herencia

Generalidades sobre el concepto de herencia 5 Herencia en C++ - 1 - Herencia en C++ Generalidades sobre el concepto de herencia...1 Herencia Simple...3 Ventajas e inconvenientes de la derivación Privada y Protegida...7 Constructores y Destructores

Más detalles

Clases y herencia. FJP Unidad 8. Diseño de clases

Clases y herencia. FJP Unidad 8. Diseño de clases Clases y herencia FJP Unidad 8 Encapsulamiento Diseño de clases El encapsulamiento provee protección de atributos y métodos definidos en una clase de forma tal que comportamiento de objetos de una clase

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN

INTRODUCCIÓN A LA PROGRAMACIÓN INTRODUCCIÓN A LA PROGRAMACIÓN ANEXO 2 El paradigma orientado a objetos INTRODUCCIÓN 1) Programación orientada a objetos (P.O.O.) Un proyecto de software es complejo. Las GUI 1, acceso transparente a datos

Más detalles

Punteros y Memoria Dinámica II

Punteros y Memoria Dinámica II Repaso Punteros y Memoria Dinámica II Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es! Memoria! Qué necesita el compilador para acceder a una variable?! Punteros! Operadores &

Más detalles

Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional

Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional Programming Language Popularity: The TCP Index for December, 2012 La noción de clase en C++ C++ fue

Más detalles

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas Tema 1. Programación modular Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 1.1. Objetivos Repasar brevemente mediante ejemplos los elementos principales del lenguaje

Más detalles

Conceptos Básicos. I. López

Conceptos Básicos. I. López Conceptos Básicos I. López Correspondencia de terminología UML y C++ UML C++ Clase Clase (declaración en.h) Atributos Miembros de datos (declaración en.h) Operaciones Miembros de función (declaración en.h)

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

Programación I Teoría II.

Programación I Teoría II. Programación I Teoría II http://proguno.unsl.edu.ar proguno@unsl.edu.ar MODULARIDAD FUNCIONES EN C Modularidad Principio para resolución de problemas: Dividir para reinar Modularidad Módulo Función Procedimiento

Más detalles

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara.

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara. Constructores Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara. Los constructores tienen el mismo nombre

Más detalles

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos Construyendo clases nuevas La forma más simple de una clase en Java es: Class Nombre_de_la_Clase { } /* constructores */ /* métodos

Más detalles

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

CONTENIDOS. 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno CONTENIDOS 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno 2. Redefinición de métodos. 3. Jerarquía de clases. 4. Ejecución de los pasos de mensajes con Herencia. 5. Problemas con

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM. Programación en Java Diciembre 2010 Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia

Más detalles

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos)

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos) 3. Indicar la salida por pantalla (2 puntos-20 minutos) #include class EUITIelemento; class EUITIpila int num; EUITIelemento *pila[10]; EUITIpila():num(0); bool push(euitielemento *in) if(num>=10)return

Más detalles

Introducción a C++ Índice

Introducción a C++ Índice Introducción a C++ 1. 2. 3. 4. 5. 6. Índice 1. Diferencias entre C y C++. 2. Diferencias entre C++ y Java. 3. Ejemplos. 4. Funciones. 5. Memoria dinámica 6. Librería de funciones. 1 1. Diferencias entre

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Jorge M. Finochietto UNC-CONICET 2010 Jorge M. Finochietto (UNC-CONICET) Programación Orientada a Objetos en C++ 2010 1 / 68 1 Introducción 2 Declaración 3 Constructores

Más detalles

Memoria en C++ Punteros - Referencias Clases Y ahora, a trabajar! Memoria Dinámica en C++

Memoria en C++ Punteros - Referencias Clases Y ahora, a trabajar! Memoria Dinámica en C++ Qué es una variable? Variables Memoria Matemática: una etiqueta que representa a un valor en una expresión: f (y) = y 2 + 2y Programación: Nombre simbólico dado a un valor residente en la memoria. Propiedades

Más detalles

TEMA 8: Gestión dinámica de memoria

TEMA 8: Gestión dinámica de memoria TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras

Más detalles

C++ me gusta++ Dr. Arno Formella. formella Universidad de Vigo Departamento de Informática E Ourense

C++ me gusta++ Dr. Arno Formella.  formella Universidad de Vigo Departamento de Informática E Ourense C++ me gusta++ Dr. Arno Formella http://www.ei.uvigo.es/ formella Universidad de Vigo Departamento de Informática E-32004 Ourense 21 de febrero de 2003 1 Índice 1. Clases 3 2. Punteros y referencias 3

Más detalles

Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones.

Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones. Programación II. Guía 8 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones. Objetivos Diferenciar sobrecarga de operadores

Más detalles

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2009/2010 Nombre:... Fecha: / 11 / 2009 HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS Esta hoja de ejercicios

Más detalles

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

Manejo de Punteros y objetos en memoria dinámica en C++ Agustín J. González ELO 329 Manejo de Punteros y objetos en memoria dinámica en C++ Agustín J. González ELO 329 Asignación Dinámica Asignación Dinámica es la creación de un objeto mientras el programa está en ejecución. Para ello

Más detalles

Implementación de las Clases Pila, Cola, Lista y Arbol

Implementación de las Clases Pila, Cola, Lista y Arbol 1/1 Implementación de las Clases Pila, Cola, Lista y Arbol Josefina Sierra Santibáñez 28 de noviembre de 2017 2/1 Implementación de Estructuras de Datos Implementaremos cada estructura de datos en dos

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

Apunte de clase C++ C++ introduce la posibilidad de realizar comentarios de una sola línea a partir de una doble barra de división "//"

Apunte de clase C++ C++ introduce la posibilidad de realizar comentarios de una sola línea a partir de una doble barra de división // Apunte de clase C++ Diferencias entre C y C++ Comentario de una sola línea C++ introduce la posibilidad de realizar comentarios de una sola línea a partir de una doble barra de división "//" int a, b;

Más detalles

Herencia en C# Contenido

Herencia en C# Contenido Herencia en C# Contenido Descripción general 1 Derivación de clases 3 Implementación de métodos 11 Uso de clases selladas 22 Uso de interfaces 24 Uso de clases abstractas 31 Herencia en C# i Notas para

Más detalles

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN. OOP y C++ Un lenguaje para Programadores Carlos PLATERO Indice 0.- OOP 1.-. Objetivos, palabras clave, reglas prácticas, consejos 2.- CLASES Y OBJETOS. Extensión del concepto de estructura en C 3.- HERENCIA.

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 5 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

POO PROGRAMACIÓN ORIENTADA A OBJETOS

POO PROGRAMACIÓN ORIENTADA A OBJETOS POO PROGRAMACIÓN ORIENTADA A OBJETOS 1 Programación estructurada, consiste en descomponer el problema objeto de resolución en subproblemas y más subproblemas hasta llegar a acciones muy simples y fáciles

Más detalles

05/23/2002 Programación Orientada a Objetos. Programación Orientada a Objetos. Iván Bernal, Ph.D. 4

05/23/2002 Programación Orientada a Objetos. Programación Orientada a Objetos. Iván Bernal, Ph.D. 4 Programación Orientada a Objetos Clase # 7 Polimorfismo Jueves, 23 de Mayo de 2002 Agenda Polimorfismo. Operadores new y delete Iván Bernal, Ph.D. Escuela Politécnica Nacional email: imbernal@mailfie.epn.edu.ec

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización Programación orientada a objetos Resumen de Temas Unidad 6: Polimorfismo y reutilización 6.1 Concepto de Polimorfismo Polimorfismo quiere decir "un objeto y muchas formas". Esta propiedad permite que un

Más detalles

Punteros y Memoria Dinámica I

Punteros y Memoria Dinámica I Memoria Punteros y Memoria Dinámica I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es! Lugar donde almacenan los datos y las instrucciones! Compuesta de un gran número de bytes!

Más detalles

PUNTEROS (Apuntadores)

PUNTEROS (Apuntadores) PUNTEROS (Apuntadores) Unidad III INTRODUCCIÓN A PUNTEROS. CONCEPTOS BÁSICOS. DECLARACIÓN DE PUNTEROS. PUNTEROS Como una colección de posiciones de memoria consecutivas. En ella se almacenan los distintos

Más detalles

4.1. Definición de herencia

4.1. Definición de herencia CAPÍTULO 4. LA HERENCIA. 103 sido desarrollados respondiendo a necesidades de la programación de alto nivel, por lo que en muchos casos intentaremos hacer hincapié en la aplicación de lo que se explica.

Más detalles

Introducción a C++. Asignatura Estructuras de Datos Curso 2017/2018 ETSISI UPM

Introducción a C++. Asignatura Estructuras de Datos Curso 2017/2018 ETSISI UPM Introducción a C++. Asignatura Estructuras de Datos Curso 2017/2018 ETSISI UPM C vs. C++ C es un lenguaje procedural el elemento central del son las funciones. Cualquier función se puede comunicar con

Más detalles

PARADIGMA DE POO - CLASES

PARADIGMA DE POO - CLASES PARADIGMA DE POO - CLASES Los programas estructurados se basan en estructuras de control bien definidas, bloques de código, subrutinas independientes que soportan recursividad y variables locales. La esencia

Más detalles

A3F. Polimorfismo. Carlos Fontela

A3F. Polimorfismo. Carlos Fontela Polimorfismo Carlos Fontela cfontela@fi.uba.ar Temario Métodos virtuales Métodos abstractos Polimorfismo como concepto Interfaces Clases internas 2c2010 2 cb := CuentaBancaria new. cc := CuentaCorriente

Más detalles

Los Constructores(1)

Los Constructores(1) Java: Definición de Clases y Objetos Presentación basada en: 1. Como Programar en Java. Deitel y Deitel. Ed. Prentice-Hall. 1988 2. Java 2., Curso de programación. Fco. Javier Ceballos. Ed. Alfoomega&RA-MA,

Más detalles

Contenido. Prefacio Orígenes de la programación orientada a objetos... 1

Contenido. Prefacio Orígenes de la programación orientada a objetos... 1 Prefacio... xv 1. Orígenes de la programación orientada a objetos... 1 1.1 La crisis del software... 1 1.2 Evolución del software... 3 1.3 Introducción a la programación orientada a procedimientos... 4

Más detalles