C++, C#, Java y Delphi - Departamento de Lenguajes y Sistemas

Anuncio
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/
Descargar