Herencia en Eiffel Gerardo Rossel -

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

Download "Herencia en Eiffel Gerardo Rossel -"

Transcripción

1 Herencia en Eiffel Gerardo Rossel - 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 de redefinición, junta, múltiple herencia y soporte de correctitud sobre la herencia. La herencia introduce las relaciones Padre e Hijo y su clausura transitiva ntecesor y Desciente. La inclusión del nombre de una clase en la cláusula de herencia de otra determina que aquella es padre de esta última: Class C inherit... es padre de C. La noción de herencia no admite ciclos, así si es antecesor de entonces no puede ser antecesor de. Esto es así en cualquier lenguaje basado en clases. daptación de Features La adaptación de Features se realiza mediante la redeclaración lo cual incluye dos importantes conceptos: refefinición y efectivización. La redefinición implica un cambio en la implementación, signatura o especificación de la original; mientras que efectivización es proveer la implementación de un deferred (abstracta) en el padre. Estos conceptos se suman al de junta de s y la indefinición de s (undefining). Veremos después como se trata el caso de la herencia repetida utilizando los conceptos mencionados y otros que surjan según se necesiten. Renombre El renombre de s heredadas es una de las facilidades del sistema de herencia provisto por el Lenguaje Eiffel. Como veremos más adelante esto se relaciona con la múltiple herencia pero además permite adaptar los nombres al contexto de la nueva clase. La sintaxis es: as C as D Se puede insertar una parte para cada padre. No se permite dos renombres de una misma para la misma clase padre. Redefinición La redefinición es un mecanismo que nos permite generar una nueva implementación de una heredada. Se puede combinar renombre y redefinición: class inherit f as newf redefine newf newf...is class

2 El renombre no cambia la sino su nombre final mientras que la redefinición no cambia el nombre sino su implementación, signature o especificación. El mecanismo de anchored (anclaje) permite la redefinición de s en forma implícita. Efectivización Efectivización es la redeclaración como efectiva de una declarada en un antecesor como deferred. Es decir transformar en concreta una abstracta. En la efectivización no es necesario incluir esta en la cláusula de redefinición. Lo cual es lógico ya que la en cuestión nunca fue "definida". Se debe hacer la salvedad del caso en el cual la nueva aún permanezca deferred o sea que solamente se cambia su signatura. Las clases deferred pueden eventualmente implementar algunas s y otras no, la condición necesaria y suficiente para que una clase sea considerada deferred es que posea al menos una deferred. Las clases deferred no pueden ser instanciadas. Un tipo de clase deferred que cumple un rol de suma importancia en la construcción de abstracciones útiles a la modelización e implementación de software son las clases de comportamiento(behavior class). Un ejemplo de ellas sería la clase ITERTOR la cual implementa y especifica mecanismos de iteración. Undefining La abstractización de s efectivas se conoce como undefining. Esta característica es útil en contextos de múltiple herencia donde exista un conflicto de nombres y no se redefinan ni renombren las s implicadas. Una declarada como deferred en el padre o abstractizada mediante el mecanismo de undefining se dice que es heredada como deferred en otro caso se dice que es heredada como efectiva class inherit _efectiva as _abstracta undefine _abstracta redefine _anstracta _abstracta(x:i, y: H) is deferred -- class Mecanismo de Junta Este mecanismo soporta un concepto muy importante en el modelo orientado a objetos de Eiffel: la fusión de abstracciones. La fusión de abstracciones se utiliza cuando diversas abstracciones provenientes de varias clases necesitan ser combinadas. Supongamos que tenemos dos s heredadas de distintas clases pero que nos interesa que se comporten como una nueva, en este caso el mecanismo de junta se implementaría mediante dos renombres

3 class C inherit f as nuevaf g as nuevaf Otro caso se presenta cuando heredamos varias s con y nos interesa una sola versión: class D inherit g as f undefine f h as f C undefine f -- class D En este caso estamos utilizando la implementación de la h en como junta de g, h y f provenientes de,,c y con el nombre f. Herencia repetida La múltiple herencia presenta la propiedad de que en determinado momento se puede heredar de una misma clase varias veces por distintos caminos. Los gráficos nos muestran dos ejemplos comunes: C D

4 Los gráficos nos muestran casos clásicos de herencia repetida. En el primer gráfico la clase D hereda de dos veces una por medio de C y otra por medio de. En el otro ejemplo la clase hereda dos veces de. La regla de nombres de s nos dice que: una clase que hereda diferentes s del mismo nombre desde diferentes padres es invalida. Eiffel nos da una forma de resolver conflictos mediante la siguiente regla de la herencia repetida: una heredada repetidamente bajo el mismo nombre representa una simple; versiones heredadas bajo distintos nombres representan s separadas replicadas desde el antecesor común. La herencia repetida presenta problemas potenciales: redeclaración sobre caminos separados, duplicación de atributos, conflicto con derivaciones genéricas. El caso de la redeclaración puede ser resuelto mediante el renombre (el compilador Eiffel no permite que se violen las reglas) tenio en ese caso todas las versiones redeclaradas con un nuevo nombre. Si por ejemplo la clase de la figura tiene una f que es redeclarada en y en C entonces en D se presenta el problema de heredar dos s con el mismo nombre lo cual es invalido, en este caso se necesita renombrar alguna o ambas s. Debemos aclarar que esta solución se considera buena por ahora, pero que no alcanza debido a las asignaciones polimórficas que trataremos después. El caso de los atributos es similar, supongamos siguio la segunda figura que la clase tiene un atributo at en ese caso solo trá un atributo at ya que según la regla de herencia repetida se representaría como un solo atributo. Pero sí en se renombra at como at1 y at2 (en cada cláusula de padre ) entonces en se trán dos atributos. class inherit at as at1 ; at as at2 ; Nuevamente se plantea el problema de las asignaciones polimórficas. Para enterlo pongamos un ejemplo: supongamos en el caso planteado en la primera figura con una f en la clase a redeclarada en y en C y renombrada en D como fb y fc respectivamente. Si tenemos el siguiente código: d:d!!dl; d.bf; d.cf no habría problema ya que se ejecutaría en el primer caso la versión heredada de y en el segundo la versión heredada de C. Pero si se plantea el siguiente código:

5 a:, d:d;!!d; a:= d; a.f En este caso la asignación polimórfica es permitida ya que D conforma con según las reglas de tipos, pero surge el problema de determinar que versión de f se ejecutará. Esta ambigüedad se resuelve en Eiffel mediante la incorporación de la sentencia select. En el renombre se debe especificar cual se selecciona como la a aplicar en asignaciones polimórficas: class D inherit f as bf select bf C f as cf La utilización de la sentencia select no es optativa, cada vez que se presenten conflictos de binding dinámico debido a la herencia de dos o más declaraciones de s es obligatorio seleccionar una. El conflicto sobre derivaciones genéricas se presenta cuando una clase hereda de dos o más clases que a su ves heredan de un clase genérica pero instanciando el parámetro genérico en diferentes tipos. Para que la repetida herencia sea valida es posible utilizar las soluciones presentadas anteriormente: sobreescribir a través de la abstractización, (undefining), utilizar el select para permitir replicación, el sharing es imposible ya que la elección de una puede causar incompatibilidad de tipos. En el caso de la abstractización hay que tener una precaución adicional ya que al sobreescribir se necesita que las signaturas conformen, pero en el caso de derivaciones genéricas puede haber conflicto. Si las clases intermedias instancian el tipo genérico en tipos que no conforman entonces se debe abstractizar todas las s heredadas en conflicto y proveer una redeclaración nueva, tenio en cuenta que la nueva versión debe proveer tipos que conformen con los originales, en el peor caso NONE. Herencia y serciones Para que una clase sea correcta debe respetar las invariantes de sus padres. Esto se puede expresar por la regla: Las invariantes de todos los padres se aplican a la clase en si. Si la clase no tiene invariante se considera la invariante true lo que implica que se aplican las invariantes de sus padres. El caso de la redeclaración de s presenta un tratamiento especial, se debe tener cuidad debido al polimorfismo y al binding dinámico. En la redeclaración si se necesita incorporar aserciones se incorporan con la siguiente sintaxis: require else alternativa_precondicion ensure then extra_poscondicion Para la precondición se toma la misma o más débil, es decir si las precondiciones anteriores fueran: pre 1,...,pre n y la nueva alternativa_precondicion la semántica sería: alternativa_precondicion or else pre 1 or else...or else pre n Para la postcondición se toma las misma o una postcondición mas fuerte, es decir si las postcondición anteriores fueran: pos 1,...,pos n y la nueva extra_precondicion la semántica sería: extra_precondicion and then pos 1 and then... and then pos n

6 Tener una precondición más débil no impone ningún nuevo requerimiento a los clientes originales, mientras que una postcondición más fuerte garantiza un resultado que satisface las originales, tal cual lo espera el cliente (el término cliente se refiere a una entidad que toma servicios de la clase). Eiffel no soporta métodos de clase ya que toma una distinción conceptual entre clases y objetos, pero permite definir rutinas once, las cuales se ejecutan solo una vez, y utiliza la herencia múltiple para acceder a propiedades de otras clases. Para poder mostrar algo por pantalla en JV se utiliza la clase System que cuenta con atributos declarados como static, en Eiffel bastaría con heredar de ella. Smalltalk soporta métodos y variables de clase pero además variables globales. Lo visto en este apunto no cubre completamente el tema de herencia en Eiffel, pero sirve como una introducción general a la problemática y nos muestra como la múltiple herencia puede tratarse con elegancia dando un lenguaje de programación altamente flexible sin perder cualidades que facilitan la construcción de software correcto y robusto. uenos ires, Mayo de 1998

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

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

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

Definición. Mónica E. García García Feb 07

Definición. Mónica E. García García Feb 07 Tema 11: Herencia 0 Definición Cuando inicialmente se modelan dos cosas y se tienen datos duplicados y además pudiera darse que el número de métodos también es similar así como la implementación, se requiere

Más detalles

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes Introducción Programación orientada a objetos Curso INEM. Programación en Java 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

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

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

El lenguaje Eiffel Por: Gerardo Rossel

El lenguaje Eiffel Por: Gerardo Rossel El lenguaje Eiffel Por: Gerardo Rossel E-mail: grossel@dc.uba.ar La idea del presente apunte es introducir a los conceptos y características básicas del lenguaje Eiffel 3. Los conceptos de este apunte

Más detalles

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia Programación orientada a objetos Capítulo 8 Mejora de las estructuras mediante herencia Clases y objetos de DoME Modelo de objetos Modelo de clases Crítica de la v1 de DoME - Duplicación de código - Las

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES Área de formación: Disciplinaria Unidad académica: Programación Orientada a Objetos Ubicación: Cuarto Semestre Clave: 2087 Horas

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

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

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

INICIACIÓN A LA PROGRAMACIÓN 1ª parte TEMA 4 INICIACIÓN A LA PROGRAMACIÓN 1ª parte Qué es la programación? La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. En la actualidad,

Más detalles

Sentencias de Procesamiento Iterativo: while y do-while

Sentencias de Procesamiento Iterativo: while y do-while ESTRUCTURAS CÍCLICAS Se discuten en este documento las sentencias que se utilizan en el lenguaje C++ para representar la tercera de las estructuras utilizadas en la programación estructurada: La Estructura

Más detalles

ESTRUCTURAS DE CONTROL

ESTRUCTURAS DE CONTROL ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De

Más detalles

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema Modelado Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Vocabulario del Sistema Distribución de Responsabilidades Semántica de una Clase

Más detalles

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde:

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde: Redes Semánticas Redes semánticas La lógica como lenguaje de representación tiene dificultades prácticas Son necesarios mecanismos mas intuitivos y fáciles de usar La psicología cognitiva afirma: La representación

Más detalles

Diseño por Contratos y Aserciones

Diseño por Contratos y Aserciones UNIVERSIDAD DE CHILE DEPARTAMENTO DE CIENCIAS DE COMPUTACION Diseño por Contratos y Aserciones Bertrand Meyer. Construcción de Software Orientado a Objetos EDUARDO JARA Diseño por Contratos y Aserciones

Más detalles

Cristian Blanco

Cristian Blanco UNIDAD DIDÁCTICA 8. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS. DIAGRAMAS DE COMPORTAMIENTO En el siguiente enlace tienes una descripción y algunos ejemplos de todos los diagramas UML.: http://jms32.eresmas.net/tacticos/uml/umlindex.html

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

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA Objetivo: Identificar los concentos principales en java POO, que es una clase, un objeto así como sus características principales abstracción, modularidad, encapsulamiento, herencia, polimorfismo. INTRODUCCIÓN

Más detalles

Fábricas de Software y Líneas de Producto: del Estado de la Práctica al Estado del Arte. Jorge A. Villalobos.

Fábricas de Software y Líneas de Producto: del Estado de la Práctica al Estado del Arte. Jorge A. Villalobos. Fábricas de Software y Líneas de Producto: del Estado de la Práctica al Estado del Arte Jorge A. Villalobos jvillalo@uniandes.edu.co 1 Agenda Cuál es la situación actual? Por qué el problema es tan complejo?

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

Design by Contract with JML. Gary T. Leavens y Yoonsik Cheon

Design by Contract with JML. Gary T. Leavens y Yoonsik Cheon Design by Contract with JML Gary T. Leavens y Yoonsik Cheon Diseño por Contrato con JML Java Modeling Language combina: Mi logo es mas lindo que el de Martín.. :P Diseño por Contrato de Eiffel (Meyer).

Más detalles

Casos de Uso. Introducción. Actores

Casos de Uso. Introducción. Actores Casos de Uso Introducción Los diagramas de casos de uso documentan el comportamiento de un sistema desde el punto de vista del usuario. Representan las funciones que un sistema puede ejecutar. Por tanto

Más detalles

Aplicaciones de Escritorio

Aplicaciones de Escritorio Aplicaciones de Escritorio Introducción n a la Programación Orientada a Objetos con Java Disertantes: Ing. Rasjido, Jose. AdeS Montenegro, Cristian. Agenda Clases y Paquetes. Clases y Paquetes. Modificadores

Más detalles

Qué es SGBD? Mencionar 4 tipos de SGBD. SGBD de red. Román Gutiérrez Sosa. SGBD jerárquicos. Modelo de datos relacionales.

Qué es SGBD? Mencionar 4 tipos de SGBD. SGBD de red. Román Gutiérrez Sosa. SGBD jerárquicos. Modelo de datos relacionales. Qué es SGBD? Es un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. El propósito general de los sistemas de gestión

Más detalles

Universidad de Chile

Universidad de Chile Capítulo 1 Conceptos básicos: clases y objetos Universidad de Chile Departamento de Cs. De la Computación Prof.: Nancy Hitschfeld Kahler Programación orientada a objetos 1-1 1 Contenido Clases y objetos

Más detalles

Federico Peinado

Federico Peinado Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus

Más detalles

Programación Avanzada

Programación Avanzada Programación Avanzada Referencias Circulares y Namespaces 1 Índice 1. INTRODUCCIÓN.. 3 2. REFERENCIAS CIRCULARES.. 4 Ejercicio 1 4 Ejercicio 2 4 Ejercicio 3 5 3. NAMESPACES 6 Introducción 6 Creación de

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

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui PL/SQL - Oracle PL/SQL (Procedural Language/SQL) es una extensión de SQL, que agrega ciertas construcciones propias de lenguajes procedimentales, obteniendose como resultado un lenguaje estructural mas

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 l.guerra@upm.es Curso INEM. Programación en Java Marzo 2011 Índice Previo Repaso y encapsulación Empaquetado Relaciones entre clases Herencia

Más detalles

Capítulo 16. Diagrama de Clases UML

Capítulo 16. Diagrama de Clases UML Capítulo 16. Diagrama de Clases UML Florentino TORRES M. CINVESTAV-Tamaulipas 15 de Oct del 2012 Florentino TORRES M. (CINVESTAV) 15 de Oct del 2012 1 / 70 1 Capítulo 16. Diagrama de Clases UML Aplicando

Más detalles

Resultado de Aprendizaje:

Resultado de Aprendizaje: 10. Matriz de Valoración o Rúbrica MATRIZ DE VALORACIÓN O RÚBRICA Siglema: PROO-02 Nombre del Módulo: Nombre del Alumno: Docente evaluador: Grupo: Fecha: Resultado de Aprendizaje: 1.1 Diseña modelos bajo

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño Univ. Cantabria Fac. de Ciencias Patricia López Introducción al Diseño Modelamos la estructura software del sistema (incluida la arquitectura) para

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Asertos en C++ Mecanismo de excepciones: Declaración de excepciones Lanzar excepciones

Más detalles

M. en E. Noemí López García

M. en E. Noemí López García La forma de indicar al servidor que nuestro código PHP comienza es: M. en E. Noemí López García sentencias php Existen otros métodos de indicar el inicio de código php pero el indicado es el más común

Más detalles

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS Introducción La programación orientada a objetos es un enfoque de programación de los más populares y viene teniendo gran aceptación en el desarrollo

Más detalles

PROGRAMA DE ESTUDIO. : Tecnologías de Información II : UN SEMESTRE ACADÉMICO : SEGUNDO AÑO, PRIMER SEMESTRE

PROGRAMA DE ESTUDIO. : Tecnologías de Información II : UN SEMESTRE ACADÉMICO : SEGUNDO AÑO, PRIMER SEMESTRE PROGRAMA DE ESTUDIO A. Antecedentes Generales ASIGNATURA : Tecnologías de Información II CÓDIGO : III222A DURACIÓN : UN SEMESTRE ACADÉMICO PRE- REQUISITO : TECNOLOGIAS DE INFORMACION I CO REQUISITO : NO

Más detalles

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas Instituto Tecnológico de Nuevo Laredo 1 Qué es UML? UML = Unified Modeling Language Un lenguaje de propósito general

Más detalles

1. DML. Las consultas multitabla

1. DML. Las consultas multitabla 1.1 Introducción 1. DML. Las consultas multitabla Hasta ahora hemos visto consultas que obtienen los datos de una sola tabla, en este tema veremos cómo obtener datos de diferentes tablas en una sola instrucción

Más detalles

UML Unifield Modeling Languaje

UML Unifield Modeling Languaje UML Unifield Modeling Languaje 1 Modelo: Representación abstracta de una especificación, un diseño o un sistema. Generalmente, basada en una visión particular y compuesta por uno o más diagramas. Lenguaje

Más detalles

Evaluación Diagnóstico puesta en común. Escuela Técnica ORT - TIC

Evaluación Diagnóstico puesta en común. Escuela Técnica ORT - TIC Evaluación Diagnóstico puesta en común Escuela Técnica ORT - TIC 2009 1 Ojo La mayoría de los conceptos que vamos a discutir los vamos a ver en profundidad en clase, por l otanto hoy no vamos a discutirlos

Más detalles

Escribir programas a partir de un diagrama de flujo

Escribir programas a partir de un diagrama de flujo Escribir programas a partir de un diagrama de flujo por Iván Cruz En esta lectura se revisará una estrategia específica para lograr implementar un programa computacional a partir de un diagrama de flujo,

Más detalles

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo CONTENIDOS 1. Introducción 2. Cuándo se aplica el mecanismo de herencia 3. Un ejemplo de herencia 4. Terminología 5. Clase derivada. Creación de una clase derivada 6. Miembros que no se heredan automáticamente

Más detalles

Tema 1: Análisis y Diseño de la Aplicación

Tema 1: Análisis y Diseño de la Aplicación Tema 1: Análisis y Diseño de la Aplicación Índice de contenido Introducción...1 Diseñador de clases...1 Creación de nuevos tipos...2 Visualización y modificación de tipos existentes...5 Relaciones entre

Más detalles

Programación con Visual C#

Programación con Visual C# Programación con Visual C# Duración: 40.00 horas Descripción Visual C# es uno de los lenguajes de programación desarrollados por Microsoft, basado en la programación orientada a objetos. Es imprescindible

Más detalles

Requerimientos de Software

Requerimientos de Software Requerimientos de Software Ingeniería de Requerimientos Se define como el proceso de establecer los servicios que el consumidor requiere de un sistema y las restricciones sobre las cuales de funcionar

Más detalles

Clase 3: Repaso POO. DSIW1:Ing. Tomás Eduardo Urbina 1

Clase 3: Repaso POO. DSIW1:Ing. Tomás Eduardo Urbina 1 DSIW1:Ing. Tomás Eduardo Urbina 1 Declaración de una clase y creación de un objeto. La programación orientada a objetos se basa en la programación de clases; a diferencia de la programación estructurada,

Más detalles

Tema I Testing Estructurado

Tema I Testing Estructurado Tema I Testing Estructurado 4ta Parte Verificación y Validación de Software UNS Contenido Testing de Unidad: Caja Negra Grafos Causa Efecto Clases de Equivalencia Valores Límite Verificación y Validación

Más detalles

Guía práctica de estudio 05: Diagramas de flujo

Guía práctica de estudio 05: Diagramas de flujo Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de

Más detalles

Especificación de TAD. Lección 2

Especificación de TAD. Lección 2 Especificación de TAD Lección 2 Esquema Características generales de una especificación Especificación algebraica Especificación no formal Lectura recomendada: sección 1.3 del libro de Z.J. Hernández et

Más detalles

Avance del Proyecto Arcasa. Proyecto de Grado 2007 Instituto de Computación Facultad de Ingeniería UdelaR Montevideo - Uruguay

Avance del Proyecto Arcasa. Proyecto de Grado 2007 Instituto de Computación Facultad de Ingeniería UdelaR Montevideo - Uruguay Avance del Proyecto Arcasa Proyecto de Grado 2007 Instituto de Computación Facultad de Ingeniería UdelaR Montevideo - Uruguay Agenda Introducción Estado del Arte Modelos de Seguridad Políticas de Control

Más detalles

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz 168 A. García-Beltrán y J.M. Arranz 16. Herencia Objetivos: a) Definir el concepto de herencia entre clases b) Interpretar el código fuente de una aplicación Java donde aparecen clases relacionadas mediante

Más detalles

Prueba N o 1. Programación II

Prueba N o 1. Programación II UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.

Más detalles

GRAMATICAS LIBRES DEL CONTEXTO

GRAMATICAS LIBRES DEL CONTEXTO GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.

Más detalles

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE Análisis y costo de algoritmos Algoritmos Un algoritmo es un conjunto de pasos claramente definidos que a partir de un cierta entrada (input) produce una determinada salida (output) Algoritmos y programas

Más detalles

TEMA 6: INTRODUCCIÓN A UML

TEMA 6: INTRODUCCIÓN A UML TEMA 6: INTRODUCCIÓN A UML Por qué modelamos? El modelado es una parte central de todas las actividades que conducen a la producción de un software de calidad. Como tal la ingeniería software debe basarse

Más detalles

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Tema 7.- Fundamentos de la Programación Orientada a Objetos Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).

Más detalles

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Transformaciones entre el modelo Relacional y el modelo de Clases.

Transformaciones entre el modelo Relacional y el modelo de Clases. Gestión de la Información Transformaciones entre el modelo Relacional y el modelo de Clases. José Luis Pastrana Brincones (pastrana@lcc.uma.es) 2 Supongamos que tenemos un modelo de objetos como el siguiente:

Más detalles

Diseño Basado en Componentes. Curso 2008 / 09

Diseño Basado en Componentes. Curso 2008 / 09 Beneficios de OOP Diseño Basado en Componentes Ingeniería Informática Universidad Carlos III de Madrid Programación Orientada a Objetos (OOP) en VB.NET Diseño Basado en Componentes. Curso Conceptos orientados

Más detalles

Diagrama de Casos de Uso. Casos de Uso

Diagrama de Casos de Uso. Casos de Uso Diagrama de Casos de Uso 1 Casos de Uso Un requerimiento funcional describe un servicio o función del sistema. Un requerimiento no-funcional es una restricción sobre el sistema (por ejemplo el tiempo de

Más detalles

ANEXO XVII DE LA RESOLUCION N

ANEXO XVII DE LA RESOLUCION N Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:

Más detalles

Bases de datos 1. Teórico: Introducción

Bases de datos 1. Teórico: Introducción Bases de datos 1 Teórico: Introducción Conceptos generales Base de Datos: Es un conjunto de datos relacionados Representa algún aspecto del mundo real Es construida para un propósito específico Database

Más detalles

Tema 3 - Modelado con HDL a nivel RTL

Tema 3 - Modelado con HDL a nivel RTL - Modelado con HDL a nivel RTL Eduardo Rodríguez Martínez Departamento de Electrónica División de Ciencias Básicas e Ingeniería Universidad Autónoma Metropolitana Unidad Azcapotzalco Email: erm@correo.azc.uam.mx

Más detalles

Curso Querying Microsoft SQL Server 2014 (20461)

Curso Querying Microsoft SQL Server 2014 (20461) Curso Querying Microsoft SQL Server 2014 (20461) Programa de Estudio Curso Querying Microsoft SQL Server 2014 (20461) Aprende las habilidades técnicas necesarias para escribir consultas Transact-SQL básicas

Más detalles

UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS SEMINARIO DE SOLUCIÓN DE PROBLEMAS DE PROGRAMACIÓN PROYECTO

UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS SEMINARIO DE SOLUCIÓN DE PROBLEMAS DE PROGRAMACIÓN PROYECTO UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS SEMINARIO DE SOLUCIÓN DE PROBLEMAS DE PROGRAMACIÓN PROYECTO NUCLEO DE DIAGNOSTICO INTEGRAL NDI En la ciudad de Guadalajara,

Más detalles

Control de Acceso Discrecional.

Control de Acceso Discrecional. Control de Acceso Discrecional. Esta estrategia de control de acceso está basada en la idea de que los sujetos acceden a los objetos en base a su identidad y a unas reglas de autorización, que indican

Más detalles

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque: Análisis y Diseño O.O. Preguntas del diseño : Cómo podrían asignarse responsabilidades a las clases de los objetos? Cómo podrían interactuar los objetos? Qué deberían hacer las clases? Patrones : Ciertas

Más detalles

Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas)

Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas) Base de Datos Oracle 10g: Programación con PL/SQL Código: D17214 - Duración: 5 días (40 horas) Lo que aprenderá Esta clase es aplicable para los usuarios de Oracle8i, Oracle9i y Oracle Database 10g. Este

Más detalles

PMK SATCA 1 : Carrera:

PMK SATCA 1 : Carrera: 1. Datos Generales de la asignatura Nombre de la asignatura: Programación Visual Clave de la asignatura: PMK -1601 SATCA 1 : 0-2 - 2 Carrera: Ingeniería Informática 2. Presentación Caracterización de la

Más detalles

Introducción a la Orientación a Objetos

Introducción a la Orientación a Objetos Introducción a la Orientación a Objetos Breve historia de la OO 1960s. Simula incorpora características propias de la OO. 1970s. Smalltalk. Lenguaje totalmente OO. 1990s. Boom de la OO. 2000-Hoy. Época

Más detalles

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción. 2007/2008 Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS 1.-Introducción. -Comprender cómo funciona un lenguaje de programación 2. Características del lenguaje C -Entender las

Más detalles

Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla.

Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla. Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla. Utilización de subconsultas para realizar cálculos sobre N cantidad de columnas sin utilizar sentencias CASE Nombre Puntaje

Más detalles

Figura 2. Figura 1. Figura 3. Figura 4

Figura 2. Figura 1. Figura 3. Figura 4 Examen 1. Se desea construir un sistema de gestión de ventas para comercios. El sistema constará de una base de datos en la que, entre otras cosas, se almacena la información del inventario de productos

Más detalles

Solución al parcial 14

Solución al parcial 14 Solución al parcial 14 Marque V(erdadero) o F(also) según considere la proposición. 1. La lógica difusa es la emulación del razonamiento aproximado que realizan las máquinas. F: Las máquinas no realizan

Más detalles

Programa de la asignatura Curso: 2009 / 2010 METODOLOGÍA DE LA PROGRAMACIÓN (1298)

Programa de la asignatura Curso: 2009 / 2010 METODOLOGÍA DE LA PROGRAMACIÓN (1298) Programa de la asignatura Curso: 2009 / 2010 METODOLOGÍA DE LA PROGRAMACIÓN (1298) PROFESORADO Profesor/es: RAUL MARTICORENA SANCHEZ - correo-e: rmartico@ubu.es DAVID HERMINDO MARTIN ALONSO - correo-e:

Más detalles

Modelo Conceptual de datos. Yenifer Laurens.

Modelo Conceptual de datos. Yenifer Laurens. Modelo Conceptual de datos Yenifer Laurens. Modelo de datos Es un conjunto de conceptos que pueden servir para describir la estructura de una Base de Datos; tipo de datos, las relaciones y que deben cumplirse

Más detalles

Bases de Datos OTROS ASPECTOS MODELO E-R

Bases de Datos OTROS ASPECTOS MODELO E-R Bases de Datos OTROS ASPECTOS MODELO E-R Bases de Datos GENERALIZACIÓN Y ESPECIALIZACIÓN Bases de Datos ESPECIALIZACIÓN Bases de Datos -> Especialización Un conjunto de entidades, puede incluir subgrupos

Más detalles

Sintaxis básica, variables y 7pos

Sintaxis básica, variables y 7pos Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java! Sintaxis básica! Variables y 7pos! Entrada/Salida básica! Operadores y expresiones Jesús Montes Sánchez jmontes@fi.upm.es Estructura

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

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

BASE DE DATOS Modelos de Datos

BASE DE DATOS Modelos de Datos BASE DE DATOS Modelos de Datos Autor: Lic. Jaquelina E. Escalante Desarrollo de una Base de datos 1 Análisis de requisitos, es decir, el estudio del sistema que se pretende modelar de la forma más precisa

Más detalles

PHP 7 Desarrollar un sitio web dinámico e interactivo

PHP 7 Desarrollar un sitio web dinámico e interactivo Preámbulo 1. Objetivo del libro 11 2. Breve historia de PHP 12 3. Dónde conseguir PHP? 13 4. Convenciones de escritura 14 Introducción a PHP 1. Qué es PHP? 15 2. Estructura básica de una página PHP 17

Más detalles

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC:

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC: 4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC: A continuación se muestran los objetivos así como los mapas funcionales según la línea de acentuación y la línea

Más detalles

Informática I para Bachillerato

Informática I para Bachillerato CIMAT C++ C/C++ de Datos CIMAT Sesión 15 Una estructura es un grupo de variables las cuales pueden ser de diferentes tipos sostenidas o mantenidas juntas en una sola unidad, a diferencia de los arreglos

Más detalles

Programación Orientada a Objetos. Sesión 4: Herencia

Programación Orientada a Objetos. Sesión 4: Herencia Programación Orientada a Objetos Sesión 4: Herencia Contextualización Cuando hablamos de informática, podemos contemplar varios elementos que se utilizan dentro de ésta misma, por ejemplo, la herencia

Más detalles

Parte I: Elementos del lenguaje Ada

Parte I: Elementos del lenguaje Ada Parte I: Elementos del lenguaje Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga Programación orientada a objetos Resumen de Temas Unidad 4: Sobrecarga 4.1 Conversión de tipos (1) Conversiones implícitas: La conversión entre tipos primitivos se realizan de modo automático de un tipo

Más detalles

Clases y objetos en python (Programacion Orientada a Objetos)

Clases y objetos en python (Programacion Orientada a Objetos) Clases y objetos en python (Programacion Orientada a Objetos) pythondiario.com /2014/10/clases-y-objetos-en-python-programacion.html Python es un lenguaje de programación orientada a objetos (POO). La

Más detalles

1. Preparar al estudiante para desarrollar aplicaciones de software utilizando un enfoque orientado a objetos.

1. Preparar al estudiante para desarrollar aplicaciones de software utilizando un enfoque orientado a objetos. UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS NOMBRE DEL CURSO: Computación y Programación 2 CODIGO: 771 CREDITOS: 5 ESCUELA: Ciencias y Sistemas AREA A LA QUE PERTENECE:

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles