Eiffel 2007

Click here to load reader

  • date post

    20-Oct-2015
  • Category

    Documents

  • view

    28
  • download

    3

Embed Size (px)

Transcript of Eiffel 2007

  • 1Universidad de GranadaE.T.S. Ingeniera Informtica

    Diego Montesinos HervsIrene Daz ValenzuelaAndrs Herrera del PinoJos Antonio Sez Muoz

    3 Ingeniera InformticaProgramacin Dirigida a Objetos

    Grupo B - Curso 2006-2007

    Eiffel

  • 21.Introduccin

  • 31.IntroduccinEiffel es un lenguaje de programacin orientado a objetos centrado en la construccin de software robusto.

    Diseado por Bertrand Meyer, apareci en 1985 y fu desarrollado por Meyer y Eiffel Software.

    Eiffel es un lenguaje con tipos fuertes, pero relajado por herencia. Implementa administracin automtica de memoria, generalmente mediante algoritmos de recoleccin de basura.

  • 41.1 Caractersticas esenciales- Mecanismos de ayuda al Diseo por contrato que se integraron firmemente con el mecanismo de herencia y otras construcciones del lenguaje.- Estructura de programa orientada a objetos, las clases son la unidad bsica.- Asignacin esttica de tipos.- Ayuda para la gestin automtica de memoria, implementada por el recolector de basura.- Papel central de la herencia, incluyendo herencia mltiple y mecanismo para hacerla segura.

  • 51.1 Caractersticas esenciales- Un sistema uniforme de tipos que maneja las semanticas de referencia y valor, donde todos los tipos (incluyendo los tipos bsicos) estn basados en clases.- Tipos genricos.

    - Bloques(agent) (similares a los de Smalltalk)- Rutinas 'once' (evaluadas solamente la primera vez), para la comparticin de objetos e inicializacin.- Sintaxis basada en las palabras clave de ALGOL/Pascalpero sin separador (se puede usar el punto y coma, es opcional).

  • 61.2 Caractersticas de diseo

    - Eiffel enfatiza en sentencias declarativas sobre cdigo procesal.

    - Eiffel evita los trucos de codificacin o tcnicas de codificacin previstas.

    - Se intenta no slo hacer cdigo ms legible, sino tambin permitir a los programadores concentrarse en los aspectos importantes del programa sin meterse en detalles de implementacin.

  • 71.2 Caractersticas de diseo

    La simplicidad de Eiffel se ha pensado para promover respuestas simples, extensibles y reutilizables para los problemas de computacin.

    Los compiladores proveen tcnicas de optimizacin con el objetivo de crear cdigo extremadamente eficiente, comparable a C++, por ejemplo.Al igual que los lenguajes de programacin vistos en la asignatura, Eiffel tambin utiliza semntica en el heap.

  • 82.Caractersticas de Eiffel

  • 92.Caractersticas

    La meta del lenguaje, bibliotecas, y mtodos de programacin es crear un software que utilice mdulos lo ms reutilizables posible.

  • 10

    2.1 Eiffel soporta...

    Herencia mltiple: permite que una clase herede de varias superclases. Adems posibilita a los subtipos adaptarse a sus propiedades heredades renombrndolas o estableciendo reglas de seleccin para ellas.

  • 11

    2.1 Eiffel soporta...

    Tipos genricos: Eiffel usa tipos parametrizados (genricos), como en otros lenguajes como Ada, Java, C#, que permiten definir un tipo sin especificar todos los otros tipos que usa. Los tipos no especificados son sustituidos por parmetros en estos puntos del cdigo.

  • 12

    2.1 Eiffel soporta...

    Polimorfismo: capacidad que tienen objetos de diferentes clases de responder al mismo mensaje. Esto significa que puede haber muchos mensajes con el mismo nombre, en diferentes clases. Cada clase responde al mensaje con su cdigo propio (mtodo).

  • 13

    2.1 Eiffel soporta...

    Encapsulacin : ocultamiento del estado, es decir, de los datos miembro, de un objeto de manera que slo se puede cambiar mediante las operaciones definidas para ese objeto.De esta forma, el usuario de la clase puede obviar la implementacin de los mtodos y propiedades para concentrarse slo en cmo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.

  • 14

    2.1 Eiffel soporta...

    Asignacin fuerte de tiposEn LPs con tipos, una expresin de valores estbien formada cuando a su valor se le puede asignar un tipo, ya sea en tiempo de compilacin o de ejecucin.No se procede a la evaluacin si no se ha podido determinar por inferencia dicho tipoPodramos hablar de tipo de la expresinLos LPs en que las expresiones han de ser consistentes respecto a los tipos se dice que son LPs con asignacin fuerte de tipos

  • 15

    2.1 Eiffel soporta...

    Equivalencia de mtodos y tipos: comoya sabemos de otras asignaturas, en algunos LPs, si S es subtipo de T, podemosutilizar S donde se espere un parmetro de tipo T, y si una funcin devuelve un tipo T, podra devolver tipo S sin problema ninguno.Por extensin, donde corresponde unaclase cualquiera, nos podemos encontrarcon cualquier subclase suya.

  • 16

    2.2 Contribucin de Eiffel

    Su contribucin ms importante a la ingeniera del software es el Diseo por Contracto (DbC), en el cual se tienen:

    Assertions(afirmaciones) Precondiciones Postcondiciones Invariantes de clase

    que son usadas para asegurar la correccindel programa sin sacrificar la eficiencia.

  • 17

    2.2 Contribucin de Eiffel

    Assertions(afirmaciones)En Eiffel, las afirmaciones sonintegradas en el lenguaje y sonextradas automticamente paragenerar la documentacin de laclase.

  • 18

    2.2 Contribucin de Eiffel

    Una afirmacin es un predicado (por ejemplo, una expresin booleana) situada en un programa para indicar que la afirmacin es verdad en ese lugar. Por ejemplo, el siguiente cdigo contiene dos afirmaciones:x:= 5;{x > 0}x:= x + 1{x > 1}Se usan para ayudar a la especificacin de programas y asegurar la correccin del cdigo.

  • 19

    2.2 Contribucin de Eiffel

    Algunos lenguajes de programacin modernos incluyen la sentencia de afirmacin (assert(cond)) que es una condicin que se comprueba en tiempo de ejecucin. Si la evaluacin de la condicin falla, se produce un fallo de afirmacin como resultado, el cual puede causar que la ejecucin se aborte o puede causar el reconsiderar una va alternativa para el programa.El uso de afirmaciones ayuda al programador a disear, desarrollar y comprobar la correccin del cdigo. Adems permite hacer comprobaciones durante el proceso de pruebas, durante la ejecucin, y detectar los posibles fallos, permitiendo al programador detectar bugs de sus programas.

  • 20

    2.2 Contribucin de Eiffel

    Precondiciones:Es una afirmacin (condicin o predicado) que debe ser siempre verdadero al principio de la ejecucin de alguna seccin de cdigo.Si la precondicin falla, el efecto de la seccin de cdigo puede estar indefinido y puede que se produzcan errores en la ejecucin.Ejemplo: para calcular el factorial de un nmero la precondicin es que el nmero sea mayor o igual que 0.

  • 21

    2.2 Contribucin de Eiffel

    Postcondiciones:Es una afirmacin (condicin o predicado) que debe ser siempre cierto justo despus de la ejecucin de un algn trozo de cdigo.Ejemplo: Para una funcin que calcule el factorial, la poscondicin puede ser que el resultado sea siempre mayor o igual que 1.

  • 22

    2.2 Contribucin de Eiffel

    Invariante de representacin.Es una serie de condiciones impuestas sobre los objetos de una clase que determinan si un objetoest o no bien formado.Los mtodos de la clase deben preservar el invariante de representacin.Los invariantes de representacin son establecidos durante la construccin y continuamente se mantiene tras las llamadas a los mtodos pblicos.

  • 23

    2.2 Contribucin de Eiffel

    El diseo de Eiffel est basado en la teora de la programacin orientada a objetos.El lenguaje tiene un soporte formal para tipos abstractos de datos.Bajo el correcto diseo de texto software se debe ser capaz de reproducir una documentacin para el diseo final del software a partir de la informacin de la implementacin que est formalizada para el tipo abstracto de dato.

  • 24

    2.3 Implementaciones y entornos

    EiffelStudio es un entorno de desarrollo integrado(cdigo libre o licencias comerciales). Es un entorno orientado a objetos que usa tcnicas de interfaz de usurario como el pick-and-drop.

    EiffelEnvision es un pluggin para Microsoft Visual Studio, que permite a los usuarios editar ,compilar y depurar programas en Eiffel al usar Microsoft Visual Studio IDE.

  • 25

    2.3 Implementaciones y entornos Existen dos implementaciones de cdigo libre:

    SmartEiffel (implementacion GNU, basada en unaversin anterior del lenguaje)

    Visual Eiffel.

    Originalmente, el lenguaje Sather estaba basado en Eiffel, pero fue modificndose, y ahora incluyevarias caractersticas de la programacin funcional.

    Parte de Apple Media Tool est basado en Eiffel.

  • 26

    2.4 Especificaciones y estndares

    El lenguaje Eiffel es un estndarinternacional de la ISO (International Organization for Standardization).El estndar fue desarrollado por ECMA International y su primera versin fue aprobada por ECMA el 21 de Junio de 2005 como el standard ECMA 367 (Eiffel: Analysis, Design and Implementation Language)

  • 27

    2.4 Especificaciones y estndares

    La segunda edicin fue adoptada por ECMA en Junio de 2006 y en el mismo ao por la ISO (Noviembre de 2006).

    El desarrollo software de Eiffel y de sus bibliotecas, dio lugar a implementar un estndar; Eiffel Software's EiffelStudio 5.7, que implementaalgunos de los mejores mecanismos del lenguaje.

    El equipo de SmartEiffel se apart de este estndarpara crear su porpia versin del lenguaje, el cualparece est ms cerca del estilo original de Eiffel.

  • 28

    2.4 Especificaciones y estndares

    Bibliografa de especificacin del lenguaje Eiffel:

    Bertrand Meyer: Eiffel: The Language, Prentice Hall, seg