viernes, 21 de agosto de 2015

Programacion orientado a objetos parte teorica

¿Qué es un objeto?

Objeto es el concepto clave de la Programación Orientada a Objetos, la idea de objeto es similar a la del mundo real, un objeto puede ser una silla, una mesa. Tu perro es un objeto.
Los objetos tienen dos características: Un estado y un comportamiento. Fijate que por ejemplo tu perro tiene un estado: nombre, color, raza, altura, etc. y un comportamiento: ladrar, cavar pozo, llorar, dormir, comer, etc.
Un auto es un objeto. También tiene un estado: Cantidad de puertas, color, tamaño, etc. y un comportamiento: acelerar, frenar, subir cambio, bajar cambio, girar izq., girar der., etc.
Entonces podemos definir a un objeto en POO, como un conjunto de datos y funciones relacionadas. A las funciones de los objetos, tales como acelerar en el caso del auto, de aquí en más las llamaremos métodos, a los datos los llamaremos atributos.
Los objetos en programación, son modelados observando objetos del mundo real, por ejemplo implementamos el objeto "perro" dentro de nuestro programa definiendo los atributos y métodos del objeto perro real.
El objeto "Auto" se puede representar gráficamente como sigue:
Objeto Auto
Un ejemplo mas complicado de un objeto podría ser el siguiente:
Objeto: Cuenta bancaria
Atributos: tipo, titular, saldo.
Métodos: Depositar, Extraer.
Aquí se ve la necesidad de que el atributo "saldo" sea solo accesible a través de los métodos "Depositar" y "Extraer" por una cuestión de seguridad, encapsulamiento y para evitar comportamientos indeseados.

¿Qué es una clase?

Una clase es algo abstracto que define la "forma" del objeto, se podría hablar de la clase como el molde de los objetos.
En el mundo real existen objetos del mismo tipo, por ejemplo tu bicicleta es solo una mas de todas las bicicletas del mundo. Entonces diríamos que tu bicicleta es una instancia de la clase "Bicicleta". Todas las bicicletas tienen los atributos: color, cantidad de cambios, dueño y métodos: acelerar, frenar, pasar cambio, volver cambio.
Las fabricas de bicicletas utilizan moldes para producir sus productos en serie, de la misma forma en POO utilizaremos la clase bicicleta (molde) para producir sus instancias (objetos).
Los objetos son instancias de clases.
Ejemplo: Podríamos tener la clase Perro, una instancia de esta clase podría ser el objeto perro llamado "Chicho". La clase Perro especificaría que todos los perros tendrían un nombre, color de pelo, una altura. Mientras que la instancia "Chicho" contendrá valores específicos para cada uno de estos atributos.
Podemos definir a una clase como una plantilla que define variables y métodos comunes para todos los objetos de cierto tipo.
Existe un lenguaje de modelado llamado UML mediante el cual podemos representar gráficamente todo un sistema orientado a objetos utilizando rectángulos, líneas y otro tipo de símbolos gráficos. Según UML, la clase "Cuenta Bancaria" antes mencionada se representará gráficamente como sigue:
Clase Cuenta Bancaria

Mensajes

Un objeto por si solo no tiene mucho significado. Ejemplo: el objeto "bicicleta" no tiene mucho sentido si no interactúa con un objeto "persona" que pedalee.
La interacción entre objetos se produce mediante mensajes. Los mensajes son llamados a métodos de un objeto en particular.
Podemos decir que el objeto persona envía el mensaje "girar a la izquierda" al objeto bicicleta.
Los mensajes pueden contener parámetros. Por ejemplo teniendo un método en la clase bicicleta llamado "Girar" que recibe como parámetro la dirección (derecha o izquierda).
Un mensaje esta compuesto por los siguientes tres elementos:
  1. El objeto destino, hacia el cual el mensaje es enviado
  2. El nombre del método a llamar
  3. Los parámetros solicitados por el método

Beneficios de los mensajes

Como todo lo que un objeto puede hacer esta expresado mediante métodos, el envío de mensajes soporta todas las posibles interacciones entre objetos.
Para enviar o recibir mensajes, los objetos no necesitan formar parte del mismo proceso, ni siquiera de la misma máquina.

Herencia

Los sistemas orientados a objetos permiten definir clases en término de otras clases. Por ejemplo ovejero alemán y caniche son diferentes razas de perros. En la terminología orientada a objetos "Ovejero Alemán" y "Caniche" son subclases de la clase perro. De forma similar Perro es la superclase de "Ovejero Alemán".
Entonces tenemos la siguiente jerarquía de clases:
Jerarquía de clases
En UML se representa la relación de herencia mediante una flecha.
Cada subclase hereda los atributos de la superclase. Tanto la clase "Ovejero Alemán" como "Caniche" tendrán los atributos nombre, color de pelo, altura definidos en la clase Perro.
Una subclase no esta limitada únicamente a los atributos de su superclase, también puede tener atributos propios, o redefinir algunos definidos anteriormente en la superclase.
No se esta limitado tampoco a un solo nivel de herencia, se pueden tener todos los que se consideren necesarios.
Ejemplo:
Clase Empleado hereda de clase Persona, y esta a su vez hereda de clase Animal.
Las subclases proveen un comportamiento especializado sobre los elementos comunes provistos por las superclases. Gracias a la herencia, los programadores pueden rehusar código una y otra vez.

viernes, 7 de agosto de 2015

Java es un lenguaje de programación y una plataforma informática comercializada por primera vez en 1995 por Sun Microsystems. Hay muchas aplicaciones y sitios web que no funcionarán a menos que tenga Java instalado y cada día se crean más. Java es rápido, seguro y fiable. Desde portátiles hasta centros de datos, desde consolas para juegos hasta súper computadoras, desde teléfonos móviles hasta Internet, Java está en todas partes. 

public class HolaMundo
{
  public static void main(String[] args)
  {
    System.out.println("Hola mundo");
  }
}
Si eres un principiante en Programación Orientado a Objetos (POO) esta explicación puede contener términos y definiciones que nunca habrás escuchado. En Wikipedia tienes un excelente artículo sobre POO que deberías leerlo antes de seguir con el curso: Programación Orientada a Objetos.
La explicación de este primer programa se hará línea por línea. La primera línea de código es:
public class HolaMundo
En esta línea, la primera palabra reservada, public, es un modificador de acceso que determina quién puede acceder a las clases o propiedades y métodos de una clase. Una clase, que aparece como segunda palabra reservada class, es un conjunto de propiedades y métodos que definen un modelo, o plantilla, para crear objetos, o instancias, de ese tipo. Por último, HolaMundo es una variable, no una palabra reservada, que identifica a la clase pública que se ha creado. Resumiendo, esta línea define una clase pública identificada como HolaMundo.
La segunda línea de código es una llave. Las llaves en Java determinan el contenido de una clase, una función, una estructura, etc. En esta línea, esta llave abierta indica el inicio del contenido de la clase Holamundo que en este caso sólo estará compuesto por un método. La última línea de código, la llave cerrada, indica el fin del contenido de dicha clase. Las llaves de la línea 4 y 6 indican el contenido del método, o función, main().
La tercera línea de código es:
public static void main(String[] args)
En esta línea de código se define una función, o método, pública y estática denominada main(). La palabra reservada static se utiliza para definir las propiedades o los métodos que pertenecen a una clase, en este caso la clase Holamundo, en vez de pertenecer a un objeto, o instancia, de esa clase. El tipo de dato void se usa para indicar a la función, o método, que no devuelva parámetros. Todo programa en Java necesita una función, o método, denominada main() para establecer el inicio del programa. El contenido de dicha función, String[] args, define un vector de cadenas de caracteres donde recogerá los argumentos pasados en la ejecución del programa HolaMundo.
Por último, la antepenúltima línea de código es:
System.out.println("Hola mundo");
Esto es una función contenida en la API de Java SE que imprime, println(), en la salida, out, de la consola, System, la cadena de caracteres: ¡Hola Mundo!.