programación orientada a ojetos java

35
1 Programación Orientada a Objetos Java La primer característica de un programa Java es que este debe definir una Clase que lleve por nombre el mismo que el del archivo fuente, en este caso el archivo Basico.java debe incluir una definición de una Clase llamada Basico, nótese que ambos nombres coinciden en su sintaxis, esto es, ambos inician con letra mayúscula lo cual es una convención llevada acabo para la definición de Clases. public class Basico { public static void main(String args[]) { System.out.println("Una prueba:PRIMERO DE DAM"); } } Para definir una Clase se utiliza el vocablo class así como un calificador de acceso, en este caso se utiliza el calificador public, el uso y variación de calificadores será descrito posteriormente Dentro de la definición de la Clase se deben incluir los respectivos métodos que podrán ser invocados. En el caso del programa Basico.java únicamente es definido el método main, dicho método es invocado por "default" al ejecutarse el programa (Clase).

Upload: felix-marin

Post on 28-Apr-2015

76 views

Category:

Documents


0 download

DESCRIPTION

Programación Orientada a Ojetos JAVA

TRANSCRIPT

Page 1: Programación Orientada a Ojetos JAVA

1

Programación Orientada a Objetos

Java� La primer característica de un programa Java es que este debe definir una

Clase que lleve por nombre el mismo que el del archivo fuente, en este caso el archivo Basico.java debe incluir una definición de una Clase llamada Basico, nótese que ambos nombres coinciden en su sintaxis, esto es, ambos inician con letra mayúscula lo cual es una convención llevada acabo para la definición de Clases.

public class Basico { public static void main(String args[]) {

System.out.println("Una prueba:PRIMERO DE DAM");}

} � Para definir una Clase se utiliza el vocablo class así como un calificador de

acceso, en este caso se utiliza el calificador public, el uso y variación de calificadores será descrito posteriormente

� Dentro de la definición de la Clase se deben incluir los respectivos métodos que podrán ser invocados. En el caso del programa Basico.javaúnicamente es definido el método main, dicho método es invocado por "default" al ejecutarse el programa (Clase).

Page 2: Programación Orientada a Ojetos JAVA

2

Programación Orientada a Objetos

Java

�Aunque no es un requerimiento definir el método main dentro de toda Clase Java, dicho método representa el único mecanismo automático para realizar tareas al invocarse una Clase, esto es, al momento de ejecutarse determinada Clase siempre será ejecutado todo el contenido dentro de dicho método.

Page 3: Programación Orientada a Ojetos JAVA

3

Programación Orientada a Objetos

Java� Para que java entienda el método main, este debe estar declarado

de una forma muy concreta, que es la siguiente� public static void main (String [ ] args)

{...}

� Debe ser public. Eso quiere decir que se le puede llamar desde cualquier lado.

� Debe ser static. Esto quiere decir que se le puede llamar sin necesidad de instanciar la clase (lo veremos más adelante.

� Es void. Eso quiere decir que ese método no devuelve ningún resultado.

� El parámetro del método, que va entre paréntesis detrás de él, es un array de String (cadenas de texto).

Page 4: Programación Orientada a Ojetos JAVA

4

Programación Orientada a Objetos

Java(Se verá más claro con el manejo de Arrays)

� Los programas de DOS pueden ser ejecutados también con el uso de argumentos. Es decir, normalmente un programa se ejecuta con una línea de comandos como la siguiente:

Java programa1Si yo le quiero pasar parámetros debo escribirlos a continuación en la línea de comandos, así: Java programa1 argumento1 ...

� Si uso la siguiente línea de comandos: java prog1 param1 param2 param3args.length=3 args[0]=param1 args[1]=param2 args[2]=parame

� Si modificamos el programa y lo renombramos de la siguiente forma: public class prog2 {

public static void main (String args[]) { System.out.println("Este programa tiene "+args.length+" argumentos");

} }Y escribimos: java prog2 param1 param2 param3 o java prog2 a b c

� Obtendremos la salida : Este programa tiene 3 argumentos

Page 5: Programación Orientada a Ojetos JAVA

5

Programación Orientada a Objetos

Métodos en Java� Son el equivalente a los procedimientos de los lenguajes no OO. Un

método es un bloque de código definido dentro de una clase que proporciona un mecanismo para realizar una acción.

� Un método tiene acceso a todos los atributos de su clase.

� Un método puede invocar otros métodos

� En Java no se puede definir un método dentro de otro.

� La ejecución de todos los programas se inicia en el método main.

Page 6: Programación Orientada a Ojetos JAVA

6

Programación Orientada a Objetos

Estructura de un método

� Los métodos en java pueden tener parámetros, es decir, que un método puede utilizar variables predefinidas para ser utilizadas en sus procesos, Veamos un ejemplo de como hacer un método en el siguiente ejemplo

En este ejemplo vemos un programa normal en el cual se ejecuta un ciclo while que imprime números del 0 al 7, pero ¿es posible hacerlo utilizando un método?

Page 7: Programación Orientada a Ojetos JAVA

7

Programación Orientada a Objetos

Estructura de un método

package ciclos;public class Numeros {

public static void main(String[] args) {int x=0;while(x!=7){System.out.println("X vale: "+x);x++;}

}}

Page 8: Programación Orientada a Ojetos JAVA

8

Programación Orientada a Objetos

Ejemplo con métodopackage ciclos;public class Numeros {

public static void main(String[] args) {iniciarCiclo();//aqui estamos ejecutando el método escrito en la

parte de abajo, se puede utilizar mas de 1 vez}

/*Comienza el método.Este método no regresa valores, es un método que únicamente realiza un procedimiento, por lo que se declara como "void" seguido del nombre que tendrá el método

public void iniciarCiclo(){int x=0;while(x!=7){

System.out.println("X vale: "+x);x++; }}

}

Page 9: Programación Orientada a Ojetos JAVA

9

Programación Orientada a Objetos

Practicar métodos

�Realiza alguno de los ejercicios anteriores usando métodos:

�Listado EjerciciosJava2�Ejercicio1� El método recibe la cantidad de

horas y el pago por hora, y devuelve el resultado.

�Ejercicio2�Recibe como parámetro el número y realiza la operación.

�Ejercicio 5 �Recibe como parámetro los dos valores

Page 10: Programación Orientada a Ojetos JAVA

10

Programación Orientada a Objetos

Una nueva forma de pensar� Es muy importante destacar que cuando hacemos referencia a la programación

orientada a objetos estamos hablando de una nueva forma de pensar acerca delproceso de descomposición de problemas y de desarrollo de soluciones deprogramación.

� La POO surge en la historia como un intento para dominar la complejidad que, deforma innata, posee el software. Tradicionalmente, la forma de enfrentarse a estacomplejidad ha sido empleando lo que llamamos programación estructurada, queconsiste en descomponer el problema objeto de resolución en subproblemas y mássubproblemas hasta llegar a acciones muy simples y fáciles de codificar.

� Se trata de descomponer el problema en acciones, en verbos. En el ejemplo de unprograma que realice una operación con varios números, descomponíamos el problema en las siguientes acciones: primero, pedir el valor de los números a, b y c;después, pedir al usuario que operación desea realizar y por último, en función de la operación a realizar, calcular la suma, resta, división etc.….

� Como podemos ver, descomponíamos el problema en acciones, en verbos; porejemplo el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular…

Page 11: Programación Orientada a Ojetos JAVA

11

Programación Orientada a Objetos

Introducción a la ProgramaciónOrientada 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 quepermite el diseño de aplicaciones orientadas a objetos.

� Dicho esto, lo normal es que toda persona que vaya a desarrollaraplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquierala forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una ylenguajes muchos.

� En este tema 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.

Page 12: Programación Orientada a Ojetos JAVA

12

Programación Orientada a Objetos

Programación estructurada Vs.POO

Las ventajas del paradigma OO son múltiples:

•Es intuitiva, describe un problema en términos similares a los que utiliza la mente humana•Permite construir soluciones más seguras y con un mantenimiento más sencillo•Fomenta la reutilización y el trabajo en equipo.

Page 13: Programación Orientada a Ojetos JAVA

13

Programación Orientada a Objetos

CONCEPTOS BÁSICOS

� Todo es un objeto

� Los objetos se comunican entre sí pasándose mensajes

� Cada objeto tiene un estado.� Un objeto es un caso particular (instancia) de una clase

� Las clases definen el comportamiento de un conjunto de objetos

Page 14: Programación Orientada a Ojetos JAVA

14

Programación Orientada a Objetos

CONCEPTOS BÁSICOS

� Consecuencias

� Un programa orientado a objetos se estructura como un conjunto de agentes que interactúan (programa como colección de objetos).

� Cada objeto proporciona un servicio que es utilizado por otros objetos (reutilización).

� La acción se inicia por la transmisión de un mensaje al objeto responsable de realizarla.

� Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción solicitada.

� El receptor puede utilizar cualquier técnica que logre el objetivo deseado.

Page 15: Programación Orientada a Ojetos JAVA

15

Programación Orientada a Objetos

Primeros ejemplos� Si nos detenemos a pensar sobre cómo se nos plantea un problema cualquiera en la

realidad podremos ver que lo que hay en la realidad son entidades (otros nombresque podríamos usar para describir lo que aquí llamo entidades son “agentes” u“objetos”).

� Estos objetos poseen un conjunto de propiedades o atributos, y un conjunto demétodos mediante los cuales muestran su comportamiento. Y no sólo eso, tambiénpodremos descubrir todo un conjunto de interrelaciones entre los objetos, guiadaspor el intercambio de mensajes; los objetos del problema responden a estosmensajes mediante la ejecución de ciertas acciones.

� Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real.Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.

� Pues en un esquema POO el coche sería el objeto, las propiedades serían lascaracterísticas como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.

Page 16: Programación Orientada a Ojetos JAVA

16

Programación Orientada a Objetos

Ejemplo� Los objetos son instancias o casos concretos de las clases, que no son

más que plantillas que definen las variables y los métodos comunes a todos los objetos de un cierto tipo.

� La clase “ser humano” tendrá, entre sus muchas variables miembro o variables que la componen: color del cabello, color de los ojos, estatura, peso, fecha de nacimiento, etc.

� A partir de una clase se podrán generar todos los objetos que se deseen especificando valores particulares para cada una de las variables definida por la clase.

� Así, encontraremos el objeto farmacéutica, cuyo color de cabello es rubio, color de ojos azul, estatura 175 cm., peso 50 Kg., y así sucesivamente.

Page 17: Programación Orientada a Ojetos JAVA

17

Programación Orientada a Objetos

CONCEPTOS BÁSICOS

� Las clases de objetos representan conceptos o entidades significativos en un problema determinado.

� Una clase describe las características comunes de un conjunto deobjetos, mediante dos elementos:

� Atributos (o variables miembro, variables de clase). Describen el estado interno de cada objeto

� Operaciones (o métodos, funciones miembro). Describen lo que se puede hacer con el objeto, los servicios que proporciona

Page 18: Programación Orientada a Ojetos JAVA

18

Programación Orientada a Objetos

Ejemplo. Cuenta Corriente

Page 19: Programación Orientada a Ojetos JAVA

19

Programación Orientada a Objetos

Ejemplo. Cuenta Corriente

Instancia de una clase : valores específicos para sus atributos

Page 20: Programación Orientada a Ojetos JAVA

20

Programación Orientada a Objetos

Ejemplo. Cuenta Corriente� La implementación de esta clase en Java se realizaría en un fichero con

nombre Cuenta.java, y su contenido sería el siguiente:

class Cuenta {long numero;String titular;float saldo;float interesAnual;

void ingreso(float cantidad) {saldo += cantidad;

}void reintegro(float cantidad) {

saldo -= cantidad;}void ingresoInteresMes() {

saldo += interesAnual * saldo / 1200;}boolean enRojos() { return saldo < 0; }

float leerSaldo() { return saldo; }}

Page 21: Programación Orientada a Ojetos JAVA

21

Programación Orientada a Objetos

¿Qué es un objeto?

� Un objeto no es más que un conjunto de variables (o datos) y métodos (o funciones)relacionados entre sí.

� Los objetos en programación se usan para modelar entidades del mundoreal

� Un objeto es, por tanto, la representación en un programa de un concepto, ycontiene toda la información necesaria para abstraerlo: datos que describen susatributos y operaciones que pueden realizarse sobre los mismos.

� Los atributos del objeto (“estado”) y lo que el objeto puede hacer(“comportamiento”) están expresados por las variables y los métodos quecomponen el objeto respectivamente.

� Por ejemplo, un objeto que modelase una bicicleta en el mundo real tendría variables que indicarían el estado actual de la bicicleta: su velocidad es de 20 Km./h, su cadencia de pedaleo 90 r.p.m. y su marcha actual es la 5ª. Estas variables seconocen formalmente como variables instancia o variables miembro porquecontienen el estado de un objeto bicicleta particular y, en programación orientada aobjetos, un objeto particular se denomina una instancia.

Page 22: Programación Orientada a Ojetos JAVA

22

Programación Orientada a Objetos

¿Qué es un objeto?� Además de estas variables, el objeto bicicleta podría tener métodos para

frenar, cambiar la cadencia de pedaleo, y cambiar de marcha (la bicicletano tendría que tener un método para cambiar su velocidad pues ésta esfunción de la cadencia de pedaleo, la marcha en la que está y de si losfrenos están siendo utilizados o no, entre otros muchos factores). Estosmétodos se denominan formalmente métodos instancia o métodosmiembro, ya que cambian el estado de una instancia u objeto bicicletaparticular. La siguiente figura muestra una bicicleta modelada como unobjeto:

Page 23: Programación Orientada a Ojetos JAVA

23

Programación Orientada a Objetos

¿Qué es un objeto?� El diagrama del objeto bicicleta muestra las variables objeto en el núcleo o

centro del objeto y los métodos rodeando el núcleo y protegiéndolo de otrosobjetos del programa.

� Este hecho de empaquetar o proteger las variables miembro con losmétodos miembro se denomina encapsulación.

� Este dibujo conceptual que muestra el núcleo de variables miembro delobjeto protegido por una membrana protectora de métodos o funcionesmiembro es la representación ideal de un objeto y es el ideal que losprogramadores de objetos suelen buscar. Sin embargo, debemos matizarlo.A menudo, por razones prácticas, es posible que un objeto desee exponeralguna de sus variables miembro, o proteger otras de sus propios métodoso funciones miembro. Por ejemplo, Java permite establecer 4 niveles deprotección de las variables y de las funciones miembro para casos comoéste. Los niveles de protección determinan qué objetos y clases puedenacceder a qué variables o a qué métodos.

Page 24: Programación Orientada a Ojetos JAVA

24

Programación Orientada a Objetos

Niveles de protección� En Java un miembro se etiqueta como público colocando el identificador

public delante de su declaración � Para los miembros privados utilizaremos el identificador private

public void ingreso(float cantidad) {

saldo += cantidad;

private void ingreso(float cantidad) {

saldo += cantidad;

Page 25: Programación Orientada a Ojetos JAVA

25

Programación Orientada a Objetos

Niveles de protección� En Java se consideran amigas todas aquellas que forman parte del mismo paquete Un fichero fuente java forma

en sí un paquete y por tanto todas las clases incluidas en él son amigas

� Los paquetes son una forma de organizar grupos de clases. Un paquete contiene un conjunto de clases relacionadas bien por finalidad, por ámbito o por herencia.

� Los paquetes resuelven el problema del conflicto entre los nombres de las clases. Al crecer el número de clases crece la probabilidad de designar con el mismo nombre a dos clases diferentes.

� Las clases tienen ciertos privilegios de acceso a los miembros dato y a las funciones miembro de otras clases dentro de un mismo paquete.

� Las clases incluidas en varios ficheros fuente pueden agruparse en un único paquete indicando el nombre de paquete al principio de cada fichero mediante el indicador package

� NIVELES:

� público: funciones de toda clase pueden acceder a los datos o métodos de una clase que se define con el nivel de acceso público. Este es el nivel de protección de datos más bajo

� protegido: el acceso a los datos está restringido a las funciones de clases heredadas, es decir, las funciones miembro de esa clase y todas las subclases

� privado: el acceso a los datos está restringido a los métodos de esa clase en particular. Este es nivel más alto de protección de datos

Page 26: Programación Orientada a Ojetos JAVA

26

Programación Orientada a Objetos

¿Qué es un mensaje?� Normalmente un único objeto por sí solo no es muy útil.

� En general, un objeto aparece como un componente más de un programa o una aplicación que contiene otros muchos objetos.

� Es precisamente haciendo uso de esta interacción como los programadores consiguen una funcionalidad de mayor orden y modelar comportamientos mucho más complejos.

� Una bicicleta (a partir de ahora particularizaremos) colgada de un gancho en el garaje no es más que una estructura de aleación de titanio y un poco de goma. Por sí sola, tu bicicleta (por poner una bicicleta en concreto) es incapaz de desarrollar ninguna actividad.

� Tu bicicleta es realmente útil en tanto que otro objeto (tú) interactúa con ella (pedalea).

Page 27: Programación Orientada a Ojetos JAVA

27

Programación Orientada a Objetos

¿Qué es un mensaje?

� Los objetos de un programa interactúan y se comunican entre ellos por medio de mensajes. Cuando un objeto A quiere que otro objeto B ejecute una de sus funciones miembro (métodos de B), el objeto A manda un mensaje al objeto B.

� En ocasiones, el objeto que recibe el mensaje necesita más información para saber exactamente lo que tiene que hacer; por ejemplo, cuando se desea cambiar la marcha de una bicicleta, se debe indicar la marcha a la que se quiere cambiar. Esta información se pasa junto con el mensaje en forma de parámetro.

� La siguiente figura muestra las tres partes que componen un mensaje:

� 1. El objeto al cual se manda el mensaje (TuBicicleta).� 2. El método o función miembro que debe ejecutar (CambiarDeMarcha).� 3. Los parámetros que necesita ese método (Marcha)

Page 28: Programación Orientada a Ojetos JAVA

28

Programación Orientada a Objetos

¿Qué es un mensaje?

�Estas tres partes del mensaje (objeto destinatario, método y parámetros) sonsuficiente información para que el objeto que recibe el mensaje ejecute el método ola función miembro solicitada. Los mensajes proporcionan dos ventajas importantes:

� El comportamiento de un objeto está completamente determinado por susmétodos, así que los mensajes representan todas las posiblesinteracciones que pueden realizarse entre objetos.

� Los objetos no necesitan formar parte del mismo proceso, ni siquiera residiren un mismo ordenador para mandarse mensajes entre ellos (y de esta formainteractuar).

Page 29: Programación Orientada a Ojetos JAVA

29

Programación Orientada a Objetos

¿Qué es una clase?� Si nos fijamos en la vida real, podremos apreciar que casi todo se compone de

objetos (coche, lapicero, casa y, por qué no, personas). Todos entendemos quetanto un BMW verde, como un SEAT rojo son coches, pero son distintos en suaspecto físico. A pesar de esa diferencia de aspecto entendemos que ambos tienenunas características comunes como son poseer ruedas, un volante, asientos,... Esascaracterísticas comunes son las que hacen pensar en el concepto coche en amboscasos. A partir de ahora podemos interpretar que el BMW y el SEAT son objetos, y eltipo o clase de estos objetos es coche.

� Además, podemos suponer que la clase de un objeto describe como es dicho objeto, por ejemplo:

clase Coche: 4 ruedas, 1 volante, 5 asientos, acelerar, frenar, girar

� Como podemos ver, esta clase no sólo describe qué cosas posee un coche, sino que también describe qué acciones puede realizar un coche (acelerar, frenar y girar). Es decir, una clase define los atributos y las acciones (o métodos) que puede realizar un objeto de la clase.

Page 30: Programación Orientada a Ojetos JAVA

30

Programación Orientada a Objetos

¿Qué es una clase?� Normalmente en el mundo real existen varios objetos de un mismo tipo o sea de una

misma clase.

� Por ejemplo, mi bicicleta es una de las muchas bicicletas que existen en el mundo.usando la terminología de la programación orientada a objetos, diremos que mibicicleta es una instancia de la clase de objetos conocida como bicicletas.

� Todas las bicicletas tienen algunos estados o atributos (color, marcha actual,cadencia actual, dos ruedas) y algunos métodos (cambiar de marcha, frenar) encomún.

� Sin embargo, el estado particular de cada bicicleta es independiente del estado delas demás bicicletas. La particularización de estos atributos puede ser diferente. Esdecir, una bicicleta podrá ser azul, y otra roja, pero ambas tienen en común el hechode tener una variable “color”.

� De este modo podemos definir una plantilla de variables y métodos para todas lasbicicletas. Las plantillas para crear objetos son denominadas clases.

Page 31: Programación Orientada a Ojetos JAVA

31

Programación Orientada a Objetos

¿Qué es una clase?� Implementación de un tipo de dato.� Una clase es una plantilla que define las variables y los métodos que son

comunes para todos los objetos de un cierto tipo.

� En nuestro ejemplo, la clase bicicleta definiría variables miembro comunes a todas las bicicletas, como la marcha actual, la cadencia actual, etc. Esta clase también debe declarar e implementar los métodos o funciones miembro que permiten al ciclista cambiar de marcha, frenar, y cambiar la cadencia de pedaleo, como se muestra en la siguiente figura:

Page 32: Programación Orientada a Ojetos JAVA

32

Programación Orientada a Objetos

¿Qué es una clase?� Después de haber creado la clase bicicleta, podemos crear cualquier número de objetos

bicicleta a partir de la clase. Cuando creamos una instancia de una clase, el sistema reserva suficiente memoria para el objeto con todas sus variables miembro. Cada instancia tiene su propia copia de las variables miembro definidas en la clase.

Page 33: Programación Orientada a Ojetos JAVA

33

Programación Orientada a Objetos

Resumen.Clases y Objetos

� Programación Orientada a Objetos� Colección estructurada de clases

� Clase� Entidad(Describe objetos que tienen la misma estructura y el mismo comportamiento)

� Objeto� Instancia de una clase( Ej: Coche( BMW,Alfa Romeo))

� Métodos� Operaciones aplicables a los objetos.Único modo de acceder a los objetos.

� Atributos�Propiedades de los objetos

� Mensajes� Comunicación entre objetos

� EJEMPLO:

Modelar un banco: Encontramos objetos “cuenta” con propiedades comunes (atributos) ( saldo, titular de la cuenta) y operaciones ( reintegro, ingreso,ObtenerSaldo)

Page 34: Programación Orientada a Ojetos JAVA

34

Programación Orientada a Objetos

Ejercicios propuestos

� Proponga tres ejemplos de objetos del mundo real.

� Enumere propiedades y métodos para cada uno de ellos.

Page 35: Programación Orientada a Ojetos JAVA

35

Programación Orientada a Objetos

La clase String