miércoles, 29 de abril de 2015

PROGRAMACIÓN ORIENTADA A OBJETOS

La programación orientada a objetos es un paradigma surgido en los años 70, que utiliza objetos como elementos fundamentales en la construcción de la solución. Un objeto es una abstracción de algún hecho o ente del mundo real, con atributos que representan sus características o propiedades, y métodos que emulan su comportamiento o actividad. Todas las propiedades y métodos comunes a los objetos se encapsulan o agrupan en clases. Una clase es una plantilla, un prototipo para crear objetos; en general, se dice que cada objeto es una instancia o ejemplar de una clase.

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetosen sus interacciones, para diseñar aplicaciones y programas informáticosEstá basado en varias técnicas, incluyendo herencia,cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. 



Entre los lenguajes orientados a objetos se destacan los siguientes:

·         ABAP -> SAP Lenguaje orientado a eventos
·         ABL Lenguaje de programación de OpenEdge de Progress Software
·         ActionScript
·         ActionScript 3
·         Ada
·         C++
·         C#
·         Clarion
·         Clipper1
·         D
·         Object Pascal (Embarcadero Delphi)
·         Gambas
·         GObject
·         Genie
·         Harbour
·         Eiffel
·         Fortran 90/95
·         Java
·         JavaScript2
·         Lexico3
·         Objective-C
·         Ocaml
·         Oz
·         R
·         Pauscal [En español]
·         Perl4
·         PHP5
·         PowerBuilder
·         Python
·         Ruby
·         Self
·         Smalltalk6
·         Magik (SmallWorld)
·         Vala
·         VB.NET
·         Visual FoxPro7
·         Visual Basic 6.0
·         Visual DataFlex
·         Visual Objects
·         XBase++
·         Lenguaje DRP
·         Scala

La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Entre los elementos principales de la POO, podremos encontrar a:

            Clase:

Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.

      Herencia:

(Por ejemplo, herencia de la clase C a la clase D) es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de POO.

Objeto:
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase.

Método:
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento:
Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.

Atributos:
Características que tiene la clase.

Mensaje:
Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo:
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Estado interno:

Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

Componentes de un objeto:

Atributos, identidad, relaciones y métodos.

Identificación de un objeto:

Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.






Características de la POO:

Abstracción:

Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.

Encapsulamiento:

Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.


Modularidad:

Se denomina modularidad a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas.


Polimorfismo:

Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.


Herencia:

Las clases no se encuentran aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; siendo de alta complejidad técnica por lo cual suele recurrirse a la herencia virtual para evitar la duplicación de datos.


JAVA Y ALGO MÁS


EMULADORES

Un emulador es un programa de software que tiene como objetivo replicar las funciones de una pieza específica de hardware o software.
Existen montones de emuladores que muestran la forma en que se vería una web desde un dispositivo móvil determinado o desde un navegador.
Pueden emplearse desde cualquier ordenador, algunos en línea y otros en forma de software, algunos de ellos puestos a disposición por los propios fabricantes de dispositivos y de las empresas de software. Hay que darse cuenta de que existen multitud de terminales móviles, con diferentes sistemas operativos y distintos navegadores, por lo que el emulador sólo nos mostrará una idea de cómo se visualizaría una página web en un móvil determinado.

La infinidad de dispositivos móviles que hay hoy en día en el mercado supone un reto constante para los desarrolladores de contenidos en la creación de aplicaciones que puedan incorporarse a cientos, o incluso miles, de distintos dispositivos.
Algunos de estos emuladores en línea que se pueden emplear son Test iPhone e iPhone tester para iPhone, Opera Mini Simulator, que simula el comportamiento del navegador Opera Mini, o dotMobi emulator, para Nokia N70 y SonyK750, si se quiere hacer una idea del funcionamiento en pantallas más pequeñas.
Extensiones, como User Agent Switcher para Firefox, que muestra la página web consultada desde el navegador como si fuera vista desde un dispositivo móvil. Una vez instalada esta extensión es necesario importar las especificaciones de los dispositivos.

El navegador Opera incorpora una útil opción para ver la página web consultada en pantalla pequeña.
El “emulador” es el código del navegador, e interfaz de usuario, que instalamos en los móviles. Incluye la capacidad de instalar widgets, y todas las capacidades de la versión móvil. La diferencia es que usa el procesador y memoria del ordenador, que puede ser más que lo que hay en un dispositivo.
También es posible usar la herramienta de desarrollo Dragonfly (incluido en Opera para escritorios) para conectar a la versión móvil, sea en escritorio o en un dispositivo móvil de verdad. Eso da mucho más información tal cómo el estado del DOM, propiedades de CSS aplicado a cada elemento, etc., para desarrolladores profesionales.

Tipos de emuladores de móvil:

Se dividen en tres categorías principales:
  • Emuladores de dispositivos: Generalmente los ofrecen los fabricantes de dispositivos y simulan el dispositivo real. Son válidos para las pruebas de aplicación del sitio web en un dispositivo o conjunto de dispositivos.
  • Emuladores de navegadores: Simulan los navegadores de los entornos móviles. Son útiles para determinan la funcionalidad disponible en un navegador, pero no valen para la prueba específica del dispositivo.
  • Emuladores del sistema operativo: Microsoft proporciona emuladores para Windows Mobile y Google proporciona un emulador de Android. Se ejecutan en un entorno simulado de dispositivos móviles y proporcionan acceso a aplicaciones que se ejecutan en el sistema operativo.

Problemas con los emuladores:

Hay que saber que no porque el sitio web funcione perfectamente en un emulador, funcionará de la misma manera en el dispositivo real. A menudo hay muchos emuladores que difieren sutilmente de los dispositivos que simulan. Especialmente en el caso de que el desarrollador del emulador no sea el creador original del dispositivo.
Los emuladores se utilizan para abarcar una amplia gama de dispositivos a los que no se tendría acceso y poder corregir cualquier error que se encuentre, pero también conviene asegurarse de probar el sitio web en algunos dispositivos reales.

Emuladores más populares:

Las siguientes compañías ofrecen emuladores para todos o algunos de sus dispositivos móviles (véase la lista a continuación no son exhaustivos):
  • Research in Motion (BlackBerry)
  • Apple (iPhone)
  • Samsung
  • Palm
  • LG
Emuladores para dispositivos móviles:
  • Device Anywhere
  • MobiReady
  • OperaMini
  • W3C Mobile OK Checker
  • dotMobi Emulator
  • iPhoney
Emuladores de funcionamiento del sistema están disponibles en:
  • Microsoft (Windows Mobile)
  • Google (Android)
  • Nokia (Series 40 and Series 60) 
Algunos emuladores de búsqueda disponibles son:
  • Opera Mini
  • Openware

¿Dónde puedo encontrar estos emuladores?

Los emuladores en general, se pueden encontrar en uno de tres lugares:
  • Fabricantes de desarrollo de portales web
  • Incluido como parte de un SDK
  • Como parte de un sitio Web
Y también, como siempre se puede intentar buscar un emulador específico en el motor de búsqueda favorito. Ejemplo, "emulador de iPhone".
A la hora de utilizar un emulador hay que tener en cuenta que:
  • Muchas de estas descargas son grandes, así que hay que asegurarse de no exceder el límite de descarga.
  • Debido al tamaño de las descargas, es esencial una rápida conexión a Internet.
  • Muchos portales pedirán que registrarse. Suele ser un proceso indoloro.

 Emuladores para dispositivos móviles:

DeviceAnywhere:

DeviceAnywhere™ es un innovador servicio diseñado por Mobile Complete que pone en manos de los desarrolladores la interacción con los dispositivos en tiempo real conectados a redes globales activas.
Creada a partir de la innovadora tecnología Direct- To-Device™ de interacción con dispositivos de Mobile Complete.
DeviceAnywhere permite conectarse y controlar dispositivos móviles en todo el mundo, con tan solo acceder a través de Internet.
Consta de una plataforma en tiempo real, no simulada, en la que se puede pulsar una tecla para los botones laterales del dispositivo, hablar por el micrófono del dispositivo a través del micro del ordenador, visualizar la pantalla LCD del dispositivo, escuchar el altavoz y timbres, conectar y desconectar la batería, cable eléctrico y cable de datos, hacer llamadas, navegar por sitios WAP, enviar y recibir mensajes y muchas más cosas.
DeviceAnywhere cuenta con un banco de dispositivos móviles en el que se incluyen  dispositivos situados en los Estados Unidos, Canadá, Reino Unido, Francia, Alemania, España y Japón. También ofrece una variada cartera de compañías de telefonía y fabricantes de todo el mundo.






MobiReady:

mobiReady se lanzó en noviembre de 2006 como herramienta gratuita para que los desarrolladores tuvieran un mejor conocimiento de su contenido web y sus posibilidades de funcionamiento en los dispositivos móviles.
El comprobador de sitios prueba las páginas web para comprobar su disponibilidad móvil, además del tiempo y coste de descarga, basándose en el tamaño del contenido y en otros elementos adicionales.
Desarrollado junto a W3C y las principales compañías de movilidad, mobiReady además proporciona asesoramiento sobre cómo solucionar los problemas para que el contenido funcione en la más amplia variedad de teléfonos móviles.
El crecimiento del uso de la herramienta se refleja en el crecimiento general de la web móvil. mobiReady ha demostrado ser una herramienta potente que ayuda a los desarrolladores a crear y mantener contenido web compatible con los dispositivos móviles.
mobiReady está disponible de forma gratuita desde http://mobiReady.com o a través del foro de desarrolladores móviles web de dotMobi desde http://mobiForge.com. 







Opera Mini:

Opera Mini es un navegador web para dispositivos móviles desarrollado con Java ME. Originalmente fue creado para dispositivos móviles con poca capacidad de memoria y proceso. Actualmente soporta a la mayoría de los móviles incluyendo los smartphones. La versión 5 de Opera Mini ha sido adaptada para dispositivos con pantalla táctil.
Al contrario de la mayoría de los navegadores, Opera Mini obtiene todo el contenido a través de un proxy que corre el motor de maquetación delnavegador Opera. Este motor en el servidor proxy reformatea las páginas web con la anchura adecuada para pantallas pequeñas. El contenido se comprime y posteriormente se entrega al teléfono en lenguaje de marca llamado OBML (Opera Binary Markup Language, Lenguaje de Marcado Binario de Opera). Los contenidos llegan al teléfono con una reducción de tamaño entre el 70 y el 90%.
Opera Mini fue presentado mundialmente en enero de 2006.
A lo largo de los años han ido apareciendo más versiones con nuevas prestaciones como descargar un archivo a la memoria del teléfono, posibilidad de modificar el aspecto visual, nuevas páginas de búsqueda y mejor navegación, mayor velocidad de procesamiento y nuevas web habilitadas. En abril de 2008, Opera Mini 4.1 trae como novedades la posibilidad de descargar archivos adjuntos y archivos de audio, video, imágenes y aplicaciones entre otros directamente sin salir del navegador como en las versiones anteriores.
En noviembre de 2008 se da a conocer la versión 4.2 en su fase beta, entre sus mejoras se encuentra la opción de mejoras el aspecto visual del navegador y la posibilidad de guardar páginas para poder ser consultadas posteriormente sin necesidad de conexión de Internet.
En mayo de 2010 Opera presenta su última versión denominada Opera Mini 5, la cual introduce una gran cantidad de cambios que han sido efectuados para mejorar notablemente la experiencia del usuario.
Entre las novedades más importantes que ha presentado el nuevo Opera Mini 5, cabe destacar que posee una nueva interfaz, la cual incluye soporte para el uso de pestañas. 

En la nueva versión de Opera Mini las pestañas se presentan y se utilizan de modo similar al de los navegadores de escritorio, ya que éstas están siempre a la vista. 

Por otra parte, se ha incorporado la función visual de miniaturas de pestañas, junto con una serie de efectos estéticos tales como transiciones.

Otra de las funciones que incorpora Opera Mini 5 es que el Speed Dial ha sido adaptado para su visualización en pantallas reducidas, es decir que se puede acceder a las miniaturas de las pestañas con sólo clickear sobre ellas. 

Asimismo, en su nueva versión el navegador cuenta con soporte para pantallas del tipo touchscreen, además de la convencional navegación por teclado, incluyendo nuevos métodos de zoom y scroll que pueden ser accionados de manera táctil. 

Por otro lado, Opera Mini 5 incorpora la funcionalidad de búsqueda en páginas visitadas, es decir que de manera sencilla puede realizarse una búsqueda de palabras o frases dentro de la web que se esté visitando. 

Otra de las grandes ventajas del nuevo Opera Mini para dispositivos portátiles es el novedoso administrador de contraseñas, que permite almacenar la información necesaria de claves y passwords para acceder de manera más fácil y rápida a los sitios webs que suele frecuentar el usuario. 

Esta nueva versión de Opera Mini, al igual que las anteriores, permite comprimir y almacenar las páginas visitadas para realizar una navegación sin conexión y de esta manera disminuir el consumo de datos. 

Asimismo, los websites pueden ser visualizados de la misma manera que en un navegador de escritorio, y además permite el uso de plugins para el intercambio de diversos skins para la aplicación. 

Cabe destacar que en cuanto a la experiencia de navegación, el nuevo Opera Mini 5 se encuentra a la altura de otros navegadores tales como el del iPhone y el Android, aunque la aplicación de Opera es la única capaz de funcionar en una ilimitada cantidad de modelos de teléfonos móviles. 




W3C mobileOK:


Este corrector realiza varias pruebas en una página Web para determinar su nivel de telefonía móvil amigable. Las pruebas se definen en el mobileOK Pruebas básicas 1.0pliego de condiciones. Una página Web es mobileOK cuando pasa todas las pruebas.
El W3C mobileOK Checker es un servicio gratuito del W3C que permite comprobar el nivel de la móviles en el manejo de documentos Web.
El objetivo del verificador mobileOK del W3C es ayudar a los creadores de contenidos web en el desarrollo de contenidos para móviles de forma automática. Estos análisis de contenido se realizan con la interoperabilidad con el estándar del W3C mobileOK que se ha desarrollado como parte de la Iniciativa de Web Móvil del W3C.

Aunque ser mobileOK no es una garantía de que el documento web se pueda representar correctamente por todos los dispositivos móviles, ni un seguro de que la experiencia del usuario se ha tratado correctamente.

La norma mobileOK se ha derivado de W3C Mobile Web Best Practices 1.0, estándar que define una serie de recomendaciones a seguir para mejorar la experiencia del usuario de la Web en dispositivos móviles.
Este trabajo en parte está basado en las directrices ya existentes. Fue publicado como un estándar del W3C final ("Recomendación") en julio de 2008.
El grupo de trabajo extrae un subconjunto de las mejores prácticas de este documento y define una nueva especificación que se llama W3C mobileOK Basic Tests 1.0, y ha sido publicada como un estándar del W3C en diciembre de 2008. 
Una página Web que supera todas las pruebas se dice que es mobileOK.
Cuando el contenido Web es mobileOK significa que el autor tomó las medidas razonables para proporcionar una experiencia funcional para el usuario en una  
gran mayoría de los dispositivos móviles. En pocas palabras, significa que el 
contenido para móviles es el correcto.






DotMobi Emulator:

El emulador de dotMobi en línea es otra manera de ver los sitios web mostrándolos como en un teléfono móvil común. dotMobi emulador en línea es muy similar a Opera Mini.
Es necesario tener la última versión de Java instalada en el PC.
Introduciendo el. Com /. Net /. Org /. Biz, etc., la dirección del sitio el usuario puede comprobar cómo se vería en el teléfono móvil. Y en caso de no estar satisfecho con lo que se ve dotMobi ayuda a optimizar el sitio para la web móvil.
El. Mobi y una suite de herramientas de desarrollo de dotMobi ayudan a resolver las barreras para el uso de Internet móvil, tales como páginas mal formateadas, un inapropiado o excesivo contenido, una difícil navegación, etc.





iPhoney:


Tiene el mismo aspecto que el iPhone, se parece muchísimo pero no es un iPhone, se llama iPhoney y se trata de una interfaz que permite ver cómo queda una página web desde el iPhone.
Tampoco se trata de un emulador puesto que no permite ejecutar aplicaciones ni emular las funciones del iPhone, excepto tal vez las aplicaciones basadas en web. Se puede comprobar las páginas en 320x480 o 480x320 píxeles.
Es un buen intento de emulación de la interfaz del iPhone, más bien de su navegación web pero está muy limitado. No hay forma de hacer zoom ni se puede usar el sistema de entrada de datos del autentico iPhone. Sin embargo, es ideal para realizar capturas originales para los blogs personales sobre Mac.
Con el iPhoney se puede:
-  Testear la apariencia de los diseños o de las aplicaciones web.
-  Abrir cualquier sitio que funcione en Safari  (el navegador del iPhone usa Safari como motor web )
-  Rotar el interfaz del simulador para comprobar la apariencia de los sitios web en formato apaisado.
Simular el User Agent del iPhone, pudiendo testear o implementar correctamente redirecciones basadas en el navegador del usuario.

Para utilizar iPhoney se necesita un sistema operativo Mac OS X 10.4.7 o superior.