Programación Orientada a Objetos JAVA

Page 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). 1


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. 2


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). 3


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 programa1 Si 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 param3 args.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

4


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.

5


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? 6


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++; }

}} 7


Programación Orientada a Objetos

Ejemplo con método package 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++; } } } 8


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 9


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 del proceso de descomposición de problemas y de desarrollo de soluciones de programación. La POO surge en la historia como un intento para dominar la complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de enfrentarse a esta complejidad ha sido empleando lo que llamamos programación estructurada, que consiste en descomponer el problema objeto de resolución en subproblemas y más subproblemas 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 un programa 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; por ejemplo el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular… 10


Programación Orientada a Objetos

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

Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera la forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes 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.

11


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. 12


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

13


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.

14


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 nombres que 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 de métodos mediante los cuales muestran su comportamiento. Y no sólo eso, también podremos descubrir todo un conjunto de interrelaciones entre los objetos, guiadas por el intercambio de mensajes; los objetos del problema responden a estos mensajes 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 las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.

15


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.

16


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 de objetos, 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

17


Programaci贸n Orientada a Objetos

Ejemplo. Cuenta Corriente

18


Programaci贸n Orientada a Objetos

Ejemplo. Cuenta Corriente

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

19


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; } } 20


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 mundo real Un objeto es, por tanto, la representación en un programa de un concepto, y contiene toda la información necesaria para abstraerlo: datos que describen sus atributos 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 que componen 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 se conocen formalmente como variables instancia o variables miembro porque contienen el estado de un objeto bicicleta particular y, en programación orientada a objetos, un objeto particular se denomina una instancia. 21


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 bicicleta no tendría que tener un método para cambiar su velocidad pues ésta es función de la cadencia de pedaleo, la marcha en la que está y de si los frenos están siendo utilizados o no, entre otros muchos factores). Estos métodos se denominan formalmente métodos instancia o métodos miembro, ya que cambian el estado de una instancia u objeto bicicleta particular. La siguiente figura muestra una bicicleta modelada como un objeto:

22


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 otros objetos del programa. Este hecho de empaquetar o proteger las variables miembro con los métodos miembro se denomina encapsulación. Este dibujo conceptual que muestra el núcleo de variables miembro del objeto protegido por una membrana protectora de métodos o funciones miembro es la representación ideal de un objeto y es el ideal que los programadores de objetos suelen buscar. Sin embargo, debemos matizarlo. A menudo, por razones prácticas, es posible que un objeto desee exponer alguna de sus variables miembro, o proteger otras de sus propios métodos o funciones miembro. Por ejemplo, Java permite establecer 4 niveles de protección de las variables y de las funciones miembro para casos como éste. Los niveles de protección determinan qué objetos y clases pueden acceder a qué variables o a qué métodos.

23


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;

24


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 25


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).

26


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)

27


Programación Orientada a Objetos

¿Qué es un mensaje?

Estas tres partes del mensaje (objeto destinatario, método y parámetros) son suficiente información para que el objeto que recibe el mensaje ejecute el método o la función miembro solicitada. Los mensajes proporcionan dos ventajas importantes: El comportamiento de un objeto está completamente determinado por sus métodos, así que los mensajes representan todas las posibles interacciones que pueden realizarse entre objetos. Los objetos no necesitan formar parte del mismo proceso, ni siquiera residir en un mismo ordenador para mandarse mensajes entre ellos (y de esta forma interactuar).

28


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 que tanto un BMW verde, como un SEAT rojo son coches, pero son distintos en su aspecto físico. A pesar de esa diferencia de aspecto entendemos que ambos tienen unas características comunes como son poseer ruedas, un volante, asientos,... Esas características comunes son las que hacen pensar en el concepto coche en ambos casos. A partir de ahora podemos interpretar que el BMW y el SEAT son objetos, y el tipo 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. 29


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 mi bicicleta 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) en común.

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

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


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:

31


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.

32


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)

33


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.

34


Programaci贸n Orientada a Objetos

La clase String

35


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.