curso de java, lección 1_ programación orientada a objetos

12
Entrar al Aula Entrar al Aula Cursos Subvencionados Cursos subvencionados para trabajadores Realiza el curso gratis a través de tu empresa. Curso de Java Twitter Meneame Delicious Technorati Digg Facebook Nosotros Servicios Catálogo Aula Virtual C ontacto Inicio » Curso de Java » Programación orientada a objetos Cursos Relacionados: PHP PHP Avanzado Visual Basic.NET 2010 Visual Basic.NET 2008 ASP.NET 2008 ASP NET 2008 Avanzado Introducción a SQL Server 2008 Introducción a SQL Server 2005 Java Servidor J2EE Programación en C# UML Programación orientada a objetos Inscríbete ahora y accede a 3 unidades gratis Una vez inscrito, te enviamos un email con los datos de acceso y puedes comenzar el curso de Java realizando 3 unidades. Podrás acceder a videotuoriales, actividades multimedia, ejercicios prácticos, consultar al tutor, etc.. Introducción Programación orientada a objetos La programación orientada a objetos facilita la creación de software de calidad ya que fomenta su fácil mantenibilidad, alta escalabilidad y la reutilización de componentes software. La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio del problema, y a propiedades como la herencia o el encapsulamiento. El elemento básico de la POO es el objeto. Un objeto es la representación de un concepto para un programa, y contiene toda la información necesaria para abstraer dicho concepto: los datos que describen su estado y las operaciones o métodos que pueden modificar dicho estado. Ejemplo: SerHumano, Ciudad, CuentaBancaria, etc. Se intuye que una CuentaBancaria podría definir una serie de atributos como número titular saldo Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html 1 de 12 08/11/2011 10:57

Upload: emanuel-friedrich

Post on 27-Nov-2015

21 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Curso de Java, Lección 1_ Programación orientada a objetos

Entrar al AulaEntrar al Aula

Cursos Subvencionados

Cursos subvencionados paratrabajadoresRealiza el curso gratis a través de tu empresa.

Curso de Java

Twitter Meneame Delicious Technorati Digg Facebook

Nosotros Servicios Catálogo Aula Virtual Contacto

Inicio » Curso de Java » Programación orientada a objetos

Cursos Relacionados:

PHP PHP Avanzado Visual Basic.NET 2010 Visual Basic.NET 2008 ASP.NET 2008 ASP NET 2008 AvanzadoIntroducción a SQL Server 2008 Introducción a SQL Server 2005 Java Servidor J2EE Programación en C# UML

Programación orientada a objetos

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Introducción

Programación orientada a objetos

La programación orientada a objetos facilita la creación de software de calidad ya que fomenta su fácil mantenibilidad,

alta escalabilidad y la reutilización de componentes software.

La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. Esto esposible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio delproblema, y a propiedades como la herencia o el encapsulamiento.

El elemento básico de la POO es el objeto. Un objeto es la representación de un concepto para un programa, y contienetoda la información necesaria para abstraer dicho concepto: los datos que describen su estado y las operaciones o métodosque pueden modificar dicho estado. Ejemplo: SerHumano, Ciudad, CuentaBancaria, etc.

Se intuye que una CuentaBancaria podría definir una serie de atributos como

númerotitularsaldo

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

1 de 12 08/11/2011 10:57

Page 2: Curso de Java, Lección 1_ Programación orientada a objetos

que asumirán distintos valores para cada una y que servirían para identificarla de forma única. Lo importante es pensar quetodas las cuentas bancarias deberían contar con esos atributos.

Lo mismo ocurriría con SerHumano. Pensando un poco podemos concluir que para nosotros un ser humano se definemediante los atributos

color de ojosedadnombre

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Objetos

Se puede definir objeto como el "encapsulamiento de un conjunto de operaciones (métodos) que pueden ser

invocados externamente, y de un estado que recuerda el efecto de los servicios". [Piattini et al., 1996].

Un objeto, además de un estado interno, presenta una interfaz para poder interactuar con el exterior. Es por esto por lo quese dice que en la programación orientada a objetos "se unen datos y procesos", y no como en su predecesora, laprogramación estructurada, en la que estaban separados en forma de variables y funciones.

Un objeto consta de:

Tiempo de vida: la duración de un objeto en un programa siempre está limitada en el tiempo. La mayoría de losobjetos sólo existen durante una parte de la ejecución del programa. Los objetos son creados mediante unmecanismo denominado instanciación y cuando dejan de existir se dice que son destruidos.

Estado: todo objeto posee un estado, definido por sus atributos o campos. Con él se definen las propiedades delobjeto, y el estado en que se encuentra en un momento determinado de su existencia. Por ejemplo, en el caso deCuentaBancaria podría ser:

numero: 1234567890123456 titular: Jesús Fernández saldo: 10000

Comportamiento: todo objeto ha de presentar una interfaz, definida por sus métodos, para que el resto de objetosque componen los programas puedan interactuar con él.

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Clases

Clases

Las clases son abstracciones que representan a un conjunto de objetos con unas características y

comportamiento comunes. En este sentido, una clase se puede considerarse como una plantilla o molde que sirve para lacreación o instanciación de objetos.

Ejemplo: se nos puede ocurrir pensar en una cuenta bancaria.

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

2 de 12 08/11/2011 10:57

Page 3: Curso de Java, Lección 1_ Programación orientada a objetos

¿Qué caracteriza a las cuentas bancarias? Todas tienen un número de veinte dígitos, están asociadas a un titular ypresentan un saldo aunque, por supuesto, dichas características para cada cuenta bancaria pueden ser distintas.

Características comunes: todas las cuentas tienen número identificativo, titular y saldo.

Comportamiento común: en todas las cuentas se pueden realizar dos operaciones básicas: depositar y retirardinero.

No es que las citadas anteriormente sean todas las características que definen a una cuenta bancaria, pero sí en las que seestá interesado como responsable de modelar un objeto de negocio del sistema software que se está diseñando.

¿Cómo se representan las características comunes a nivel de código?

Mediante atributos de clase.

Ejemplo:

// Declaración del paquete que va a contener a la clase

package cuentabancaria;

// Declaración de clase

public class CuentaBancaria{

// Atributos de clase. Son variables de instancia

private String numero;

private String titular;

private double saldo;

// Método constructor de la clase. Es invocado cada vez que se crea o instancia un objeto de la clase

public CuentaBancaria(String numeroCuenta, String titularCuenta, double cantidaInicial) {

numero = numeroCuenta;

titular = titularCuenta;

saldo = cantidaInicial;

}

...

Las clases representan el estado de los objetos mediante los valores que dichos atributos asumen para cada uno de ellos.En la mayoría de lenguajes orientados a objetos, estos atributos son implementados mediante variables de instancia(declaradas justo después de la clase y accesibles a todos los métodos de la misma).

¿Cómo se crea o instancia un objeto de la clase CuentaBancaria?

CuentaBancaria cuenta1 = new CuentaBancaria("12345678901234567890", "Juan Sanz", 1000);

CuentaBancaria cuenta2 = new CuentaBancaria("98765432109876543210", "Sara Gil", 3000);

¿Cómo se representan el comportamiento común a nivel de código?

Mediante métodos.

Métodos

Ejemplo:

...

public void retirar(double cantidad) throws NoFondosDisponiblesException {

if (saldo >= cantidad) {

saldo = saldo - cantidad;

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

3 de 12 08/11/2011 10:57

Page 4: Curso de Java, Lección 1_ Programación orientada a objetos

}

else

throw new NoFondosDisponiblesException("No hay suficientes fondos");

}

public void depositar(double cantidad){

if(cantidad > 0){

saldo = saldo + cantidad;

}

}

...

Los métodos permiten a las clases modificar el comportamiento de los objetos, cambiando los valores de los atributos einteractuando con otros métodos de la clase que expongan una determinada funcionalidad precisada.

Ejemplo de llamada a un método:

cuenta1.depositar(300);

Esta línea de código invoca al método despositar y provoca un cambio de valor en el atributo saldo del objeto de la claseCuentaBancaria cuya referencia es cuenta1: antes de la llamada, el saldo era de 1000, pero después será de 1300.

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Modelo de objetos

Existen una serie de principios fundamentales para comprender cómo se modeliza la realidad al crear un programa bajo elparadigma de la orientación a objetos. Estos principios son:

AbstracciónEncapsulaciónModularidadHerenciaPaso de mensajesPolimorfismoRelaciones entre objetosVisibilidad

No importa si ahora estos principios no se entienden bien ahora. A medida que se vaya avanzando en el curso y conforme sevayan relizando ejercicios se comprenderán mejor.

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

4 de 12 08/11/2011 10:57

Page 5: Curso de Java, Lección 1_ Programación orientada a objetos

Abstracción

Mediante la abstracción la mente humana modeliza la realidad en forma de objetos. Para ello busca parecidos entre larealidad y la posible implementación de objetos del programa que simulen el funcionamiento de los objetos reales.

Los seres humanos no pensamos en las cosas como un conjunto de cosas menores; por ejemplo, no vemos un cuerpohumano como un conjunto de células. Los humanos entendemos la realidad como objetos con comportamientos biendefinidos. No necesitamos conocer los detalles de porqué ni cómo funcionan las cosas; simplemente solicitamosdeterminadas acciones en espera de una respuesta; cuando una persona desea desplazarse, su cuerpo le respondecomenzando a caminar.

Pero la abstracción humana se gestiona de una manera jerárquica, dividiendo sucesivamente sistemas complejos

en conjuntos de subsistemas, para así entender más fácilmente la realidad. Esta es la forma de pensar que laorientación a objeto intenta cubrir.

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Encapsulación

Permite a los objetos elegir qué información es publicada y qué información es ocultada al resto de los objetos.Para ello los objetos suelen presentar sus métodos como públicos y sus atributos como privados e inaccesibles

desde otros objetos. Esto se hace para dotar al programador de mecanismos que permitan aplicar lógica de control yvalidación cuando otros objetos consulten o modifiquen los atributos.

Con el encapsulado de los datos se consigue que las personas que utilicen un objeto sólo tengan que comprender suinterfaz, olvidándose de cómo está implementada, y en definitiva, reduciendo la complejidad de utilización.

En la clase CuentaBancaria los métodos setters(setSaldo, setNumero, setTitular) permiten actuar del modo comentadoanteriormente, mientras que los getters(getSaldo, getNumero, getTitular) acceden al valor de los atributos

...

public double getSaldo() {

return saldo;

}

public void setSaldo(double saldo) {

if(saldo < 0)

// Mostrar mensaje al usuario indicándole que no es posible

else

this.saldo = saldo;

}

public String getNumero() {

return numero;

}

public void setNumero(String numero) {

this.numero = numero;

}

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

5 de 12 08/11/2011 10:57

Page 6: Curso de Java, Lección 1_ Programación orientada a objetos

public String getTitular() {

return titular;

}

public void setTitular(String titular) {

this.titular = titular;

}

...

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Modularidad

Mediante la modularidad, se propone al programador dividir su aplicación en varios módulos diferentes (ya sea en

forma de clases, paquetes o bibliotecas), cada uno de ellos con un sentido propio.

Esta fragmentación disminuye el grado de dificultad del problema al que da respuesta el programa, pues se afronta elproblema como un conjunto de problemas de menor dificultad, además de facilitar la comprensión del programa.

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Herencia

La mayoría de nosotros ve de manera natural nuestro mundo como objetos que se relacionan entre sí de una manerajerárquica. Por ejemplo, un perro es un mamífero, y los mamíferos son animales, y los animales seres vivos...

Del mismo modo, las distintas clases de un programa se organizan mediante la herencia.

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

6 de 12 08/11/2011 10:57

Page 7: Curso de Java, Lección 1_ Programación orientada a objetos

Mediante la herencia una clase hija o subclase puede usar propiedades de su clase padre o superclase. De este

modo se simplifican los diseños y se evita la duplicación de código al no tener que volver a codificar métodos ya

implementados.

A veces interesa modificar el comportamiento de un método heredado. Para conseguirlo se redefine o sobrepone osobrescribe (overriding en inglés) el método

Con la misma firma (mismo número de argumentos, mismo tipo de datos y en el mismo orden)

y

Con el mismo tipo de retorno

en la subclase, pero cambiando el código del método en función de las necesidades de programación.

Ejemplo1:

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

7 de 12 08/11/2011 10:57

Page 8: Curso de Java, Lección 1_ Programación orientada a objetos

Ejemplo2: CuentaBancaria superclase de CuentaAhorros, CuentaPlatino y CuentaDeposito

// Declaración del paquete que va a contener a la clase

package cuentabancaria;

// Declaración de clase

public class CuentaBancaria{

// Atributos de clase. Son variables de instancia

private String numero;

private String titular;

private double saldo;

// Método constructor de la clase. Es invocado cada vez que se crea o instancia un objeto de la clase

public CuentaBancaria(String numeroCuenta, String titularCuenta, double cantidaInicial) {

numero = numeroCuenta;

titular = titularCuenta;

saldo = cantidaInicial;

}

public void retirar(double cantidad) throws NoFondosDisponiblesException {

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

8 de 12 08/11/2011 10:57

Page 9: Curso de Java, Lección 1_ Programación orientada a objetos

if (saldo >= cantidad) {

saldo = saldo - cantidad;

}

else

throw new NoFondosDisponiblesException("No hay suficientes fondos");

}

public void depositar(double cantidad){

if(cantidad > 0){

saldo = saldo + cantidad;

}

}

}

package cuentabancaria;

// Cuenta bancaria de tipo ahorro: se emplean los metodos depositar y retirar de su superclase CuentaBancaria

// Si se retira una cantidad superior al saldo, se lanza una NoFondosDisponiblesException

public class CuentaAhorros extends CuentaBancaria{

public CuentaAhorros(){}

public CuentaAhorros(String numeroCuenta, String titularCuenta, double cantidadInicial) {

super(numeroCuenta, titularCuenta, cantidadInicial);

}

public String getTipo() {

return "CuentaAhorros";

}

}

package cuentabancaria;

// Cuenta bancaria tipo platino: se emplea el metodo depositar de su superclase CuentaBancaria

// y se redefine el met retirar. De qué modo?

// Un titular de este tipo de cuenta dispone de un límite admisible en descubierto de 2500,

// que será utilizado cuando se intente retirar una cantidad que supere el saldo de la cuenta.

// Si se retira una cantidad superior al saldo + descubierto permitido, se lanza una NoFondosDisponiblesException

public class CuentaPlatino extends CuentaBancaria {

private const double limiteDescubierto = 2500.00;private double fondosDisponibles;

public CuentaPlatino() {}

public CuentaPlatino(String numeroCuenta, String titularCuenta, double cantidadInicial) {

super(numeroCuenta, titularCuenta, cantidadInicial);

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

9 de 12 08/11/2011 10:57

Page 10: Curso de Java, Lección 1_ Programación orientada a objetos

}

// Redefinición del metodo retirar

public void retirar(double cantidad) throws NoFondosDisponiblesException {

// En vez de colocarlo en el constructor, lo hacemos aquí para evitar errores cuando depositas y retiras en una ejecución

// En la vida real es algo que no se prevé hacer, pero bueno...

fondosDisponibles = limiteDescubierto + saldo;

// Si el saldo es superior a la cantidad, se retira siguiendo los cauces normales, esto es, invocando a la superclase

if(saldo >= cantidad){

super.retirar(cantidad);

}

// Si el saldo es inferior a la cantidad, se usa el limite de descubierto disponible.

else{

// La cantidad a retirar no supera el saldo + limite descubierto

if(cantidad <= fondosDisponibles){

fondosDisponibles = fondosDisponibles - cantidad;

setSaldo(saldo - cantidad);

}

// La cantidad a retirar supera el saldo + limite descubierto

else

throw new NoFondosDisponiblesException("No hay suficientes fondos");

}

}

public double getLimiteDescubierto() {

return limiteDescubierto;

}

public double getFondosDisponibles() {

return fondosDisponibles;

}

public void setFondosDisponibles(double fondosDisponibles){

this.fondosDisponibles = fondosDisponibles;

}

public String getTipo() {

return "CuentaPlatino";

}

}

package cuentabancaria;

// Cuenta bancaria tipo depósito: se emplea el metodo retirar de su superclase CuentaBancaria y se redefine el metodo depositar. Dequé modo?

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

10 de 12 08/11/2011 10:57

Page 11: Curso de Java, Lección 1_ Programación orientada a objetos

< 3.- Software Java Volver al curso de Java 5.- Paso de Mensajes >

// Al depositar una cantidad igual o superior a 1000, el banco le ingresa la cantidad más el 5% de la misma

// Si se retira una cantidad superior al saldo, se lanza una NoFondosDisponiblesException

public class CuentaDeposito extends CuentaBancaria {

private const double interes = 5;

public CuentaDeposito() {}

public CuentaDeposito(String numeroCuenta, String titularCuenta, double cantidadInicial) {

super(numeroCuenta, titularCuenta, cantidadInicial)

}

// Redefinición del metodo depositar de CuentaBancaria

public void depositar(double cantidad){

// Si deposita una cantidad igual o sup a 1000, el banco le ingresa la cantidad

// más un extra del 5% de la misma

if(cantidad >= 1000){

setSaldo(saldo + cantidad + cantidad*interes/100);

}

else

super.depositar(cantidad);

}

public String getTipo() {

return "Cuenta Deposito";

}

}

Inscríbete ahora y accede a 3 unidades gratis

Una vez inscrito, te enviamos un email con los datos de acceso ypuedes comenzar el curso de Java realizando 3 unidades. Podrásacceder a videotuoriales, actividades multimedia, ejercicios prácticos,consultar al tutor, etc..

Twitter Meneame Delicious Technorati Digg Facebook

Si desea obtener un acceso sin restricciones a los contenidos del curso de Java y disfrutar de todas las herramientas del aula virtual (Videos explicativosstreaming, acceso a los foros, chat, ejercicios resueltos, la ayuda del tutor, audioconferencia, estudio de grabación, test y actividades de autoevaluación, etc...)puede inscribirse completamente gratis y comenzar a realizar de forma inmediata el curso.

Pregunte Experto Java Ya Nuestros expertos en Java contruyen Pregunte y obtenga su respuesta ya! JustAnswer.es/Java

Analista de Sistemas La Carrera Más Corta Hacia el Éxito Cámara Argentina de Comercio. cac.com.ar/Inscripcion

Curso de JAVA Aprende a programar en JAVA! Curso Principiantes y Avanzado www.educacionIT.com.ar/JAVA

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

11 de 12 08/11/2011 10:57

Page 12: Curso de Java, Lección 1_ Programación orientada a objetos

Copyright 2011© ADR Infor S.L. | Tel.: +34 941 250 116 · Fax: +34 941 236 805 · skype: adr_formacion

Email | Política de Privacidad | Aviso Legal | Área Privada

Descubre Educaplay, nuestra plataforma para crear y compartir actividades educativas

Síguenos en

aaa

Curso de Java, Lección 1: Programación orientada a objetos http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html

12 de 12 08/11/2011 10:57