Programación Orientada A Objetos Con Java - 01
Programación Orientada A Objetos Con Java - 01
CONTENIDO
Introduccin Qu es un Objeto? Qu es una clase? Atributos Mtodos Tres caractersticas fundamentales de los Objetos: Encapsulamiento Herencia Polimorfismo Tres formas de apreciar el polimorfismo: a) Sobre-carga de mtodos b) Sobre-escritura de mtodos c) Vinculacin dinmica Casteo.
Qu es un objeto?
Un objeto es una representacin detallada, concreta y particular de un "algo". Tal representacin determina su identidad, su estado y su comportamiento particular en un momento dado. Quizs decir que es una representacin de un algo suene un tanto vaga, pero es exactamente eso: un objeto en el software puede representar a un objeto tangible como un motor o bien, puede representar a un objeto no tangible, como el objeto estrategia. Un objeto es una pieza de software nica que posee ciertas caractersticas (atributos) y un comportamiento previamente determinado (mtodos que se definen en una clase). A diferencia de otros lenguajes, un objeto siempre pertenece a una clase. No puede existir sintaxis tirada en cualquier lugar.
Qu es una clase?
Una clase es una plantilla que se utiliza para definir las caractersticas y habilidades de los objetos, lo que significa, que una clase es la definicin de un objeto. Es un modelo abstracto, sin vida, ya que son sus instancias (objetos) las que tendrn valores en el futuro. Desde un punto de vista ms tcnico, es el lugar donde se define los mtodos y atributos que tendrn los objetos. Una clase es un contenedor de uno o ms datos (variables o propiedad miembro) junto a las operaciones de manipulacin de dichos datos (funciones/mtodos). Para aquellos que vienen de la programacin estructurada es un conjunto de datos definidos por el programador, parecidos a las estructuras de datos de la programacin estructurada, pero con la importante novedad de incluir tambin las herramientas necesarias para su manipulacin.
Cuando se crea una clase, por convencin, suelen colocarse en la parte superior los atributos de la misma. Y en la parte inferior, sus mtodos. Si esto no se cumple, funcionan igual, aunque esto podra afectar el entendimiento de la misma y, por ende, el mantenimiento del sistema. Los nombres de las clases empiezan con mayscula y si tuviesen palabras en el medio, tambin comenzaran con mayscula: AutoDeCarrera.
Atributos
Los atributos son las caractersticas del objeto. Toman valores durante la vida del mismo. Estos valores determinan el estado del objeto. Cuando definimos un atributo se establece su nombre y su tipo. Los atributos suelen ser sustantivos. Marcan las propiedades del objeto. Una persona puede tener varios atributos. Adems de las variables (y clases) definidas por Java, es posible agregar atributos propios, por ejemplo documento que hace referencia a la clase Documento. Los atributos se escriben con minscula y si tuviesen palabras en el medio, stas van con mayscula: colorDeOjos.
Mtodos
Representan el comportamiento del objeto. Es decir, lo que el objeto puede hacer. Los mtodos se escriben con minscula y si tuviesen palabras en el medio, stas van con mayscula: dameCantidad(). Deben especificar lo que devuelven.y en caso que no devuelvan nada se utiliza la palabra reservada void.
Creando objetos.
Un objeto es una instancia de una clase. Es la implementacin con valores del modelo abstracto (clase). La sintaxis para crear un objeto es new Objeto(), donde la parte izquierda del igual Representa la referencia del objeto. Por ejemplo, para crear un objeto de la clase Persona habra que colocarla siguiente sintaxis: Persona p = new Persona();
Encapsulamiento
Consiste en ocultar los detalles de la implementacin de un objeto, a la vez que se provee una interfaz pblica por medio de sus mtodos permitidos. Es la propiedad de los objetos de permitir el acceso a sus estados. Esto se logra a travs de su interfaz pblica o a travs de relaciones preestablecidas con otros objetos. Lo que importa es el comportamiento del objeto y no como esta implementado ese comportamiento. Tiene una regla de oro: atributos en privado y mtodos pblicos.
El modificador private hace que un atributo (o mtodo) pueda ser accedido slo dentro de la propia clase. El modificador public hace que un atributo (o mtodo) pueda ser accedido desde todos lados.
Todos los Derechos Reservados 2013 [email protected]
Aqu vemos como todos los atributos son privatizados y todos tienen mtodos Get que sirve para pedir el valor del atributo en cuestin y un mtodo Set que sirve para asignarle un valor determinado. Se debe prestar especial atencin a aquellos atributos que son objetos, ya que reciben un objeto instanciado.
Los errores de codificacin se subrayan en rojo y son debido a que los atributos fueron privatizados, por ende, no pueden ser accedidos por fuera de la clase.
Esta sera la forma correcta. Ventajas del encapsulamiento. La complejidad de la implementacin queda escondida al resto de los objetos. Esto se ve reflejado en la vida real, yo quiero que mi auto funcione pero no quiero saber cmo est hecho el motor. La implementacin de un objeto puede variar sin que ello afecte a los objetos que interactan con l. Esto se debe a que los objetos llaman a un mtodo y no saben cmo es la
Todos los Derechos Reservados 2013 [email protected]
implementacin. De esta manera, si la implementacin (que es algo interno de la clase) vara, el resto de los objetos no se ven afectados.
Se protege al objeto de usos indebidos o inapropiados. Si los atributos son accedidos a travs de mtodos, es posible realizar ciertas validaciones, por ejemplo, el mtodo setSueldo(-120) no debera asignar 120 al sueldo de la persona, ya que es un nmero negativo. El mtodo setIVA(0.25) debera ser privado, as ese atributo es de slo lectura. Se centraliza la manipulacin del dato. Supongamos que el mtodo getDNI() debe ser modificado para que, adems del DNI, nos anteponga el nmero de sucursal donde trabaja la persona. Sin los Get y Set hubiera sido bastante engorroso y hubisemos tenido que recorrer todo el programa. Con los Get y Set es tan simple como modificar 1 slo mtodo.
Herencia
Es la capacidad de un objeto para utilizar las estructuras y mtodos existentes en sus antepasados. Los hijos pueden compartir (y extender) su comportamiento sin tener que reimplementarlo. Si bien se heredan los mtodos de los antepasados, es posible redefinirlos si fuera necesario. La idea es no repetir comportamientos que otros ya lo tienen implementados. La idea es que en la clase padre exista un comportamiento estndar y la clase hija pueda especializarse en otros aspectos.
Hay dos tipos de herencia: 1. 2. Simple Mltiple (es cuando una clase tiene ms de 1 padre, lo cual no est permitido en Java)
En Java, para heredar de una clase se utiliza la palabra clave extends. En nuestro ejemplo la definicin de la clase Cliente es: public class Cliente extends Persona
Ventajas de la herencia.
Aumenta la reutilizacin del cdigo. Tal como se pudo apreciar en la presentacin anterior. Favorece el Polimorfismo de los objetos. Esto se ver a continuacin.
Las clases pueden ser organizadas jerrquicamente. Un hijo es un tipo de de una clase padre.
Todos los Derechos Reservados 2013 [email protected]
Polimorfismo
Polimorfismo implica varias formas de responder el mismo mensaje. En programacin orientada a objetos se denomina polimorfismo a la capacidad que tienen objetos de diferentes clases de responder al mismo mensaje. Esto significa que puede haber muchos mensajes con el mismo nombre, en diferentes clases. Cada clase responde al mensaje con su cdigo propio (o mtodo). Existen diferentes formas de apreciar el polimorfismo: a) Sobre-carga de mtodos b) Sobre-escritura de mtodos c) Vinculacin dinmica
Sobrecarga de mtodos
La sobrecarga de mtodos consiste en declarar mtodos con el mismo nombre que sern diferenciados por los parmetros que reciben o que retornan. Los parmetros se diferencian por el tipo y la cantidad. Por ejemplo, un mismo nombre de mtodo puede recibir un String o un int o nada. Ahora veremos un ejemplo donde quedar ms claro.
En el ejemplo se puede observar que en caso de crear un una Persona, es posible asignarle un apellido, as como tambin es posible no pasarle parmetros y que tome un apellido por default. La ventaja de esto es que no es necesario declarar un mtodo con distinto nombre para mtodos similares en los que nicamente cambia el tipo de parmetros que han de utilizar.
Sobreescritura de mtodos
Una subclase sobrescribe un mtodo de su superclase cuando define un mtodo con las mismas caractersticas (nombre, nmero y tipo de argumentos) que el mtodo de la superclase. Las subclases emplean la sobreescritura de mtodos la mayora de las veces para agregar o modificar la funcionalidad del mtodo heredado de la clase padre.
En el ejemplo vemos que el nombre por default Perez no le sirve a la clase Cliente, la cual prefiere Garcia.
Vemos en el ejemplo que Persona y Cliente tienen la opcin de setear un apellido (1er caso) o tomar el que viene por default (2do y 3er caso). Esto se puede apreciar en la salida por consola.
Vinculacin dinmica
Una referencia a un objeto de una clase, puede pasar a referenciar a otro objeto de otra clase. Esto es posible siempre y cuando estn en la misma lnea de herencia. En nuestro ejemplo, una persona Puede referencia a un Cliente, ya que ambos se encuentran en la misma lnea de herencia.
Si bien la clase instancia es Cliente, se puede observar que el nmero de cliente no aparece. Si lo necesito debo castear. Luego veremos este concepto.
Casteo.
Para que un objeto que fue referenciado por otro pueda recuperar sus mtodos particulares es necesario castear.
El casteo sirve para cambiar de tipo. Es como que el objeto se saca el disfraz.
Hasta aqu la teora de objetos, espera pronto, cosas bsicas de Java como tipos de atributos/mtodos, clases abstractas, paquetes, interfaces, etc. que van a complementar este esta informacin. Atentamente; Ing. Nelson Garay www.javasv.com
En Java SV, ofrecemos cursos de capacitacin online de la tecnologa Java, nuestros cursos: Android, JDBC, JSP, Servlets, Frameworks, Struts, Hibernate, Spring, Tecnologas como Java Server Faces, Java EE, JBoss, HTML5, CSS, Java Script y ms. Nuestra misin NO ES VENDER, sino capacitarte para que obtengas mejores oportunidades laborales y por ende econmicas.
Conoce nuestra metodologa de estudios, precios, cursos, paquetes garanta y ms, visita nuestro sitio web: www.javasv.com Dudas escrbenos: [email protected]