Estudio comparativo de distintos lenguajes de programación orientados a objeto Cristo Manuel Amezcua Martínez Felipe Molina de la Torre Marta Moreno Mata David Rivas Ortega Orientación a Objetos Herencia Polimorfismo Encapsulación C++ Orígenes: – BCPL –B –C Historia: – Construido originalmente como una herramienta dentro de un sistema de programación, así como para el desarrollado de compiladores C++.Características(I) – Es un lenguaje de nivel medio. Combina elementos de lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador – Estructurado: Permite crear procedimientos en bloques dentro de otros procedimientos – Estándar: Permite utilizar el mismo código en diferentes equipos y sistemas informáticos – Permite variables de referencia – Es independiente de la arquitectura de cualquier máquina en particular C++.Características(II) – No es fuertemente tipado: Se permiten operaciones con objetos de distintos tipos – Proporciona el concepto de clase – Es posible sobrecargar operadores con clases definidas por el usuario – Soporta tipos parametrizados o templates – Soporta herencia multiple y polimorfismo – No tiene colector de basura – Utilización de punteros C++.Características (III) – Viene con dos librerías Estándar: La Standard Library proporciona todas las viejas librerías de C así como también las facilidades de entrada y salida La STL proporciona una librería de tipos de contenedores así como un conjunto de algoritmos de propósitos generales C++ Tipos de datos: – – – – Hay 4 tipos básicos: Char 1 byte [-128 , 127] Int 2 bytes [-32768 , 32767] Float 4 bytes [3'4 E-38 , 3'4 E+38] Double 8 bytes [1'7 E-308 , 1'7 E+308] Calificadores de tipo : Tienen la misión de modificar el rango de valores – Signed - Unsigned – Short – long C++ Gestión de memoria: Memoria estática Los objetos son creados al entrar en el bloque y destruidos sólo al finalizar el mismo. Mantienen la misma localización en memoria durante todo el transcurso del programa (en el ‘stack’). Memoria dinámica Tanto la creación como la destrucción de objetos está en manos del programador, a través de los operadores 'new' y 'delete'. Se almacena en el 'heap' C++ Programación visual: Borland C++ Builder: es una versión ampliada del entorno de programación de delphi, pero adaptado al lenguaje C++. Visual C++: Parte del visual studio de Microsoft. Es el compilador más vendido del mercado NeatBeans for C++: NetBeans es un entorno orientado para java, pero es posible añadirle extensiones para poder utilizar C++ sobre él Visual Age for C++ Java Fue diseñado en 1990 por la empresa Sun Microsystems, como software para dispositivos electrónicos de consumo Motivos de su creacion: – Interfaces mucho más cómodas e intuitivas – Fiabilidad del código y facilidad de desarrollo – Escribe un código común para todos los dispositivos. Características Generales Orientado a Objetos Riqueza Semántica Robusto Fácil Aprendizaje Altamente portable Trabajo en Red Características Generales Seguridad – Restricciones al acceso a memoria – Verificación del nombre de clase y de restricciones de acceso durante la carga. – Sistema de seguridad de la interfaz Características Generales Lenguaje basado en C++ – Java no soporta los tipos struct, union ni punteros. No soporta typedef ni #define. No permite una sobrecarga de operadores. No soporta herencia múltiple. Java maneja argumentos en la línea de comandos de forma diversa a como lo hacen C o C++. se diferencia de la matriz de caracteres terminada con un nulo que usan C y C++ sistema automático para asignar y liberar memoria, Características Generales Gestión de la Entrada/Salida – En lugar de utilizar primitivas como las de C para trabajar con ficheros, se utlizan primitivas similares a las de C++, mucho más elegantes, que permiten tratar los ficheros, sockets, teclado y monitor como flujos de datos. Sintaxis Modificadores de Clases – abstract – final – public – synchronizable Gestión de Memoria y Recursos Ausencia de punteros – No se podrá referenciar posiciones de memoria específicas no reservadas Gestion de Memoria – No hay que reservar memoria. – Se instacian objetos Recogida de Basura – Tiene recolector de basura. Gestión de Memoria y Recursos Arrays con comprobación de limites Referencias a objetos fuertemente tipadas. Impide conversiones de tipo y castings Casting seguro – Sólo se permite casting entre ciertas primitivas de lenguaje (ints, longs) y entre objetos de la misma rama del árbol de herencia Programación Visual Dos galerias de componentes visuales que proporciona java – JAVA AWT: Frames, Windows, Dialog, etc… – JAVA SWING Panels, contenedores, etc… Programación Visual Controles basicos – Button ,Chekboxes ,Choice ,List ,Menu ,Text Field, Slider ,Scrollbar ,Text Area ,Canvas ,Label ,Panel ,Scroll Pane Eventos y respuesta al Usuario – Un evento aparece cuando hay interacción con el usuario.Ejemplos: Eventos de raton (Arrastrar el raton) (Se maximiza o minimiza una ventana ) Eventos de teclado Programación Visual Existen diferentes entornos de desarrollo para Java, como Eclipse, NetBeans, JBuilder, etc… C# C# se trata de un lenguaje relativamente nuevo Desarrollado por Microsoft Definido como: “Una cuidadosa unión entre Java y C” Facilitar la portabilidad con C++ y facilitar el aprendizaje de los programadores Características Básicas Orientado a Objetos: pero más puro que C++ ya que no admite variables o funciones globales Encapsulación: A parte de los modificadores public, private y protected se incuye internal (elemento al que solo se accede en el ensamblado) Herencia: Al igual que Java solo acepta herencia simple Polimorfismo de datos: C# admite polimorfismo en las clases que se definan (Ej: Clase Persona y Trabajador) Características Básicas (II) Polimorfismo de funciones: C# introduce un nuevo concepto. Las funciones que se puedan sobrecargar deben llevar el modificador virtual para evitar sobrecargar funciones por error Orientación Componentes: Incluye elementos propios que otros lenguajes tienen que simular con estructuras más complejas(propiedades, eventos, atributos) Directivas de preprocesamiento: Iguales que en C++: #<directiva de preprocesamiento> <valor> Características Básicas (III) Autocontenido: No se necesitan ficheros adicionales al propio código fuente. (#includes, import, etc...) Operaciones Aritméticas: Son básicamente las mismas que en los demás lenguajes OO pero C# introduce checked y unchecked para indicar si se tienen en cuenta los desbordamientos en las operaciones Características Básicas (IV) Código Inseguro: En C# se introduce lo que se llama Código Inseguro que hace referencia al código que utiliza punteros, ya que en C# no se usan punteros de forma normal Delegados: C# introduce los Delegados que son como los apuntadores a funciones de C++ y Java pero que pueden apuntar a más de una función o método. (Usan +=y -=) Sintaxis General La sintaxis es parecida a Java en cuanto a las clases: class <nombreClase> [:<superclase>]{ <métodos y funciones> <atributos> [<Main>] } Gestión de Memoria En C# se utiliza como en los otros lenguajes memoria estática y dinámica. C# tiene un recolector de basura que elimina de memoria las zonas no utilizadas por el programa, al igual que en Java, pero no en C++ La memoria dinámica se reserva como en C++ con el new y el delete y para codigo inseguro con el stackalloc que davuelve un puntero a la zona de memoria reservada. En cuanto a la reserva de tablas y matrices utiliza el operador new conjuntado con [ , ] Entornos Gráficos disponibles Para Linux: Podemos encontrar el MonoDeveloper, Eclipse, etc... Para Windows: Entre los gratuitos encontramos el Antechinus, VisualC#Express, Zeus, etc... MonoDeveloper MonoDeveloper (II) Es un entorno de desarrollo gratuito para Linux Dividido en 4 zonas: – Código: con varias pestañas donde se visualizan los codigos diferentes que forman el programa. – Barra Herramientas: Igual que en cualquier otro programa. Para modificar propiedades del proyecto, crearlo, editarlo, etc... MonoDeveloper (III) – Compilador: Es la zona en la que se muestran los mensajes de error y advertencias cuando compilamos nuestro código. – Árbol de Proyectos: Podemos visualizar el proyecto o proyectos que tenemos abiertos, sus referencias, archivos que lo forman, jerarquía, etc... Antechinus Antechinus (II) Tiene también varias zonas diferenciadas: – Código: Aquí es donde se escribe el código de nuestro programa – Compilador: Es la zona de abajo a la izquierda, donde se muestran los mensajes del compilador, errores y advertencias. – Archivos: Es la zona abajo a la derecha donde se pueden ver los archivos que tenemos abiertos en un momento dado. – Herramientas: Zona con todas las opciones de edición y compilación para el proyecto actual. Introducción ¿Qué es Delphi? RAD (herramienta de Desarrollo Rápido de Aplicaciones ) Programación Visual Object Pascal Kylix Delphi. Características Principales(I) Fuertemente tipado Estructura de bloques: Begin a := b + c; Insertar(a); end; Comentarios: – – – { <texto aclarativo> } * <texto aclarativo> * // <texto aclarativo> Delphi. Características Principales(II) Declaración de variables Var Nombrevariable1 : tipo; Nombrevariable2 : tipo; – Constantes: Const <nombre de cte. > = <valor cte.> Delphi. Características Principales(III) Tipos Básicos: Operaciones: Delphi. Características Principales(IV) Estructuras de decisión If-then-else: if <condición> then <instrucción 1> else <instrucción 2> Case-of Estructuras de control For While-do Repeat-until Delphi. Características Principales(VI) Procedimientos y funciones Delphi. Características Principales(VII) Clases y objetos Public y private Atributos Métodos Delphi. Características Principales(VIII) Herencia TClaseHeredada = class(TClase); interfaces Polimorfismo class coche { class ciclomotor { procedure avanza; procedure avanza; procedure para; procedure para; procedure girar_derecha; girar_derecha; } } procedure girar_derecha; girar_derecha; Delphi. Gestión de Memoria y Recursos Ver los datos de las tablas y consultas en tiempo de diseño Introducir código en lenguaje ensamblador para mejor desempeño donde sea necesario Escribir fácilmente aplicaciones multi-hilos Llamar a funciones de la API de Windows como si fueran funciones incorporadas Consta de una jerarquía de clases VCL con componentes a los que se les puede añadir funcionalidad No tiene recolector de basura Portabilidad Optimización del compilador Delphi. Gestión de Memoria y Recursos(III) Opciones de optimización para el compilador de Delphi Programación Visual (I) Borland Delphi Developer 2006 jerarquía de clases VCL (Visual Component Library) Conceptos: Clase Objeto Componente Controles Métodos eventos Programación Visual (II) Eventos Tres grandes bloques: Utilización del Entorno Delphi (I) Utilización del Entorno Delphi (II) Paleta de componentes : Utilización del Entorno Delphi (III) Inspector de Objetos: Utilización del Entorno Delphi (IV) Componentes visuales: Utilización del Entorno Delphi (V) Bibliografía Wikipedia http://unia.ual.es/~jjhernan/delphi/: http://juanfc.lcc.uma.es/EDU/EP/trabajosT203.HistoriayTiposde LenguajesdeProgramacion.pdf Tutorial: Programación Delphi. Francisco Charte Ojeda. http://www.fcharte.com http://www.elguille.info/delphi/apuntesDelphi/apuntesDelphi.ht m http://www.latiumsoftware.com/es/articles/00010.php www.clubdelphi.com/foros http://www.webestilo.com/php/articulo.phtml?art=30 Bibliografia http://www.unav.es/cti/manuales/Java/indice.html#inicio http://www.fib.unam.mx/pp/profesores/carlos/java/java_basico5_2.html http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_3.htm http://www.iec.csic.es/criptonomicon/java/lenguaje.html http://www.mygnet.com/manuales/java/1140/