Introducción a la herencia.

Documentos relacionados
Introducción a la herencia

Representaciones Contiguas (I)

Herencia en Eiffel Gerardo Rossel -

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

Guía práctica de estudio 08: Polimorfismo

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

PSU Matemática NM-4 Guía 23: Isometrías. Nombre: Curso: Fecha: -

Unidad 7 Figuras planas. Polígonos

Transformaciones Isométricas

CUADRADO. El área de esta figura se calcula mediante la fórmula: Área del cuadrado = lado al cuadrado

Programación Orientada a Objetos

Corrección y Robustez (2ª parte)

La asignatura de Matemática estimula el desarrollo de diversas habilidades:

Coordenadas polares. Facultad de Ciencias UNAM Geometría Analítica I. Prof. Esteban Rubén Hurtado Cruz 1

Contenidos y sub-contenidos

Colegio Fernando de Aragón Departamento de matemática Prof. Sergio Moreno SEMEJANZA N 15 NOMBRE: II FECHA: / /201

GUÍA NÚMERO 22 TRANSFORMACIONES ISOMÉTRICAS

4 o E.S.O. Matemáticas Refuerzo estival 2017

INSTITUTO RAÚL SCALABRINI ORTIZ CUADRILATERO

ARITMÉTICA. 1. Resolver las siguientes ecuaciones en Q. 2 x + 5. d) ( x ) ( x ) x = x + = x. l) ( ) ( )( ) + = + + o) ( x ) 2.

Clase N 05 MODULO COMPLEMENTARIO. Ángulos y polígonos

(semirrecta) Se llama segmento al conjunto de puntos de una recta, contenidos entre dos puntos dados, llamados extremos:

UNIDAD 2: ELEMENTOS GEOMÉTRICOS

MATEMÁTICAS BÁSICAS UNIVERSIDAD NACIONAL DE COLOMBIA - SEDE MEDELLÍN ÁREA Y PERÍMETRO DE FIGURAS PLANAS Y TEOREMA DE PITÁGORAS

Programación Orientada a Objetos

Clase. Ángulos y polígonos

EGRESADOS. Matemática PROGRAMA. Guía: Generalidades de ángulos, polígonos y cuadriláteros. Ejercicios PSU // L 2. 1.

Taller Mosaicos con GeoGebra. Instituto de GeoGebra UNAM, México

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

5 Repaso del capítulo

DESARROLLO DE HABILIDADES ISOMETRIAS 8

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

INICIACIÓN A GEOGEBRA

Ejercicio Práctico 2 Enunciado

El lenguaje Eiffel Por: Gerardo Rossel

TORNEOS GEOMÉTRICOS Segunda Ronda. Primer Nivel - 5º Año de Escolaridad. Apellido Nombres. DNI Tu Escuela. Localidad Provincia

1º BACH SISTEMA DIÉDRICO III

ARITMÉTICA. 1. Resolver las siguientes ecuaciones en Q. 2 x + 5. d) ( ) 2. g) 0,86 x 0,73 = 1. x = 1 4 3x. = x + + l) ( ) ( )( ) m) ( )( ) ( ) 2

TORNEOS GEOMÉTRICOS 2016 Segunda Ronda. Primer Nivel - 5º Año de Escolaridad. Apellido Nombres.. DNI Tu Escuela. Localidad Provincia

B.- Ejercicio de Herencia y Polimorfismo: FORMAS

UNIVERSIDAD NACIONAL AGRARIA LA MOLINA CENTRO DE ESTUDIOS PREUNIVERSITARIOS QUINTO SEMINARIO DE GEOMETRÍA

10 ACTIVIDADES DE REFUERZO

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

Polígonos y Triángulos

Rectas y Cónicas. Sistema de Coordenadas Cartesianas. Guía de Ejercicios # Encuentre las coordenadas de los puntos mostrados en la figura.

DIBUJO TÉCNICO II EJERCICIOS DE APOYO. Prof. Jesús Macho Martínez

PRESENTACIÓN TODOS LOS APUNTES Y HOJAS DE EJERCICIOS ESTÁN EN EL BLOG QUE HE CREADO PARA MIS CLASES:

UNIT 1: PERIMETER AND AREA OF SHAPES

Guía Práctica Segundos medios

Tema: Funciones Virtuales y Polimorfismo.

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

DIBUJO TÉCNICO II EJERCICIOS DE APOYO. Prof. Jesús Macho Martínez

B23 Curvas cónicas Curvas cónicas

PROBLEMARIO DE GEOMETRIA ANALITICA EN EL PLANO.

PROF: Jesús Macho Martínez

FIGURAS PLANAS. Es una figura plana delimitada por una línea poligonal cerrada.

a) Las mediatrices de un triángulo se cortan en un punto llamado... b) Las bisectrices de un triángulo se cortan en un punto llamado...

SINTAXIS DEL PROGRAMA

El polígono es una porción del plano limitado por una línea poligonal cerrada.

TORNEOS GEOMÉTRICOS Primera Ronda Primer Nivel - 5º Año de Escolaridad Apellido Nombres DNI Tu Escuela.. Localidad Provincia

CORTES AL CUADRADO. Guía para el profesor

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

INSTITUTO RAÚL SCALABRINI ORTIZ GEOMETRIA POLÍGONOS

Ensayo 1 -

PROGRAMACIÓN ORIENTADA A OBJETOS

ANGULOS. La unidad de medida es el grado sexagesimal. La "circunferencia completa " mide 360º (grados sexagesimales). Además considere que.

Tecnología de Programación

Guía del estudiante. Clase 36 Tema: Teorema de Pitágoras. Actividad 1

Polígonos Regulares: Definición de polígono:

Geometría Analítica Agosto 2015

Preguntas Propuestas

INSTITUCIÓN EDUCATIVA TÉCNICA SAGRADO CORAZÓN Aprobada según Resolución No NIT DANE SOLEDAD ATLÁNTICO.

LOS POLÍGONOS (I): TRIÁNGULOS

FM Programa Focalizado. Geometría de proporción. Básico 14

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

TRANSFORMACIONES ISOMÉTRICAS EN EL PLANO CARTESIANO

El punto de unión de cada par de segmentos se denomina ángulo. El numero de lados, ( y por tanto de ángulos) ha de ser mayor o igual a tres.

LA RECTA Y SUS ECUACIONES

Módulo Nº 4. Plan de Nivelación. Matemática. Introducción a la Geometría

MATEMÁTICA 5 BÁSICO GUÍAS DEL ESTUDIANTE LOCALIZACIONES, CARACTERIZACIONES Y TRANSFORMACIONES GEOMÉTRICAS

Herencia: Conceptos básicos

1. En cuál(es) de las siguientes figuras el triángulo F es siempre semejante con el triángulo G? 63º 31º

Programación Orientada a Objetos TEMA 3. Herencia. (2ª parte) Facultad de Informática Universidad de Murcia

LA CIRCUNFERENCIA. La circunferencia es la sección producida por un plano perpendicular al eje.

TEMA 4. TRANSFORMACIONES EN EL PLANO

1. Halla los máximos, mínimos y puntos de inflexión de las siguientes funciones:

EJERCICIOS DE SELECTIVIDAD DE GEOMETRIA

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

Ángulos 1º = 60' = 3600'' 1' = 60''

MOVIMIENTOS EN EL PLANO

MINISTERIO DE EDUCACIÓN PÚBLICA DIRECCIÓN DE DESARROLLO CURRICULAR DEPARTAMENTO DE PRIMERO Y SEGUNDO CICLOS ASESORÍA NACIONAL DE MATEMÁTICA

GEOMETRÍA PLANA 3º E.S.O. Un polígono es una figura geométrica plana y cerrada limitada por tres o más segmentos llamados lados.

2ª.- Halla el valor de Xˆ, Yˆ, Z ˆ, en los siguientes polígonos regulares:

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

UNIVERSIDAD NACIONAL AGRARIA LA MOLINA CENTRO DE ESTUDIOS PREUNIVERSITARIOS CUARTO SEMINARIO DE GEOMETRÍA

Soluciones Nota nº 1

Transcripción:

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

Programación III Herencia 2 Una clase ancestro class POLIGONO create... feature Acceso contador: INTEGER Número de vértices perimetro: DOUBLE is Perímetro del polígono do... muestra is Muestra el polígono por pantalla do... feature Modificación rota (centro:punto; angulo: DOUBLE) is Rota el polígono en torno al centro do... traslada (a,b:double) is Traslada el polígono a en la do... feature {NONE} Implementación vertices: LINKED_LIST[POINT] Puntos que definen el polígono. invariant contador_coherente: contador = vertices.count al_menos_tres_vertices: contador >= 3 Class POLIGONO

Programación III Herencia 3 Una clase ancestro class RECTANGULO inherit POLIGONO redefine perimetro create make feature Creación make(centro:punto; s1,s2,angulo: DOUBLE) is Crea rectángulo con centro, lados y ángulo de rotación respecto a la horizontal do... feature lado1, lado2 : DOUBLE diagonal : DOUBLE Longitudes de lados y diagonal perimetro: DOUBLE is do Result:= lado1 2 + lado2 2 invariant cuatro_lados: contador = 4 primer_lado: lado1= (vertices@1).distancia(vertices@2) segundo_lado: lado2= (vertices@2).distancia(vertices@3) tercer_lado: lado1= (vertices@3).distancia(vertices@4) cuarto_lado: lado2= (vertices@4).distancia(vertices@1) Class RECTANGULO

Programación III Herencia 4 Definición 1 Llamaremos clase desciente de C a: La propia clase C Recursivamente cualquier heredera de una desciente de C Definición 2 Diremos que B es desciente propio de C si es desciente de ella y ambas son distintas. Definición 3 Llamaremos antecesor o ancestro de C a cualquier clase de la que C sea desciente. Regla 1 Un método que tiene la condición de método de creación en un ancestro no mantiene su condición especial en los descientes.

Programación III Herencia 5 Jerarquía de herencia de las guras FIGURA FIGURA_ABIERTA FIGURA_CERRADA perimetro() SEGMENTO POLILINEA POLIGONO ELIPSE perimetro() perimetro() CUADRANGULO RECTANGULO perimetro() lado1() lado2() TRIANGULO CIRCUNFERENCIA perimetro() CUADRADO perimetro()

Programación III Herencia 6 Jerarquía de herencia de SmallEiffel (simplicada) GENERAL PLATFORM ANY NONE

Programación III Herencia 7 El concepto de polimorsmo Definición 4 Si polimorfismo es la habilidad de tener varias formas, para nosotros polimorfismo va a ser la habilidad de las referencias para estar conectadas a objetos de tipos distintos en tiempo de ejecución, aunque siempre con las restricciones que se deducen de la herencia.

Programación III Herencia 8 Límites del polimorsmo Regla 2 En una llamada x.f donde el tipo de x está basado en una clase C debe ocurrir que f sea característica de uno de los ancestros de C Definición 5 Un tipo U es conforme a un tipo T si y solo si la clase base de U es desciente de la clase base de T y, en el caso de tipos genéricos formalmente derivados cada parámetro actual de U es conforme a cada parámetro actual de T. Regla 3 Una conexión de fuente x y objetivo y es válida si el tipo de x es conforme con el tipo de y.

Programación III Herencia 9 Nueva visión de la instancia Definición 6 Una instancia directa de una clase es un objeto en tiempo de ejecución conseguido mediante una clausula de creación create x donde x es de tipo C, o mediante la clonación de una instancia directa de C Definición 7 Una instancia de C es una instancia directa de un desciente de C. Regla 4 Una entidad declarada de tipo T sólo puede ser conectada en tiempo de ejecución a instancias de T.

Programación III Herencia 10 Tipo estático y dinámico El nivel de las entidades, identicadores en el texto de una clase, que tienen tipo estático y dinámico. El primero es jo y el segundo varía en tiempo de ejecución. El nivel de las referencias en tiempo de ejecución, que están conectadas a un objeto y por ello tienen el tipo dinámico del objeto a. Este tipo dinámico también es variable. El nivel de los objetos que están al nal de las referencias, que sólo tienen tipo dinámico, pero un tipo dinámico que no puede cambiar, es el tipo con que fueron creados. a o NONE si la referencia es vacía

Programación III Herencia 11 Herencia y creación local x: T do... create {U} x... en lugar de local temp: U x: T do... create temp.make x:=temp...

Programación III Herencia 12 class VECTOR[G] inherit ARRAY[G] create make feature {ANY} infix "+" (otro: like current): like current is Suma incorrecta de vectores. require lower = otro.lower upper = otro.upper local i:integer do create Result.make(lower,upper) from i:=lower until i> upper loop Result.put(item(i)+otro.item(i),i);i:=i+1... class VECTOR[G]

Programación III Herencia 13 Transformación general sobre guras transformacion is Modifica la figura de cierta forma. do f.rota(...) f.traslada(...) transformacion es incorrecta porque FIGURA no dispone de los métodos rota y traslada, aunque todos sus herederos pudieran poseerlas.

Programación III Herencia 14 Denición de rota incorporable a gura. rota (centro: PUNTO; angulo: DOUBLE) is Rotación de centro y ángulo dados. deferred Es más razonable aplazar la denición que dejarla hueca

Programación III Herencia 15 Sintaxis de la redeclaración Tipos de redeclaración a diferida a efectiva de diferida redenición concreción redefine ninguna de efectiva indenición redenición undefine redefine

Programación III Herencia 16 Clases y tipos diferidos Definición 8 Diremos que una clase es diferida si alguna de sus características lo es, en caso contrario diremos que la clase es efectiva. Definición 9 Diremos que un tipo es diferido si está basado en una clase diferida. Regla 5 El tipo de una instrucción de creación no puede ser diferido.

Programación III Herencia 17 Especicación pre-post y herencia f is C «call» A f require α... ensure β «call» A f f is require γ... ensure δ

Programación III Herencia 18 La jerarquía de los esquiadores ESQUIADOR compañero comparte_con CHICO compañero comparte_con CHICA compañero comparte_con CHICO_CLASIFICADO compañero comparte_con CHICA_CLASIFICADA compañero comparte_con

Programación III Herencia 19 Fallos en el chequeo de tipos class ESQUIADOR feature compannero: ESQUIADOR Su compañero de habitación. comparte_con(otro:esquiador) is Fija el compañero del esquiador require otro /= Void do compannero := otro Otras características que no nos interesan para el ejemplo class ESQUIADOR

Programación III Herencia 20 Fallos en el chequeo de tipos (ii) class CHICA inherit ESQUIADOR redefine compannero, comparte_con feature compannero: CHICA de habitación. comparte_con(otro:chica) is Fija el compañero require otro /= Void do compannero := otro Para distinguirla bien distinto:real Otras características class CHICA

Programación III Herencia 21 Fallos en el chequeo de tipos (iii) class CHICO inherit ESQUIADOR redefine compannero, comparte_con feature compannero: CHICO de habitación. comparte_con(otro:chico) is Fija el compañero require otro /= Void do compannero := otro Para distinguirlo bien distinto: INTEGER Otras características class CHICO

Programación III Herencia 22 La aplicación que maniesta el fallo class APLICACION Ejemplo de los problemas de la covarianza create make feature make is local s: ESQUIADOR; b: CHICO; g: CHICA do create b ; create g s:= b s.comparte_con(g) Provocamos un error std_output.put_integer( b.compannero.distinto) class APLICACION

Programación III Herencia 23 Segunda versión de los esquiadores class ESQUIADOR feature compannero: like Current Su compañero de habitación. comparte_con(otro:like Current) is Fija el compañero del esquiador require otro /= Void do compannero := otro Otras características que no nos interesan para el ejemplo class ESQUIADOR

Programación III Herencia 24 Segunda versión de los esquiadores (ii) class CHICO inherit ESQUIADOR feature distinto: INTEGER... class CHICO class CHICA inherit ESQUIADOR feature distinto: REAL... class CHICA

Programación III Herencia 25 La aplicación que maniesta el error class APLICACION create make feature make is do Creo esquiadores create b ; create g_actual s:= g_actual; g:=s s:=b s.comparte_con(g) std_output.put_integer( b.compannero.distinto) Esquiadores como atributos para permitir la definición de g like s s: ESQUIADOR; b: CHICO g_actual: CHICA g: like s class APLICACION

Programación III Herencia 26 Más esquiadores con problemas class ESQUIADOR feature compannero: ESQUIADOR Su compañero de habitación. comparte_con(otro:esquiador) is Fija el compañero del esquiador require otro /= Void do compannero := otro Otras características que no nos interesan para el ejemplo class ESQUIADOR

Programación III Herencia 27 Más esquiadores con problemas (ii) class CHICA inherit ESQUIADOR redefine compannero,comparte_con feature compannero: CHICA Su compañero de habitación. comparte_con(otro:chica) is Fija el compañero require otro /= Void do compannero := otro para distinguirla distinto:real class CHICA

Programación III Herencia 28 Más esquiadores con problemas (iii) class ESQUIADOR class CHICA_CLASIFICADA inherit CHICA export {NONE} comparte_con feature Otras características que no nos interesan para el ejemplo invariant compannero = Void class CHICA_CLASIFICADA

Programación III Herencia 29 Otra aplicación que maniesta errores class ESQUIADOR class APLICACION create make feature make is local s: CHICA; g1, g2: CHICA_CLASIFICADA do create g1; create g2 s:= g1 s.comparte_con(g2) std_output.put_real(g1.compannero.distinto) class APLICACION