Professional Documents
Culture Documents
Fundamentos de
Programacin Orientada a Objetos
Orientacin a Objetos
La O.O. es el conjunto de disciplinas(ingeniera) que desarrollan y modelizan software para facilitar la
construccin de sistemas complejos a partir de componentes.
El atractivo de la O.O. es que proporciona conceptos y herramientas con las cuales se modela y representa
el
mundo real tan fielmente como sea posible.
La orientacin a objetos promete mejoras de amplio alcance en la forma de diseo, desarrollo y
mantenimiento del software ofreciendo una solucin a largo plazo a los problemas y preocupaciones que han
existido desde el comienzo en el desarrollo de software: la falta de portabilidad del cdigo y reusabilidad,
cdigo que es difcil de modificar ... .
Propiedades ms importantes del modelo:
ABSTRACCIN
Cualidad de los seres humanos que les permite encontrar lo bsico que hay de comn en
una serie de objetos.
Es la generalizacin conceptual de un determinado conjunto de objeto, de sus
atributos y propiedades, dejando en un segundo trmino los detalles concretos de cada
objeto.
Definir una abstraccin significa describir una entidad del mundo real y, a continuacin,
utilizar esa descripcin en un programa.
Por ejemplo, una reserva es un objeto que tiene un estado (confirmada, lista de espera)
y sobre la que se pueden realizar operaciones (cancelar vuelo, asignar asiento, ...). La
reserva es una entidad del mundo real que se lleva a programacin como una clase.
El elemento clave de la P.O.O es la clase. Una clase es una descripcin abstracta de un
grupo de objetos. Por ejemplo, la clase Teatro describe el conjunto de objetos con
propiedades y caractersticas comunes (butacas, plantas, capacidad, ...). El teatro
Maravillas es un objeto de tipo Teatro que tiene un estado (tiene 200 butacas, ocupado al
60% ...) y sobre el que se pueden realizar operaciones.
Las tcnicas O.O son el el resultado de una progresin histrica que comienza con los
procedimientos, sigue con los mdulos, TAD y objetos.
Curso de Programacin Orientada a Objetos en Java
ENCAPSULAMIENTO
La encapsulacin (ocultacin de informacin) es la propiedad que permite asegurar que
la informacin de un objeto (datos) est oculta al mundo exterior: el objeto A no conoce lo
que hace el objeto B, y viceversa. Es una de las propiedades caracterstica de la O.O.
La estructura interna de un objeto permanece oculta, tanto para el usuario como para
otros objetos diferentes.
El acceso a la informacin del objeto se hace slo a travs de los mtodos adecuados
(interfaz).
class Ventana
{
private Color color;
private int alto, ancho;
public void ampliar(int a, int b);
public int getAlto() { return alto; }
public setColor(Color nuevo)
{
color = nuevo;
}
...
MODULARIDAD
Jerarqua
La jerarqua es una propiedad que permite ordenar las abstracciones.
Las dos jerarquas ms importantes son: generalizacin/especializacin (" es un") y agregacin
("parte de").
Generalizacin/ especializacin. Relacin entre clases, en donde una clase comparte la
estructura o comportamiento definida en otra (otras) clases.
Polimorfismo
Literalmente, posibilidad de que una entidad tome muchas formas.
Propiedad que indica la posibilidad de referirse a objetos de clases diferentes
mediante un mismo elemento y realizar la misma operacin de diferentes formas, segn
sea el objeto que se referencia en ese momento.
El polimorfismo adquiere su mxima expresin en la derivacin de clases (herencia).
Por ejemplo, la clase Reserva representa distintos tipos de reservas (puede haber reservas de tren,
de avin, de hotel, ... ). Las operaciones cancelar, pagarTasa, ..., son fundamentales para el proceso.
Cada tipo de reserva debe poder realizar las operaciones anteriores. Por otra parte, la forma de
cancelar, o de pagar tasas es distinta para el transporte areo que para el hotel. En trminos de
POO: se puede enviar cualquier mensaje (cancelar, calcularTasas,...), las acciones que desencadene
sern diferentes segn el objeto receptor. Un mismo mensaje se comporta de forma diferente segn
la clase sobre la que se aplica.
OBJETOS
Objeto: entidad que tiene atributos (datos) y formas de
comportamientos (procedimientos).
Un objeto combina en una sola unidad datos y funciones (mtodos)
que operan sobre esos datos.
Un objeto es una entidad fsica o lgica que exhibe tres
caractersticas principales: estado, comportamiento e identidad.
Ejemplo de Objeto: cajero automtico
Un cajero automtico tiene un estado, por ejemplo le quedan billetes de 50 o no, est
conectado o no, etc. Los datos actuales determinan el estado del cajero.
El cajero automtico tiene identidad. Dos cajeros fsicamente idnticos, en sitios distintos
son diferentes.
Un cajero automtico tiene un comportamiento predefinido que le permite interaccionar
con el mundo exterior. Por ejemplo, puede leer una tarjeta de crdito, imprimir el resumen
de un cartilla ... . Los usuarios slo necesitamos emplear su interfaz, es decir, su
comportamiento. Los detalles internos estn ocultos. Nos da igual saber las caractersticas
tcnicas del cajero, si funciona a pilas o a energa solar. El cajero encapsula su
implementacin, todo cambio en la misma es transparente para los usuarios.
Curso de Programacin Orientada a Objetos en Java
Ejemplos de objetos
Cajero
Racional
Punto
- saldo: 400
- numerador: 3
- fecha:21/Sep/06
- denominador: 4
- coordY: 305
- decimal: 0.75
- nombre: Peral
+ sumar(Racional)
+ rotar()
+ mostrar()
+ colorear()
+ leerTarjeta()
+ validarNumero(int)
+ comprobarSaldo()
- coordX: 2002
+ desplazar()
CARACTERSTICAS DE UN OBJETO
Comportamiento: define su forma de interaccin con el mundo exterior, esto es, su interfaz.
Dentro del contexto de un lenguaje orientado a objetos, un objeto encapsula datos y los
procedimientos/funciones (mtodos) que manejan esos datos.
Ejemplo: Un coche vendido por un comercial, el identificador del objeto es coche1. Los atributos
asociados pueden ser: nmero_matrcula, fabricante, precio_compra, precio_actual,
fecha_compra, color ...
OBJETOS(I)
El objeto retiene cierta informacin y conoce cmo realizar ciertas operaciones. La encapsulacin
de operaciones e informacin es importante. Los mtodos de un objeto slo pueden manipular
directamente los datos asociados con ese objeto.
Si se desea modificar los datos de un objeto, se conoce exactamente cules son las funciones o
mtodos que interactan con el mismo.
Proyector uno = new Proyector(30, "Minerva");
uno.encender();
uno.darColor(red);
// proyector de 30 kw
OBJETOS(II)
Qu clase de cosas pueden ser objetos ?: la respuesta est solo limitada a nuestra
imaginacin. Todo depender del dominio del problema.
OBJETOS(III)
Qu hay en un objeto?:
un objeto no es ms que un grupo de datos. pero no es una agrupacin pasiva de
datos, de las que simplemente se dejan manipular por los procedimientos, sino que un
objeto puede ser un grupo activo de datos. Un objeto puede ser un nmero, una
palabra, una hoja de clculo. Si es un nmero, puede hacer cosas como multiplicarse
por dos, calcular su inverso o multiplicarse por pi. El usuario utiliza estas funciones
transmitiendo un mensaje al objeto que le ordena ejecutar cierta accin. (Mark
Clarkson)
Los datos del objeto estn ocultos, eso asegura que no se puedan modificar
accidentalmente por funciones externas al objeto.
CLASES(I)
CLASES(II)
Definicin rigurosa de la interfaz con el mundo exterior. El interfaz de una clase captura
slo su vista externa. Adems, la clase tiene una parte de implementacin que contiene
la representacin de la abstraccin, as como los mecanismos que realizan el
comportamiento deseado.
Flexibilidad y adaptabilidad.
CONSTRUCCIN DE CLASES
C++ es un lenguaje de programacin que permite tanto la programacin
estructurada como la programacin orientada a objetos. Con C++ se
implementa fcilmente todos los conceptos analizados.
Java es un lenguaje de programacin orientado a objetos que elimina las
cuestiones mas complicadas de C++, como por ejemplo los punteros. En Java
todo se construye a base de clases y objetos.
La creacin de un programa O.O requiere la construccin de una coleccin de
clases. Para ello ser necesario declarar y usar las clases.
La declaracin implica una descripcin de las funciones miembro (mtodos) y
datos miembro de la clase.
Un programa controlador ser el encargado de utilizar las clases
DECLARACIN DE CLASES
La declaracin (en Java) tiene el formato siguiente:
class Nombre
{
private ...
protected ...
public ...
//cuerpo de la clase
}
class NumerosRojos
{
private String numCuenta ="2345-g";
private Titular t;
private float saldo = 0.0;
public void enviarAviso() {
System.out.print("
");}
El mecanismo fundamental para ocultar datos es ponerlos en una clase y hacerlos privados. A
estos datos o mtodos privados slo se accede desde dentro de la clase.
pblico
accesibles desde el exterior
mtodos
La visibilidad de cada miembro de la clase depende del especificador de acceso que le afecta:
private, protrected y public.
class Autor
class Nombre_Clase
{
private miembro privado
protected miembro protegido
public miembro publico
{
private String nom = "Sin nombre";
private int codigo;
private Vector<Obra> v = new Vector<Obra>();
public void setNombre(String n) ...
Miembros privados: slo accesibles por mtodos miembro de la clase. Etiqueta private.
Miembros pblicos: accesibles desde cualquier parte del programa. Forman el interfaz a travs del
cual se utiliza el objeto. Etiqueta public.
Miembros protegidos: accesibles por los mtodos miembro de la clase y de las clases derivadas.
Etiqueta protected.
Por defecto, en Java, son accesibles desde la propia clase y por las clases del mismo package.
Curso de Programacin Orientada a Objetos en Java
El uso del interfaz pblico ha de estar limitado a los mtodos miembro requeridos para manipular y
proveer informacin sobre las instancias creadas de la clase.
Los mtodos miembro de apoyo a los otros mtodos de la clase deben estar ocultos.
Los datos estarn ocultos al exterior de la clase. En general se incluyen en la seccin privada o protegida.
La clusula protected reduce el nivel de ocultacin, permitiendo que las clases derivadas accedan a los
miembros protegidos de la clase base.
Utilizar mtodos miembro para establecer y consultar los valores de los datos (mtodos set y get).
Para permitir el acceso a las clases descendientes, situar los datos en la seccin protegida ( protected).
class Planta
{
protected int a, b;
public int getAncho() {
return a;
una.b = 12;
// error
una.setBase(12); // correcto
class Rectangulo
{
public void inicio(){...}
public void
dimension(double a, double h)
base = a; altura = h;
{
return base * altura;
}
}
}
La declaracin de los datos miembro (atributos) de una clase es de la misma forma que la
declaracin de variables.
En Java est permitida la inicializacin explcita de las variables que representan a los datos.
};
{
protected String nombre;
protected Fecha diaNac;
protected Dni idt;
protected char genero ='I';
// mtodo interno
MTODOS Y MENSAJES
Un programa orientado a objetos consiste en un nmero de objetos que se
comunican unos con otros a travs del envo de mensajes.
Los mtodos son como los procedimientos. Un mtodo puede definirse como
Modificadores, permiten a un programa cliente cambiar los contenidos de los miembros dato. Por ejemplo,
de la clase Racional, void setNumerador(int n).
Operaciones de ayuda. Realizan tareas auxiliares necesarias para otras operaciones. El acceso est
restringido a la clase, son funciones privadas.
public
double retirar (double cuanto)
{
if (cuanto <= saldo)
{
saldo -= cuanto;
return cuanto;
}
else
return 0.0;
}
saldo += cantidad;
}
Despus de definir una clase se puede declarar una instancia de esa clase.
Una variable de tipo clase no es un objeto. En Java se dice que es una referencia .
Lampara mp;
Racional r1;
Persona p1;
Ventana [] av = new Ventana[10];
En Java, las instancias de las clases se definen con el operador new seguido del nombre de la
clase y entre parntesis la informacin para inicializar el objeto.
Cuenta c1;
c1 = new Cuenta();
// El objeto Cuenta se referencia con c1
Racional r = new Racional(1,5); // objeto Racional inicializado a 1/5
cl.depositar(200.5);
// objeto cl enva mensaje depositar
CONSTRUCTORES DE UN OBJETO
Un constructor es el mecanismo que disponen las clase para inicializar los objetos.
El constructor se llama automticamente cuando se crea una instancia de la clase. Por ejemplo:
Ventana v1 = new Ventana(); // llama al constructor sin argumentos
Complex z1 = new Complex(-1.,1.);
El constructor es una mtodo de la clase, tiene el mismo nombre de la clase y no tiene tipo de
retorno. Formato general:
NombleClase(lista de argumentos)
{
...
}
El constructor puede estar sobrecargado, es decir, mas de un constructor con distintos argumentos.
EJEMPLOS DE CONSTRUCTORES(I)
class Circulo
{
private int x, y;
private double radio;
public Circulo(int x0, int y0, double r)
{
radio = r;
x = x0;
y = y0;
}
public Circulo(double r)
{
this(0, 0, r);
}
public Circulo()
{
this(0, 0, 1.0);
}
// instancias de Circulo
Circulo cc1 = new Circulo();
Circulo cc2 = new Circulo(3.0);
Circulo d;
d = new Circulo(-1, 1, 4.5);
EJEMPLOS DE CONSTRUCTORES(II)
class Asignatura
{
private int numCredito = 2;
private int curso = 1;
private String idt = " ";
public Asignatura(int c )
{
curso = c;
}
public Asignatura(int c, String d)
{
curso = c; idt = d;
}
public Asignatura(int c, String d,
int nc)
{
this(c, d);
numCredito = nc;
}
class VectorEntero
{
private int n, cap;
private int[] v;
public VectorEntero() { this(50); }
public VectorEntero(int t)
{
v = new int [cap = t];
n = -1;
}
public VectorEntero(int [] w)
{
cap = 2 * w.length;
v = new int [cap];
for (int i = 0; i < w.length; i++)
v[i] = w[i];
n = w.length;
}
Un constructor por defecto no tiene parmetros. Inicializa los miembros datos a valores por defecto
CONSTRUCTORES
Cuando se define un objeto (instanciacin), se pasan los valores de los parmetros al
constructor
utilizando una sintaxis similar a una llamada a un mtodo.
Por ejemplo, para crear una instancia del objeto Rectngulo:
Rectangulo r1 = new Rectangulo(15, 20);
// en Java
OBJETOS COMPUESTOS
Los objetos que contienen otros objetos se conocen como objetos compuestos.
Un ejemplo de un objeto compuesto es la clase Aula. Una aula consta de diversas partes,
tales como una Pizarra, una Tarima y 30(n) Pupitres. Estas partes constituyen los objetos
componentes del objeto Aula.
Cada objetos componente es un atributo del objeto compuesto. A su vez, los objetos
componentes tienen atributos y mtodos que los caracterizan.
Los objetos componentes tienen una relacin part-of (parte-de) o component-of
(componente-de) con el objetos compuesto, tambin se representa por has-a (tiene-un).
As, el Motor es parte de un Avin, la Bodega es parte del Avin,..., el piloto es parte del
avin?.
En la mayora de los sistemas los objetos no contienen en el sentido estricto otros objetos,
sino que contienen referencias a otros objetos. Esta caracterstica ofrece dos ventajas:
1.
2.
Los objetos contenidos pueden cambiar en tamao y composicin, sin afectar al objeto
compuesto que los contiene.
Los objetos contenidos estn libres para participar en cualquier nmero de objetos compuestos,
en lugar de estar bloqueados en un nico objeto compuesto.
Los objetos contenidos en objetos compuestos pueden por s mismo ser objetos
compuestos, dando lugar a una jerarqua de componentes-de.
OBJETOS COMPUESTOS(II)
Cuando se crea una instancia de un objeto compuesto, todos sus objetos componentes
se deben instanciar al mismo tiempo. Por esa razn, normalmente los argumentos del
constructor de objetos miembros se sitan en la declaracin de la clase que lo
contiene. Por ejemplo, suponer la relacin parte-de entre Tiempo y Panel:
class Tiempo
class Panel
{
private int h, m, s;
private Tiempo t;
{
titulo = nomr; t = new Tiempo();
}
public Panel(String n, int h, int m, int s)
}
public Tiempo(){ this(0,0,0); }
{
titulo = nomr; t = mew Tiemp(h, m, s)
}
// z1 objeto inicializado a 2 3i
// z2 inicializado a 3 + i
El objeto Color (10,30,20) deja de estar referenciado (identificado), puede ser liberado por el sistema.
Curso de Programacin Orientada a Objetos en Java
AUTOREFERENCIA: THIS
Cmo reconoce un mtodo de una clase cul es la instancia que la llama ?. Suponer la clase Pila:
class Pila
{
public void meter(int x)
{
buffer[++cima] = x;
}
this es una palabra reservada especial, que se declara implcitamente para cada clase y tiene la
direccin del objeto que enva el mensaje (invoca al mtodo).
Siempre que se llama a un mtodo se pasa, implcitamente, this . De este modo el mtodo conoce el
objeto (la instancia) que llam. Los atributos o miembros dato estn referenciados, implcitamente, por
this
this se puede utilizar explcitamente para que un mtodo devuelva el el objeto que enva el mensaje:
return this;
Otro uso de this es para llamar desde un constructor a otro de la misma clase.
Curso de Programacin Orientada a Objetos en Java
En la prctica, una clase se asemeja a un esquema o plantilla, que se utiliza para crear objetos.
Una clase es un tipo definido que determina la estructura de datos y operaciones asociadas con ese
tipo.
A partir de una clase se pueden definir un nmero ilimitado de objetos. Cada uno de estos objetos
tendr un estado particular propio ( un objeto ventana puede estar minimizada, otra puede estar
dimensionada a mitad de pantalla, y otras caractersticas como su color), aunque compartan algunas
operaciones comunes (como ocultar).
UNA APLICACIN
Se declaran y definen dos clases Reloj y Presentar con la finalidad de mostrar el avance del tiempo.
El comportamiento de Presentar:
El comportamiento de Reloj:
Una vez definidas las clases Presentar y Reloj es preciso usar las mismas. Se escribe otra clase, se puede denominar clase principal,
con el mtodo main(). Este mtodo controla la creacin del objeto Reloj y simula su funcionamiento con un bucle.
CLASE PRESENTAR
class Presentar
return this;
}
private int limite, valor;
{ valor = 0;
return valor;
limite = lim;
return limite;
valor++;
return this; //
System.out.print ('0');
System.out.print(valor);
if (v < 0) v = -v;
valor = v % limite;//
return this;
rango 0 .. limite-1
}
}
{
private Presentar hora;
BufferedReader (new
InputStreamReader(System.in));
minuto.incr();
if (minuto.obtenValor() == 0)
int q;
hora.incr();
q = Integer.parseInt(entrada.readLine());
return this;
return q;
// aumenta 1 minuto
int inicio;
hora.mostrar();
System.out.println(
System.out.print(" : ");
minuto.mostrar();
System.out.println();
inicio = entradaInt();
return this;
hora.ponValor(inicio);
System.out.println(
"Fijar minutos, entre 0 y " +
minuto.obtenLimite() + ": ");
inicio = entradaInt();
minuto.ponValor(inicio);
return this;
}
}
t.incrementar();
if (i % 6
throws Exception
== 0)
t.incrementar().mostrar();
Reloj t;
}
t = new Reloj();
}
t.mostrar();
t.mostrar().fijar(); // concatena mensajes
salida.print( "Tiempo de partida
");
t.mostrar();
Clase Nombre
Especificacin de atributos:
El conjunto de atributos significativos para la clase Nombre son los que permiten formar el
nombre
completo de una persona. Se puede aadir otro dato adicional para el alias (apodo), si es
que lo tiene.
Definicin de operaciones:
En el supuesto de la clase Nombre, las operaciones que se obtienen son las que permiten
modificar los
datos de un objeto de tipo Nombre. Estas son: asignarNom() (set), asignarApp1(),
asignarApp2(), y asignarAlias(). Otras operaciones de la clase son las que permiten
recuperar informacin, String getNom(), ..., String getNomCompleto() .
Clase Nombre
Diagrama de la clase:
En el diagrama se va a especificar los nombres de los atributos, el tipo y el nivel de
ocultacin, que ser
privado. Las operaciones tienen visibilidad pblica.
Nombre
- nombre : String
- appellido1 : String
- apellido2 : String
- alias : String
+ asignarNom()
+ asignarApel1()
+ asignarApel2()
+ asignarAlias()
+ getNomCompleto()
Clase Nombre
Implementacin utilizando Java
Se codifica la clase Nombre , segn est especificado el enunciado, y la clase principal para
crear
un objeto de Nombre y realizar operaciones (enviar mensajes ... ).
El archivo fuente con la clase debe tener el nombre de la clase y la extensin .java
Nombre.java
La clase principal define el mtodo main()), en este mtodo se ponen en marcha los objetos,
es decir se
crean objetos (operador new) y se envan mensajes. El nombre del archivo, en este
ejemplo, es:
PruebaNombre.java
Nombre.java
public class Nombre
{
private String nombre;
private String apellido1;
private String apellido2;
private String alias;
public Nombre()
{
nombre=apellido1=apellido2=alias= null;
}
public Nombre(String n)
{
this();
nombre = n;
}
public void asignarNom(String nm)
{
nombre = nm;
}
public void asignarApel1(String a1)
{
apellido1 = a1;
}
Curso de Programacin Orientada a Objetos en Java
PruebaNombre.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class PruebaNombre
{
static BufferedReader en = new BufferedReader (new
InputStreamReader (System.in));
public static void main(String[]ar) throws Exception
{
Nombre miNombre;
Nombre tuNombre;
// ahora se crean dos objetos, llamando a cada
// uno de los constructores
miNombre = new Nombre("Ignacio");
miNombre.asignarApel1("Zahonero");
tuNombre = new Nombre();
System.out.println("Dame tu primer
apellido: ");
a = en.readLine();
tuNombre.asignarApel1(a);
// llamada a uno de los mtodos
System.out.println("Mi nombre: " +
miNombre.getNomCompleto());
System.out.println("Tu nombre: " +
tuNombre.getNomCompleto());
}
}
Clase Direccin
(seguir los mismos pasos, tener en cuenta que un atributo de esta clase es de
tipo Nombre)
Especificacin de atributos:
Definicin de operaciones:
EJEMPLO: CLASE
PUBLICACION
Una editorial de libros y discos desea crear fichas que almacenen el
ttulo y el precio de cada publicacin. Realizar el diagrama de la clase,
denominada Publicacin. Implementar la clase en Java con los datos
anteriores, un constructor y los mtodos leer(), mostrar().
Especificacin de atributos:
Para seleccionar el conjunto de atributos significativos para una clase, se debe contestar a la siguiente
pregunta: qu
elementos datos definen esta clase en el contexto del problema?
La lectura del supuesto (diapositiva anterior) nos indica que el precio y el ttulo son los elementos
datos que nos
interesa definir. Se pueden aadir otros de inters: fecha de la publicacin, editorial, autor y
nmero de
Definicin
de operaciones:
identificacin.
Las operaciones definen el comportamiento de un objeto. Estas se ejecutan al operar sobre los atributos
o asociaciones
con otras clases.
El primer paso que sigue el analista para obtener el conjunto de operaciones de una clase, consiste en
el simle anlisis
gramatical del documento aislando los verbos que aparezcan. Algunos de estos verbos sern operaciones
y podrn
conectarse a la clase especfica.
En nuestro ejemplo: la operacin asignarTitulo() (set) y asignarPrecio() (set) son de importancia
para dotar
de informacin al objeto. La operacin mostrar() aparece directamente, su finalidad es escribir en la
pantalla la
informacin guardada por el objeto. Otras operaciones de la clase son las que permiten recuperar
Curso de Programacin Orientada a Objetos en Java
Ignacio Zahonero Martnez
informacin,
Luis Joyanes Aguilar
String getAutor(), ... .
53
Diagrama de la clase:
En el diagrama se va a especificar los nombres de los atributos, el tipo y el nivel de
ocultacin, que ser
privado, o bien protegido debido a que de esta clase se pueden realizar especializaciones,
como Revista,
Libro, ... .
Publicacin
# titulo : String
# precio : double
-fechaEdi: Date
- editorial : String
- autor : String
- isbn : int
+ asignarPrecio()
+ asignarTitulo()
+ mostrar()
+ leer()
Curso de Programacin Orientada a Objetos en Java
Publicacion.java
public Publicacion(String t)
{
tit = t;
precio = 0.0;
}
public void setPrecio(double r)
{
precio = r;
}
PruebaPublicacion.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class PruebaPublicacion
{
static BufferedReader en = new BufferedReader (new
InputStreamReader (System.in));
public static void main(String[]a) throws Exception
{
Publicacion p;
q = Double.valueOf(e);
r = q.doubleValue();
p = new Publicacion(t);
p.setPrecio(40.0);
// de la entrada
System.out.println("Precio ejemplar: ");
p.setPrecio(entradaDouble());
return r;
}
}