domingo, 13 de septiembre de 2015

Comenzando a Programar con Java (Linea de Comando)

Para Poder empezar a programar con Java, necesitas descargar el JDK (Java Development Kit o Kit de Desarrollo de Java), e Instalarlo.



Objetivo: instalar el kit de desarrollo Java (JDK) en una plataforma Windows.


De modo que te has decidido a aprender aprogramar en Java
Quizás haya sido porque se trate del lenguaje de programación más utilizado y, como programador, no quieras permanecer ajeno a la fiesta. Tal vez te haya atraído su extraordinaria portabilidad o la capacidad para desarrollar programas para cualquier plataforma.
O simplemente te fascina la programación orientada a objetos. En Java, al contrario de lo que sucede en otros lenguajes, las clases y los objetos no son una opción, algo de lo que te darás cuenta en cuanto escribamos el Hola mundo de rigor.
Sea lo que sea lo que te ha movido, celebro tu decisión.
El primer paso, naturalmente, consiste en preparar el entorno de desarrollo. En el artículo de hoy mostraremos cómo instalar el JDK(Java Development Kit) para la edición estándar de Java sobre una plataforma Windows. En un artículo posterior realizaremos la instalación en alguna máquina Linux.
El proceso es bien sencillo y casi anecdótico, como podrás comprobar.
Comenzamos accediendo a la página oficial de descarga, desde la cual descargaremos el JDK de Java SE 7u17, es decir, la versión 7, update 17 (la actual en el momento de escribir esto) de la edición estándar de Java.
jdk-install-1
Llegado a este punto tienes que tener muy clara la diferencia entre elJDK y el JRE. El JRE (Java Runtime Environment) contiene la máquina virtual Java, y es necesario para poder ejecutar aplicaciones creadas en Java. Pero, como programador, lo que necesitas es el kit de desarrollo, el JDK, que además incluye el propio JRE.
Haz clic, entonces, en alguno de los iconos que he rodeado con un círculo rojo (ambos apuntan al mismo destino) para acceder a la página que contiene los enlaces de descarga.
jdk-install-2
Acepta los términos de licencia de Oracle para que los enlaces se activen.
Elige la opción adecuada en función de si tienes un sistema de 32 o 64 bits.
jdk-install-3
La instalación es poco más que hacer doble clic sobre el instalador y aceptar las opciones por defecto:
Nota: las imágenes, de aquí en adelante, corresponden al Update 15, versión de Java existente en el momento en que fueron capturadas, pero la instalación del Update 17 es exactamente la misma.
jdk-install-4
Pulsa sobre Next y que empiece el show.
Para amenizarte el proceso, la instalación te recordará que 3 billones de dispositivos utilizan Java. Son billones anglosajones (1000 millones), no de los nuestros (un millón de millones), pero aún así puedes hacerte una idea del orden de magnitud del despliegue de Java en la actualidad.
jdk-install-7
Si no ha habido sorpresas, enhorabuena, tu kit de desarrollo Java estará instalado.
jdk-install-8
Vamos a asomarnos a la carpeta de instalación. Navega hasta Archivos de Programa | Java | jdk1.7.0_15 | bin , donde se encuentran los ejecutables.
jdk-install-9
El corazón del kit lo conforman los ficheros javac.exe, el compilador, y java.exe, la máquina virtual Java. Obsérvalos en la figura.
Por lo general hay dos formas de programar en Java: empleando un IDE (como Eclipse NetBeans, de los que hablaremos a su debido momento) o a pelo, sin más que un editor de texto plano y la línea de comandos, que es como trabajaremos en los siguientes artículos.
Pero, para poder invocar el compilador desde cualquier lugar en la línea de comandos, es necesario que la carpeta bin de arriba figure en el PATH del sistema.
Para asegurarte que no cometes ningún error trascribiendo la ruta exacta, te recomiendo que te sitúes sobre la dirección, en la parte superior del explorador de windows, hagas clic con el botón derecho y elijas Copiar dirección como texto. De este modo la ruta se copiará al portapapeles dispuesta a que la agreguemos a la variable PATH.
Accede, a continuación al cuadro de diálogo Propiedades del sistema:
jdk-install-10
Hay varios modos de llegar a él. Por ejemplo, botón derecho sobreEquipo | Propiedades | Configuración avanzada del sistema.
Dentro de la pestaña Opciones avanzadas, pulsa sobre el botónVariables de entorno para acceder al cuadro de diálogo que nos permite editarlas.
jdk-install-11
En el cuadro Variables del sistema, localiza la variable Path, selecciónala y pulsa el botón Editar.
jdk-install-12
Desplázate al final, agrega un punto y coma como separador y pega a continuación el contenido del portapapeles, que contiene la ruta completa al compilador de Java.
jdk-install-13
Acepta todo lo que haya que aceptar y probemos nuestra instalación.
Abre un intérprete de comandos y ejecuta los comandos:
javac -version
java -version
jdk-install-14
Como ves, no sólo hemos verificado que el compilador y la máquina virtual se encuentran accesibles desde cualquier ubicación; además, comprobamos que las versiones son las correctas.
Ahora sí, ya estamos en condiciones de escribir nuestro primer programa en Java.
Javier Montero Gabarró

http://elclubdelautodidacta.es/wp/2013/03/instalacion-del-kit-de-desarrollo-java-jdk-en-windows/

El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)

Modificadores de Visibilidad en las Clases

Paquetes.
Antes de impartir los conceptos que en realidad son interés de esta nota, vale la pena mencionar unos pre-conceptos. Por ejemplo, los paquetes. ¿Qué sonPodríamos hacer una  sutil analogía con lo que son las carpetas.  Los paquetes permiten establecer un nombre único para las clases y ayudan a la organización de dichas clases.
Palabras claves: import  java.util.*; package py.com.miPaquete.miClase;
Cada vez que creamos un paquete, lo que sucede por detrás es generarse una estructura de directorios, correspondientes al paquete. 
Ejemplo: 
             Paquetepy.com.miPaquete
             Directoriopy/com/miPaquete

Modificadores de Visibilidad
En lo que concierne a los modificadores de visibilidad o de acceso, el objetivo principal el lograr elencapsulamiento, controlando  o prohibiendo el acceso a los atributos o elementos de una clase.
Pueden usarse para establecer la visibilidad de: clases, métodos y variables.
En java podemos mencionar 4 tipos de modificadores, éstos, como su nombre lo indica, "modifican" o determinan la "visibilidad" o el acceso a un cierto elemento, son:

   1.) public: visible dentro y fuera del paquete. Los métodos y las variables, son heredados por todas las subclases o hijas de la clase. Accesibles desde cualquier lugar.
Ejemplo:
                   public class persona 
                   {
                            public int dni;
                            public void registrar ()
                            {
                                  .........
                            }
                   }

    2.) private: visible sólo desde el interior de la clase. No son heredados por ninguna sub-clase. No son accesibles desde ninguna otra clases, por más que estén en el mismo paquete.
                   public class persona 
                   {
                            private int dni;
                            privete void registrar ()
                            {
                                  .........
                            }
                   }


    3.) protected: visible desde el interior de la clase y desde las clases heredadas (sub-clases o hijas). 
                   public class persona 
                   {
                            protected int dni;
                            protected void registrar ()
                            {
                                  .........
                            }
                   }
   4.) friendly o default: (sin palabra clave) visible desde cualquier clase en el mismo paquete. 

                   public class persona 
                   {
                            int dni;
                            void registrar ()
                            {
                                  .........
                            }
                   }


Todos estos modificadores se pueden combinar a gusto y necesidad, dependiendo de lo que desea lograr.  Ejemplo:


     public class personas
     {
           public String nombre;
           public String apellido;
           private int dni;
           
           private void registrar ()
           {
                 ...............
           }

           public void verDatos ()
           {
                   ................
           }
     }

http://javadsdcero.blogspot.com.co/2012/08/modificadores-de-visibilidad.html

martes, 8 de septiembre de 2015

Introduccion a las Clases en POO

Introducción a las Clases en POO 

El elemento o artefacto mas importante en la Programación Orientada a Objeto es la Clase, ya que de ella parte todo. una clase define que es un Objeto y Como se comportara éste, la clase esta conformada por atributos (que es) y metodos (como hace).


Utilizando el estandar de diagramacion UML, una clase se define de la siguiente manera:

(imagen tomada de Wilson Pelaez Hernandez)

Ejemplo:



En codigo de Java se escribiria de la siguiente forma:


En la linea 11 se escribe las palabras reservadas public (que indica que el elemento a crear es publico) y la palabra clave class que indica que es una clase  y seguido del nombre y el simbolo de llave para apertura del cuerpo de la clase; despues de esto en las lineas 12, 13 y 14 se crean los atributos de acuerdo a los tipos definidos;  en la linea 16 se crea el constructor de la clase, en este caso recibe tres arguementos, los cuales se asignaran a cada uno de los atributos de la clase; y las lineas 21, 24, 27 se escribe los otros metodos y los codigos respectivos.

martes, 25 de agosto de 2015

Ejercicios POO (Diagramas Basicos de Clases y Objetos)

Quererse a sí mismo es el principio de un romance para toda la vida
Oscar Wilde


En el diagrama de clase presentado se presenta una clase Persona, con los atributos identificación, nombre, sexo, madre y padre (estos dos atributos son de tipo persona)  y se presentan dos métodos, el método constructor Persona() y El método quererse() el cual tiene como parámetro un objeto de tipo Actividad
El Diagrama de Objeto seria:



TARARÍ Y TARARÁ
De: Alicia a través del espejo
Lewis Carroll
— Ahora está soñando -señaló Tarará- ¿y a que no sabes lo que está soñando?
— ¡Vaya uno a saber -replicó Alicia- ¡Eso no podría adivinarlo nadie!
— ¡Anda! ¡Pues si te está soñando a ti! -exclamó Tarará batiendo palmas en aplauso de su
triunfo-. Y si dejara de soñar contigo, ¿qué crees que te pasaría?
— Pues que seguiría aquí tan tranquila, por supuesto -respondió Alicia.
— ¡Ya! ¡Eso es lo que tú quisieras! -replicó Tarará con gran suficiencia-. ¡No estarías en
ninguna parte! ¡Como que tú no eres más que un algo con lo que está soñando!
— Si este Rey aquí se nos despertara -añadió Tararí- tú te apagarías… ¡zas! ¡Como una vela!



Diagrama de Objetos



REALIZAR UN DIAGRAMA DE CLASE BASADO EN CADA UNO DE LOS CUENTOS, SEGÚN LOS EJEMPLOS DE ARRIBA

MI ZAPATO VIEJO
Cuento Corto para niños y niñas, creado por: Emiliana Marante
Tenía un hueco en la punta de mi zapato, estaba roto por un lado, machacado por detrás, ya no servían para nada.
– ¡Lo tiraré a la basura!, – pensé
Y por un rato dejé allí mi zapato, mientras hacía mis tareas de la escuela. Cuando terminé me dispuse a tirar mis viejos e inservibles zapatos, pero me llevé una gran sorpresa cuando vi un lindo y calentito huevo de mi patita Loló dentro de uno de ellos.
– ¡Puede servirle de nidito!, -pensé.
Por lo menos no se moja ni pasa frío. Busqué un pedazo de tela vieja, la hundí dentro y puse el huevo encima.
– ¡Que alegre estaba! ¡Ya mi patito Loló tenía su camita para nacer!
Puse mi zapato debajo de un arbolito, allí mi patita Lolò velaría a su nuevo bebé y mi abuela vería como pude darle otro uso a los zapatos, que si para mi no servían, sí a mis animalitos.
Nunca mas pensaré en tirar algo sin antes pensar para que puede servir y les contaré a mis amiguitos de la escuela y a mi maestra.
– ¡Viva! ¡que llegue mañana!




NATI Y SU DELFIN

Cuento Corto para niños/as; creado por: Luna Pilar Acevedo
Nati era una chica de dieciséis años, era huérfana. Un día Nati decidió que quería trabajar. Los primeros que quisieron  contratarla  fueron los Mancini.
Ellos necesitaban que trabajara para que cuidara a su mascota. Nati pensaba que era una mascota cualquiera, normal, pero no era así. Incluso se desmayó cuando se enteró de que tendría que cuidar de un delfín. Cuando se recuperó de la gran sorpresa lo pensó y aceptó el trabajo.
El primer día de trabajo los dos (el delfín y ella) se divirtieron muchísimo, tanto fue que Nati pasó un año cuidando al delfín. Los Mancini se encariñaron con ella y la adoptaron.  Vivió muy feliz junto a su familia y su delfín.



EL CARACOL PESIMISTA

Cuento Corto para niños y niñas; creado por: Sergio Gomez
Había un niño llamado Juan que salía  a su jardín todos los días.
Un día vio una fila de caracoles, uno de ellos iba muy atrasado y el niño le preguntó:
– ¿Por qué estas tan atrasado?
El caracol le dijo:
– Es que soy el más lento de todos.
– No seas pesimista tu puedes avanzar más rápido. -Dijo el niño.
El caracol pensó en lo que le estaba diciendo el niño y se animó. Empezó a ir cada vez más rápido hasta que consiguió correr.
Ahora, cuando el niño sale al jardín, siempre ve al caracol y va el primero de todos, ya que tiene confianza en sí mismo y mejora cada día un poquito más.
Uno no debe ser pesimista porque puede hacer todo lo que se propone…



Soñé que estaba ella sentada a mi cabecera...

Soñé que estaba ella sentada a mi cabecera,
y alborotaba tiernamente mi cabello con sus dedos,
suscitando la melodía de su contacto.
La miré a la cara, luchando con mis lágrimas,
hasta que la angustia de las palabras no dichas
quebró mi sueño como una burbuja.
Me incorporé. La Vía Láctea se veía arder por mi ventana,
como un mundo de silencio inflamado.
Y me pregunté si en aquel momento estaría ella soñando
un sueño que viniera, bien con el mío.



Introduccion a la Programacion Orientada A Objetos (POO)

Que es la POO?

La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos.
Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.


La programación orientada a objetos difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada solo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

Objeto

Los objetos son entidades que tienen un determinado "estado" (en sus atributos), "comportamiento (método)" e "identidad":
  • El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
  • El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él.
  • La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).

Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos.

Conceptos

La POO es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
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[editar]

Existe un acuerdo acerca de qué características contempla la "orientación a objetos". Las características siguientes son las más importantes:
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 (diseño estructurado) 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.
Principio de ocultación
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una "interfaz" a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
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 hayherencia múltiple; siendo de alta complejidad técnica por lo cual suele recurrirse a la herencia virtual para evitar la duplicación de datos.
Recolección de basura
La recolección de basura (garbage collection) es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse expresamente.

URL:
https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Conceptos_fundamentales