Date post: | 21-Oct-2015 |
Category: |
Documents |
Upload: | jose-marin |
View: | 181 times |
Download: | 3 times |
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
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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