Introducción a la herencia

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

Download "Introducción a la herencia"

Transcripción

1 Departamento de Informática Universidad de Vallalid Programación III.I.T.I. de Sistemas Herencia 1 Contenis Programación III.I.T.I. de Sistemas Introducción a la herencia Contenis Definiciones Jerarquías de herencia Polimorfismo Tipo estático y dinámico Ligadura dinámica Clases y métos diferis Problemas asocias al polimorfismo Genericidad restringida Félix Prieto Curso 2008/09 Programación III.I.T.I. de Sistemas Herencia 2 Una clase ancestro Programación III.I.T.I. de Sistemas Herencia 3 Una clase desciente class POLIGONO create Acceso contar: INTEGER Número de vértices perimetro: DOUBLE is Suma de las longitudes de los las muestra is Representación en pantalla Modificación rota (c:punto;a: DOUBLE) is en torno a c con ángulo a traslada (a,b:double) is a en horizontal y b en vertical {NONE} Implementación vertices: LINKED_LIST[POINT] Puntos que lo definen Class POLIGONO class RECTANGULO POLIGONO redefine perimetro create Creación (c:punto;s1,s2,a:double) is Creación con centro c, las s1 y s2 y ángulo a con respecto a la horizontal Acceso la1, la2 : DOUBLE diagonal : DOUBLE Longitudes específicas perimetro: DOUBLE is Suma de las longitudes de los las Result:= la1 2 + la2 2 Class RECTANGULO Programación III.I.T.I. de Sistemas Herencia 4 Primeras definiciones Programación III.I.T.I. de Sistemas Herencia 5 Jerarquía de herencia de las figuras Llamaremos clase desciente de C a: la propia clase C cualquier clase con una clausula D nde D es desciente de C Diremos que B es desciente propio de C si es desciente suyo y ambas son distintas También utilizaremos expresiones como ancestro Los descientes disponen de todas las características de sus ancestros Los descientes pueden redefinir características de sus ancestros (redefine), aunque con ciertas restricciones (frozen, compatibilidad entre interfaces, programación bajo contrato) La condición de méto de creación en los ancestros no se mantiene en sus descientes Programación III.I.T.I. de Sistemas Herencia 6 Jerarquía de herencia de SmartEiffel Programación III.I.T.I. de Sistemas Herencia 7 Polimorfismo GENERAL PLATFORM ANY Polimorfismo es la habilidad de las referencias para estar conectadas a objetos de tipos distintos El número de tipos a que puede estar conectada una referencia está limita por las reglas que se deducen de la herencia Estas limitaciones pueden ser vistas desde distintos enfoques NONE

2 Programación III.I.T.I. de Sistemas Herencia 8 Límites al polimorfismo (mensajes) Programación III.I.T.I. de Sistemas Herencia 9 Límites al polimorfismo (conformidad) En una llamada x.f nde el tipo de x está basa en una clase C debe ocurrir que f sea característica de uno de los ancestros de C Las restricciones al polimorfismo deben garantizar que al ejecutar un código como x.f el objeto referencia por x sea capaz de responder al mensaje f Tampoco podemos mandar al objeto mensajes que no entería x, esto es, los declaras en sus descientes Al «disfrazar» un objeto mediante polimorfismo perdemos su tipo real. Podemos tratar de recuperarlo mediante un intento de asignación (?=) x:c sólo puede usarse para referenciar a objetos creas a partir de una clase desciente de C Programación III.I.T.I. de Sistemas Herencia 10 Límites al polimorfismo (instancias) En caso de tipos no genéricos un tipo T es conforme con un tipo U si y sólo si la clase base de T es desciente de la clase base de U En caso de tipos genéricos un tipo T es conforme con un tipo U si y sólo si la clase base de T es desciente de la clase base de U y cada parámetro actual utiliza para derivar T es conforme con el correspondiente parámetro utiliza para derivar U Una conexión de fuente x y objetivo y es válida si y sólo si el tipo de x es conforme con el tipo de y Programación III.I.T.I. de Sistemas Herencia 11 Tipo estático y dinámico Una instancia directa de una clase C es un objeto consegui en tiempo de ejecución mediante una clausula de creación create x, con x de tipo C Una instancia de C es un objeto instancia directa de algún desciente de C Una entidad de tipo basa en C sólo puede ser conectada en tiempo de ejecución a instancias de C Las entidades, identificares en el texto de una clase, tienen tipo estático y dinámico. El primero es fijo mientras el segun puede variar en tiempo de ejecución Las referencias, que sólo existen en tiempo de ejecución, tienen el tipo dinámico del objeto al que están conectadas (o NONE si la referencia apunta a Void ). El tipo de las referencias es variable Los objetos apuntas por las referencias tienen sólo tipo dinámico, pero es el tipo con el que fueron creas y no puede cambiar Programación III.I.T.I. de Sistemas Herencia 12 Formas de ligadura Programación III.I.T.I. de Sistemas Herencia 13 Ligadura dinámica En el código de un méto pueden aparecer llamadas como p.perimetro con p:poligono Disponemos de s definiciones del méto, una en POLIGONO y otra en RECTANGULO Gracias al polimorfismo el objeto que recibe el mensaje puede ser de cualquiera de los s tipos Cuál de las s versiones del méto se ejecutará? ligadura estática: La asociada al tipo estático de x ligadura dinámica: La asociada al tipo dinámico de x Cada lenguaje etermina el tipo de ligadura que será utilizada En Eiffel se utiliza por defecto la ligadura dinámica Forzamos la ligadura estática utilizan frozen En una llamada x.f la versión del méto realmente ejecutada se determina en tiempo de ejecución La versión del méto elegida es la definida en la clase base del objeto que recibe la llamada Podemos «imaginar» que el objeto responde ejecutan el único méto que conoce Pero es evidente que al compilar se almacenan en el ejecutable todas las versiones disponibles del méto, para su posterior selección en tiempo de ejecución Programación III.I.T.I. de Sistemas Herencia 14 Transformación sobre figuras Programación III.I.T.I. de Sistemas Herencia 15 Definiciones diferidas cambia is En el código de FIGURA rota(.) traslada() o alternativamente cambia is En el código de una clase con f:figura f.rota(.) f.traslada() El código se basa en la «promesa» de que todas las figuras trán una implementación de rota y traslada Necesitamos una garantía «sintáctica» de que estas definiciones siempre estarán presentes Podemos escribir definiciones «sin código» en FIGURA, pero eso no garantiza que tos los descientes redefinan los métos con alguna implementación efectiva En la clase figura rota (c:punto;a: DOUBLE) is en torno a c con ángulo a deferred traslada (a,b:double) is a en horizontal y b en vertical deferred Podemos añadir a FIGURA definiciones diferidas de rota y traslada Las definiciones diferidas determinan cómo será la interfaz de las características en los descientes La programación bajo contrato nos permitirá fijar desde el ancestro parte del comportamiento de las características en los descientes

3 Programación III.I.T.I. de Sistemas Herencia 16 Clases diferidas Programación III.I.T.I. de Sistemas Herencia 17 Sintáxis de la redeclaración Diremos que una clase es diferida cuan alguna de sus características lo es, en caso contrario es efectiva La definición de las clases diferidas comienza obligatoriamente por deferred Class (incluso cuan todas sus características diferidas provengan de sus ancestros) Un tipo es diferi si está basa en una clase diferida El tipo de una instrucción de creación no puede ser diferi Aunque las entidades pueden ser de un tipo diferi, los objetos siempre son de un tipo efectivo En los diagramas las clases y características diferidas se identifican con letra cursiva Tipos de redeclaración (declaración en ) a diferida a efectiva de diferida redefinición concreción (redefine) ninguna de efectiva indefinición redefinición (undefine) (redefine) export{<c>} para cambiar la exportación rename y select para herencia repetida Precursor para ejecutar el código del padre Programación III.I.T.I. de Sistemas Herencia 18 Eliminan alternativas múltiples Programación III.I.T.I. de Sistemas Herencia 19 Abreviaturas en la creación Deseamos escribir una fecha en determina idioma, variable en tiempo de ejecución Podemos encapsular el código de cada idioma en una alternativa múltiple Podemos utilizar polimorfismo, clases diferidas y ligadura dinámica para obtener el mismo efecto (ver TIME_IN_SOME_LANGUAGE y TIME_IN_SPANISH) Con esta solución minimizamos las operaciones de mantenimiento necesarias para introducir un nuevo idioma El responsable de la creación de cada objeto sabe con qué tipo lo hace, pero ni siquiera es seguro que un sólo objeto conozca tos los tipos posibles x,y:t a,b:u nueva sintáxis create a x:=a sintáxis tradicional!!b y:=b x,y:t nueva sintáxis create {U} x sintáxis tradicional!u!y En ambos casos U debe ser conforme con T Programación III.I.T.I. de Sistemas Herencia 20 Dificultades con el polimorfismo CHICO CLASIFICADO CHICA CLASIFICADA El polimorfismo relaja el de chequeo de tipos Existen situaciones en que eso provoca errores en tiempo de ejecución Gestionamos el alojamiento de esquiares en una competición Los esquiares comparten habitación con un del mismo sexo Los esquiares clasificas disponen de habitación individual Programación III.I.T.I. de Sistemas Herencia 21 Primer ejemplo problemático class compannero: Su de habitación. (otro:) is Fija el del esquiar class Programación III.I.T.I. de Sistemas Herencia 22 Primer ejemplo problemático(ii) Programación III.I.T.I. de Sistemas Herencia 23 Primer ejemplo problemático(iii) redefine compannero, compannero: CHICO (otro:chico) is Redefinimos la interfaz compannero:=otro Podemos usar Precursor(otro)? Para distinguirlo distinto: INTEGER class CHICA redefine compannero, compannero: CHICA (otro:chica) is Redefinimos la interfaz compannero:=otro Podemos usar Precursor(otro)? para distinguirla distinto:real class CHICA is Esquiva las limitaciones entre chicos y chicas s: ; b: CHICO ; g: CHICA create b ; create g s:= b Disfrazo al chico s.(g) no provoca error std_output.put_integer(b.compannero.distinto) error

4 Programación III.I.T.I. de Sistemas Herencia 24 Interludio Programación III.I.T.I. de Sistemas Herencia 25 Segun ejemplo problemático Al redefinir la interfaz de un méto podemos sustituir un tipo por uno conforme con él Como hemos visto en el ejemplo anterior, esta redefinición no necesariamente evita errores en tiempo de ejecución Alternativamente podemos anclar el tipo de una entidad al de otra mediante expresión like <tipo> (like Current incluso) Con anclas no evitaremos el problema del ejemplo anterior Los tipos anclas son sólo conformes con su correspondiente ancla class compannero: like Current Ahora anclamos el atributo (otro:like Current) is Ahora anclamos el argumento class Programación III.I.T.I. de Sistemas Herencia 26 Segun ejemplo problemático(ii) Programación III.I.T.I. de Sistemas Herencia 27 Segun ejemplo problemático(iii) distinto: INTEGER class CHICA distinto: REAL class CHICA is Esquiva las limitaciones entre chicos y chicas s: ; b: CHICO ; g: CHICA create b ; create g s:= b Disfrazo al chico s.(g) no provoca error std_output.put_integer(b.compannero.distinto) error Programación III.I.T.I. de Sistemas Herencia 28 Interludio (II) Programación III.I.T.I. de Sistemas Herencia 29 Tercer ejemplo problemático El polimorfismo también puede evitar la detección de problemas en tiempo de compilación El nivel de exportación de las características impide a ciertos clientes solicitar determinadas tareas. El error sería detecta en tiempo de compilación Pero si un cliente tiene acceso legítimo a una característica, tos sus descientes pueden «ser disfrazas» para conseguir el acceso, al menos en tiempo de compilación Algunos compilares avisan de esta situación mediante un Warning (SmartEiffel 2.3) class compannero: like Current Anclamos el atributo (otro:like Current) is Anclamos el argumento class Programación III.I.T.I. de Sistemas Herencia 30 Tercer ejemplo problemático(ii) Programación III.I.T.I. de Sistemas Herencia 31 Tercer ejemplo problemático(iii) class CLASIFICADO CHICO Pero nadie puede pedirle que comparta habitación export {NONE} class CLASIFICADO is Ejemplo del error s: CHICO; b1,b2: CLASIFICADO create b1 ; create b2 s:= b1 Disfrazo al chico s.(b2) no provoca error Pero ahora b1 comparte el cuarto

5 Programación III.I.T.I. de Sistemas Herencia 32 Genericidad restringida Programación III.I.T.I. de Sistemas Herencia 33 Un vector sumable En las clases genéricas las entidades cuyo tipo es el parámetro formal sólo pueden cualificar los mensajes compris por ANY En otras palabras: Los parámetros formales son conformes sólo con ANY No es esto una excepción? Al definir un parámetro formal podemos establecer el tipo con que será conforme (G > INTEGER por ejemplo) con ello: Aumentamos los mensajes que entien los parámetros formales Disminuimos los tipos utilizables como parámetros formales La genericidad definida como hasta ahora es una abreviatura de G > ANY class VECTOR[G > NUMERIC] ARRAY[G] create,with_capacity,from_collection {ANY} infix "+" (otro: like Current): like current is Suma con otro coherente con Current require lower = otro.lower upper = otro.upper i:integer create Result.(lower,upper) from i:=lower until i> upper loop Result.put(item(i)+otro.item(i),i);i:=i+1 class VECTOR[G]

Introducción a la herencia.

Introducción a la herencia. Programación III Herencia 1 Programación III I.T.Informática de Sistemas Introducción a la herencia. Prof. Félix Prieto Arambillet Departamento de Informática Universidad de Valladolid Curso 2003/2004

Más detalles

Objetivos. Objetivos. Herencia. Objetivos. agregar funcionalidad a una clase existente, sin compilar su nueva definición.

Objetivos. Objetivos. Herencia. Objetivos. agregar funcionalidad a una clase existente, sin compilar su nueva definición. (a) objetivos (b) terminología (c) polimorfismo (d) tipeo y herencia (e) vinculación dinámica de código (f) clases abstractas (g) soporte en JAVA (h) significado de la herencia (i) herencia y aserciones

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

Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016

Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016 Tema 3 Herencia en Java Parte 1 Programación Orientada a Objetos Contenido Introducción. Definición y tipos. Constructores. Redefinición. Polimorfismo. Herencia y sistema de tipos. Ligadura dinámica. Casting

Más detalles

Guía práctica de estudio 08: Polimorfismo

Guía práctica de estudio 08: Polimorfismo Guía práctica de estudio 08: Polimorfismo Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 08: Polimorfismo

Más detalles

Herencia en Eiffel Gerardo Rossel -

Herencia en Eiffel Gerardo Rossel - Herencia en Eiffel Gerardo Rossel - e-mail: grossel@bigfoot.com La intención del presente trabajo es discutir algunos aspectos de la herencia en el Lenguaje Eiffel. Los aspectos a discutir trataran temas

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

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

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

Examen Teórico. Convocatoria de Febrero de 2015

Examen Teórico. Convocatoria de Febrero de 2015 Examen Teórico Convocatoria de Febrero de 2015 Nombre: DNI: Grupo: 1. Contesta de forma razonada a las siguientes cuestiones relacionadas con los ficheros.jar: a) Para qué se utilizan los ficheros con

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

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores. Unidad IV Métodos. 4.1 Definición de un método. El polimorfismo, en programación orientada a objetos, se refiere a la posibilidad de acceder a un variado rango de funciones distintas a través del mismo

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

Bloque II. Elementos del lenguaje de programación Java

Bloque II. Elementos del lenguaje de programación Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

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

Apuntes de Programación y estructuras de datos. Control de datos

Apuntes de Programación y estructuras de datos. Control de datos Apuntes de Programación y estructuras de datos. Control de datos Nikos Mylonakis, Fernando Orejas y Ana Cristina Zoltan nicos@lsi.upc.edu Dept. Llenguatges i Sistemes Informátics Universitat Politécnica

Más detalles

09/01/2008. Nombre de la clase. Atributos. Métodos/Operaciones

09/01/2008. Nombre de la clase. Atributos. Métodos/Operaciones Diagramas de Clase Angela Carrillo R. Clase Descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica Implementa una o más interfaces Nombre de la clase

Más detalles

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo. POO104. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación Orientada a Objetos Tema: Funciones Virtuales y Polimorfismo. Materiales y Equipo Computadora con el software C

Más detalles

Programación orientada a objetos. Introducción

Programación orientada a objetos. Introducción Programación orientada a objetos Clases: Polimorfismo Introducción El polimorfismo, en general, es la característica de un lenguaje orientado a objetos que permite que un mismo identificador de método

Más detalles

Nombre de la clase. Atributos. Métodos/Operaciones

Nombre de la clase. Atributos. Métodos/Operaciones Diagramas de Clase Angela Carrillo R. Clase Descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica Implementa una o más interfaces Nombre de la clase

Más detalles

Programación Orientada a Objetos

Programación Orientada a Objetos Programación Orientada a Objetos E.T.S.I. Informática Universidad de Málaga http://www.lcc.uma.es/ Contenido Introducción histórica Conceptos básicos de la Programación O. O. Conceptos avanzados de la

Más detalles

Paradigma Orientado a Objetos Caso de estudio: Squeak Smalltalk. Lenguajes de Programación 2018

Paradigma Orientado a Objetos Caso de estudio: Squeak Smalltalk. Lenguajes de Programación 2018 Paradigma Orientado a Objetos Caso de estudio: Squeak Smalltalk Lenguajes de Programación 2018 Paradigma Orientado a Objetos Abstracción de datos Reusabilidad y mantenimiento Extensibilidad Polimorfismo

Más detalles

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Unidad Didáctica 1 Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ Tema 3 Clases y Objetos Tema 4 Comunicación entre objetos. Algoritmos Tema 5 Herencia y abstracción de datos Tema 6 Diseño de clases TEMA 5: Herencia

Más detalles

Tecnología de Programación

Tecnología de Programación Tecnología de Programación Diego C. Martínez Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur UML - Diagramas de clases El diagrama de clases es un diagrama de la estructura

Más detalles

Herencia. Implementación en Java

Herencia. Implementación en Java Herencia Implementación en Java Herencia Concepto de Herencia Es el mecanismo que permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente

Más detalles

PROCEDIMIENTOS ALMACENADOS

PROCEDIMIENTOS ALMACENADOS Modelado de Base de Datos PROCEDIMIENTOS ALMACENADOS Universidad Politecnica de los Llanos Procedimiento Almacenado Un Procedimiento almacenado es un Objeto de Base de Datos que puede encapsular logica

Más detalles

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos 1 Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente,

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

RTTI y reflexión A3F. Carlos

RTTI y reflexión A3F. Carlos RTTI y reflexión Modelos de objetos Carlos Fontela cfontela@ @fi.uba.ar Temario RTTI (información de tipos en tiempo de ejecución) Reflexión Modelos de objetos en dis stintos lenguajes 1c2011 2 Polimorfismoo

Más detalles

Programación orientada a objetos (I)

Programación orientada a objetos (I) Programación orientada a objetos (I) Introducción a la POO La programación orientada a objetos es la penúltima evolución respecto a las metodologías de programación. En esta entrada veremos algunos de

Más detalles

6. Herencia. Clases abstractas. Genericidad. Clase Object Polimorfismo y ligadura dinámica super Herencia y creación Clases abstractas Genericidad

6. Herencia. Clases abstractas. Genericidad. Clase Object Polimorfismo y ligadura dinámica super Herencia y creación Clases abstractas Genericidad 6. Herencia. Clases abstractas. Genericidad Clase Object Polimorfismo y ligadura dinámica super Herencia y creación Clases abstractas Genericidad 1 Herencia en Java Herencia simple Object es la clase raíz

Más detalles

HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++

HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++ Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2009/2010 Nombre:... Fecha: / 12 / 2009 HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++ Esta hoja de ejercicios

Más detalles

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes Problemas, Algoritmos y Programas PROBLEMA Solución Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar ALGORITMO Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR PROGRAMA Problemas,

Más detalles

CLASE 9 -HERENCIA Y POLIMORFISMO

CLASE 9 -HERENCIA Y POLIMORFISMO CLASE 9 -HERENCIA Y POLIMORFISMO INTRODUCCIÓN Diferentes tipos de objetos con características y comportamiento comunes. lado1 lado2 lado3 color de línea color de relleno punto Triángulo Círculo radio color

Más detalles

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

Tecnología de Programación DCIC UNS

Tecnología de Programación DCIC UNS UML Diagramas de clases El diagrama de clases es un diagrama de la estructura estática del sistema. Un diagrama de clases describe los tipos de objetos en el sistema y las dependencias estáticas que existen

Más detalles

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Examen de Ejemplo Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Parte Teórica (2,5 puntos). La respuesta correcta se indica

Más detalles

Tablas de Dispersión

Tablas de Dispersión Tablas de Dispersión Representación de datos especialmente diseñada para que las operaciones de acceso, inserción y borra por valor o campo clave sean eficientes (tiempo promedio constante, indepiente

Más detalles

MOO - Metodología y Programación Orientada a Objetos

MOO - Metodología y Programación Orientada a Objetos Unidad responsable: Unidad que imparte: Curso: Titulación: Créditos ECTS: 2015 230 - ETSETB - Escuela Técnica Superior de Ingeniería de Telecomunicación de Barcelona 701 - AC - Departamento de Arquitectura

Más detalles

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador HERENCIA Y TIPOS. Las clases con propiedades y funciones comunes se agrupan en una superclase. Las clases que se derivan de una superclase son las subclases. Las clases se organizan como jerarquía de clases.

Más detalles

Programación Orientada a Objetos. Sesión 6: El Elemento adicional del lenguaje orientado a objetos

Programación Orientada a Objetos. Sesión 6: El Elemento adicional del lenguaje orientado a objetos Programación Orientada a Objetos Sesión 6: El Elemento adicional del lenguaje orientado a objetos Contextualización Los lenguajes de programación siempre cuentan con elementos adicionales que pueden funcionar

Más detalles

Compiladores e Intérpretes Análisis Semántico IV

Compiladores e Intérpretes Análisis Semántico IV 1 Compiladores e Intérpretes Análisis Semántico IV Sebastian Gottifredi 2018 Repaso 2 Repaso El análisis semántico es el encargado validar y entender el significado del programa Para esto el analizador

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

Programación Orientada a Objetos

Programación Orientada a Objetos Programación Orientada a Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S.I. Informática Universidad de Málaga Contenido Introducción histórica Conceptos básicos de la Programación

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

Tecnología de la Programación

Tecnología de la Programación Tecnología de la Programación Diseño por contrato David Cabrero Souto Facultad de Informática Universidade da Coruña Curso 2007/2008 Introducción Pruebas de unidad Especificación formal de las propiedades?

Más detalles

Tema 5. Herencia. Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada

Tema 5. Herencia. Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada Tema 5 Herencia Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada Qué es la Herencia? Propiedad de que las instancias de una clase hija tengan acceso a la estructura de datos* y

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

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente. HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la

Más detalles

Programación Orientada a Objetos. Herencia. (2ª parte)

Programación Orientada a Objetos. Herencia. (2ª parte) Programación Orientada a Objetos TEMA 3 Herencia (2ª parte) Facultad de Informática Universidad de Murcia Índice 1.- Introducción 2.- Adaptaciones del lenguaje: - Redefinición vs. Renombramiento - Cambios

Más detalles

CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS. Ing. Martha Tello

CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS. Ing. Martha Tello CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS Ing. Martha Tello Introducción Cuando hacemos referencia a la programación orientada a objetos estamos hablando de una nueva forma de pensar acerca del

Más detalles

NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS

NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS Como se vio en teoría, la definición de una clase consta de dos partes fundamentales: 1 - La declaración de la clase: Indica el nombre de la clase precedido

Más detalles

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos 1 Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente,

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

Herencia y Polimorfismo en C++

Herencia y Polimorfismo en C++ 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

Más detalles

Tema 1: Introducción a las Computadores y Lenguajes de. Programa

Tema 1: Introducción a las Computadores y Lenguajes de. Programa Tema 1: Introducción a las Computadores y Lenguajes de programación: Paradigmas de la programación. Programa Arquitectura del Computador Input Células de memoria Información (words) Dirección Output w

Más detalles

Ejercicios de introducción a la herencia

Ejercicios de introducción a la herencia Programación III. I.T. Informática de Sistemas Ejercicios de introducción a la herencia Curso 2008 09 Ejercicio 1 Completar las definiciones de las clases polígono y rectángulo que se utilizaron en clase,

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!

Más detalles

Introducción a c++ Introducción a la programación EIS Informática III

Introducción a c++ Introducción a la programación EIS Informática III Introducción a c++ Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas

Más detalles

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos Ficha Técnica Titulación: Grado en Ingeniería Informática Plan BOE: BOE número 108 de 6 de mayo de 2015 Asignatura: Módulo: Programación y Estructura de Datos Curso: 1º Créditos ECTS: 6 Tipo de asignatura:

Más detalles

Concurso: Cuánto sabes de JAVA?

Concurso: Cuánto sabes de JAVA? Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos

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

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

Encapsulamiento, polimorfismo, abstracción y herencia

Encapsulamiento, polimorfismo, abstracción y herencia Encapsulamiento, polimorfismo, abstracción y herencia Dra. Elisa Schaeffer elisa@yalma.fime.uanl.mx 14 de febrero de 2007 MECAS512 Estructura de Datos en C++ TERMINOLOGÍA un objeto = estado + comportamiento

Más detalles

GUÍA DOCENTE ABREVIADA DE LA ASIGNATURA

GUÍA DOCENTE ABREVIADA DE LA ASIGNATURA GUÍA DOCENTE ABREVIADA DE LA ASIGNATURA G40 - Programación Grado en Física Curso Académico 2016-2017 1. DATOS IDENTIFICATIVOS Título/s Grado en Física Tipología Obligatoria. Curso 1 y Curso Centro Módulo

Más detalles

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes. Clases y Objetos Java es un lenguaje orientado a objetos que incorpora un gran número de clases predefinidas organizadas en paquetes. La programación en Java supone definir clases de forma jerárquica,

Más detalles

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes. Clases y Objetos Java es un lenguaje orientado a objetos que incorpora un gran número de clases predefinidas organizadas en paquetes. La programación en Java supone definir clases de forma jerárquica,

Más detalles

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación COMENTARIOS Microsoft Visual Basic interpreta que todo lo que está a la derecha del carácter ( ) en una línea cualquiera de programa es un comentario y no ejecuta acción alguna.

Más detalles

Introducción a Java. Introducción a Java. Programación I

Introducción a Java. Introducción a Java. Programación I Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32

Más detalles

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,

Más detalles

Programación Orientada a Objetos

Programación Orientada a Objetos Programación Orientada a Objetos PROGRAMACIÓN ORIENTADA A OBJETOS 1 Sesión No. 4 Nombre: Herencia Contextualización Cuando hablamos de informática podemos contemplar varios elementos que se utilizan dentro

Más detalles

CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B)

CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B) APRENDERAPROGRAMAR.COM CONCEPTO DE INTERFACE Y HERENCIA MÚLTIPLE EN JAVA. IMPLEMENTS. EJEMPLOS Y DIAGRAMAS DE CLASES. (CU00696B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero Fecha

Más detalles

Fundamentos de la POO 1

Fundamentos de la POO 1 Fundamentos de la POO 1 La correcta aplicación de los conocimientos de clases y objetos nos permitirán llegar a los objetivos planteados y a generar programas que puedan ser fáciles de comprender para

Más detalles

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

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Contenidos: 1. Definición de clases 2. Implementación de los métodos 3. Constructores y destructores 4. Objetos

Más detalles

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación. Capitulo 3 Introducción a las aplicaciones de C# Resumen: Item using System; espacios de nombres: Las palabras clave estilo de mayúsculas/minúsculas Pascal public class Bienvenido1 Definición Es una directiva

Más detalles

Lenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados

Lenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados Lenguajes de programación Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Teórica - clase 3 Introducción a la programación imperativa Las computadoras

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

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Más detalles

Examen Teórico. Convocatoria de Febrero de 2018

Examen Teórico. Convocatoria de Febrero de 2018 Examen Teórico Convocatoria de Febrero de 2018 Nombre: DNI: Grupo: 1. Dado un proyecto Java en Eclipse que tiene como clase principal proyecto.programa y requiere de la librería matemática de Apache commons-math.jar,

Más detalles

Lenguajes de Programación Soluciones a pruebas de nivel

Lenguajes de Programación Soluciones a pruebas de nivel Lenguajes de Programación Soluciones a pruebas de nivel Pedro García López pgarcia@etse.urv.es/ Grid Computing Se trata de modelar en un lenguaje orientado a objetos (Java) el problema de computación de

Más detalles

TEMA 7. ARRAYS (LISTAS Y TABLAS).

TEMA 7. ARRAYS (LISTAS Y TABLAS). TEMA 7. ARRAYS (LISTAS Y TABLAS). En capítulos anteriores se han descrito las características de los tipos de datos básicos o simples (carácter, entero y coma flotante). Asimismo, se ha aprendido a definir

Más detalles

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS Programación en Fortran Valentín Moreno ÍNDICE 1. Subprogramas 2. Funciones 3. Subrutinas 2 3 1. SUBPROGRAMAS 1. SUBPROGRAMAS Si necesitamos usar con frecuencia

Más detalles

Conceptos de Programación Orientada a Objetos

Conceptos de Programación Orientada a Objetos Paradigmas de programación Prog. orientada a objetos Conceptos de Programación Orientada a Objetos Abstracción de Programación estructurada Programación imperativa 2 Programación estructurada (I) Programación

Más detalles

Tema 1. Introducción a la Programación Orientada a Objetos

Tema 1. Introducción a la Programación Orientada a Objetos Tema 1. Introducción a la Programación Orientada a Objetos Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Informática. Universidad de Málaga Programación Orientada a Objetos Dpto. Lenguajes y Ciencias

Más detalles

Unidad 2. Elementos Intermedios del Lenguaje

Unidad 2. Elementos Intermedios del Lenguaje Unidad 2 Elementos Intermedios del Lenguaje Paradigmas de Programación Un paradigma de programación se refiere a la forma en que se entiende, diseña y desarrolla una aplicación Imperativo Declarativo Funcional

Más detalles

Guía práctica de estudio 04: Clases y objetos

Guía práctica de estudio 04: Clases y objetos Guía práctica de estudio 04: Clases y objetos Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 04: Clases y

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

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

Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Herencia. Polimorfismo y ligadura. Clase object. Casting. Compatibilidad de tipos. Clases abstractas.

Más detalles

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático c 2001 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado

Más detalles

Práctica 8. Diseño de tipos: clase PolinomioEntero. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Práctica 8. Diseño de tipos: clase PolinomioEntero. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0. Práctica 8 Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Objetivo Implementar un tipo de datos PolinomioEntero usando

Más detalles

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016 Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Clase Object. Autoboxing. Igualdad de objetos. Copia de objetos.

Más detalles