viernes, 24 de enero de 2014

JAVA

 QUE ES LENGUAJE DE PROGRAMACION ?
Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación.

También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
Desarrollo de la documentación.



JDK
Java Development Kit o (), es un software que provee herramientas de desarrollo para la creación de programas en Java. Puede instalarse en una computadora local o en una unidad de red.
En la unidad de red se pueden tener las herramientas distribuidas en varias computadoras y trabajar como una sola aplicación.



JDK en Windows
En los sistemas operativos Microsoft Windows sus variables de entorno son:
JAVAPATH: es una ruta completa del directorio donde está instalado JDK.
CLASSPATH: son las bibliotecas o clases de usuario.
PATH: variable donde se agrega la ubicación de JDK.
Los programas más importantes que se incluyen son:
appletviewer.exe: es un visor de applets para generar sus vistas previas, ya que un applet carece de método main y no se puede ejecutar con el programa java.
javac.exe: es el compilador de Java.
java.exe: es el intérprete de Java.
javadoc.exe: genera la documentación de las clases Java de un programa.

JRE
Java Runtime Environment o JRE es un conjunto de utilidades que permite la ejecución de programas Java.
En su forma más simple, el entorno en tiempo de ejecución de Java está conformado por una Máquina Virtual de Java o JVM, un conjunto de bibliotecas Java y otros componentes necesarios para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actúa como un "intermediario" entre el sistema operativo y Java.
La JVM es el programa que ejecuta el código Java previamente compilado (bytecode) mientras que las librerías de clases estándar son las que implementan el API de Java. Ambas JVM y API deben ser consistentes entre sí, de ahí que sean distribuidas de modo conjunto.
Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje Java, mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno de desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre otros, un compilador para Java.





·         INTRODUCCION A LA PROGRAMACION ORIENTADA A OBJETOS

La programación orientada a objetos es una “filosofía”, un modelo de programación,
Con su teoría y su metodología, que conviene conocer y estudiar antes de nada. Un
Lenguaje orientado a objetos es un lenguaje de programación que permite el diseño de
Aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a
Desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera
La forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes
Muchos. En este documento veremos brevemente los conceptos básicos de la
Programación orientada a objetos desde un punto de vista global, sin particularizar para
Ningún lenguaje de programación específico.

POO :
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 objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está 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. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Eclipse
El entorno de desarrollo Eclipse puede usarse para desarrollar código en cualquier lenguaje de programación. Puede descargar el entorno y varios complementos (plug-ins) de Java para desarrollar sus programas en Java.

NetBeans
NetBeans es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extenderlo. NetBeans IDE1 es un producto libre y gratuito sin restricciones de uso.
NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos.
La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software.
BlueJ:
una herramienta gratuita diseñada para ayudar a enseñar Java orientado a objetos a los programadores novatos.
es un entorno integrado de desarrollo (de sus siglas en inglés IDE - Integrated Development Environment) para el lenguaje de programación Java, desarrollado principalmente con propósitos educacionales, pero también es adecuado para el desarrollo de software a pequeña escala.
BlueJ fue desarrollado para apoyar la enseñanza y el aprendizaje de la programación orientada a objetos, y como resultado, su diseño difiere de otros entornos de desarrollo.2 La pantalla principal muestra gráficamente la estructura de clases de una aplicación en desarrollo (en un diagrama muy parecido a UML), y los objetos pueden ser creados y probados interactivamente. Combinado con una interfaz de usuario simple, esta facilidad de interacción permite experimentar de manera fácil con los objetos en desarrollo. Los conceptos de la orientación a objetos (clases, objetos, comunicación a través de llamadas a métodos) son representadas visualmente en el diseño de interacción en la interfaz.
jEdit
 un editor de texto escrito en Java .
jEdit es un editor de texto libre, distribuido bajo los términos de la Licencia pública general de GNU. Está escrito en Java y se ejecuta en Windows,GNU/Linux, Mac OS X y otros sistemas operativos que dispongan de la máquina virtual Java.
JEdit dispone de docenas de plugins para diferentes áreas de aplicaciones. Soporta de forma nativa el resaltado de sintaxis coloreado de la sintaxis para más de 200 formatos de fichero. También se puede incluir nuevos formatos de forma manual utilizando ficheros XML. jEdit soporta UTF-8 y otros formatos de codificación del texto.
jEdit se puede personalizar y extender con macros escritas en BeanShell, Jython, JavaScript y otros lenguajes script.
Tiene amplio soporte de plegado de código y capacidades de plegado de texto, así como ajuste de texto con sangría.
El autor principal de jEdit es Slava Pestov. El editor jEdit se ha estado implementando desde 1998.
Caracteristicas  de java
La característica principal de Javascript, de hecho, es la de ser un lenguaje de scripting, pero, sobre todo, la de ser el lenguaje de scripting por excelencia y, sin lugar a dudas, el más usado. Esta particularidad conlleva una notable serie de ventajas y desventajas según el uso que se le deba dar y teniendo en cuenta la relación que se establece entre el mecanismo cliente-servidor. Para explicar con pocas palabras dicha relación, podemos decir que el servidor envía los datos al cliente y estos datos pueden llegar en en dos formatos diversos: en formato texto (o ASCII) o en formato binario (o código máquina: Elcliente sabe cómo comprender sólo el formato binario (es decir, la secuencia de 1 y 0), por lo que si los datos llegan en este formato son inmediatamente ejecutables (y, por desgracia, no dejan abierta la posibilidad de efectuar controles), mientras que si el formato es diverso tienen que ser interpretados y traducidos al formato binario y, por tanto, el cliente necesitará un filtro, o mejor dicho, un intérprete que sepa leer estos datos y los pueda traducir al binario. Los datos en formato texto son visibles al usuario como simples combinaciones de caracteres y de palabras y son, por tanto, fáciles de manipular, si bien requieran más tiempo para su interpretación a causa de los distintos pasos y de las transformaciones a las que deben someterse para que el cliente pueda comprenderlos: Los datos en formato binario, sin embargo, son difíciles de comprender por el usuario, pero inmediatamente ejecutables por el cliente ya que no requieren fases intermedias.
Garbage Collection
Bueno, cada vez que cree un objeto voy a tener memoria en uso, así podriamos llenar el heap,  incluso podríamos llegar a tener un OutOfMemoryException(cosa muy rara, claro que pasaría si nos quedamos sin memoria, y si no la sabemos utilizar, peor el asunto), para eso necesitamos borrar los objetos que no tengan referencias, que queden perdidosen memoria, en el lenguaje de programación C, la liberación de memoria va por parte del programador, cuidando que objetos no se utilizan y eliminarlos manualmente, pero Java tiene el Garbage Collector, que no es mas que un proceso de la JVM que está revisando que objetos pueden ser borrados y cuales no.
¿Pero cómo la JVM sabe que objetos deben borrarse? Sencillo, si los objetos están perdidos en memoria, no tienen referencias, y por lo tanto no se pueden accesar, esos son los candidatos a ser borrados, en la siguiente pasada del GC.
El GC es un proceso de baja prioridad, por lo que no se pasa en todo momento liberando memoria, si no que pasa de vez en cuando, que podría ser en un tiempo muerto del procesador, aunque también nosotros podríamos sugerirle que pase, pero va a pasar cuando pueda y quiera, un par de ejemplos de como mandarlo llamar son estos.
Jit:
 El compilador JIT convierte los códigos de bytes en código máquina nativo. Este proceso de compilación se realiza sólo una vez y se crea un vínculo entre el código de bytes y el correspondiente código compilado.El propósito de este proceso es aumentar la velocidad de ejecución de programas Java. Puede observar un incremento de la velocidad de más de 50 veces cuando algunas funciones matemáticamente intensivos se llevan a cabo. 
Herencia

herencia es permitir la creación de nuevas clases basadas en clases existentes.
La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona las clases de manera jerárquica; una clase padre o superclase sobre otras clases hijas o subclases.

viernes, 27 de septiembre de 2013

terminología constructor

El construtor es un tipo especifico de metodo que siempre tiene el mismo nombre que la clase y se utiliza para construir objetos de esa clase. no tiene tipo de dato especifico de retorno, ni siquiera void. esto se debe a que el tipo especifico que debe devolver un constructor de calse el el propio tipo de clase.
Un constructor se invoca automaticamente cuando new crea un objeto de esa clase.
para definir los construtores se emplea la siguiente sintaxis
[modifvisibilidad] nombreconstructor (lista de parametros) {}
Existen 3 tipos de constructores: -> construtor por defecto: si no se define ningun constructor de una clase, el compilador genera un constructor por defecto. el constructor por defecto no tiene argumentos y simplemente situa ceros en cada byte de la variables instancia de un objeto.
-> copia: el constructor de copia se utiliza para inicializar un objeto con otro objeto de la misma clase.
-> comun: el constructor comun es aquel que recibe parametros para asignarles como valores iniciales a los datos miembros, o sea que al crear la instancia, se paso unos parametros para inicializarla
-> DESTRUCTOR un destructor es un metodo cuyo objetivo es el de eliminar toda la memoria que ocupo un objeto.
existen dos tipos de destructores: -> si es publico se llama desde cualquier parte del programa para destruir el objeto
-> si es privado no se permite la destruccion del objeto por el usuario.
METODO CONSTRUTOR: El objetivo del metodo constructor es declarar o inicializar los atributos dentro del objeto que estamos trabajando.
Ventajas al usar el metodo constructor: - El constructor es el primer metodo al crear un objeto -No necesitas llamar al metodo constructor. El se llama automaticamente al comenzar el objeto
Caracteristicas: - El llamarse automaticamente y no puede ser llamada 'manualmente' -No retorna datos -Puede recibir parametros que comunmente necesitamos declarar para iniciar atributos -Es opcional
INSTANCIA Diseño una clase que tiene varias variables (digamos altura y anchura por ejemplo de un objeto)y si invoco la clase, se instancia(digamos que se crea la altura y anchura de un objeto.¿o no?) y al instanciar se carga en memoria.
METODOS
-> de instancia para crear e inicializar instancias de una clase. -> privado un tipo especial de contructor de instancia que no es accesible desde fuera de la clase. Una clase con un construtor privado no puede ser instanciada (no se puede crear objetos de esa clase) -> estatico invocado automaticamente para inicializar la clase de que sea creada la primera instancia o que sea referenciado cualquier campo estatico. el construtor no puede ser invocado directamente.

viernes, 20 de septiembre de 2013

Introducción terminología de POO (Programación Orientada a Objetos).

Herencia: La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados. 

Polimorfismo :
La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes. Este es uno de los conceptos esenciales de una programación orientada a objetos. Así como la herencia está relacionada con las clases y su jerarquía, el polimorfismo se relaciona con los métodos.
En general, hay tres tipos de polimorfismo:
·         Polimorfismo de sobrecarga
·         Polimorfismo paramétrico (también llamado polimorfismo de plantillas)
·         Polimorfismo de inclusión (también llamado redefinición o subtipado)

ejemplo
public class Articulo {
 private float precio;
 public void setPrecio() {
  precio = 3.50;
 }
 public void setPrecio(float nuevoPrecio) {
  precio = nuevoPrecio;
 }
 public void setPrecio(float costo, int porcentajeGanancia) {
       precio = costo + (costo * porcentajeGanancia);
    }
}




Encapsulación: La encapsulación es un mecanismo que consiste en organizar datos y métodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulación garantiza la integridad de los datos que contiene un objeto.
 (por ejemplo, uno puede asegurarse de que el tipo de datos suministrados cumple con nuestras expectativas bien que los se encuentran dentro del periodo de tiempo esperado).
Abstracción: Abstracción Expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás.
 Ejemplo Imaginemos que queremos aplicar la abstracción a las Aves. El objeto seria el pájaro, y sus características, por ejemplo, serian: Pico Alas Plumas Patas Las funcionalidades asociadas serian: Volar





Interfaz:

Las interfaces, tal como las clases abstractas. no se pueden instanciar. Sus métodos deben ser re-escritos por la clase que implemente.
Ejemplo fome:
1
2
3
4
5
6
7
8
9
10
public interface MatematicaVectorial {

 public static double pi    = 3.1415;
 public static double e     = 2.71828;

 public double[] sumar(int[][] vectores);
 public double[] restar(int[][] vectores);
 public double productoPunto(int[][] vectores);

}

 

Clase:

Las clases son plantillas que agrupan comportamiento (métodos) y estados (atributos) de los futuros objetos.
Los objetos son instancias de una clase. Usando el símil “variable – tipo” de la programación estructurada, se entiendo que un objeto es una variable que tiene el comportamiento y estados del tipo (objeto)
Veamos la creación de la clase Persona
1
2
3
4
5
6
7
8
9
public class Persona {
      public String nombre;
      public int edad;

      public void correr(){
              /* por implementar */
      }

}

Atributos
Los atributos son todas aquellas características que le asociamos a un tipo de objeto (clase). Si por ejemplo, queremos definir los atributos de una clase llamada Perro, podemos especificar que son la raza, la edad, su color y el nombre del dueño, por mencionar solo algunos de ellos. Los atributos que asociamos a una clase, dependen en gran medida del uso que le daremos dentro del sistema que diseñamos actualmente, pero también pueden ser definidos pensando en futuras implementaciones.


Métodos: En la programación orientada a objetos, un método es una subrutina cuyo código es definido en una clase y puede pertenecer tanto a una clase, cómo es el caso de los métodos de clase o estáticos, como a un objeto, como es el caso de los métodos de instancia. Análogamente a los procedimientos en los lenguajes imperativos, un método consiste generalmente de una serie de sentencias para llevar a cabo una acción, un juego de parámetros de entrada que regularán dicha acción o, posiblemente, un valor de salida (o valor de retorno) de algún tipo.
 por ejemplo, la clase Perro puede tener los métodos correr, comer, bañar y vacunar, por mencionar algunos de ellos. A nivel de implementación, estos métodos son segmentos de código similares a los procedimientos y funciones utilizadas en la programación modular.
Objeto:  un objeto es una unidad dentro de un programa de computadora que consta de un estado y de un comportamiento, que a su vez constan respectivamente de datos almacenados y de tareas realizables durante el tiempo de ejecución. Un objeto puede ser creado instanciando una clase, como ocurre en la programación orientada a objetos, o mediante escritura directa de código y la replicación otros objetos, como ocurre en la programación basada en prototipos.
Aritmetica calculador = Aritmetica();
#Otra manera usando punteros
Aritmetica* calculador1 = new Aritmetica();




Agregación:
Una agregación es una relación que representa a los objetos compuestos. Un objeto es compuesto si se compone a su vez de otros objetos.  La agregación de objetos permite describir modelos del mundo real que se componen de otros modelos, que a su vez se componen de otros modelos. 
Nos esta diciendo que los objetos pasajero forman parte del objeto medio de transporte.Pero, su ciclo de vida no esta atado al del objeto medio de transporte. Es decir si el Autobus se destruye los pasajeros pueden seguir existiendo independientemente, ( o por lo menos por eso rezaríamos)

Es la propiedad que distingue un objeto activo de uno no activo. Concurrencia permite que diferentes objetos actuen al mismo tiempo, usando distintos threads de control.
Es la propiedad por la cual la existencia de un objeto trasciende en el tiempo (esto es, el objeto sigue existiendo despues de que su creador deja de existir) o en el espacio (esto es, la localización del objeto cambia respecto a la dirección en la que fue creado).
  • Visibilidad: capacidad de restringir el acceso a atributos y servicios de un objeto. Particularmente importante en el diseño e implementación. (ej.: público / protegido / privado)