+ All Categories
Home > Documents > prgtema03

prgtema03

Date post: 21-Oct-2015
Category:
Upload: jose-marin
View: 181 times
Download: 3 times
Share this document with a friend
41
PROGRAMACI ´ ON TEMA 3. OBJETOS CENTRO: CENTRO ESPEC ´ IFICO DE EDUCACI ´ ON A DIS- TANCIA DE LA COMUNIDAD VALENCIANA (CEEDCV) WEB: http: // www. ceedcv. es A ˜ NO ACAD ´ EMICO: 2013/2014 PROFESOR: FRANCISCO ALDARIAS RAYA EMAIL: paco. aldarias@ ceedcv. es MODULO: PROGRAMACI ´ ON CICLO FORMATIVO: CFGS: DESARROLLO DE APLICACIONES WEB DEPARTAMENTO: INFORM ´ ATICA CURSO: 1 o
Transcript
Page 1: prgtema03

PROGRAMACIONTEMA 3. OBJETOS

CENTRO: CENTRO ESPECIFICO DE EDUCACION A DIS-TANCIA DE LA COMUNIDAD VALENCIANA(CEEDCV)

WEB: http: // www. ceedcv. es

ANO ACADEMICO: 2013/2014

PROFESOR: FRANCISCO ALDARIAS RAYAEMAIL: paco. aldarias@ ceedcv. es

MODULO: PROGRAMACIONCICLO FORMATIVO: CFGS: DESARROLLO DE APLICACIONES WEBDEPARTAMENTO: INFORMATICACURSO: 1o

Page 2: prgtema03

TEMA 3. OBJETOS

Licencia de Creative Commons.

PROGRAMACION

TEMA 3. OBJETOS

por Francisco Aldarias Raya

es licencia bajo

http://creativecommons.org/licenses/by-nc-sa/3.0/es/

Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Espana License.

Creado a partir de la obra en http://www.ceedcv.es

Bajo las condiciones siguientes:

Reconocimiento - Debe reconocer los creditos de la obra de la maneraespecificada por el autor o el licenciador (pero no de una manera quesugiera que tiene su apoyo o apoyan el uso que hace de su obra).

No comercial - No puede utilizar esta obra para fines comerciales.

Compartir bajo la misma licencia - Si altera o transforma esta obra, ogenera una obra derivada, solo puede distribuir la obra generada bajouna licencia identica a esta.

Version 1. 2011-2012

Version 2. 2013-2014

Changeset: 13:ec4c89790bdf

Ultima actualizacion 21 de noviembre de 2013

FRANCISCO ALDARIAS RAYA

[email protected]

Departamento de Informatica.

Centro Especıfico de Educacion a Distancia de la Comunidad Valenciana. (CEED)

http://www.ceedcv.es

En Valencia (Espana).

Documento realizado con software libre: linux debian, LATEX.

3.2 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 3: prgtema03

INDICE TEMA 3. OBJETOS

Indice

1. PROGRAMACION ORIENTADA A OBJETOS 5

1.1. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3. Abstraccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4. Encapsulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5. Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6. Polimorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2. OBJETO 10

2.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2. Caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3. CLASES 11

3.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.2. Caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3. Clases en java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4. ENTRADA Y SALIDA 14

4.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.2. System.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.3. System.in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.4. Ejemplo: Lectura de un caracter . . . . . . . . . . . . . . . . . . . . 14

4.5. Ejemplo: Lectura de un numero . . . . . . . . . . . . . . . . . . . . . 15

4.6. Ejemplo: Lectura de una linea . . . . . . . . . . . . . . . . . . . . . . 16

4.7. System.err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5. PARAMETROS 17

5.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2. Caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6. CONSTRUCTORES 19

6.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6.2. Caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6.3. Constructores sin parametros . . . . . . . . . . . . . . . . . . . . . . 21

6.4. Creando objetos con el constructor . . . . . . . . . . . . . . . . . . . 21

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.3

Page 4: prgtema03

TEMA 3. OBJETOS INDICE

7. DESTRUCTORES 21

7.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

7.2. Caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

8. STATIC 22

8.1. Variables Static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

8.2. Funciones static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

9. PAQUETES 23

9.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

9.2. Caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

9.3. Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

9.4. Application Programming Interface (API) . . . . . . . . . . . . . . . . 25

9.5. Classpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

10.MODELO VISTA CONTROLADOR(MVC) 26

11.NETBEANS 27

11.1.Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

11.2.Personalizar la plantilla . . . . . . . . . . . . . . . . . . . . . . . . . 28

12.ORIENTACIONES 29

12.1.Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

12.2.Criterios de evaluacion . . . . . . . . . . . . . . . . . . . . . . . . . . 31

12.3.Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

13.EJERCICIOS PROPUESTOS 31

13.1.Ejercicio0301. Pajaro12 . . . . . . . . . . . . . . . . . . . . . . . . . 31

13.2.Ejercicio0302. Pajaro13. . . . . . . . . . . . . . . . . . . . . . . . . . 33

13.3.Ejercicio0303. Pajaro16. . . . . . . . . . . . . . . . . . . . . . . . . . 33

13.4.Ejercicio0304. LeeNumero1. . . . . . . . . . . . . . . . . . . . . . . 33

13.5.Ejercicio0305. ErrorDivision1. . . . . . . . . . . . . . . . . . . . . . 34

13.6.Ejercicio0306. Finanzas . . . . . . . . . . . . . . . . . . . . . . . . . 34

13.7.Ejercicio0307. MiNumero . . . . . . . . . . . . . . . . . . . . . . . . 34

13.8.Ejercicio0308. Empareja . . . . . . . . . . . . . . . . . . . . . . . . . 35

13.9.Ejercicio0309. satelite . . . . . . . . . . . . . . . . . . . . . . . . . . 35

13.10.Ejercicio0310. peso . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

13.11.Ejercicio0311. millas . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.4 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 5: prgtema03

1 PROGRAMACION ORIENTADA A OBJETOS TEMA 3. OBJETOS

13.12.Ejercicio0312. coche . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

13.13.Ejercicio0313. consumo . . . . . . . . . . . . . . . . . . . . . . . . . 37

13.14.Ejercicio0314. consumo1 . . . . . . . . . . . . . . . . . . . . . . . . 38

14.EJERCICIOS OBLIGATORIOS 38

14.1.prgt3e1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

14.2.prgt3e2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

14.3.prgt3e3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

1. PROGRAMACION ORIENTADA A OBJETOS

1.1. Ventajas

La Programacion Orientada a Objetos (POO), tiene las siguientes ventajas:

1.- Modularidad.

A nivel de codigo del lenguaje: Solo carga las funciones necesarias para eseprograma. Ejemplo: Librerıas de java.

A nivel de codigo de programa: Descomposicion del programa en moduloso funciones. Permitiendo descomponer el problema en pequenos problemas.Si hay un problema en una funcion de una clase (modulo), solo habra quemodificar y compilar esa clase.

2.- Reutilizacion.

El codigo de las clases se pueden reutilizar en otros programas o clases.

3.- Pruebas.

Las prueba o testeo de programas, son mas sencillas, ya que se puedenprobar clases de forma independiente, pudiendo reprogramar esa clase soloo bien reemplazarla por otra que sabemos que funciona.

4.- Ocultacion.

La ocultacion de la informacion, oculta los detalles de implementacion oprogramacion, y lo importante es el interface ( o parametros).

1.2. Propiedades

Las propiedades fundamentales en la POO son:

1.- Abstraccion

2.- Encapsulacion

3.- Herencia

4.- Polimorfismo

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.5

Page 6: prgtema03

TEMA 3. OBJETOS 1 PROGRAMACION ORIENTADA A OBJETOS

1.3. Abstraccion

Definicion de Abstraccion:Sintetizar las propiedades y funciones de la realidad en una clase

de objetos.

La abstraccion se centra en las caracterısticas del objeto en funcion delobservador

Es una de las vıas fundamentales por la que los humanos combatimos lacomplejidad.

La abstraccion surge del reconocimiento de las similitudes entre ciertos objetos,situaciones o procesos del mundo real, y en la decision de concentrarse en esassimilitudes e ignorar por el momento las diferencias.

Ver la figura 1 de la pagina 6

Figura 1: La abstraccion

Cualquier programa en Java cumplirıa la abstraccion.

1.4. Encapsulacion

Definicion de Encapsulacion:Propiedad de ocultar los detalles de los objetos.

No se requiere saber como un objeto realiza las operaciones o metodos. Lasclases se ven como cajas negras, donde solo interesa saber como llamar a susfunciones.

De modo predeterminado, los valores de atributos de un objeto se encapsulanen el objeto y no pueden ser manipulados directamente por los demas objetos.

3.6 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 7: prgtema03

1 PROGRAMACION ORIENTADA A OBJETOS TEMA 3. OBJETOS

Encapsulacion de la informacion o Ocultamiento de la informacion: Hacereferencia a la declaracion de metodos y atributos como parte privada de una clase,al ser privado no se puede acceder directamente a ellos desde otras clases.

Ver la figura 2 de la pagina 7

Figura 2: La encapsulacion

La abstraccion y el encapsulamiento son conceptos complementarios: laprimera se centra en el comportamiento observable de un objeto, mientrasel encapsulamiento se centra en la implementacion que da lugar a estecomportamiento.

Para que la abstraccion funcione la implementacion debe estar encapsulada.

1.5. Herencia

Definicion de Herencia:Propiedad de poder heredar propiedades y metodos entre clases.

Es una tecnica de los lenguajes de programacion para construir una clase apartir de una o varias clases, compartiendo atributos, operaciones y, en ocasiones,restricciones, dentro de una jerarquıa de clases.

Las clases hijos heredan las caracterısticas de sus clases antecesoras; losatributos y las operaciones declaradas en la clase padre son accesibles en la clasehijo, como si se hubieran declarado localmente.

De esta forma las clases se estructura como una Jerarquica.

Las jerarquıas o clasificaciones permiten gestionar la complejidad ordenandolos objetos dentro de arboles de clases de abstraccion creciente.

Ver la figura 3 de la pagina 8

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.7

Page 8: prgtema03

TEMA 3. OBJETOS 1 PROGRAMACION ORIENTADA A OBJETOS

Figura 3: La jerarquıa

Eh java, una clase solo puede heredar de otra clase (superclase). Pero deuna clase pueden heredar muchas clases (subclases), Ejemplo, coche, camionheredan de la superclase vehıculo.

Cuando la clase hereda de la superclase, hereda todas las propiedades ymetodos. Ademas podra tener sus propias funciones.

La herencia es que una clase, hereda de otra los atributos y funciones, cosaque aun no hemos visto en clase.

Ejemplo herencia en java:

La clase cuadrado herada de la superclase figura.public class cuadrado extends figura {

...

}

1.6. Polimorfismo

Definicion de Polimorfismo:Permite definir un metodo de varias formas, para que pueda

comportarse de forma diferente.

Tipos

• Polimorfismo de sobrecarga

El polimorfismo de sobrecarga ocurre cuando las funciones delmismo nombre existen, con funcionalidad similar, en clases que soncompletamente independientes una de otra (estas no tienen que ser

3.8 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 9: prgtema03

1 PROGRAMACION ORIENTADA A OBJETOS TEMA 3. OBJETOS

clases secundarias de la clase objeto). Por ejemplo, la clase complex,la clase image y la clase link pueden todas tener la funcion display.Esto significa que no necesitamos preocuparnos sobre el tipo de objetocon el que estamos trabajando si todo lo que deseamos es verlo en lapantalla.

Por lo tanto, el polimorfismo de sobrecarga nos permite definiroperadores cuyos comportamientos varıan de acuerdo a los parametrosque se les aplican. Ası es posible, por ejemplo, agregar el operador+ y hacer que se comporte de manera distinta cuando esta haciendoreferencia a una operacion entre dos numeros enteros (suma) o biencuando se encuentra entre dos cadenas de caracteres (concatenacion).

• Polimorfismo parametrico

El polimorfismo parametrico es la capacidad para definir varias funcio-nes utilizando el mismo nombre, pero usando parametros diferentes(nombre y/o tipo). El polimorfismo parametrico selecciona automatica-mente el metodo correcto a aplicar en funcion del tipo de datos pasadosen el parametro.

Por lo tanto, podemos por ejemplo, definir varios metodos homonimosde addition() efectuando una suma de valores.

? El metodo int addition(int,int) devolverıa la suma de dos numerosenteros.

? float addition(float, float) devolverıa la suma de dos flotantes.

? char addition(char, char) darıa por resultado la suma de doscaracteres definidos por el autor.

Una signature es el nombre y tipo (estatico) que se da a los argumentosde una funcion. Por esto, una firma de metodo determina que elementose va a llamar.

• Polimorfismo de subtipado

La habilidad para redefinir un metodo en clases que se hereda de unaclase base se llama especializacion. Por lo tanto, se puede llamar unmetodo de objeto sin tener que conocer su tipo intrınseco: esto espolimorfismo de subtipado. Permite no tomar en cuenta detalles de lasclases especializadas de una familia de objetos, enmascarandolos conuna interfaz comun (siendo esta la clase basica).

Imagine un juego de ajedrez con los objetos rey, reina, alfil, caballo, to-rre y peon, cada uno heredando el objeto pieza. El metodo movimientopodrıa, usando polimorfismo de subtipado, hacer el movimiento corres-pondiente de acuerdo a la clase objeto que se llama. Esto permite alprograma realizar el movimiento-de-pieza sin tener que verse conecta-do con cada tipo de pieza en particular.

Aclaracion: Hay autores que utilizan la palabra sobrecarga para todo tipo depolimorfismo.

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.9

Page 10: prgtema03

TEMA 3. OBJETOS 2 OBJETO

2. OBJETO

2.1. Definicion

Definicion de objeto:Un objeto es un caso particular de una clase.

Ejemplo: El objeto Juan, es un caso concreto de la clase Persona.

Definicion de Objeto:

• Grady Booch 91

Un objeto tiene estado, comportamiento, e identidad; la estructura ycomportamiento de objetos similares son definidos en su clase comun;los terminos instancia y objeto son intercambiables.

• James Martin 92

Un objeto es cualquier cosa a la que se le aplica un concepto, el querepresenta una idea o nocion que nosotros compartimos y aplicable aciertos objetos en nuestro conocimiento.

• Rumbaugh 91

Nosotros definimos un objeto como un concepto, abstraccion o cosacon un significado y lımites bien definidos para el problema a manejar.

2.2. Caracterısticas

Caracterısticas de un Objeto:

OBJETO = ESTADO + COMPORTAMIENTO + IDENTIDAD

Siendo:

• El Estado

Agrupa los valores instantaneos de todos los atributos de un objetosabiendo que un atributo es una informacion que cualifica al objeto quela contiene.

El estado evoluciona con el tiempo, es variable y puede verse como laconsecuencia de sus comportamientos pasados.

• El Comportamiento.

Agrupa todas las competencias de un objeto y describe sus acciones yreacciones.

Cada atomo de comportamiento se llama operacion.

Las operaciones de un objeto se desencadenan a consecuencia de unestımulo externo, representando en forma de un mensaje enviado porotro objeto.

3.10 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 11: prgtema03

3 CLASES TEMA 3. OBJETOS

• Estado y Comportamiento

El estado y el comportamiento estan relacionados: el comportamientoen un instante dado depende del estado actual, y el estado puede sermodificado por el comportamiento.

Ejemplo: Solo es posible hacer aterrizar un avion si este esta volando.

• La Identidad

Distingue los objetos de forma no ambigua, independientemente de suestado.

Distingue dos objetos en los que todos los valores de atributos sonidenticos.

La identidad es un concepto, no se representa de manera especıfica enel modelado. Cada objeto posee una identidad de manera implıcita.

3. CLASES

3.1. Definicion

Definicion de clase:Una clase permite definir como va a seran los objetos.

3.2. Caracterısticas

• La clase describe el ambito de definicion de un conjunto de objetos.Cada objeto pertenece a una clase.

• Las generalidades estan contenidas en la clase y las particularidadesestan contenidas en los objetos.

3.3. Clases en java

Las clases en java:

• Nombre de la clase: debe llamarse igual que el archivo

• Propiedades: Opcional. Se estudiara mas adelante.

Por ejemplo: public class MiClase(), con esto se indica que la clasepuede ser accedida por otras clases.

• Parametros: Opcional. Se estudiara mas adelante.

Por ejemplo: public class MiClase(int Miparametro)

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.11

Page 12: prgtema03

TEMA 3. OBJETOS 3 CLASES

• Atributos: Son propiedades de la clases

Los atributos se llaman tambien propiedades o datos de la clase, yreferencia a variables de la clase.

Todas las las variables y las funciones en java deben estar dentro deuna clase.

Por ejemplo:

public class MiClase {

int MiAtributo;

}

• Metodos o Funciones:

Son funciones o procedimientos que puede realizar un objeto, cuandorecibe una llamada

Por ejemplo:

public class MiClase {

int MiAtributo;

void MiMetodo (){

}

}

Esquematicamente los elementos quedarıan ası:

[ Propiedades ] class NombreDeLaClase {

[ Atributos ]

[ Metodos ]

}

Nota: Los corchetes indican opcionalidad.

Cuando un objeto quiere interactuar con otro, envıa un Mensaje o llamada a unmetodo de la clase.

Ejemplo: Creacion de objetos de otra clase.

Tenemos que crear dos archivos: Pajaro10.java, Pajaro11.java, que contienendos clases diferentes.

../prgcodigo/prgcod03/Pajaro10.java

// eliminados acentos.

class Pajaro10 {

//*** atributos o propiedades ****

private char color; // propiedad o atributo color

private int edad; // propiedad o atributo edad

//*** metodos de la clase ****

public void setedad(int e) {

edad = e;

}

public void printedad () {

System.out.println(edad);

}

public void setcolor(char c) {

color=c;

}

3.12 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 13: prgtema03

3 CLASES TEMA 3. OBJETOS

public void printcolor () {

switch(color) {

//Los pajaros son verdes , amarillos , grises , negros o blancos

//No existen p~A¡jaros de otros colores

case ’v’:

System.out.println (" verde ");

break;

case ’a’:

System.out.println (" amarillo ");

break;

case ’g’:

System.out.println ("gris ");

break;

case ’n’:

System.out.println (" negro ");

break;

case ’b’:

System.out.println (" blanco ");

break;

default:

System.out.println (" color no establecido ");

}

}

}

../prgcodigo/prgcod03/Pajaro11.java

class Pajaro11 {

public static void main(String [] args) {

Pajaro10 p=new Pajaro10 ();

// p.edad =5; // Error;

p.setedad (5);

p.printedad ();

}

}

/* EJECUCION:

5

*/

Consideraciones:

• Tenemos que crear y compilar primero Pajaro10.java.

• Tenemos que crear despues Pajaro11.java, el cual usa la clasePajaro10.java.

• Solo ejecutaremos Pajaro11, ya que la clase principal es Pajaro10 ( yaque tiene el main() ).

• En la clase Pajaro11 se crea un objeto de la clase Pajaro10, en la orden:Pajaro10 p=new Pajaro10();

• La clase Pajaro11 no puede cambiar las variables de la clase Pajaro10definidas como privado. Lo hara a traves de las funciones publicas.

Por ejemplo para cambiar la edad no podemos poner p.edad=5, ya queedad es privado, es gracias a la encapsulacion, y se hara con unafuncion publica llamada setedad().

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.13

Page 14: prgtema03

TEMA 3. OBJETOS 4 ENTRADA Y SALIDA

4. ENTRADA Y SALIDA

4.1. Introduccion

Java permite a traves de la consola o terminal, introducir datos por tecladoy mostrarlos por pantalla. Para ello dispone dentro paquete llamado java.lang laclase System.

En temas posteriores veremos los flujos de entrada y salida en general (no solopor consola).

La clase System dispone de objetos static asociados a los flujos standard deentrada y salida, estos se pueden abrir con instrucciones para su uso, pero no hacefalta cerrarlos ya que se cierran solos.

Los objetos asociados a la entrada salida de consola son:

OBJETO DESCRIPCIONSystem.out Salida Standard o PantallaSystem.in Entrada Standard o TecladoSystem.err Salida Standard o de Error

4.2. System.out

Mostrar en pantalla informacion, lo vimos en el ejemplo HolaMundo, usando lasfunciones print o println:System.out.println ("Hola Mundo ");

4.3. System.in

Para poder leer datos de teclado por terminal deberemos importar la librerıajava.io la cual permite utilizar la clase InputStreamReader, y su clase derivadaBufferReader que es la que usara las funciones para poder leer read() para leer uncaracter, o readLine() para leer una lınea.

4.4. Ejemplo: Lectura de un caracter

../prgcodigo/prgcod03/LeeCaracter.java

/* Importamos libreria para InputStreamReader

*/

import java.io.*;

class LeeCaracter {

public static void main(String [] args ) {

InputStreamReader input = new InputStreamReader(System.in);

BufferedReader buffer = new BufferedReader(input);

3.14 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 15: prgtema03

4 ENTRADA Y SALIDA TEMA 3. OBJETOS

char caracter;

try {

System.out.print(" Introduce caracter: ");

caracter = (char) buffer.read ();

System.out.println (" Caracter leida: "+ caracter );

}

catch ( Exception e) {

e.printStackTrace ();

}

}

}

/* EJECUCION:

Introduce caracter: a

Caracter leida: a

*/

Explicacion:

• El objeto System.in pertenece a la Clase InputStreamReader, por elloimportamos java.io que es donde se encuentra la clase definida:

InputStreamReader input = new InputStreamReader(System.in);

• Nos creamos una zona de memoria donde operar:

BufferedReader buffer = new BufferedReader(input);

• Leemos un caracter.

caracter = (char) buffer.read ();

• Con try-catch le indicamos que haga lo de dentro del try y si hay errormuestre lo que devuelve la funcion

e.printStackTrace ();

4.5. Ejemplo: Lectura de un numero

Este programa lee un numero y luego la imprime en pantalla.

../prgcodigo/prgcod03/LeeNumero.java

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

/**

* Fichero: LeeNumero.java

* @author Paco Aldarias <[email protected] >

* @date 28-oct -2013

*/

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.15

Page 16: prgtema03

TEMA 3. OBJETOS 4 ENTRADA Y SALIDA

public class LeeNumero {

public static void main(String [] args ) {

InputStreamReader input = new InputStreamReader(System.in);

BufferedReader buffer = new BufferedReader(input);

int numero;

String linea;

try {

System.out.print(" Introduce Numero: ");

linea = buffer.readLine ();

numero = Integer.parseInt(linea);

System.out.println (" Numero leido: "+ numero );

}

catch ( IOException | NumberFormatException e) {

}

}

}

/* EJECUCION:

Introduce Numero: 1

Numero leido: 1

*/

Explicacion:

• Leemos una linea.linea = buffer.readLine ();

• Se convierte la linea de tipo String en un numero con la orden parseInt:numero = Integer.parseInt(linea);

4.6. Ejemplo: Lectura de una linea

Este programa lee una linea de teclado y luego la imprime en pantalla.

../prgcodigo/prgcod03/Linea.java

/* Programa que lee una linea por teclado

* y la imprime en pantalla

*/

// import java.io.*;

class Linea {

public static void main(String [] args ) {

InputStreamReader input = new InputStreamReader(System.in);

BufferedReader buffer = new BufferedReader(input);

try {

System.out.print(" Introduce Linea: ");

String linea = buffer.readLine ();

System.out.println (" Linea leida: "+ linea);

}

catch ( Exception e) {

3.16 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 17: prgtema03

5 PARAMETROS TEMA 3. OBJETOS

e.printStackTrace ();

}

}

}

/* EJECUCION:

Introduce Linea: aaaaaaaaaaaa

Linea leida: aaaaaaaaaaaa

*/

Se puede apreciar que aquı usamos la orden readLine(), en lugar de read().

4.7. System.err

Representa la salida de error standard, por defecto es la pantalla. Se utilizapara mostrar los mensajes de error.

4.7.1. Ejemplo: Error Aritmetico

Este programa lee un numero y luego la imprime en pantalla.

../prgcodigo/prgcod03/ErrorDivision.java

class ErrorDivision1 {

public static void main(String [] args ) {

int num1=2,num2=0,cociente =0;

String linea;

try {

cociente=num1/num2;

} catch ( ArithmeticException ae) {

System.err.println (" Error Aritmetico: "+ae.getMessage ());

return;

}

System.out.println ("El cociente es: "+ cociente );

}

}

/* EJECUCION:

Error Aritmetico: / by zero

*/

Se puede apreciar que se produce un error aritmetico por dividir por 0, muestrael mensaje de error y termina (return).

5. PARAMETROS

5.1. Definicion

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.17

Page 18: prgtema03

TEMA 3. OBJETOS 5 PARAMETROS

Definicion de parametro de un metodo:Los valores que se les pasa a las funciones.

Ejemplo: Clase pajaro

Utilizaremos esta clase para estudiar las funciones con sus parametros, yvalores de retorno.

../prgcodigo/prgcod03/Pajaro21.java

// Acentos quitados.

class Pajaro21 {

private static int numpajaros =0;

private char color;

public void setColor(char c){

color=c;

}

public char getColor () {

return color;

};

public static void main(String [] args) {

Pajaro21 p1;

char color;

p1=new Pajaro21 ();

p1.setColor(’c’);

color = p1.getColor ();

System.out.println(color);

}

}

/* EJECUCION:

c

*/

Ejemplos de funciones:

1.- Ejemplo de funcion sin valor de retorno (void):

public void setColor(char c){

color=c;

}

En este ejemplo el parametro es c, y es de tipo char.

La llamada a la funcion:

p1.setColor(’c’);

En este ejemplo se llama a la funcion setColor con parametro ’c’. El valor’c’se copiara en el parametro c.

2.- Ejemplo de funcion con valor de retorno.

3.18 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 19: prgtema03

6 CONSTRUCTORES TEMA 3. OBJETOS

public char getColor (){

return c;

}

En este ejemplo el valor devuelto es c y es de tipo char.

La llamada a la funcion:

char color=p1.getColor ();

En este ejemplo se llama a la funcion getColor sin parametros. El valordevuelto se copiara en la variable color

5.2. Caracterısticas

• Las funciones o metodos permiten pasarle valores a traves de losparametros.

• Los parametros deben declararse su tipo que puede ser basico o unaclase.

• Las funciones o metodos puede devolver valores o no.

• Las funciones que son constructoras no devuelven valores.

• Las funciones que no devuelven nada se les pone void.

• La llamada a la funcion por parte de un objeto es poniendo el nombredel objeto punto nombre de la funcion y entre parentesis los parametros.

6. CONSTRUCTORES

6.1. Definicion

Definicion de constructorMetodo que se llama siempre para crear un objeto de una clase.

Ejemplo: Clase con constructor.

../prgcodigo/prgcod03/Pajaro20.java

// Acentos quitados.

class Pajaro20 {

//*** atributos o propiedades ****

private static int numpajaros =0;

private char color; // propiedad o atributo color

private int edad; // propiedad o atributo edad

//*** metodos de la clase ****

static void nuevopajaro () {

numpajaros ++;

};

Pajaro20 () {

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.19

Page 20: prgtema03

TEMA 3. OBJETOS 6 CONSTRUCTORES

color = ’v’;

edad = 0;

nuevopajaro ();

}

Pajaro20(char c, int e) {

color = c;

edad = e;

nuevopajaro ();

}

static void muestrapajaros () {

System.out.println(numpajaros );

};

public static void main(String [] args) {

Pajaro20 p1,p2;

p1=new Pajaro20 ();

p2=new Pajaro20(’a’,3);

p1.muestrapajaros ();

p2.muestrapajaros ();

}

}

/* EJECUCION:

2

2

*/

6.2. Caracterısticas

• Un constructor de un objeto, permite crear un objeto tomando comobase una clase.

• Si no se declara el constructor de un clase, utiliza uno por defecto.

• El constructor se llama igual que la clase.

• Al constructor no hay que ponerle valor de retorno.

• El constructor permite inicializar las variables miembro de la clase paraese objeto.

• En Java existen unos metodos opcionales que son constructores ydestructores de objetos de una clase.

Ejemplo: ConstructorPajaro20 () {

color = ’v’;

edad = 0;

nuevopajaro ();

}

El constructor inicializa los atributos del objeto que lo llama con valor de color yedad, y llama a la funcion nuevopajaro().

Si un constructor se define varias veces se dice que el constructor esta Sobre-cargado.

3.20 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 21: prgtema03

7 DESTRUCTORES TEMA 3. OBJETOS

6.3. Constructores sin parametros

Las variables de la clases se inicializan segun el tipo: numericas:0 ; char: \0;String, Objeto: null. Las variables locales de las funciones no se inicializan.

Es bueno de inicializar el constructor sin parametros, porque aunque seinicialicen es bueno ponerles un valor.

Ejemplo: Constructor sin parametros.coche () {

marca="ford";

modelo =" fiesta ";

}

6.4. Creando objetos con el constructor

Cuando se crea un objeto con: new Clase() se llama al constructor de la clase.

Ejemplo: Constructor

Se puede ver que se llama al constructor cada vez que se crea un objeto

../prgcodigo/prgcod03/constructor.java

/* Ejemplo que permite ver que

* se llama al constructor cada

* vez que se crea un objeto

* */

public class ejemplo {

private int atributo;

ejemplo () {

System.out.println (" Constructor sin");

}

ejemplo(int parametro) {

System.out.println (" Constructor con");

}

public static void main (String args []) {

ejemplo e1=new ejemplo ();

ejemplo e2=new ejemplo (1);

}

}

/* EJECUCION:

Constructor sin

Constructor con

*/

Se aprecia que cuando se crea un objeto se llama al constructor segun losparametros.

7. DESTRUCTORES

7.1. Definicion

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.21

Page 22: prgtema03

TEMA 3. OBJETOS 8 STATIC

Definicion de destructorLos destructores se ejecutan de forma automatica, cuando se

destruye un objeto.

7.2. Caracterısticas

• Permite liberar recursos.

• En Java no hay destructores. Es decir, no permite definirnos un metodoque destruya un objeto.

• Al final del programa se llama a todos los destructores relacionados conlos objetos creados, para liberar memoria.

8. STATIC

Definicion de static:Un metodo o atributo de una clase es static, si solo se crea una

instancia para todos los objetos de esa clase.

8.1. Variables Static

Caracterısticas:

• Se necesita tener un atributo static cuando necesitamos que unapropiedad de la clase sea comun a todas los objetos de esa clase.

• Si un atributo no es static no se pondra nada, y en cada objeto de laclase tendra su propio valor.

Ejemplo: Ver Pajaro20.java del apartado 6.1, de la pagina 19

private static int numpajaros =0;

La variable numPajaros de la clase Pajaro inicialmente valdra 0, pero cada vezque se cree un pajaro nuevo se incrementara, ya que es una variable comun atodos los objetos.

8.2. Funciones static

Hace que los metodos se carguen en memoria en tiempo de compilacion y noa medida que se ejecutan las lıneas de codigo del programa.

3.22 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 23: prgtema03

9 PAQUETES TEMA 3. OBJETOS

Van precedidos del modificador static. Para invocar a un metodo estatico no senecesita crear un objeto de la clase en la que se define:

• Si se invoca desde la clase en la que se encuentra definido, basta conescribir su nombre.

• Si se le invoca desde una clase distinta, debe anteponerse a su nombre,el de la clase en la que se encuentra seguido del operador punto (.)<NombreClase>.metodoEstatico

Suelen emplearse para realizar operaciones comunes a todos los objetos dela clase. No afectan a los estados de los mismos (a los valores de sus variablesde instancia). Por ejemplo, si se necesita un metodo para contabilizar el numerode objetos creados de una clase, tiene sentido que sea estatico ya que su funcion(aumentar el valor de una variable entera) se realizarıa independientemente delobjeto empleado para invocarle.

Ejemplo: ../prgcodigo/prgcod03/MetodoStatic.java

/**

* Fichero: MetodoStatic.java

* @author Paco Aldarias <[email protected] >

* @date 04-nov -2013

*/

public class MetodoStatic {

int a = 1;

static int b = 2;

static void funcionStatic () {

System.out.println(a);

System.out.println(b);

}

void funcion () {

// System.out.println(b); // Error

System.out.println(a);

}

public static void main(String [] args) {

MetodoStatic p = new MetodoStatic ();

funcionStatic ();

p.funcion ();

System.out.println(b);

// System.out.println(a); // Error

}

}

/* Ejecicion

2

2

1

2

*/

9. PAQUETES

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.23

Page 24: prgtema03

TEMA 3. OBJETOS 9 PAQUETES

9.1. Definicion

Definicion de paquete:Conjunto de clases relacionadas.

Librerıa y Paquete (Package) significa lo mismo.

Librerıa = Conjunto de clases.

9.2. Caracterısticas

Caracterısticas:

• Las clases que forman un paquete pueden derivar de varias clases.

• Permite organizar mejor las clases.

• Se pueden llamar dos clases igual se estan en paquetes diferentes.

• Las clases del mismo package estan relacionadas

• Para poder usar un paquete debemos usar la instruccion import.

Tipos:

• Del Programador: Son los que crea el programador. Los llamaremospaquetes. Netbeans les llama paquetes de fuentes.

Se veran mas adelante.

Ejemplo: package Tipo1.Subtipo1.paquete;

• De Java: Son los paquetes que vienen con Java. Los llamaremoslibrerıas.

Ejemplo: import java.lang.System;

9.3. Import

Analicemos como usar las librerıas de java.

Uso:

• Para usar una clase de una paquete.

import java.lang.System;

• Usar todas las clases de la librerıa.

import java.lang.*;

Se pueden crear objetos sin import, indicando directamente por la clase.

Ejemplo:

Las instruccion:

3.24 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 25: prgtema03

9 PAQUETES TEMA 3. OBJETOS

import java.awt.*;

Frame fr=new Frame ("Frame ");

Es equivalente a:

Frame fr=new java.awt.Frame (" Frame ");

9.4. Application Programming Interface (API)

El API es la Interfaz de Programacion de Aplicaciones (del ingles ApplicationProgramming Interface) y contiene todas las clases agrupadas segun susfunciones en librerıas (tambien llamadas packages).

El API es la principal herramienta de programacion en Java porque permite queuno use dentro de sus programas las clases ya disenadas y existentes dentro dellenguaje.

API = Conjunto de librerıas.

Cuando importamos, estamos cogiendo una librerıa del API.

Las librerıas de java se encuentran con el nombre de Java Platform, StandardEdition API Specification (Java SE )

• Esta es la web:

http://download.oracle.com/javase/7/docs/api/

• El API de java consta de:

? Librerıas disponibles

? Clases disponibles en la librerıa escogida.

? Especificacion de la clase o interface.

• Algunas librerıas de java son:

? java.io

? java util

? java.lang

9.5. Classpath

Para poder localizar un paquete en java, se necesita saber:

• El nombre

• La ruta o CLASSPATH.

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.25

Page 26: prgtema03

TEMA 3. OBJETOS 10 MODELO VISTA CONTROLADOR(MVC)

CLASSPATH es una variable de entorno, al igual que la variable PATH definidoen un ordenador, permiten definir las rutas donde encontrar las aplicaciones.

Por defecto las librerıas de Java ya sabe como encontrarlas. Pero tanto lascreadas por el programador, como nuevas librerıas hay que indicar donde seencuentran.

Formas de indicar el CLASSPATH:

1.- Al ejecutar cualquier programa de java (java, javac, etc), es indicarle elparametro -classpath.

Ejemplo:

java -classpath /java/paquete programa

Siendo /java/paquete donde se encuentra los paquetes que usa el programajava.

2.- Establecer la variable de entorno desde la terminal de linux.

Ejemplo:

CLASSPATH =/java/paquete1 :/java/paquete2 :/java/paquete3

export CLASSPATH

En Windows habrıa que cambiar los : por ; y la / por \.

En temas siguientes se profundizara mas sobre este punto.

10. MODELO VISTA CONTROLADOR(MVC)

El modelo vista controlador es una forma de disenar los programas que separaaplicacion en las siguientes capas:

• Modelo. Es la representacion de los datos

• Controlador. Es la parte que controla la aplicacion.

• Vista. Es la parte que permite interactuar con el usuario.

http://es.wikipedia.org/wiki/Modelo_Vista_Controlador

En una aplicacion java, el modelo seria las clases con los datos que se vayaa trabajar, por ejemplo la clase persona. El controlador serıa el programa quecontiene el main() y va realizar operaciones. Y la vista serıa las clases que realizanoperaciones de entrada y salida de datos para comunicarse con el usuario.

Ver la figura 4 de la pagina 27

3.26 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 27: prgtema03

11 NETBEANS TEMA 3. OBJETOS

Figura 4: MVC

11. NETBEANS

11.1. Paquetes

En Netbeans podemos tener paquetes con nombre o predeterminado.

Ver la figura 5 de la pagina 27

Figura 5: Paquetes en Netbeans

• Paquetes con nombre.

Cuando creamos un proyecto, netbeans nos crea un paquete con elnombre del proyecto, y cada vez que creemos una clase dentro de estepaquete le pondra el nombre del paquete con un import. Esto es lorecomendable.

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.27

Page 28: prgtema03

TEMA 3. OBJETOS 11 NETBEANS

Podemos de todas formas crear otros paquetes y ponerle el nombreque queramos.

• Paquete predeterminado.

Puede pasar que creemos una clase dentro del proyecto, pero fuera delpaquete. Entonces nos pondra la clase en el paquete predeterminado.Ademas las clases creadas dentro de ella no tendran el nombrede import. Por defecto todas las clases dentro pertenecen al mismopaquete. Esto no es lo recomendable.

11.2. Personalizar la plantilla

Para que cada vez que creemos una clase en netbeans nos aparezcan nuestrosdatos y la fecha, debemos ir a Menu, Herramientas, Plantillas. Elegimos la plantillaque queremos personalizar que en nuestro caso es Java Class y Java Main Class.

Ver la figura 7 de la pagina 29

Figura 6: Configuracion

Personalizamos la plantilla del siguiente modo pulsando los botones:

• Configuracion. Definiremos el usuario

Ver la figura 7 de la pagina 29

• Abrir editor. Definiremos como sera la plantilla de Java Class y JavaMain Class.

Nos debera quedar:

/**

3.28 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 29: prgtema03

12 ORIENTACIONES TEMA 3. OBJETOS

Figura 7: Configuracion

* Fichero: ${nameAndExt}

* @author ${user}

* @date ${date}

*/

Ver la figura 8 de la pagina 30

Resultado:

Ver la figura 9 de la pagina 30

12. ORIENTACIONES

En este tema se van a tener en cuenta los siguientes:

• Objetivos

• Criterio de Evaluacion.

12.1. Objetivos

En este tema se pretender alcanzar los siguientes objetivos:

• Conocer las ventajes y propiedades de la Programacion Orientada aObjetos.

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.29

Page 30: prgtema03

TEMA 3. OBJETOS 12 ORIENTACIONES

Figura 8: Edicion

Figura 9: Resultado

• Estudio en profundidad del concepto de objeto.

• Saber realizar pequenos programas en los que se ven:

? Entrada y salida de informacion por terminal.

? Propiedades y metodos de los objetos.

3.30 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 31: prgtema03

13 EJERCICIOS PROPUESTOS TEMA 3. OBJETOS

? Constructores y Destructores de objetos.

? Utilizacion de librerıas y paquetes.

• Conocer que es el API de Java.

12.2. Criterios de evaluacion

En este tema se pretender alcanzar los siguientes objetivos:

• Escribir y probar programas sencillos, reconociendo y aplicando losfundamentos de la programacion orientada a objetos. e han identificadolos fundamentos de la programacion orientada a objetos.

• Escribir programas basicos.

• Identificar objetos a partir de clases predefinidas.

• Identificar metodos y propiedades de los objetos.

• Incorporar llamadas a metodos estaticos.

• Utilizar parametros en la llamada a metodos.

• Incorporar y utilizar librerıas de objetos.

• Utilizar constructores.

• Utilizar el entorno integrado de desarrollo en la creacion y compilacionde programas simples.

12.3. Recursos

En este tema se va a necesitar los siguientes recursos:

Software:

• Sistema Operativo Llliurex/Ubuntu.

• Compilador de Java. JDK 1.7

• IDE: Netbeans 7.3

Libro de consulta: [MP11] Tema 2

13. EJERCICIOS PROPUESTOS

13.1. Ejercicio0301. Pajaro12

Coge los ficheros Pajaro10.java y Pajaro11.java, y metelos en el mismo ficheroy llamalo Pajaro12.java. Deberan haber dos clases dentro del fichero.

../prgcodigo/prgcod03/Pajaro10.java

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.31

Page 32: prgtema03

TEMA 3. OBJETOS 13 EJERCICIOS PROPUESTOS

// eliminados acentos.

class Pajaro10 {

//*** atributos o propiedades ****

private char color; // propiedad o atributo color

private int edad; // propiedad o atributo edad

//*** metodos de la clase ****

public void setedad(int e) {

edad = e;

}

public void printedad () {

System.out.println(edad);

}

public void setcolor(char c) {

color=c;

}

public void printcolor () {

switch(color) {

//Los pajaros son verdes , amarillos , grises , negros o blancos

//No existen p~A¡jaros de otros colores

case ’v’:

System.out.println (" verde ");

break;

case ’a’:

System.out.println (" amarillo ");

break;

case ’g’:

System.out.println ("gris ");

break;

case ’n’:

System.out.println (" negro ");

break;

case ’b’:

System.out.println (" blanco ");

break;

default:

System.out.println (" color no establecido ");

}

}

}

../prgcodigo/prgcod03/Pajaro11.java

class Pajaro11 {

public static void main(String [] args) {

Pajaro10 p=new Pajaro10 ();

// p.edad =5; // Error;

p.setedad (5);

p.printedad ();

}

}

/* EJECUCION:

5

*/

1.- Que cambio hay que hacer para que funcione?.

2.- Cuantos ficheros.class se generan?

3.32 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 33: prgtema03

13 EJERCICIOS PROPUESTOS TEMA 3. OBJETOS

13.2. Ejercicio0302. Pajaro13.

Partiendo de Pajaro12.java, crea un fichero igual llamado Pajaro13.java.Arreglalo para que funcione.

1.- Define un atributo nuevo y llamalo miAtributo de tipo int pero public, imprimeloen pantalla. Dale un valor a ese atributo a p de 2, en el main(). Funciona?

2.- Cumple la encapsulacion?

13.3. Ejercicio0303. Pajaro16.

Borra el fichero Pajaro10.class. Crea un fichero llamado Pajaro16.java, igual alfichero Pajaro11.java. Arreglalo para que funcione.

1.- Debemos volver a compilar Pajaro10.java?

2.- Por que funciona si no hemos definido la clase Pajaro10.java?

3.- Que ventaja de la programacion orientada a objetos se esta viendo aquı?

13.4. Ejercicio0304. LeeNumero1.

Modificar el fichero LeeCaracter.java, y llamarlo LeerNumero1.java para queleer un numero en lugar de un caracter usando InputStreamReader.

../prgcodigo/prgcod03/LeeCaracter.java

/* Importamos libreria para InputStreamReader

*/

import java.io.*;

class LeeCaracter {

public static void main(String [] args ) {

InputStreamReader input = new InputStreamReader(System.in);

BufferedReader buffer = new BufferedReader(input);

char caracter;

try {

System.out.print(" Introduce caracter: ");

caracter = (char) buffer.read ();

System.out.println (" Caracter leida: "+ caracter );

}

catch ( Exception e) {

e.printStackTrace ();

}

}

}

/* EJECUCION:

Introduce caracter: a

Caracter leida: a

*/

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.33

Page 34: prgtema03

TEMA 3. OBJETOS 13 EJERCICIOS PROPUESTOS

13.5. Ejercicio0305. ErrorDivision1.

Utilizando el ejercicio ErrorDivision.java, modificalo y llamalo ErrorDivi-sion1.java, para que:

• Lee los numeros de entrada del dividendo y del divisor.

• Muestre el resultado (cociente) solo si no hay error, y sin usar la ordenreturn.

• Muestre el error sin usar ArihtmeticException sino con Exception.

../prgcodigo/prgcod03/ErrorDivision.java

class ErrorDivision1 {

public static void main(String [] args ) {

int num1=2,num2=0,cociente =0;

String linea;

try {

cociente=num1/num2;

} catch ( ArithmeticException ae) {

System.err.println (" Error Aritmetico: "+ae.getMessage ());

return;

}

System.out.println ("El cociente es: "+ cociente );

}

}

/* EJECUCION:

Error Aritmetico: / by zero

*/

13.6. Ejercicio0306. Finanzas

Realiza una clase Finanzas que convierta dolares a euros y viceversa. Codificalos metodos dolaresToEuros y eurosToDolares. Prueba que dicha clase funcionacorrectamente haciendo conversiones entre euros y dolares.

La clase tiene que tener:

• Un constructor finanzas() por defecto, el cual establecera el cambioDolar-Euro en 1.36.

• Un constructor finanzas(double), el cual permitira configurar el cambiodolar-euro.

13.7. Ejercicio0307. MiNumero

Realiza una clase MiNumero que proporcione el doble, triple y cuadruple de unnumero proporcionado en su constructor (realiza un metodo para doble, otro paratriple y otro para cuadruple). Haz que la clase tenga un metodo main y compruebalos distintos metodos.

3.34 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 35: prgtema03

13 EJERCICIOS PROPUESTOS TEMA 3. OBJETOS

13.8. Ejercicio0308. Empareja

Empareja cada paquete con su correspondiente descripcion:

Paquete o librerıa Descripcionjava.securityjava.rmijava.beansjava.appletjava.mathjava.sqljava.netjava.swingjava.iojava.langjava.utilJava.awt

13.9. Ejercicio0309. satelite

Modifica la clase satelite y anadele los siguientes metodos:

• Metodo void variaAltura(double desplazamiento): Este metodo aceptaun parametro que sera positivo o negativo dependiendo de si elsatelite tiene que alejarse o acercarse a La Tierra. Debe pasarse comoparametro el desplazamiento el cual debe sumarse a la distancia a latierra del objeto.

• Metodo boolean enOrbita(): Este metodo devolvera false si el sateliteesta en tierra, y true en caso contrario.

• Metodo void variaPosicion(double variap, double variam): Este metodopermite modificar los atributos de posicion (meridiano y paralelo)mediante los parametros variap y variam. Estos parametros seranvalores positivos o negativos relativos que haran al satelite modificarsu posicion.

public class satelite {

private double meridiano;

private double paralelo;

private double distancia_tierra;

satelite (double m,double p,double d) {

meridiano=m;

paralelo=p;

distancia_tierra=d;

}

satelite () {

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.35

Page 36: prgtema03

TEMA 3. OBJETOS 13 EJERCICIOS PROPUESTOS

meridiano=paralelo=distancia_tierra=0;

}

public void setPosicion(double m,double p,double d) {

meridiano=m;

paralelo=p;

distancia_tierra=d;

}

public void printPosicion() {

System.out.println("El satelite se encuentra en el paralelo "

+ paralelo + "Meridiano " + meridiano+

" a una distancia de la tierra de " +

distancia_tierra+ " Kilometros");

}

public static void main (String args[]) {

satelite a=new satelite();

a.printPosicion();

}

}

13.10. Ejercicio0310. peso

Crea la clase peso, la cual tendra las siguientes caracterısticas:

Debera tener un atributo donde se almacene el peso de un objeto enkilogramos.

En el constructor se le pasara el peso y la medida en la que se ha tomado(’Lb’para libras, ’Li’para lingotes, Oz’para onzas, ’P’para peniques, ’K’para kilos,’G’para gramos y ’Q’para quintales).

Debera de tener los siguientes metodos:

• getLibras. Devuelve el peso en libras.

• getLingotes. Devuelve el peso en lingotes.

• getPeso. Devuelve el peso en la medida que se pase como parametro(’Lb’para libras, ’Li’para lingotes, Oz’para onzas, ’P’para peniques,’K’para kilos, ’G’para gramos y ’Q’para quintales).

Para la realizacion del ejercicio toma como referencia los siguientes datos:

• 1 Libra = 16 onzas = 453 gramos.

• 1 Lingote = 32,17 libras = 14,59 kg.

• 1 Onza = 0,0625 libras = 28,35 gramos.

• 1 Penique = 0,05 onzas = 1,55 gramos.

3.36 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 37: prgtema03

13 EJERCICIOS PROPUESTOS TEMA 3. OBJETOS

• 1 Quintal = 100 libras = 43,3 kg.

Crea ademas un metodo main para testear y verificar los metodos de estaclase.

13.11. Ejercicio0311. millas

Crea una clase con un metodo millasAMetros() que toma como parametro deentrada un valor en millas marinas y las convierte a metros.

Una vez tengas este metodo escribe otro millasAKilometros() que realice lamisma conversion, pero esta vez exprese el resultado en kilometros.

Nota: 1 milla marina equivale a 1852 metros.

13.12. Ejercicio0312. coche

Crea la clase coche con dos constructores. Uno no toma parametros y el otrosı. Los dos constructores inicializaran los atributos marca y modelo de la clase.

Crea dos objetos (cada objeto llama a un constructor distinto) y verifica quetodo funciona correctamente.

13.13. Ejercicio0313. consumo

Implementa una clase consumo, la cual forma parte de la centralita electronicade un coche y tiene las siguientes caracterısticas:

Atributos:

• kms. Kilometros recorridos por el coche.

• litros. Litros de combustible consumido.

• vmed. Velocidad media.

• pgas. Precio de la gasolina.

Metodos:

• getTiempo. Indicara el tiempo empleado en realizar el viaje.

• consumoMedio. Consumo medio del vehıculo (en litros cada 100kilometros).

• consumoEuros. Consumo medio del vehıculo (en euros cada 100kilometros).

No olvides crear un constructor para la clase que establezca el valor de losatributos. Elige el tipo de datos mas apropiado para cada atributo.

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.37

Page 38: prgtema03

TEMA 3. OBJETOS 14 EJERCICIOS OBLIGATORIOS

13.14. Ejercicio0314. consumo1

Para la clase anterior implementa los siguientes metodos, los cuales podranmodificar los valores de los atributos de la clase:

• setKms

• setLitros

• setVmed

• setPgas

14. EJERCICIOS OBLIGATORIOS

Realizacion y entrega:

1.- Para cada ejercicio crear un proyecto en Netbeans y llamarlo prgtiejxxx,siendo i el tema, j el ejercicio, y xxx el nombre del usuario del cvs.

Ejemplo: prgt3e1garcia serıa 3 el tema, 1 es el numero de ejercicio y garcıael usuario del cvs en bitbucket.

2.- Realizar el programa del enunciado.

3.- Formatear el codigo de todos los fuentes del proyecto

4.- Personalizar la plantilla de netbeans para que aparezcan vuestros datos entodos los ficheros.

5.- Crear un repositorio en el cvs en bitbucket llamalo igual que el proyecto.

6.- Dar permisos de administracion del repositorio al usuario: ceeddaw

7.- Subir el proyecto al cvs bitbucket creado.

Recordar que hay que:

1.- Guardar los cambios

2.- Menu Team, Inicialize (solo la primera vez).

3.- Crear un fichero en la carpeta raiz del proyecto (en esa misma carpetateneis el fichero manifest.mf), que se llame Readme.md, y poner dentroel texto: Tema 3. Ejercicio prgt3e1

4.- Menu Team, Add (seleccionando el proyecto)

5.- Menu Team, Commit

6.- Menu Team, Push (sobre vuestro repositorio ya creado en bitbucket)

8.- Subir la direccion del repositorio al aula virtual, de cada uno de los ejercicio.

Ejemplo para el usuario del cvs garcıa serıa:

• https://bitbucket.org/garcia/prgt3e1garcia.git

3.38 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 39: prgtema03

14 EJERCICIOS OBLIGATORIOS TEMA 3. OBJETOS

• https://bitbucket.org/garcia/prgt3e2garcia.git

• https://bitbucket.org/garcia/prgt3e3garcia.git

Todos los ejercicios deberan:

• Poner vuestro nombre y apellidos al inicio del fichero.

• Estar formateados su codigo.

• Cumplir el principio de encapsulacion de la informacion

• El proyecto tiene que tener definida la clase principal, para que condarle a ejecutar proyecto funcione el programa.

• Si no se da permiso para descargar la practia del control de versionesse tendra un cero. No hay revision posterior.

• Una vez puesta la nota, no se podra volver a corregir. Las dudas sedeben hacer antes de la entrega.

14.1. prgt3e1

Dificultad: Baja. Valdra 5 puntos.

Realiza un proyecto en Java, que tenga la clase Numero que almacene unnumero entero.

El valor entero (o numero interno) debera ser una variable miembro de la clase.El clase debera respetar los principios de encapsulacion de la informacion.

Tendra las siguientes caracterısticas:

1.- Constructor por defecto que inicializa a 0 el numero interno.

2.- Constructor que inicializa el numero interno con paso de parametro.

3.- Metodo suma que permite sumarle un numero pasado como parametro alvalor interno.

4.- Metodo getNumero Devuelve el valor interno.

5.- Metodo getDoble. Devuelve el doble del valor interno.

6.- Metodo setNumero. Inicializa de nuevo el valor interno con un numero que sele pasa como parametro.

Ejemplo de ejecucion:

Clase numero.

Contructor por defecto: 0

Contructor con parametro: 5

Funcion modifica valor miembro: 10

Funcion suma: 15

Funcion doble: 30

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.39

Page 40: prgtema03

TEMA 3. OBJETOS 14 EJERCICIOS OBLIGATORIOS

14.2. prgt3e2

Dificultad: Media. Valdra 3 puntos.

Realizar un proyecto en Java, cuya clase principal se llame Restaurante.

La clase permitira almacenar los kilos de papas.

Se debera tener en cuenta los principios de modularidad y ocultacion de losdatos.

Se deberan implementa al menos los siguientes metodos:

• void leerPapas() Leer por teclado los kilos de papas.

• int getComensales()

Devuelve el numero de comensales pueden haber, sabiendo que senecesitan 3 kilos de papas por cada comensal.

Ejemplo ejecucion:

Ejercicio restaurante

Introducir kgs de papas: 9

Con 9kgs de papas tenemos 3 comensal(es)

14.3. prgt3e3

Dificultad: Alta. Valdra 2 puntos.

• Crear una clase llamada Persona.

• Crear el constructor por defecto, el cual dara el valor nombre Paco y laedad 25.

• Crear dos objetos de la clase persona, desde main.

• El primer objeto se creara con el constructor por defecto.

• El segundo objeto usara un constructor, con parametros nombre y edad.Y se le pasaran los valores Juan y 15.

• El tercer objeto se tomaran los datos por teclado. En el ejemplo elnombre es Paco y la edad 25.

• La estructura del proyecto sera usando el diseno Modelo-Vista-Controlador (MVC).

• Se creara un paquete para el modelo, otro para la vista y otro para elcontrolador.

• Debera de respetarse la propiedad de la encapsulacion, en donde unatributo no puede ser accesible desde otro objeto directamente.

• Se anadiran las clases en el paquete correspondiente.

3.40 FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.

Page 41: prgtema03

BIBLIOGRAFIA TEMA 3. OBJETOS

Los nombres de las clases seran:

• Main. Se encargara del control del programa. Estara la funcion principal.Importara las clases de los paquetes de vista y modelo.

• Persona. Se encargara de definir una persona, y sus operacionesbasicas.

• Vista. Se encargara de la toma de datos y visualizacion de datos enpantalla.

Diagrama de paquetes: Ver la figura 10 de la pagina 41

Figura 10: Diagrama de paquetes

Ejemplo de ejecucion:

TOMA DE DATOS

Nombre: Pedro

Edad: 10

MOSTRANDO DATOS

Paco 25

Juan 15

Pedro 10

BIBLIOGRAFIA

[MP11] JUAN CARLOS MORENO PEREZ. Programacion. Ra-ma, 1 edition, 2011.ISBN: 978-84-9964-088-4. LIBRO ALUMNO CICLOS. PRECIO: 35 EUR.

[SA05] JESUS SANCHEZ ALLENDE. Programacion en Java 2. Serie Schaum.McGrawhill, 1 edition, 2005. ISBN: 84-481-4591-7. LIBRO DE EJERCI-CIOS. JAVA 2. NIVEL BASICO.

FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.

PROGRAMACION 2013/2014.3.41