martes, 26 de julio de 2016

Entorno Integrado de Desarrollo

Entorno Integrado de Desarrollo

 Es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI)

Los IDE poseen un marco de trabajo amigable para la mayoría de los lenguajes de programación tales como C++, PHP, Python, Java, C#, Delphin, Visual Basic, entre otros.

 Características

  Un IDE debe tener las siguientes características:
  1.  Multiplataforma
  2. Soporte para diversos Lenguajes de programación
  3. Integracion con Sistemas de Control de Versiones
  4. Reconocimiento de sintaxis
  5.  Extensiones y Componentes para el IDE
  6. Integración  con Framework populares
Existen diferentes versiones de los IDEs pero estos son algunos del software que utilizan IDE, estos son:
  1. Eclipse: Software Libre. Es uno de los entornos Java mas utilizados a nivel profesional. El paquete básico de Eclipse se puede expandir mediante la instalación de plugins para añadir funcionalidades a medida que se vayan necesitando.
  2. NetBeans: Software Libre. Otro de los entornos Java muy utilizados, también expandible mediante plugins. Facilita bastante el diseño gráfico asociado a aplicaciones Java.
  3. BlueJ: Software Libre. Es un entorno de desarrollo dirigido al aprendizaje de Java (entorno académico) y sin uso a nivel profesional. Destaca por ser sencillo e incluir algunas funcionalidades dirigidas a que las personas que estén aprendiendo tengan mayor facilidad para comprender aspectos clave de la programación orientada a objetos.
  4. JBuilder: Software Comercial. Se pueden obtener versiones de prueba o versiones simplificadas gratuitas en la web, buscando en la sección de productos y desarrollo de aplicaciones. Permite desarrollos gráficos.
  5. JCreator: Software Comercial. Se pueden obtener versiones de prueba o versiones simplificadas gratuitas en la web. Este IDE esta escrito en C++ y omite herramientas para desarrollos gráficos, lo cual lo hace mas rápido y eficiente que otros IDEs.
Ventajas de los IDEs
  1. La curva de aprendizaje es muy baja
  2. Es muy ágil y optimo para los usuarios que no son expertos en manejo de consola.

 Interfaz Gráfica de Usuario

La interfaz  de usuario, conocida tambien como GUI del ingles graphical user interface, es un programa informatico que actua de interfaz de usuario, utilizando un conjunto de imagenes y objetos graficos para representar la informacion y aciones disponibles en la interfaz.
 
Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicacion con el sistema operativo de un máquina o computador. 

Tipos de interfaces gráficas de usuario 

Las GUI y ZUI
 
Los tipos de interfaces graficas de usuarios (GUI) que se enuentran en juegos de computadora, y las GUI avanzados basados en realidad virtual, se usan con frecuencia en tareas de investigacion.
 
Interfaz de usuario de pantalla táctil
 
Algunas GUI son diseñadas para cumplir con los rigurosos requisitos de os mercados verticales. Estos se conocen como las GUI de uso especifico.Un ejemplo de un GUI de uso especifico es la ahora familiar pantalla táctil o touchscreen (pantalla que al ser tocada efectua los comandos del raton en el software). Se encuentra actualmente implementado en muchos restaurantes y en muchas tiendas de autoservicios de todo el mundo.
 
Interfaz natural de usuario (NUI)
 
Las NUI son aquellas en las que se interactua con un sistema, aplicacion, entre otros, sin utilizar dispositivos de entrada como rton, teclado, lapiz optico, entre otros. En lugar de estos se utilizan las manos o las yemas de los dedos.

Ventajas y Desventajas

Ventajas: 
  1.  Facilita el manejo de los procedimientos
  2. Cada comando puede ser visualizado en pantalla mediante una imagen que lo representa.
  3. Proporiona mecanismos estandar de control como ventanas y cuadros de dialogo.
  4. Permite interactuar al usuario con el sistema de una forma mas facil.
Desventajas:
  1. Utiliza mas recursos del sistemas.
  2. Es mas complejo realizar un sistema de este tipo.
  3. Son mas costosos

Herencia, Polimorfismo e Interface


 

 Herencia

 Concepto

 Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes. Es la relación entre una clase general y otra clase mas especifica.

La herencia es la transmisión del código entre unas clases y otras. Para soportar un mecanismo de herencia tenemos dos clases: la clase padre y la/s clase/s hija/s. La clase padre es la que transmite su código a las clases hijas. En muchos lenguajes de programación se declara la herencia con la palabra "extends". 

 Tipos de Herencia 

Simples y multiples 
  1. Simples: permite que una clase herede las propiedades y metodos de su superclase en una adena jerárquica. Sólo puede heredar de una clase base y de ninguna otra. 
  2. Multiples: es aquella en que cada clase puede heredar las propiedades y metodos de cualquier numero de clases. Puede heredar las características de varias clases base, es decir, puede tener varios padres
De implementacion y de interfaz
  1. De implementacion: la implementacion de los objetos es heredada. Puede sobreescribirse en las clases derivadas.
  2. De interfaz: solo se hereda a interfaz, no hay implementacion a nivel de clase base (interfaces en Java, clases abstractas en C++).

Ventajas y Desventajas

Ventajas
  • Ayuda a los programadores a ahorrar código y tiempo, ya que la clase padre ha sido implementada y verificada con anterioridad, restando solo referenciar desde la clase derivada a la clase base (que suele ser extends, inherits, subclass u otras palabras clave similares, dependiendo del lenguaje).
  • Los objetos pueden ser construidos a partir de otros similares. Para ello es necesario que exista una clase base (que incluso puede formar parte de una jerarquía de clases más amplia).
  • La clase derivada hereda el comportamiento y los atributos de la clase base, y es común que se le añada su propio comportamiento o que modifique lo heredado.
  • Toda clase pueden servir como clase base para crear otras 
Desventajas

Si la jerarquía de clases es demasiado compleja, el programador puede tener problemas para comprender el funcionamiento de un programa. Además puede volverse más complejo detectar y resolver errores de programación, por ejemplo al modificar una clase padre que afecta el funcionamiento de las subclases.

Otro problema es que las subclases se deben definir en código, por lo que los usuarios del programa no puede definir subclases nuevas. Otros patrones de diseño permiten que los usuarios puedan definir variantes de una entidad en tiempo de ejecución.

Polimorfismo 

Concepto

 Es la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.


Clasificación

Se puede clasificar el polimorfismo en dos grandes clases:
  • Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.
  • Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explícitos y declarados uno por uno antes de poder ser utilizados.
El polimorfismo dinámico unido a la herencia es lo que en ocasiones se conoce como programación genérica.
También se clasifica en herencia por redefinición de métodos abstractos y por método sobrecargado. El segundo hace referencia al mismo método con diferentes parámetros.

 Interfaces

Concepto

Es un conjunto de métodos abstractos y de constantes cuya funcionalidad es la de determinar el funcionamiento de una clase, es decir, funciona como un molde o como una plantilla. Al ser sus métodos abstractos estos no tiene funcionalidad alguna, sólo se definen su tipo, argumento y tipo de retorno.

 Características de las Interfaces:

  • Las Interfaces solo pueden tener visibilidad de package o public.
  • Todos los métodos declarados en una Interfaz son public y abstract, si no se le indica, Java lo pondrá implícitamente.
  • Los métodos de una Interfaz no pueden ser estáticos, ya que estos deben ser redefinidos, y al ser estáticos les sería imposible.
  • Todos los atributos declarados en una Interfaz son "public static final" y deberán tener asignado un valor constante. Todos los nombres de constantes van en "MAYÚSCULAS"
  • Una clase puede implementar una o más interfaces.
  • Una Interfaz puede heredar de una o varias interfaces, pero no pueden implementar NADA. Como sabemos, las clases solo pueden heredar de otra clase, pero las Interfaces pueden hacer herencia múltiples.
  • Todas las clases que implementen una interfaz deben de redefinir todos los métodos de esa interfaz.
  • Las interfaces no tienen constructor, por lo que no es posible crear objetos con el operador "new" de ésta.
  • Si se implementa en una clase una Interfaz, y esta Interfaz hereda de otra, la clase deberá implementar todos los métodos de la interfaz que implementa y de los métodos que esta hereda.
  • Para la herencia de las interfaces se pone la palabra clave extends y se ponen todas las interfaces que se deseen separadas por comas.
  • Una Interfaz puede ocultar constantes y métodos heredados de otras Interfaces si los vuelve a declarar en la clase que hereda.

 Ejemplo