miércoles, 13 de septiembre de 2017

Atributos - Metodos

Atributos - Metodos

  • Atributos:
    Los atributos o características de una Clase pueden ser de tres tipos, los que definen el grado de comunicación y visibilidad de ellos con el entorno, estos son:
    • public (+,): Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
    • private (-,): Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).
    • protected (#,): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven (ver herencia).
  • Métodos:
    Los métodos u operaciones de una clase son la forma en como ésta interactúa con su entorno, éstos pueden tener las características:
    • public (+,): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
    • private (-,): Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de la clase lo pueden accesar).
    • protected (#,): Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (ver herencia).

MODELO DE CLASES-HERENCIA

MODELO DE CLASES-HERENCIA

Indica que una subclase hereda los métodos y atributos especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected).

Ejemplo:

En la figura se especifica que Auto y Camión heredan de Vehículo, es decir, Auto posee las Características de Vehículo (Precio, VelMax, etc) además posee algo particular que es Descapotable, en cambio Camión también hereda las características de Vehiculo (Precio, VelMax, etc) pero posee como particularidad propia Acoplado, Tara y Carga.
Cabe destacar que fuera de este entorno, lo único "visible" es el método Caracteristicas aplicable a instancias de Vehículo, Auto y Camión, pues tiene definición publica, en cambio atributos como Descapotable no son visibles por ser privados.







martes, 12 de septiembre de 2017

El lenguaje Java

Conceptos básicos del lenguaje Java.


El lenguaje Java

Como cualquier lenguaje de programación, el lenguaje Java tiene su propia estructura, reglas de sintaxis y paradigma de programación. El paradigma de programación del lenguaje Java se basa en el concepto de programación orientada a objetos (OOP), que las funciones del lenguaje soportan.
El lenguaje Java es un derivado del lenguaje C, por lo que sus reglas de sintaxis se parecen mucho a C: por ejemplo, los bloques de códigos se modularizan en métodos y se delimitan con llaves ({ y }) y las variables se declaran antes de que se usen.
Estructuralmente, el lenguaje Java comienza con paquetes. Un paquete es el mecanismo de espacio de nombres del lenguaje Java. Dentro de los paquetes se encuentran las clases y dentro de las clases se encuentran métodos, variables, constantes, entre otros. En este tutorial, aprenderá acerca de las partes del lenguaje Java.

El compilador Java

Cuando usted programa para la plataforma Java, escribe el código de origen en archivos .java y luego los compila. El compilador verifica su código con las reglas de sintaxis del lenguaje, luego escribe los códigos byte en archivos .class. Los códigos byte son instrucciones estándar destinadas a ejecutarse en una Java Virtual Machine (JVM). Al agregar este nivel de abstracción, el compilador Java difiere de los otros compiladores de lenguaje, que escriben instrucciones apropiadas para el chipset de la CPU en el que el programa se ejecutará.

El kit de desarrollo de Java

Cuando usted descarga un kit de desarrollo de Java (JDK), obtiene, — además del compilador y otras herramientas, — una librería de clase completa de programas de utilidad preconstruidos que lo ayudan a cumplir cualquier tarea común al desarrollo de aplicaciones. El mejor modo para tener una idea del ámbito de los paquetes y bibliotecas JDK es verificar la documentación API JDK.

El Java Runtime Environment

El Java Runtime Environment (JRE, también conocido como el Java Runtime) incluye las bibliotecas de códigos de la JVM y los componentes que son necesarios para programas en ejecución escritos en el lenguaje Java. Está disponible para múltiples plataformas. Puede redistribuir libremente el JRE con sus aplicaciones, de acuerdo a los términos de la licencia del JRE, para darles a los usuarios de la aplicación una plataforma en la cual ejecutar su software. El JRE se incluye en el JDK.

Conceptos de programación orientada a objetos

El lenguaje Java está (en su mayor parte) orientado a objetos. Si no ha utilizado un lenguaje orientado a objetos antes, sus conceptos pueden parecer extraños al principio. Esta sección es una breve introducción a los conceptos del lenguaje OOP, que utiliza programación estructurada como punto de contraste.

¿Qué es un objeto?

Los lenguajes de programación estructurada como C y COBOL siguen un paradigma de programación muy diferente de los orientados a objetos. El paradigma de programación estructurada está altamente orientado a datos, lo cual significa que usted tiene estructuras de datos por una parte y luego instrucciones del programa que actúan sobre esos datos. Los lenguajes orientados a objetos, como el lenguaje Java, combinan datos e instrucciones del programa en objetos.
Un objeto es una entidad independiente que contiene atributos y comportamientos y nada más. En lugar de tener una estructura de datos con campos (atributos) y pasar esa estructura a toda la lógica del programa que actúa sobre ella (comportamiento), en un lenguaje orientado a objetos, se combinan los datos y la lógica del programa. Esta combinación puede ocurrir en niveles completamente diferentes de granularidad, desde objetos específicos como un Number hasta objetos de aplicación general como un servicio de FundsTransfer en una gran aplicación bancaria.

Objetos padre e hijo

Un objeto padre es aquel que sirve como la base estructural para derivar objetos hijos más complejos. Un objeto hijo se parece a su padre pero es más especializado. El paradigma orientado a objetos le permite reutilizar los atributos y comportamientos comunes del objeto padre y le agrega a sus objetos hijos atributos y comportamientos que difieren.

El objeto Person

Comenzaré con un ejemplo que está basado en escenario común de desarrollo de aplicación: se representa a un individuo con un objeto Person.
Volviendo a la definición de un objeto, usted sabe que un objeto tiene dos elementos primarios: atributos y comportamiento. Verá cómo estos se aplican al objeto Person.

Atributos

¿Qué atributos puede tener una persona? Algunos atributos comunes incluyen:
  • Nombre
  • Edad
  • Altura
  • Peso
  • Color de ojos
  • Género
Probablemente a usted se le pueden ocurrir más (y siempre puede agregar más atributos más tarde) pero esta lista es un buen comienzo.

Comportamiento

Una persona real puede hacer todo tipo de actividades pero los comportamientos de los objetos normalmente se relacionan con algún tipo de contexto de aplicación. En un contexto de aplicación de negocio, por ejemplo, puede querer preguntarle a su objeto Person: "¿Qué edad tiene?" Como respuesta, Person le diría el valor de su atributo de Edad.

Encapsulamiento

Recuerde que un objeto es, sobre todo, diferenciado o independiente. Este es el principio deencapsulamiento en funcionamiento. Ocultación es otro término que a veces se usa para expresar la naturaleza independiente y protegida de los objetos.
Sin tener en cuenta la terminología, lo que es importante es que el objeto mantiene un límite entre su estado y comportamiento y el mundo exterior. Como los objetos del mundo real, los objetos usados en la programación de computadora tienen diversos tipos de relaciones con diferentes categorías de objetos en las aplicaciones que los utilizan.

Herencia

En la programación estructurada, es común copiar una estructura, darle un nombre nuevo y agregar o modificar los atributos que hacen que la nueva identidad (por ejemplo, un registro de Cuenta) sea diferente de su fuente original. Con el tiempo, este abordaje genera una gran cantidad de códigos duplicados, que pueden crear problemas de mantenimiento.

Herencia en funcionamiento

Suponga que está escribiendo una aplicación de recursos humanos y quiere usar el objeto Personcomo base para un objeto nuevo llamado Employee. Al ser el hijo de Person, el Employee tendría todos los atributos de un objeto Person, junto con los adicionales, tales como:
  • Número de identificación del contribuyente
  • Fecha de contratación
  • Salario
  • Polimorfismo

    El polimorfismo es un concepto más difícil de entender que el encapsulamiento o la herencia. Básicamente, significa que los objetos que pertenecen a la misma ramificación de una jerarquía, cuando se envía el mismo mensaje (es decir, cuando se le indica que realice lo mismo), pueden manifestar ese comportamiento de modo diferente.
    Para entender cómo el polimorfismo se aplica a un contexto de aplicación de negocio, regrese al ejemplo de Person. ¿Recuerda indicarle a Person que formatee sus atributos en una String? El polimorfismo hace que sea posible para Person representar sus atributos en una variedad de formas, dependiendo del tipo de Person que sea.
    El polimorfismo es uno de los conceptos más complejos con los que se encontrará en OOP en la plataforma Java y no dentro del ámbito de un tutorial introductorio.

WebGrafia.
https://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/index.html

Java 9

NOVEDADES PARA EL JAVA 9.

Java y Modularidad

Hoy por hoy el JDK de Java es capaz de hacer muchas cosas. Pero tiene un problema importante y es que nos da acceso a todas las APIs o no nos da acceso a ninguna. Lo cual es un problema sobre todo a futuro ya que vamos hacia plataformas con dispositivos móviles mas pequeños en donde el JDK no tiene el tamaño adecuado.
Jdk
Ademas en el horizonte empieza a aparecer un competidor que es Javascript con la plataforma de Node.js que es muy modular. Así que hay que estar muy atento al futuro y prepararse frente a otras plataformas. Para ello nace el proyecto Jigsaw de Java 9 que su objetivo principal es conseguir un JDK más modular que nos permite la instalación del JDK en dispositivos más pequeños.
Modulos

Vamos a ver otros a continuación.

JSON Light-Weight (JEP 198)

El uso de JSON como standard de facto es cada día mayor y todos vamos a agradecer un nuevo API que nos permita trabajar con el de forma mucho más ligera y optimizada. Estoy seguro que la gente que trabaja con NoSQL lo va ha agradecer mucho.
Jsonligth

HTTP 2 Client API (JEP 110)

HTTP sigue avanzando y las clases de cliente que tenemos habitualmente en el JDK comienzan a necesitar una renovación. El API actual es demasiado grande y muchas personas han solicitado una simplificación que permite trabajar con lo fundamental para ganar claridad. Ademas se incluirá soporte de WebSockets como parte la implementación de esta nueva librería algo que junto a la modularidad anteriormente comentada añadirá una gran flexibilidad a Java.
Websocket 1

JVM y Optimización (JEP 197,JEP 199)

Otra de las cosas en las que se esta haciendo especial hincapié es en optimizar todavía mas la JVM en dos áreas fundamentales. En primer lugar la cache de código (JEP 197) y en segundo lugar optimizando el compilador (JEP 199). De esta manera también se avanzará en otro de los aspectos en los que Node.js compite como es el tema de rendimiento.

Agradecimiento.
https://www.genbetadev.com/java-j2ee/el-futuro-y-java-9

Proyecto Jigsaw

Proyecto Jigsaw

Los objetivos principales de este Proyecto son:
  • Hacer que la plataforma Java SE, y el JDK, sean más fácilmente escalables
    a pequeños dispositivos informáticos;
  • Mejorar la seguridad y la facilidad de mantenimiento de las implementaciones de la plataforma Java SE en general, y del JDK en particular;
  • Habilitar el rendimiento de la aplicación mejorada; y
  • Facilite a los desarrolladores la construcción y el mantenimiento de bibliotecas
    y aplicaciones grandes, tanto para las plataformas Java SE como para EE.
Para lograr estos objetivos, proponemos diseñar e implementar un sistema de módulos estándar para la Plataforma Java SE y aplicar dicho sistema a la propia Plataforma y al JDK. El sistema de módulos debe ser lo suficientemente potente como para modularizar el JDK y otras grandes bases de código heredadas, pero aún así ser accesible por todos los desarrolladores.

Estado

La reorganización del código fuente ( JEP 201 ) se fusionó en JDK 9 build 27, en agosto de 2014.
La reestructuración de las imágenes en tiempo de ejecución para los módulos de soporte ( JEP 220 ) se fusionó en JDK 9 build 41, en diciembre de 2014.
JSR 376, para el Sistema de Módulo de Plataforma Java , fue aprobado por el Comité Ejecutivo del JCP en diciembre de 2014.
El plan para encapsular la mayoría de las API internas ( JEP 260 ) se publicó en agosto de 2015.
La versión inicial de El Estado del Sistema de Módulos , junto con JEP 261 y las primeras compilaciones de acceso temprano que contienen el sistema de módulos de prototipo , se publicaron en septiembre de 2015.
En marzo de 2016 se publicó una lista permanente de cuestiones abiertas en la especificación propuesta.
También se publicó en marzo de 2016 una versión actualizada de El Estado del Sistema de Módulos , con nuevo material sobre compatibilidad y migración.
El propio sistema de módulos, especificado por JSR 376 e implementado por JEP 261 , se fusionó en JDK 9 build 111 en marzo de 2016.

Bloggers


Bibliografia

http://openjdk.java.net/projects/jigsaw/

jueves, 7 de septiembre de 2017

UML - CASOS PARTICULARES

UML - CASOS PARTICULARES

  • Clase Abstracta:
    Una clase abstracta se denota con el nombre de la clase y de los métodos con letra "itálica". Esto indica que la clase definida no puede ser instanciada pues posee métodos abstractos (aún no han sido definidos, es decir, sin implementación). La única forma de utilizarla es definiendo subclases, que implementan los métodos abstractos definidos.

  • Clase parametrizada:
    Una clase parametrizada se denota con un subcuadro en el extremo superior de la clase, en donde se especifican los parámetros que deben ser pasados a la clase para que esta pueda ser instanciada. El ejemplo más típico es el caso de un Diccionario en donde una llave o palabra tiene asociado un significado, pero en este caso las llaves y elementos pueden ser genéricos. La genericidad puede venir dada de un Template (como en el caso de C++) o bien de alguna estructura predefinida (especialización a través de clases).

Interfaces

Un interfaz es una lista de acciones que puede llevar a cabo un determinado objeto. Sorpresa, ¿eso no eran los métodos que se definen en un...