domingo, 10 de mayo de 2015

Aplicaciones

     Los servicios de middleware proporcionan un conjunto más funcional de la API s para permitir una aplicación a:
Localizar claramente a través de la red, proporcionando así una interacción con otro servicio o aplicación
Los datos filtrados para que sean utilizables en un ambiente público a través de anonymization process para la protección de la privacidad(por ejemplo)
Ser independiente del servicio de red
Ser fiable y siempre disponible
Añadir los atributos complementarios como semántica en comparación con el sistema operativo y servicios de red.




     Middleware ofrece algunas ventajas únicas tecnológicas para los negocios y la industria. Por ejemplo, los sistemas tradicionales de bases de datos suelen ser desplegados en entornos cerrados, donde los usuarios acceden al sistema sólo a través de una red restringida o intranet (por ejemplo, red interna de una empresa). Con el crecimiento de la World Wide Web, los usuarios pueden acceder a prácticamente cualquier base de datos para las que tengan derechos de acceso adecuados desde cualquier parte del mundo. Middleware aborda el problema de diferentes niveles de interoperabilidad entre las estructuras de base de datos diferente. Middleware facilita el acceso a la herencia de un sistema de gestión de bases de datos (DBMS) o aplicaciones a través de un servidor web, sin tener en cuenta las características específicas de base de datos.

     Las empresas frecuentemente utilizan las aplicaciones de middleware para vincular la información de bases de datos de sus departamentos, tales como nóminas, ventas y contabilidad, o bases de datos alojadas en múltiples localizaciones geográficas. En el mercado de la salud que es altamente competitivo, los laboratorios hacen un amplio uso de aplicaciones de middleware para minería de datos y sistema informático del laboratorio (LIS), y para combinar los sistemas de información durante fusiones de hospitales. Los Middleware ayudan a reducir la brecha entre LISs separados en una red de salud recién formado a raíz de una compra del hospital.


     Los desarrolladores de redes inalámbricas pueden utilizar middleware para afrontar los retos asociados a los de sensores inalámbricos de red (WSN), o tecnologías WSN. La implementación de una aplicación de middleware permite WSN [Los analistas Middleware ] desarrolladores]. Para integrar los sistemas operativos y hardware con la amplia variedad de aplicaciones diferentes que están disponibles actualmente.

     Los middleware pueden ayudar a los desarrolladores de software a no tener que escribir APIs para todos los programas de control, que actúa como una interfaz de programación independiente para sus aplicaciones. Para la Internet del Futuro, el funcionamiento de la red a través del monitoreo de tráfico en escenarios multi-dominio, utilizando herramientas de mediación (middleware) es una poderosa ayuda, ya que permiten operadores, investigadores y [proveedores de servicios] para supervisar Calidad de servicio y analizar los eventuales fracasos en servicio de telecomunicaciones.

      Por último, el comercio electrónico utiliza middleware para ayudar en el manejo de transacciones rápidas y seguras a través de muchos tipos diferentes de entornos informáticos. En resumen, el middleware se ha convertido en un elemento crítico en una amplia gama de industrias, gracias a su capacidad de reunir los recursos a través de diferentes redes o plataformas de computación.


Protocolos Middleware

         Los protocolos de recursos y conectividad manejan todas las transacciones de red “específicas
 para grid” que se desarrollan entre los computadores y los recursos de grid. Por ejemplo, los computadores contribuyendo en una grid específica deben reconocer los mensajes de grid relevantes e ignorar el resto. Esto se hace mediante protocolos de comunicación que permiten a los recursos comunicarse unos con otros, permitiendo el intercambio de datos, y protocolos de autenticación, que proveen mecanismos seguros para verificar la identidad de los usuarios y los recursos.





     Los servicios colectivos también se basan en protocolos: protocolos de información que obtienen información acerca de la estructura y el estado de los recursos en la grid, y protocolos de manejo, que negocian el acceso a los recursos de un modo uniforme. Los servicios colectivos incluyen:

     Directorios de actualización de recursos disponibles, recursos negociables (para aquellos que disfrutan de las negociaciones en la bolsa, se trata de las negociaciones entre aquellos que quieren “comprar” recursos y aquellos que quieren “vender”) monitoreo y diagnóstico de problemas réplica de datos para que múltiples copias puedan estar disponibles en diferentes locaciones para facilitar su uso provisión de servicios de membresía/política para saber a quién se le ha permitido hacer qué y cuándo.

Evolución Middleware

     Press Release 1968 1980 Hoy Middleware Que es Middleware “El middleware es la intersección de las  tareas que un ingeniero de redes (networking) no quiere hacer, y las tareas  que un ingeniero de sistemas (applications) no quiere hacer” Evolución de los Middleware Middleware es una incorporación relativamente reciente en la computación. Obtuvo popularidad en los 80 como una solución al problema de cómo conectar nuevas aplicaciones con viejos sistemas. Antecedentes Tipos de Middleware -Remote Procedure Call (RPCs)

-Publish/subscribe

-Message Oriented Middleware (MOM)

-Object Request Broker (ORB)

-SQL-oriented Data Access Surge de: -El aumento de aplicaciones

-El aumento de la distribución

-El aumento en las necesidades de comunicación
















Taxonomía del software Middleware

     La taxonomía o clasificación del software middleware puede ser descrita en dos grandes categorías: una de integración y otra de aplicación. Éstas poseen a su vez diferentes clases.


Categoría de integración
     El tipo de integración que incluyen posee la capacidad de unirse con sistemas heterogéneos. Cada middleware posee diferentes protocolos de comunicación o formas de operar en diferente software. Los tipos de integración se pueden ver como:

Orientados a procedimiento o procesos
     Los middleware que son orientados a procesos, utilizan una comunicación sincronizada (como por ejemplo el teléfono). Una de las características de estos, es que utilizan el client stub y el server skeleton. El client stub convierte la petición en un mensaje que es mandado al servidor; luego el server skeleton recibe el mensaje, lo convierte en la petición y llama a la aplicación del servidor donde ésta es procesada. Terminado el procesamiento, ocurre el proceso inverso. El client stub chequea los errores, envía los resultados al software que inició la petición y entonces suspenden el proceso. Las ventajas de estos middleware es que usan un tipo estándar en nombres de servicios y procesos remotos, pueden retornar respuesta aun con problemas en la red y pueden manejar múltiples tipos de formatos para datos y niveles heterogéneos de sistemas de servicio. Las desventajas son que no poseen escalabilidad, no pueden retornar la información a un programa diferente del que realizó la solicitud (reflexión) y poseen procesos muy rígidos.



Orientados a objetos
     Soportan pedidos de objetos distribuidos. La comunicación entre los objetos puede ser sincronizada, sincronizada diferida o no sincronizada. Soportan múltiples pedidos similares realizados por múltiples clientes en una transacción. La forma de operar es:

El objeto cliente llama a un método lógico para obtener un objeto remoto.
Un ORB Proxy (también conocido como stub) pone en orden la información y la transmite a través del agente (broker).
El agente actúa como punto medio y contacta con diversas fuentes de información, obtiene sus referentes IDs, recolecta información y, en ocasiones, la reorganiza.
El proxy remoto (también conocido como skeleton) desordena la información que le llega del agente y se la pasa al objeto servidor.
El objeto servidor procesa la información y genera un resultado que es devuelto al cliente siguiendo los pasos inversos.
Las ventajas son que permiten generar reflexión y escalabilidad, que opera con múltiples tipos de información y estados y que soporta procesos múltiples. Las desventajas consisten en obtener la existencia de vínculos antes de la ejecución y de un código contenedor para algunos sistemas heredados.

Orientados a mensajes (MOM, Message-oriented middleware)
     Se pueden dividir en dos tipos, espera y publicación/suscripción. El paso de espera se puede dividir en mensaje y espera. El paso de mensaje inicia con que la aplicación envía un mensaje a uno o más clientes, con el MOM del cliente. El servidor MOM, recoge las peticiones de la cola (Message Broker) en un orden o sistema de espera predeterminado. Los actos del servidor MOM son como un router y usualmente no interactúan con estas. El MOM de publicación y suscripción actúa de manera ligeramente diferente, es más orientado a eventos. Si un cliente quiere participar por primera vez, se une al bus de información. Dependiendo de su función, si es como publicador, suscriptor y ambas, este registra un evento. El publicador envía una noticia de un evento al bus de memoria. El servidor MOM envía un anuncio al subscriptor registrado cuando la información está disponible.


Orientados a componentes
     Un componente es un «programa que realiza una función específica, diseñada para operar e interactuar fácilmente con otros componentes y aplicaciones». El middleware en este caso en una configuración de componentes. Los puntos fuertes de este middleware es que es configurable y reconfigurable. La reconfiguración se puede realizar en tiempo de ejecución, lo que ofrece una gran flexibilidad para satisfacer las necesidades de un gran número de aplicaciones.

Agentes
Los agentes son un tipo de middleware que posee varios componentes:
Entidades. Pueden ser objetos o procesos.
Medios de comunicación. Pueden ser canales, tuberías, etc.
Leyes. Identifican la naturaleza interactiva de los agentes. Pueden ser la sincronización o el tipo de esquema.
Las ventajas de los middleware agentes son que la capacidad de éstos para realizar una gran cantidad de tareas en nombre del usuario y para cubrir una amplia gama de estrategias basadas en el entorno que les rodea. Sin embargo su implementación es complicada debido a la complejidad y dificultades dadas por las operaciones que manejan.

Categoría de Aplicación
     La clasificación por aplicación incluye los middleware que son ajustados para aplicaciones específicas.

Middleware para acceso a información (DAM, Data Access middleware)
     Los middleware para acceso a información tienen la característica de poder interactuar con diversas fuentes de datos. En este tipo de middleware se encuentran los que procesan transacciones, gateways de bases de datos y sistemas distribuidos de transacción/procedimiento. Sus ventajas residen en la comunicación que tienen entre múltiples fuentes de datos, la conversión del lenguaje de programación de la aplicación a un lenguaje aceptado por la fuente de datos de destino y la capacidad de respuesta en un formato y lenguaje aceptable para el solicitante.


Middleware de escritorio
     Los middleware de escritorio pueden hacer variaciones en la presentación de la información pedida por el usuario por aplicaciones de rastreo y asistencia, controlar cualquier servicio de transporte y proveer una copia de seguridad y otras operaciones de fondo. Otras pueden ser manutención y gráficas, ordenamientos, directorios de servicios, manejo de información de la base de datos, manejo de procesos, calendarización de trabajos, notificación de eventos de servicios, manejo de instalación de software, servicios de cifrado y control de accesos.

Middleware basados en la web
     Este tipo de middleware asiste al usuario con la navegación web, el uso de interfaces que le permiten encontrar páginas de su interés y detectar cambios de interés del usuario basado en su historial de búsquedas. Provee de un servicio de identificación para un gran número de aplicaciones y comunicación entre procesos independiente del sistema operativo, protocolo de red y plataforma de hardware. Los middleware que se encuentran fuertemente unidos a la red se llaman servidores de aplicaciones, ya que mejoraran el rendimiento, disponibilidad, escalabilidad, seguridad, recuperación de información, y soportan la administración colaborativa y su uso. Los middleware pueden contactar directamente a la aplicación ganando mejor comunicación entre el servidor y el cliente. Otros servicios importantes dados por este tipo de middleware son servicios de directorios, emails, cadenas de suministros de gran tamaño, accesos remotos a información, descarga de archivos, accesos a programas y acceso a aplicaciones remotas.











Middleware a tiempo real
     La información en tiempo real es caracterizada porque la información correcta en un instante puede no serlo en otro. Los middleware en tiempo real soportan las peticiones sensibles al tiempo y políticas de planificación. Esto se realiza con servicios que mejoran la eficiencia de las aplicaciones de usuario. Los middleware en tiempo real se pueden dividir en diferentes aplicaciones:

Aplicación de base de datos en tiempo real.
Sensor de procesamiento.
Transmisión de información.
     La información que pasa a través de un middleware en tiempo real se ha incrementado dramáticamente con la introducción de Internet, redes inalámbricas, y las nuevas aplicaciones basadas en la difusión. Las ventajas de este tipo de middleware son que proveen un proceso de decisión que determina el mejor criterio para resolver procesos sensibles al tiempo, y la posibilidad de ayudar a los sistemas operantes en la localización de recursos cuando tienen tiempos límites de operación. Los middleware multimedia son una rama mayor en los middleware en tiempo real. Éstos pueden manejar una gran variedad de información. Estos tipos pueden ser textos, imágenes de todo tipo (GPS, imágenes, etc.), procesadores de lenguajes naturales, música y video. La información debe ser recopilada, integrada y entonces enviada al usuario sensible del tiempo. Los dispositivos multimedia pueden incluir una mezcla de dispositivos tanto físicos (parlantes, cámaras, micrófono) como lógicos.






HISTORIA DEL MIDDLEWARE

      El origen de la palabra middleware se remonta al año 1968, en donde la palabra fue usada durante la '1968 NATO Software Engineering Conference', siendo una idea de cómo conectar el nuevo software con sistemas más antiguos. Durante las décadas previas a los 90s, fue solamente descrito como un software para la gestión de conexión en redes, pero para cuando las tecnologías en redes alcanzaron una penetración y visibilidad suficiente, el software middleware' había evolucionado en un conjunto de paradigmas y servicios. De esta forma se estaba ofreciendo una manera más fácil, robusta y controlable, para construir aplicaciones distribuidas.

          




     Los Middleware han aparecido de manera relativamente reciente en el mundo de la informática. Hoy en día tecnologías móviles (celulares) están aplicando esta tecnología para el soporte de llamadas VOIP. En el pasado ganaron popularidad en la década de los 80’s, ya que eran la solución de cómo integrar las nuevas aplicaciones con los sistemas heredados (legacy systems), en todo caso, el termino ha sido usado desde 1968. También facilitaba la computación distribuida, mediante conexión de múltiples aplicaciones para crear una mucha mayor, sobre una red.

     En la década de los 80`s el desarrollo de nuevas aplicaciones fue ganando terreno y popularidad en el mercado de las telecomunicaciones, los primeros sistemas de información eran obsoletos y los nuevos equipos no contaban con el software necesario para acceder a tan precarios sistemas. El acceso a la información era hostil y tediosa, es cuando surge la necesidad de un "mediador", un puente entre los sistemas de información de antaño y los más nuevos y modernos.

     A este puente se le conoce como Middleware, un ejemplo sencillo de la aplicación de middleware podría ser cuando conectamos nuestra PC nueva, recién salida de fábrica a una impresora antigua ó viceversa, esto compañeros permite la funcionalidad total a la cual estamos acostumbrados entre los diferentes dispositivos a los que tenemos acceso, hoy en día esto facilita el acceso entre diversos sistemas de información.

     Actualmente, la existencia de nuevas arquitecturas, sistemas y plataformas más potentes y económicas hacen que muchas organizaciones se planteen la idea de trasladar sus aplicaciones corporativas, que residen en servidores centrales o mainframes, hacia nuevas plataformas. Sin embargo, los rápidos cambios de las tecnologías, hace necesario garantizar que la inversión que se realiza en el proyecto de rediseño de la aplicación tengan un resultado esperado.

miércoles, 29 de abril de 2015

PROGRAMACION ORIENTADA A OBJETOS

  Gottfried Wilheml von Leibniz (1646-1716), quien aprendió matemáticas de forma autodidacta (método no aconsejable en programación) construyó una máquina similar a la de Pascal, aunque algo más compleja, podía dividir, multiplicar y resolver raíces cuadradas.
Pero quien realmente influyó en el diseño de los primeros computadores fue Charles Babbage (1793-1871). Con la colaboración de la hija de Lord Byron, Lady Ada Countess of Lovelace (1815-1852), a la que debe su nombre el lenguaje ADA creado por el DoD (Departamento de defensa de Estados Unidos) en los años 70. Babbage diseñó y construyó la "máquina diferencial" para el cálculo de polinomios. Más tarde diseñó la "máquina analitica" de propósito general, capaz de resolver cualquier operación matemática. Murió sin poder terminarla, debido al escepticismo de sus patrocinadores y a que la tecnología de la época no era lo suficientemente avanzada. Un equipo del Museo de las Ciencias de Londres, en 1991, consiguió construir la máquina analítica de Babbage, totalmente funcional, siguiendo sus dibujos y especificaciones.
Máquina diferencial de Babbage

Un hito importante en la historia de la informática fueron las tarjetas perforadas como medio para "alimentar" los computadores. Lady Ada Lovelace propuso la utilización de las tarjetas perforadas en la máquina de Babbage. Para que se enteren todos esos machistas desaprensivos, el primer programador/a fue una mujer. En 1880 el censo en Estados Unidos tardó más de 7 años en realizarse. Es obvio que los datos no eran muy actualizados. Un asistente de la oficina del censo llamado Herman Hollerit (1860-1929) desarrolló un sistema para automatizar la pesada tarea del censo. Mediante tarjetas perforadas y un sistema de circuitos eléctricos, capaz de leer unas 60 tarjetas por minuto realizó el censo de 1890 en 3 años ahorrando tiempo y dinero. Más tarde fundó la Tabulating Machine Company y en 1924 tras alguna que otra fusión nació la Internacional Bussines Machines, IBM. ¿ Os suena ?
Atanasoff Berry Computer (ABC)

Las computadoras de hoy en día se sustentan en la lógica matemática basada en unsistema binario. Dicho sistema se implementa sobre dispositivos electrónicos que permiten, o no, pasar la corriente, con lo que se consiguen los 2 estados binarios: 0 y 1. A mediados del siglo XX, cuando se empezaron a construir las primeras computadoras digitales, se utilizaban tubos de vacío para implementar los 2 estados binarios, pero ¿ cómo aparecieron estos conceptos ? Alan Mathison Turing (1912-1954) diseñó una calculadora universal para resolver cualquier problema, la "máquina de Turing". Tuvo mucha influencia en el desarrollo de la lógica matemática. En 1937 hizo una de sus primeras contribuciones a la lógica matemática y en 1943 plasmó sus ideas en una computadora que utilizaba tubos de vacío. George Boole (1815-1864) también contribuyó al algebra binaria y a los sistemas de circuitos de computadora, de hecho, en su honor fue bautizada el álgebra booleana.
La primera computadora digital electrónica patentada fue obra de John Vincent Atanasoff (1903-1995). Conocedor de las inventos de Pascal y Babbage, y ayudado por Clifford Berry (1918-1963), construyó el Atanasoff Berry Computer (ABC). El ABC se desarrolló entre 1937 y 1942. Consistía en una calculadora electrónica que utilizaba tubos de vacío y estaba basada en el sistema binario (sistema numérico en el que se combinan los valores verdadero y falso, o 0 y 1).
Entre 1939 y 1944, Howard Aiken (1900-1973) de la universidad de Harvard en colaboración con IBM desarrolló el Mark 1. Era una computadora electromecánica de 16 metros de largo y más de dos de alto. Tenía 700.000 elementos móviles y varios centenares de kilómetros de cables. Podía realizar las cuatro operaciones básicas y trabajar con información almacenada en forma de tablas.
Por desgracia, los avances tecnológicos suelen producirse gracias a los militares que se aprovechan de la ciencia para perfeccionar sus armas. En la Moore School de la Universidad de Pensilvania se estaba trabajando en un proyecto militar para realizar unas tablas de tiro para armas balísticas. Los cálculos eran enormes y se tardaban semanas en realizarlos. Parece ser que John W. Mauchly (1907-1980), quien dirigía el departamento de física del Ursine College de Filadelfia vivió en casa de Atanasoff durante cuatro días a partir del 13 de Junio de 1941, lo que seguramente aprovechó para conocer las ideas de Atanasoff.
Junto a John Presper Eckert (1919-1995), Mauchly desarrolló una computadora electrónica completamente operacional a gran escala, para acelerar los complicados cálculos del proyecto militar de la universidad Moore. Se terminó en 1946 y se llamó Electronic Numerical Integrator And Computer (ENIAC). El ENIAC tenía 18.000 tubos electrónicos integrados en un volumen de 84 metros cúbicos. Pesaba unas 30 toneladas y consumía alrededor de 100.000 vatios. Su capacidad de cálculo era de 5.000 operaciones por segundo, aunque tenía que programarse manualmente conectándola a 3 tableros que contenían más de 6000 interruptores. Cargar un programa podía ser una tarea de varios días. El calor dispado por semejante monstruo debía ser importante, y se necesitaba una instalación de aire acondicionado. En definitiva, un ordenador portátil... más o menos.
Puede que no os suene, pero quien conozca de "los entresijos de la informática" seguro que considera importante nombrar a Johann Ludwig Von Neumann (1903-1957), genio de las matemáticas, quien tuvo el honor de asistir a las clases de Albert Einstein en la universidad de Berlín. Autor de trabajos de lógica simbólica, matemática pura y aplicada, física y tecnología, publicó un artículo acerca del almacenamiento de los programas, en 1945. Proponía que los programas se guardaran en memoria al igual que los datos, en forma binaria. Esto tuvo como consecuencia el aumento de velocidad de los cálculos y la ausencia de errores producidos por fallos mecánicos al programar la máquina mediante cables.
En cuanto a la aparición de los lenguajes de programación, el archiconocido COBOL, que tantos problemas causó con el "efecto 2000", fue el primer lenguaje en el que no había que programar directamente en código binario, y fue Grace Murray Hoper en 1952, una oficial de la Marina de Estados Unidos desarrolló el primer compilador, un programa que puede traducir enunciados parecidos al inglés en un código binario comprensible para la maquina llamado COBOL (COmmon Business-Oriented Languaje).
A partir de ahí, los avances han sido vertiginosos.
  • La utilización del transistor en las computadoras en 1958, sustituyendo los tubos de vacío
  • La aparición del circuito integrado de mano de Jack Kilby, también en 1958
  • La miniaturización de un circuito electrónico en un chip de silicio en 1961
  • El primer microprocesador, el 4004 de Intel, en 1971
  • Gary Kildall crea el sistema operativo CP/M en 1973
  • IBM comercializa el primer PC en 1980
Recordando a los primeros tiempos del ENIAC, con enormes computadores, en 1998 se terminó el proyecto Blue Pacific. La "maquinita" tiene la nada despreciable cantidad de 5856 procesadores que en conjunto tienen una velocidad de 3'9 teraflops, 2'6 Terabytes de memoria, ocupa 2400 metros cuadrados y tiene un peso de 47 toneladas. Se utiliza para la simulación de explosiones nucleares, y "ha salido" por unos 13000 millones de pesetas... baratito.
Hay muchos más personajes que intervienen en la historia y que han realizado grandes aportaciones, pero no es cuestión de extenderse.


El Objeto

   El objeto es la entidad en torno a la cual gira la POO. Un objeto es un ejemplar concreto de una clase, como por ejemplo el curso de metodología de la programación es un curso concreto dentro de todos los tipos de cursos que pueden existir. Un objeto pertenece a una clase, por lo tanto dispondrá de los atributos (datos) y operaciones (métodos) de la clase a la que pertenece. Un objeto responde al comportamiento definido por las operaciones de la clase a la que pertenece. Es decir, si la clase coche dispone del atributo color y del método arrancar, un coche concreto tendrá un color, y podrá arrancar, exclusivamente.
Estructura de un objeto
Un objeto se puede ver como una "cápsula" de datos y algoritmos que trabajan sobre esos datos. Un objeto no puede acceder directamente a sus datos (atributos). Los atributos son sólo accesibles desde la implementación de los métodos de una clase. Un objeto no puede "manipular" sus propios datos, para ello están los métodos de la clase de dicho objeto: el comportamiento (métodos) de un objeto puede variar el valor (estado) de sus datos (atributos). Por ejemplo, nunca debemos hacer lo siguiente: miCoche.color := 'rojo'. Para esto definiremos métodos que actualicen el valor de los atributos de un objeto, por ejemplo: miCoche.ponerColor('rojo').
En la POO, un objeto no es algo "eterno", se instancian (crean) y se destruyen. Una vez que se haya instanciado un objeto puede recibir mensajes. Los objetos pueden instanciarse de forma estática o de forma dinámica (recordar estos conceptos de capítulos anteriores). Un objeto estático comienza su existencia una vez es declarado (instanciación de objetos estáticos), sin embargo, un objeto dinámico no comienza su existencia al ser declarado, sino al recibir un espacio de memoria (instanciación dinámica de objetos). Por ejemplo:
Códido
Los objetos "se declararán" como atributos de las clases, en las claúsulas var de los métodos o en la lista de parámetros de los métodos. El único objeto que debe ser "declarado" en el programa principal será el de la clase raíz de toda la jerarquía de clases (por cuestiones del lenguaje Pascal orientado a objetos). Los objetos estáticos existen durante la ejecución del programa. Los objetos dinámicos existen mientras no sean destruidos (liberación de la memoria del objeto), mediante la sentencia dispose.
Tras ser instanciado, un objeto consta de los atributos de la clase a la que pertenece, y puede recibir mensajes. Dicho objeto determinará a qué método de su clase corresponde dicho mensaje. Un objeto no podrá recibir mensajes correspondientes a métodos de una clase a la qe no pertenezca. Por ejemplo:
Un objeto sólo puede recibir mensajes de métodos de su clase

La Clase

  Una clase es una descripción de datos y operaciones que describen el comportamiento de cierto tipo de elementos. Por lo tanto, para que pueda haber objetos, antes deben haberse definido las clases a las que pertenecerán dichos objetos. No tiene sentido un objeto sin una clase, ya que el objeto tiene los atributos de la clase a la que pertenece, y recibe mensajes correspondientes a métodos de la clase a la que pertenece.
Una clase se divide en una parte pública y en una parte privada. El nombre de la clase debe ser único. Antes de continuar, recordar cómo era una librería (UNIT) en Pascal. Tiene una parte donde se declaran las cabeceras de los subprogramas (ineterface) que prodrán usarse desde los ficheros que usen la librería, y otra parte donde se implementan dichos subprogramas (implementation).
Parte pública
Describe a qué operaciones responden los objetos de una clase (cómo se comportan los objetos). En esta parte de la clase se declaran las cabeceras de los métodos de la clase que podrán ser "invocados" por los objetos. Es decir, si un método se declara en la parte pública, podrá ser "invocado" por un objeto de dicha clase, de lo contrario no podrá ser "invocado" por un objeto. Es la parte "visible" de la clase, la interfaz de la clase.
Parte privada
Describe los datos de la clase y cómo las operaciones manipulan dichos datos. Esta parte de la clase es donde se oculta (encapsula) la información de la clase: datos e implementación de métodos declarados o no en la parte pública de la clase. Es una parte "no visible", cada objeto de una determinada clase tiene sus atributos (datos) y sus métodos.


Lenguajes Orientados a Objetos

Simula (1967) es aceptado como el primer lenguaje que posee las características principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en donde los "objetos" son la representación de la información más importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a objetos se destacan los siguientes:
Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas.
Al igual que C++ otros lenguajes, como OOCOBOLOOLISPOOPROLOG y Object REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico.
Un nuevo paso en la abstracción de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en todo el mundo.

JAVA Y ALGO MAS...

    Sun Microsystems compañia adquirida por Oracle en el 2009, inicialmente fue llamado “Oak” hasta 1995 cuando se renombro a Java, luego en 1998 con la versión 1.2 se le empezo a llamar Java2 o J2SE hasta finales del 2006 cuando Sun dejo el nombre en Java SE nombre que tiene hasta la actualidad.
Java es un lenguaje de programación orientado a objetos (POO) concebido por unos Ingenieros de
Java es uno de los lenguajes de programación más importantes debido a su portabilidad ya que tiene la posibilidad de poder crear o diseñar software para todo tipo de aplicaciones (Locales, intranet o internet) y poder ser ejecutado en diferentes plataformas de ahí uno de los axiomas de Java “write once, run anywhere” , que se refiere a que se pudiera usar para crear software incorporado en distintos electrodomésticos como lo son un tostador o un control remoto. Esto es gracias a que al compilar el código java genera un código conocido como Bytecode que son instrucciones las cuales puede interpretar una Maquina Virtual (JVM) que es encargada de ejecutarlo, claro para implementarlo en electrodomésticos como mencione estos correrían en versiones más compactas de la Maquina Virtual según el caso.
Estas características son las que llevaron a que el venerable C++ pudiera evolucionar en lo que Microsoft desarrollo como C# el cual toma las mejores características de C++ y las mencionadas de Java logrando un lenguaje de programación más puro y con mayor control pero de eso ya hablare en otra ocasión.
Algude las palabras con las que podemos definir Java son:

  • Simple
  • Seguro
  • Portátil
  • Orientado a Objetos
  • Robusto
  • Multihilo
  • Arquitectura Neutral
  • Interpretado
  • Alto Rendimiento
  • Distribuido
  • Dinámico