Manual corto y basico de Programacion Orientada a Objetos (hecho por mi)
Programacion Orientada a Objetos. Corto y Basico. Parte 1


Programacion Orientada a objetos: El termino "programacion orientada a objetos" surge del hecho de realizar aplicaciones apoyandose en el paradigma de objetos. Antes que nada... que es un paradigma?

Paradigma:
"Paradigma es un modelo o patrón en cualquier disciplina científica u otro contexto epistemológico." (Wikipedia). Hablando mal y pronto, paradigma es una manera de pensar el problema, y en funcion de ello, buscar una solucion. Por ejemplo, si pienso en una factura (de esas que te dan cuando compras algo), e intento representarla basandome en el paradigma de objetos, deberia pensarla como: un "objeto factura"... ese objeto tiene ciertas caracteristicas (una fecha, un cliente, un numero de factura, una cantidad determinada de productos, etc). Es decir, deberia pensar en la factura como un objeto compuesto por ciertas caracteristicas. Ahora, dijimos que la factura tenia una determinada cantidad de productos, entonces podriamos pensar a cada producto tambien como un objeto. El "objeto Producto" tiene caracteristicas como: precio de costo, descripcion, proveedor, precio de venta, etc, etc.Redondeando la idea, podemos ver que cada elemento de la realidad que nos rodea, puede ser pensado como objetos (una persona: con caracteristicas como edad, nombre, direccion, estado civil --- Un medio de transporte: con caracteristicas como: velocidad maxima, capacidad maxima de pasajeros, costo, etc). El paradigma de objetos es la forma de pensar a cada elemento del problema que tenemos que resolver, como si fuera un objeto. Existen otros paradigmas, como el paradigma procedural (u orientado a los procedimientos, paradigma logico, paradigma funcional...

Algunos conceptos basicos:
Que es una clase de objetos??Antes de explicar que es una clase dentro del paradigma de objetos, pensemos en situaciones reales de la vida cotidiana. El ser humano, por naturaleza, agrupa los objetos de la realidad en "clases de objetos". Por ejemplo, si hablo de un caballo, un automovil, un omnibus, un avion y un tren.... podria agrupar todos esos objetos dentro de la clase "medios de transporte". Es decir, aunque cada uno de ellos tenga caracteristicas distintas, todos sirven para transportar personas. Algunos tendran ruedas, otros alas, el caballo tendra piernas, etc.

java


Como vimos, el paradigma de objetos, es una manera de pensar o modelar un problema determinado. Hay lenguajes de programación orientados a objetos, como C++, Java, etc.Los objetos son entidades que nos sirven para representar o modelar un problema concreto de la realidad.Bajo estos conceptos mencionados, los objetos, son INSTANCIAS de una determinada clase. Por ejemplo, el objeto "automovil" es una INSTANCIA de la clase "medios de transporte". Los objetos son instancias de una determinada clase.Al tratar cada elemento del problema como si fuera un objeto, y enumerar sus caracteristicas, podemos ver dos grandes categorias: los objetos estan compuestos por dos cosas fundamentales:

Atributos:
Los atributos son las caracteristicas propias de cada objeto. por ejemplos: Persona: edad, altura, sexo, direccion, telefono, nombre, apellido, peso, etc. Automóvil: color, marca, modelo, precio, velocidad maxima, etc. Una venta: cliente al que se le vendio, fecha, hora, total de la venta, cantidad de productos, forma de pago, etc.Los atributos de un objeto en particular, pueden cambiar el valor que contienen, por ejemplo, el atributo edad de un objeto Persona, puede contener el valor 22 (la persona tiene 22 anios), pero obviamente ese valor puede variar en cualquier momento. Los atributos no contienen valores estaticos o fijos, sino que contienen valores que cambian (o pueden cambiar) constantemente. Obviamente hay atributos que no cambian mucho, como por ejemplo el atributo sexo de un objeto persona, puede contener "masculino" o "femenino" pero difícilmente cambie (aunque en estos dias todo es posible), otro ejemplo seria el atributo "cantidad de ruedas" del objeto Motocicleta, que generalmente contiene el valor 2. Los atributos son caracteristicas de los objetos, como vimos en los ejemplos, son bastante sencillos de enumerar. Hay que tener en cuenta que, en funcion del problema que estemos tratando de resolver, hay atributos que debemos descartar. Asi, si estamos desarrollando una aplicacion para un supermercado, el objeto cliente, tendra atributos como Nro. Cliente, nombre, telefono, etc (y hasta direccion de correo por si queremos enviarle un mail para navidad). Pero en este caso, NO nos interesa el peso del cliente, su edad, su presion arterial o el color de su piel (mientras que estos atributos podrian ser utiles si estamos desarrollando una aplicacion para un sistema de historias clinicas, por ejemplo). Esta posibilidad o habilidad de dejar de lado algunos atributos que no son relevantes para el problema, y concentrarnos en los detalles mas importantes, recibe el nombre de Abstraccion (pero de eso hablaremos mas adelante).

Metodos:
Los metodos, son acciones que los objetos son capaces de llevar a cabo. Por ejemplo, el objeto "Automovil" puede tener un metodo llamado moverse() (los parentesis al final son una manera de denotar un metodo), el cual modificara el atributo "ubicacion", o un objeto "Persona", puede tener un metodo que se llame cumplirAnios(), este metodo, aumentara en una unidad el valor el atributo edad. En el paradigma de objetos, se dice que los objetos se comunican entre si, enviandose mensajes. Entenderemos ahora que son los mensajes.

Mensajes:
Un mensaje es una solicitud que se realiza a un objeto para que ejecute un bloque de codigo determinado. Como es esto? Si recordamos todo lo que vimos hasta ahora podriamos resumir lo siguiente: un objeto tiene atributos (que son las caracteristicas propias de cada objeto) y metodos (acciones que el objeto puede llevar a cabo). Entonces, un mensaje es un pedido para que el objeto ejecute uno de sus metodos. Veamos un ejemplo que unifique las tres ideas.

EJEMPLO PARA UNIFICAR IDEAS
El objeto en cuestion es el objeto Persona... este, tiene los siguientes atributos: Edad: 20 Nombre: Federico Alem Dirección: Chubut 19 fecha-nacimiento: 17/06/1986y ademas los siguientes metodos: cumplirAnios() mudarse(nueva direccion) <---- notese que este metodo nos pide la nueva direccion (mas adelante vamos a ver como funciona esto) fecha-nacimiento()El primer método, hara que el atributo Edad sume una unidad a su valor actual (cabe aclarar que no puede tener un valor negativo, por ejemplo).El segundo metodo, hara que el atributo Direccion cambie por el nuevo valor que le pasamos entre parentesis. Este valor se denomina PARÁMETRO o ARGUMENTO. Es decir, el atributo tiene el valor "Chubut 19", pero si nosotros llamamos al metodo mudarse("Corrientes 2315" ), este mismo tomara dicho valor pasado entre parentesis.El tercer método, nos devolvera la fecha de nacimiento de la persona. Es decir, cuando lo llamemos, nos devolvera 17/06/1986.Ya que vimos los metodos y los atributos, veamos como se implementan los mensajes. Para "enviarle" mensajes a un objeto se utiliza la forma OBJETO.MENSAJE (objetoPUNTOmensaje), es decir, en nuestro ejemplo actual podria darseersona.cumplirAnios()o tambiénPersona.fecha-nacimiento()Cuando un objeto recibe un mensaje, busca dentro de sus metodos a aquel que coincida con el nombre del mensaje y ademas con el numero y tipo de parametros. Veamos un ejemplo para esto. Sigueiendo el ejemplo anterior, el objeto Persona tiene un metodo que se llama mudarse. Cuando este objeto recibe el mensaje "mudarse" ==> Persona.mudarse("Chaco 882" ), entonces este objeto busca dentro de sus metodos a aquel que se llame "mudarse", pero que ademas reciba SOLO UN parametro, y que ademas, ESE PARÁMETRO SEA DE TIPO STRING (o cadena de caracteres).Podria darse el caso de que dos metodos tengan el mismo nombre, pero tengan cantidades distintas de argumentos... o teniendo el mismo numero de argumentos, estos sean de tipos distintos. Por esto que acabamos de decir, todos los metodos descritos a continuación son distintos:mudarse("Chubut 1918" ) <== recibe 1 parametro de tipo Stringmudarse("Chubut", 1918) <== recibe 2 parametros, un String y un enteromudarse("Chubut", 1918, 1, "B" ) <== recibe 4 parametros... el nombre de la calle, el numero de puerta, el nro de piso, y la letra de departamento. (si vive en un edificio)Y asi muchos casos mas. Entonces, es facil notar, que cuando un objeto recibe un mensaje, busca su metodo que coincida con la cantidad y tipo de parametros recibidos. Asi, si escribimos Persona.mudarse("Corrientes 1918" ) el objeto ejecutara su primer metodo, mientras que si escribimosPersona.mudarse("Buenos Aires", 2344, 4, "A" ), se llamara al tercer metodo, que recibe 4 parametros (un String, dos enteros, y otro String al final)Hasta aca la primera parte de Programacion Orientada a Objetos. Cualquier pregunta, sugerencia, critica o correccion es bienvenida, como asi tambien los comentarios.

SEGUNDA PARTE
http://www.taringa.net/posts/apuntes-y-monografias/12188778/Programacion-Orientada-a-Objetos_-Corto-y-Basico_-Parte-2.html