Post on 18-Jul-2015
transcript
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 1/31
JJAAVVAA
PPrrooggrraammaacciióónn
OOrriieennttaaddaa aa
OObbjjeettooss
En este capítulo aprenderemos el paradigma orientado a Objetos, describiremos cuáles son las principales características de este paradigma, y veremos cómo se implementa en Java la teoría de objetos, y como se organiza Java el conjunto de objetos.
CCaapp ííttuulloo 22
Contenido:
2.1. Introducción2.2. Definición de clase2.3. Creación de una clase en
java2.4. Definición Objeto2.5. Declaración de objetos2.6. Asignación de objetos2.7. Atributos2.8. Métodos2.9. Paquetes2.10. Ocultamiento de datos.2.11. Sobrecarga
2.12. Constructores2.13. Constructores con
parámetros2.14. Sobrecarga de
Constructores2.15. Ejercicios
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 2/31
www.z
2.1.
2.2.
najava.net
Introduc
entendido
clases ya i
Definició
Una clase
mismas c
Una clase
de dato.
particular.
lgoritmos y
ión
En este
como jav
o bien
programa
quizás, c
como está
mplementa
n de Clas
es como u
racterística
Una cl
Define
La clas
es una repr
Las clases
Estructura d
apítulo se
es un leng
orma part
dores que
onocer tod
construido
as a nuest
a plantilla
y funcione
se es un m
los atributo
e usan el e
esentación
de utilizan
Datos
examinan l
uaje orient
de una
ya tienen
s las clas
el árbol es
as aplicacio
e la cual s
s.
delo(diseñ
y operacio
capsulamie
de un objet
para crea
Ing. Raúl E
os concept
do a objeto
clase, lo
experiencia
s del árbol
mucho má
nes.
pueden cr
) de objeto
es del obje
nto para for
en particul
objetos d
rique Ferná
s de clas
s puro, todo
más tedio
en algún
de Java,
s fácil incor
ar varios o
to
zar la abstr
ar, y define
e ese tipo
dez Bejaran
s y objeto
es una cla
so para l
lenguaje
ero una v
porar nuev
jetos con l
cción
un nuevo ti
de clase
Página | 2
o
s,
e
s
s,
z
s
s
o
n
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 3/31
www.z
Ing.
2.3.
najava.net
aúl Enrique
Creación
una letra
Sintaxis:
Ejemplo 1
cl
}
Fernández B
Ej
El nomb
El nomb
de una cl
Para crear
continuació
entre las lla
ayúscula.
Tipo de V
V
//
M
} //
}
:
ss Emple
Cuerpo
ejarano
mplo de una
re de toda cl
re de los obj
ase en jav
una clas
el nombr
es de aper
acceso class riable1; riable2; .
étodo (lista Cuerpo de
étodos adicio
ado {
de la cl
clase en not
ase debe co
tos con min
a
se utiliza
de la clas
tura y cierre
NombreClas
e parámetro
l método nales
se
Univ
ación UML
enzar con
sculas
la palabr
. La defini
. El nombre
{
s) {
rsidad Peru
ayúsculas
reservad
ión de la
de la clase
na Los And
class y
lase se po
empieza c
Página | 2
s
a
e
n
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 4/31
www.z
2.4.
2.5.
najava.net
Definició
Objeto es Id
Co
Es
Represent
Automóvil
genérico, t
Declarac
Para crea
primera en
Sintaxis 1
Sintaxis 2
lgoritmos y
n Objeto
una instancintidad: los
mportamie
tado : almac
ación en U
puede ser
al como Ve
ión de obj
un objeto
la misma lí
:
Nombre
Nombre
:
Nombre
Estructura d
a de la clasobjetos se
nto : puede
ena inform
L de esta
un subconj
ículo.
tos
o una insta
nea de decl
Clase Nom
Variable = n
Clase Nom
Datos
e, los objetoistinguen d
realizar tar
ción que va
lase de obj
unto o una
ncia de est
aración, tal
reVariable;
ew Nombre
reVariable =
Ing. Raúl E
s tienen lasl uno del ot
eas.
ria a través
tos
especializa
clase ten
como se ilu
lase( );
new Nomb
rique Ferná
siguientesro.
del tiempo).
ción de otr
mos dos a
tra a contin
eClase( );
dez Bejaran
ualidades:
o objeto m
lternativas,
uación.
Página | 2
o
s
la
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 5/31
www.zonajava.net
Página | 2
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
Ejemplo 2:
El objeto Vehiculo implementado en Java, sería el siguiente.
class Vehiculo {
Color color;
float velocidad;
Motor motor;
String marca;
int numero_ruedas;
Automovil() {
color = Color.red;
velocidad = 0.0; motor = new Motor();
marca = new String(“Chevrolet”);
}
Automovil(Color c, float v, Motor m, String t) {
color = c;
velocidad = v;
motor = m;
marca = t;
}
void avanzar() {...}
void parar() {...}
void girarIzquierda() {...}
void girarDerecha() {...}
float getVelocidad() {
return velocidad;
}
}
Ejemplo 3:
El objeto Vehiculo implementado en Java, sería el siguiente.
Empleado A1= new Empleado();
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 6/31
www.z
2.6.
2.7.
najava.net
Asignaci
C
te
e
definidos l
Ejemplo 3
Atributo
lgoritmos y
ón de obj
uando crea
nemos acc
tamos asi
s objetos.
:
Emple
Emple
Los atribut
objeto de
Estructura d
tos
mos un obj
eso, pero
nando so
do A1 =
do A2 =
os son las
tro y deter
Datos
eto interna
cuando as
las dire
new Emple
A1;
característi
inan su a
Ing. Raúl E
ente exist
ignamos o
ciones de
ado();
cas individu
ariencia, e
rique Ferná
e un punte
jetos lo q
memoria
ales que d
tado u otr
dez Bejaran
ro, al que
e realmen
donde est
iferencian
s cualidad
Página | 2
o
o
te
n
n
s.
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 7/31
www.zonajava.net
Página | 2
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
Los atributos se guardan en variables denominadas de instancia, y cada objeto
particular puede tener valores distintos para estas variables.
Las variables de instancia también denominados miembros dato, son declaradasen la clase pero sus valores son fijados y cambiados en el objeto.
Sintaxis:
[TipoAcceso] Tipo Nombre;
Ejemplo 7
Diseñe una clase Empleado; cuyos atributos sean nombre, apellido y edad , con
Método u operaciones de registrar y mostrar.
Empleado
public class Empleado {
private String nombre;
private String apellido;
private int edad;
public void registrar( ) {
}
public void mostrar( ) {
}}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 8/31
www.z
Clas
c
}
clase
2.8.
najava.net
empleado
lass Emple
private
private
private
public
this
this
this
}
public
Syst
Syst
Syst
}
principal.
class p
pu
}
}
El operad
objeto de l
Analice ah
Métodos
f
i
lgoritmos y
.java
ado {
String No
String Ap
int Edad;
oid Regis
.Nombre =
.Apellido
.Edad = E
oid Mostr
em.out.pr
em.out.pr
em.out.pr
ava
incipal
lic stat
Emple
A1.Re
A1.Mo
r de acces
a clase.
ora Ud. cad
– Compor
l comporta
unciones
nstruccione
Estructura d
mbre;
ellido;
trar(Stri
Nombre;
Apellido
ad;
ar() {
intln("Nom
intln("Ape
intln("Eda
{
ic void
do A1= n
istrar("
trar();
o a un mie
a línea del
tamiento
miento de l
iembro o
que realiz
Datos
g Nombre,
;
bre "+ No
llido"+ A
d"+ Edad);
ain(Stri
w Emplea
uan","Hu
bro (.) sel
rograma an
s objetos d
métodos.
an una det
Ing. Raúl E
String A
bre);
ellido);
g[ ] arg
do();
rtado",
cciona un
terior y mo
e una clase
Un métod
rminada ta
rique Ferná
ellido, i
s) {
2);
miembro in
ifique para
se implem
o es un
rea y son s
dez Bejaran
nt Edad) {
ividual de
5 Emplead
nta median
conjunto
imilares a l
Página | 2
o
n
s
te
e
s
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 9/31
www.zonajava.net
Página | 2
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
funciones de los lenguajes estructurados.
Del mismo modo que hay variables de instancia y de clase, también hay métodos
de instancia y de clase. En el primer caso, un objeto llama a un método pararealizar una determinada tarea, en el segundo, el método se llama desde la propia
clase.
Sintaxis
[modificador] tipo NombreMetodo(tipo parm1, tipo parm2, tipo parm3, . . .) { declaraciones de variables locales; sentencias; //... [return[ (]expresión[ )]];
}
Ejemplo 5
En el siguiente ejemplo se ilustra el uso de métodos, para eso se ha definido una
clase de nombre Calculadora que tiene definidos atributos públicos n1 y n2, dos
operaciones suma() y producto().
Clase Calculadora.java
public class Calculadora {
public int n1;
public int n2;
public int suma(){
return (n1 + n2);
}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 10/31
www.zonajava.net
Página | 2
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
public int producto(){
return (n1 * n2);
}
}
Para ilustrar el uso de la clase Calculadora, se crea el programa aplicacal
class aplicacal {
public static void main(String[ ] args) {
Calculadora obj = new Calculadora();
obj.n1 = 10;
obj.n2 = 8;
System.out.println("n1 = " +obj.n1);
System.out.println("n2 = " +obj.n2);
System.out.println("Suma = " +obj.suma());
System.out.println("Producto = " +obj.producto());
}
}
Ejemplo 6
En el siguiente ejemplo tenemos una segunda versión de la clase Calculadora donde las operaciones tienen parámetros.
Clase Calculadora.java
class Calculadora {
public int suma(int n1, int n2){
return (n1 + n2);
}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 11/31
www.z
Ing.
2.9.
najava.net
aúl Enrique
}
Para ilustr
public
pu
}
}
Paquete
Un paquet
acceso a l
clases rest
espacio d
2.9.1. Cl
co
Fernández B
publi
}
r el uso de
lass apl
lic stat
Calcu
int a
int b
SysteSyste
Syste
Syste
e es una ag
s clases. C
ringiendo q
nombres
ses Públi
Cua
restr
clas
La d
o prefijo e
publ
/
}
ejarano
int pro
return (
la clase Ca
cacalcu
ic void
adora ob
= 15;
= 8;
.out.pri
.out.pri
.out.pri
.out.pri
rupación de
omo se ver
ué clases p
ediante el
cas
ndo no se d
icción impo
s en el mi
efinición de
la cabecer
c class
/atributos de l
ducto(int
1 * n2);
lculadora, s
{
ain(Stri
= new C
ntln("n1ntln("n2
ntln("Su
ntln("Pro
clases e i
á a continu
eden acce
ual se pued
efine una c
rtante y es
mo paquet
una clase
a de la clas
xamen {
clase
Univ
n1, int
crea el pr
g[ ] arg
alculado
= " +a);= " +b);
a = " +o
ducto="+
terfaces q
ción, los pa
er a qué cl
en organiz
lase como
que sólo p
.
uede inclui
así:
rsidad Peru
n2){
grama apli
s) {
a();
j.suma(a
bj.produ
e facilitan l
quetes per
ses, y per
r y localiza
ublica, se
drá ser util
r el modific
na Los And
acalcu
,b));
cto(a,b))
gestión de
iten proteg
ite definir u
las ciases.
stablece u
lizada por l
dor publ
Página | 3
s
;
l
er
n
a
s
c
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 12/31
www.z
najava.net
La
en
Hautil
las
2.9.2. Se
Sin
es
má
de
so
En
cu
Si
Un
en
de
otr
lgoritmos y
clase Exa
las clases d
bitualmenteizarlas en c
clases del
ntencia p
A lo
han
out
clas
embargo,
ecial; simpl
quina virtu
las clases
:
java.
El paq
que se
El paq
esta secció
l basta con
taxis:
packa
paquete e
el inicio d
e incluirse
s clases m
Estructura d
en se pue
e cualquier
las clasealquier pro
aquete.
ckage
largo de to
utilizado pa
.println
System ,
para utiliz
emente utili
l Java carg
de estos p
lang.
ete actual,
esté definie
uete por de
n se abord
añadir la s
ge Nomb
tá formado
l fichero,
como la pri
ediante la s
Datos
de utilizar e
otro paquet
se defingrama a no
dos los eje
uetes. Por
"Hola
que se enc
r la clase
zar la clase
a o importa
quetes es
Es decir, e
ndo.
fecto, El pa
rá cómo añ
ntencia pa
reDelPaq
por todas l
onde están
mera línea
ntencia im
Ing. Raúl E
n las clase
e.
n como pser que se
plos y pro
ejemplo, cu
mundo!!!
entra en el
System,
. Esto se d
tres paque
muy frecue
l paquete
uete que n
adir una cl
kage.
uete;
as clases q
definidas.
el código,
ort.
rique Ferná
de su pro
ublic paquiera restr
blemas de
ando se util
"; se está
paquete ja
no se deb
be a que
tes, debido
nte. Estos t
l que perte
tiene ning
se a un pa
ue tienen e
La senten
ntes inclus
dez Bejaran
io paquete
ra así podingir su uso
este curso
iza Syste
utilizando
va.lang.
hacer na
or defecto,
a que el u
res paquet
nece la cla
n nombre.
uete, para
sta senten
ia packa
o de import
Página | 3
o
y
era
e
.
la
a
la
o
s
e
lo
ia
e
ar
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 13/31
www.z
Ing.
najava.net
aúl Enrique
2.9.3. Se
A
dis
Ej
Es
ja
pa
pa
Cl
pu
j
}
Ej
Es
ja
pa
sol
Fernández B
ntencia i
LosEl a
nue
Usando
nueva
Import
Import
ontinuación
intas forma
mplo 01:
riba un pro
a.util,
talla. Para
uete.
se Acceso
lic clas
publi
va.util.
}
mplo 02:
riba un pro
a.util,
talla. Para
amente des
ejarano
port
paquetes pcceso a las
tro progra
todo el
echa;
ndo la clas
ndo todo el
se present
s de acced
grama que
enere un
acceder a
aquete1.j
s Acceso
static
// Se crea el ojava.uti
Random();
// Se generaSystem.o
grama que
enere un
acceder
ea importar
ueden consclases de
a se puede
nombre
: import
paquete: i
an tres eje
r a las clas
cree un obj
úmero ent
la clase,
ava
aquete1
void main
bjeto.Random
imprime el n
t.printl
cree un obj
úmero ent
la clase,
la clase Ra
Univ
iderarse coun paquet
hacer de v
de la cl
java.uti
port ja
plos en lo
s de un pa
eto de la cl
ro aleatori
tilice el no
{
(String
eneraNum
úmero(generaN
eto de la cl
ro aleatori
importe el
dom .
rsidad Peru
o bibliotecque nos i
rias formas
se: java
l.Date;
a.util.*
que se ha
uete.
ase Rando
amente y l
mbre de l
[] args)
eros = n
umeros.n
ase Rando
amente y l
paquete i
na Los And
as de clasteresen pa
:
.util.Da
;
ce uso de l
del paque
imprima
clase y d
{
w
xtInt())
del paque
imprima
dicando q
Página | 3
s
s.ra
e
s
te
n
el
;
te
n
e
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 14/31
www.zonajava.net
Página | 3
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
Clase AccesoPaquete2.java
import java.util.Random;
public class AccesoPaquete2 {
public static void main (String[] args) {
// Se crea el objetoRandom generaNumeros = new Random();
// Se genera e imprime el númeroS
ystem.out.println(generaNumeros.nextInt());
}
}
Ejemplo 03:
Escriba un programa que cree un objeto de la clase Random del paquetejava.util, genere un número entero aleatoriamente y lo imprima en
pantalla. Para acceder a la clase, importe todo el paquete java.util.
Clase AccesoPaquete3.java
import java.util.*;
public class AccesoPaquete3 {
public static void main (String[] args){
// Se crea el objetoRandom generaNumeros = new Random();
// Se genera e imprime el númeroS
ystem.out.println(generaNumeros.nextInt());
}
}
Como se puede apreciar está forma de importar clases de un paquete es
una ampliación de la vista en el ejemplo anterior.
Las dos últimas formas tienen la ventaja de que no hace falta escribir todo
el paquete cuando se declara o se crea un objeto de una clase. Sin
embargo, tiene el inconveniente de que pueden darse problemas de
ocultación si se importan varios paquetes donde existen clases con elmismo nombre.
Si se quisiera utilizar dos clases con el mismo nombre de distintos
paquetes, se deberán referenciar los nombres completos de las clases
para evitar problemas. También podría importarse la clase que se utilizase
más y utilizar el nombre completo para la otra clase.
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 15/31
www.z
Ing.
2.10.
najava.net
aúl Enrique
Ocultami
Para consimplementmétodo.
Por ejemp
se
ge
Como pueun valor apodemosnovel de a
Otra posifuncionalides correct
Ejemplo
Realizar uun objeto.
Fernández B
ento de D
Uno de lo
que el usinterés y descritura o
eguir esto sar métodos
lo; si el atrib
apellido
apellido
de apreciarl atributo yeleccionar
cceso nivel
ilidad quead que pueo no.
07:
programa
ejarano
tos
fundamen
ario solo del modo quambos.
e debe imppara acce
uto es apel
esté
este
existen dosel prefijo gsi se implede acceso
nos da lade servir p
que ilustra
Clase A
tos de la p
ebe tenere le corres
lementar loo a ellos,
lido los mét
método pe
método pe
prefijos, elt para leerenta el mélos datos.
implementara verificar
l uso de m
rticulo en n
Univ
rogramació
acceso a londe, por
atributos cxiste un e
odos serian
mite asigna
mite leer el
prefijo set qel valor deltodo set, ge
ción de espor ejemplo
todos para
tación UML
rsidad Peru
orientada
s datos q jemplo sol
omo privatándar par
:
r un valor al
valor del at
ue se utilizatributo, det, o ambos,
tos métodosi el -2 se
acceder a l
na Los And
a objetos
e son delectura, so
os y se dedefinir es
atributo.
ibuto.
para asignesta maney restringir
s es agregsta signan
s campos
Página | 3
s
s
ulo
ete
ar
rael
aro
e
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 16/31
www.zonajava.net
Página | 3
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
Clase Articulo.java
public class Articulo {
private int codigo;
private String nombre;
private double preCosto;
private double preVenta;
public void setCodigo(int nCodigo){
codigo = nCodigo;
}
public void setNombre(String sNombre){
nombre = sNombre;
}
public void setPreCosto(double nPreCosto ){
preCosto = nPreCosto;
preVenta = preCosto * 1.4;
}
public int getCodigo(){
return codigo;
}
public String getNombre(){
return nombre;
}
public double getPreCosto(){
return preCosto;
}
public double getPreVenta(){
return preVenta;
}
}
Clase progprincipal.java
public class progprincipal {public static void main(String[ ] args) {
Articulo art1 = new Articulo();
art1.setCodigo( 1000 );
art1.setNombre( "Auto" );
art1.setPreCosto( 15000 );
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 17/31
www.zonajava.net
Página | 3
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
System.out.println("Codigo= " + art1.getCodigo());System.out.println("Nombre = " + art1.getNombre());
System.out.println("Precio Costo="+art1.getPreCosto());
System.out.println("Precio Venta="+art1.getPreVenta());
}
}
Como se puede apreciar el precio de venta se calcula de manera automática
cuando establecemos el precio de costo, esto debido a que utilizamos un método
para asignar el precio de costo, por otro lado el precio de venta sólo puede ser
leído (sólo lectura), más no existe manera alguna de cambiar su valor, a menos
que cambiemos el precio de costo.
2.11. Sobrecarga
La sobrecarga permite definir dos ó más métodos que compartenel nombre, pero la declaración de sus parámetros debe serdiferente. Esta una de las características muy importante de laPOO, y por lo tanto también de Java.
Cuando se invoca a un método sobrecargado, Java utiliza el tipoy/o número parámetros como guía para determinar a qué versión del métodosobrecargado debe llamar. Por lo tanto, los métodos sobrecargados deben ser
diferente tipo y/o número de parámetros.
Ejemplo 08:
En este ejemplo ilustraremos el uso de la sobrecarga, para lo cual implementamosuna clase que permita convertir a String un número, dependiendo el número seejecutará el método que le corresponde.
Clase miconvertidor con una función sobrecargada
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 18/31
www.zonajava.net
Página | 3
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
La clase que se utilizara para esta demostración es miconvertidor, tal como seaprecia en la figura, tenemos el método convert sobrecargado.
Clase miconvertidor.java
class miconvertidor {
public String convert(int n){
return (Integer.toString(n));
}
public String conver(long n){
return (Long.toString(n));
}
public String convert(float n){
return (Float.toString(n));}
public String convert(double n){
return (Double.toString(n));
}
}
El programa que ilustra el uso de esta clase es el siguiente:
Clase aplicaconvert.java
class aplicaconvert {public static void main(String[] args) {
miconvertidor obj = new miconvertidor();
int n1 = 500;
long n2 = 100000;
float n3 = 456.459834f;
double n4 = 8934.42573485720;
System.out.println("n1 = " + obj.convert(n1));
System.out.println("n2 = " + obj.convert(n2));
System.out.println("n3 = " + obj.convert(n3));
System.out.println("n4 = " + obj.convert(n4));
}}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 19/31
www.zonajava.net
Página | 3
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
2.12. Constructores
Los constructores permiten inicializar un objeto inmediatamentedespués de su creación, tienen el mismo nombre que la clase donde se encuentra y sintácticamente son similares de losmétodos.
Sintaxis
public nombre_clase (lista_de_parámetros ) { // instrucciones
}
El constructor se invoca cuando creamos el objeto, junto con el operador new.
Sintaxis
nombre_clase nombre_variable; nombre_variable = new nombre_clase( lista_de_argumentos );
Los constructores tienen el mismo nombre de la clase, y no tienen tipo, esto
debido a que retornan el mismo tipo de la clase, el objetivo principal de un
constructor es inicializar el estado interno del objeto.
Ejemplo 09:
En este ejemplo crearemos una clase de nombre empleado, que tiene unconstructor que inicializa sus atributos
Clase Empleado con un Constructor
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 20/31
www.zonajava.net
Página | 3
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
Clase Empleado.java
class Empleado {
// Atributos:private String nombre;
private double sueldo;
private int edad;
// Constructor:public Empleado() {
nombre = "Claudia";
sueldo = 5000.00;
edad = 22;
}
// Operaciones:p
ublic String getNombre() {
return this.nombre;
}
public double getSueldo() {
return this.sueldo;
}
public int getEdad() {
return this.edad;
}
}
El programa que ilustra el uso de esta clase es el siguiente, puede notar que elconstructor se invoca junto con el operador new.
Clase aplicaempleado.java
public class aplicaempleado {
public static void main(String[] args) {
Empleado E1 = new Empleado( );
System.out.println( "Nombre = "+ E1.getNombre());
System.out.println( "Sueldo = "+ E1.getSueldo());System.out.println( "Edad = "+ E1.getEdad());
}
}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 21/31
www.zonajava.net
Página | 4
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
2.13. Constructores con parámetros
Los constructores pueden resultar más útiles si tienenparámetros, en nuestro ejemplo de la clase Empleado, resulta
que no todos los empleados se llaman claudia, el ejemplosiguiente ilustra el uso de constructores con parámetros.
Ejemplo 10:
El siguiente ejemplo ilustra el uso de constructores con parámetros la clseutilizada es Empleado1.
Clase Empleado1 con un constructor con parámetros
Clase Empleado1.java
class Empleado1 {
private String nombre;
private double sueldo;
private int edad;
// Constructor :public Empleado1(String nombre, double sueldo, int edad) {
this.nombre = nombre;this.sueldo = sueldo;
this.edad = edad;
}
public String getNombre() {
return this.nombre;
}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 22/31
www.zonajava.net
Página | 4
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
public double getSueldo() {
return this.sueldo;
}
public int getEdad(){return this.edad;
}
}
El constructor de esta clase permite inicializar los objetos con diferentes datos,así podemos tener un objeto para empleado.
El programa que ilustra el uso de esta clase es el siguiente:
Clase aplicaempleado1.java public class aplicaempleado1 {
public static void main(String[] args) {
Empleado1 obj = new Empleado1("Angelica",4000,23);
System.out.println("Nombre = " + obj.getNombre());
System.out.println("Sueldo = " + obj.getSueldo());
System.out.println("Edad = " + obj.getEdad());
}
}
Puede notar que el constructor se invoca junto con el operador new y es enesa instrucción que se le pasa los datos para que inicialice los objetos.
2.14. Sobrecarga de Constructores
Al igual que los métodos, los constructores también pueden sersobrecargados, esto quiere decir, que podemos tener diferentesconstructores dependiendo de los datos de los que disponemos.
Ejemplo 11:
En este ejemplo se ilustra cómo construir clases con constructores sobrecargadosla clase que se utiliza es Empleado2, en esta clase tenemos cuatro versiones del constructor, tal como se aprecia en la Figura.
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 23/31
www.zonajava.net
Página | 4
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
Los datos de un empleado son: nombre, sueldo y edad, cuando falta el sueldo se
asume un sueldo base que está definido en SUELDO_BASE y cuando falta la edad
se asume cero.
Clase Empleado2.java
class Empleado2 {
// Atributos:
private String nombre;private double sueldo;
private int edad;
private static final double SUELDO_BASE = 5000.00;
// Constructores:public Empleado2(String nombre,double sueldo,int edad){
this.nombre = nombre;
this.sueldo = sueldo;
this.edad = edad;
}
public Empleado2(String nombre, double sueldo){
this( nombre, sueldo, 0 );}
public Empleado2(String nombre, int edad){
this( nombre, SUELDO_BASE, edad );
}
Clase Empleado2 con constructor sobrecargado
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 24/31
www.zonajava.net
Página | 4
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
public Empleado2(String nombre){
this( nombre, SUELDO_BASE, 0 );
}
// Operaciones:
public String getNombre(){
return nombre;
}
public double getSueldo(){
return sueldo;
}
public int getEdad() {
return edad;
}
}
El programa que ilustra el uso de esta clase es el siguiente:
Clase aplicaempleado2.java
class aplicaempleado2 {
public static void main(String[] args) {
Empleado2 emp1 = new Empleado2("Gustavo",15000.0,30);
Empleado2 emp2 = new Empleado2("Ricardo", 27);
Empleado2 emp3 = new Empleado2("Sergio");
System.out.println( "Empleado 1" );
System.out.println( "Nombre = " + emp1.getNombre());
System.out.println( "Sueldo = " + emp1.getSueldo());
System.out.println( "Edad = " + emp1.getEdad());
System.out.println();
System.out.println( "Empleado 2" );
System.out.println( "Nombre = " + emp2.getNombre());
System.out.println( "Sueldo = " + emp2.getSueldo());
System.out.println( "Edad = " + emp2.getEdad());
System.out.println();
System.out.println( "Empleado 3" );
System.out.println( "Nombre = " + emp3.getNombre());System.out.println( "Sueldo = " + emp3.getSueldo());
System.out.println( "Edad = " + emp3.getEdad());
System.out.println();
}
}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 25/31
www.zonajava.net
Página | 4
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
Del resultado obtenido podemos deducir que a Ricardo se le asigno el sueldo base
debido que no se le especifico su sueldo al momento de crear el objeto, en el
caso de Sergio solo se especifico su nombre, por lo tanto se le asigno el sueldo base y edad cero.
2.15. Ejercicios Propuestos
1. Escribir una aplicación que modifique la clase Calculadora, para que aumente los métodos –
sin utilizar parámetros – siguientes:
resta( ) halla la sustracción de los dos números ingresados
división ( ) halla la división de los dos números ingresados.
absoluto ( ) halla el valor absoluto de uno de los números ingresados.
mayor ( ) halla el mayor de los dos números ingresados.
menor ( ) halla el mayor de los dos números ingresados.
seno ( ) halla el seno de uno de los números ingresados
coseno ( ) halla el coseno de uno de los números ingresados
tangente ( ) halla el tangente de uno de los números ingresados
logaritmo ( ) halla el logaritmo de uno de los números ingresados
potencia ( ) halla la potencia de uno de los números ingresados, utilizando ambos
números.
raízcuadrada( ) halla la raíz cuadrada de un números
Para resolver, no utilizar la clase Math de Java.
2. Escribir una aplicación que modifique la clase Calculadora, para que aumente los métodos –
utilizando parámetros – siguientes:
resta( ) halla la sustracción de los dos números ingresados
división ( ) halla la división de los dos números ingresados.
absoluto ( ) halla el valor absoluto de uno de los números ingresados.
mayor ( ) halla el mayor de los dos números ingresados.
menor ( ) halla el mayor de los dos números ingresados.
seno ( ) halla el seno de uno de los números ingresados
coseno ( ) halla el coseno de uno de los números ingresados
tangente ( ) halla el tangente de uno de los números ingresados
logaritmo ( ) halla el logaritmo de uno de los números ingresados
potencia ( ) halla la potencia de uno de los números ingresados, utilizando ambos
números.
raízcuadrada( ) halla la raíz cuadrada de un números
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 26/31
www.zonajava.net
Página | 4
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
Para resolver, no utilizar la clase Math de Java.
3. Defina la clase Alumno, que permita almacenar los datos personales y cinco notas de un
alumno, además debe contener métodos que permita obtener la menor nota obtenida así como
el promedio final sin considerar la menor nota, una observación si el alumno aprobó o no la
asignatura.
Escribir una aplicación cree una instancia de la clase Alumno, utilice la Leer, para ingresar
datos, utilice paquetes y ocultamiento de información para resolver este ejercicio.
4. Defina la clase Libro, que permita almacenar los datos de los libros de una biblioteca.
Escribir la aplicación que cree la instancia de la clase Libro, utilice la clase Leer, para ingresar
los datos, haga uso de paquetes y ocultamiento de información para resolver este ejercicio.
5. Defina la clase Circulo, que permita obtener el área y la longitud de un circulo.
Escribir una aplicación que cree una instancia de la clase Circulo, utilice la clase Leer, para
ingresar el radios del circulo. Utilice constructores y ocultamiento de información para resolver
este ejercicio.
6. Defina la clase Rectangulo, que permita calcular el área de un rectángulo, la clase tiene cuatro
atributos que indican las coordenadas de los vértices.
La clase debe tener dos métodos constructores, uno que contenga cuatro parámetros y el
segundo constructor sin parámetros, inicialice los argumentos con los valores; 1, 2, 1 y 4respectivamente.
Escribir una aplicación que cree una instancia de la clase Rectangulo, utilice la clase Leer, para
ingresar los cuatros argumentos.
7. Realice el siguiente ejercicio:
a) Diseñe e implemente en Java una clase para trabajar con triángulos isósceles. Para ello,defina las variables de ejemplar mínimas que requiera, proporcione métodos de consulta,e implemente otros métodos para calcular el perímetro y el área de un triángulo.
b) Implemente en Java un método que a partir de una matriz de triángulos devuelva el áreadel triángulo de mayor superficie.
8. El siguiente diagrama de clases, incompleto, representa la estructura básica de un programapara recopilar los encargos de productos de una compañía.
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 27/31
www.zonajava.net
Página | 4
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
Escriba una versión en Java de la clase Producto. Incluya métodos que permitanacceder a la información del producto.
9. ¿Cuál es el resultado del siguiente programa?
class Ejercicio {
public static void main(String [ ] args){
Clase1 obj1=new Clase1();
obj1.imprimir(24.3,5);
}
}
class Clase1 {
private double valor=9.8;
private int x=7;
public void imprimir(double valor, int x) {
System.out.print(valor+” “+this.x);
}
}
10. ¿Qué imprime el siguiente programa?
class Ejercicio {
public static void main (String [] args) {
Clase1 obj1 = new Clase1(5,4);
System.out.print(obj1.modificar(4)+" ");Clase1 obj2 = new Clase1(5,4);
System.out.print(obj2.modificar(5)+" ");
obj2 = obj1;
System.out.println(obj2.modificar(5)+" ");
}
}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 28/31
www.zonajava.net
Página | 4
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
class Clase1{
int p1,p2;
public Clase1 (int i, int j){
p1=i;p2=j;
}
public int modificar(int i){ p1=p1+i; p2=p2+i;
System.out.print(p2+" ");
return p1;
} }
11. Desarrolle un programa que sirva para evaluar el valor de un polinomio, cuyo grado y coeficientesse introducen por teclado, en un valor de abscisa determinado.
12. ¿Cuál es el error del siguiente programa?
class Cuenta {
protected int numero_cuenta;
protected double saldo;
public Cuenta(int cuenta, double inicial) {
numero_cuenta=cuenta;
saldo = inicial;
}
public void depositar(double cantidad) {
saldo = saldo + cantidad;
}
public double saldo(){
return saldo;
}
}
class Banco {
public static void main(String [] args) {
Cuenta cuenta_1 = new Cuenta(123456, 2505.32);
double total_cuenta = cuenta_1.saldo;
System.out.println(“Total actual en la cuenta: “
+total_cuenta +” Euros”);
}
}
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 29/31
www.zonajava.net
Página | 4
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
13. Un teatro se caracteriza por su nombre y su dirección y en él se realizan 4 funciones al día. Cadafunción tiene un nombre y un precio. Realice el diseño de clases e indique qué métodos tendríacada clase, teniendo en cuenta que se pueda cambiar el nombre del teatro y el nombre y precio de
la función. Implemente dichas clases.
14. a) ¿Qué imprime el siguiente programa? b) ¿Y si prop en Clase1 no la declaramos como static?
class Ejercicio {
public static void main (String [] args) {
Clase1 obj1= new Clase1(7);
Clase1 obj2= new Clase1(9); obj2=obj1;
System.out.print(obj1.valorprop()+" ");
System.out.print(obj2.valorprop()+" ");
}
}
class Clase1{ static int prop=0;
public Clase1 (int valor){
prop=valor;
}
public int valorprop(){ return prop;
}
}
15. Dado el siguiente fragmento de código:
Ordenador sobremesa;
Ordenador portatil;
sobremesa = new Ordenador();
sobremesa.precio(900);
portatil = new Ordenador();
portatil.precio(1100);
portatil = sobremesa; sobremesa = null;
¿Qué afirmación es cierta?
a) Al final tanto el objeto sobremesa como el objeto portátil apuntan a nullb) Al final sólo queda un objeto de tipo Ordenador con precio 1100c) Al final sólo queda un objeto de tipo Ordenador con precio 900d) Al final hay dos objetos de tipo Ordenador, uno con precio 900 y otro con precio 1100
16. ¿Qué imprime el siguiente programa?
class Principal {
public static void main(String[] args) {
Autor autor = new Autor ("Paul", "Auster");
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 30/31
www.zonajava.net
Página | 4
Algoritmos y Estructura de Datos
Ing. Raúl Enrique Fernández Bejarano
Libro libro = new Libro ("La trilogía de Nueva York", autor);
System.out.println (libro.getTitulo()+" de " +
(libro.getAutor()).toString());
}
}
class Libro {
private String titulo;
private Autor autor;
public Libro(String titulo, Autor autor) {
this.titulo = titulo;
this.autor = autor;
}
public Autor getAutor() {
return autor;
}
public String getTitulo() { return titulo;
}
}
class Autor {
private String nombre; private String apellido;
public Autor (String nombre, String apellido) {
this.nombre = nombre;
this.apellido = apellido;
}
public String toString () {
return nombre+ " " +apellido;
}
}
17. ¿Qué imprime el siguiente programa?
class Alumno {
String nombre = "Alumno 1";
char grupo = 'A';
char devolvergrupo() {
return grupo; }
void cambiargrupo(char nuevogrupo) {
grupo = nuevogrupo;
}
void imprimir() {
System.out.println("Nombre: " + nombre);
System.out.println("Grupo: " + devolvergrupo());
5/16/2018 Capitulo2 POO Tecnicas - slidepdf.com
http://slidepdf.com/reader/full/capitulo2-poo-tecnicas 31/31
www.zonajava.net
Página | 5
Ing. Raúl Enrique Fernández Bejarano
Universidad Peruana Los Andes
} }
class Principal {
public static void main (String[] args) {
Alumno a1 = new Alumno();
System.out.println("Objeto a1:\n-----------\n");
a1.imprimir();
System.out.println("\nLlamada al metodo prueba1(a1).\n");
prueba1(a1);
a1.imprimir();
System.out.println(" ");
Alumno a2 = new Alumno();
System.out.println("\nObjeto a2:\n-----------\n");
a2.imprimir();
System.out.println("\nLlamada al metodo prueba2(a2).\n");prueba2(a2);
System.out.println("\nEn main: Fuera ya del metodo prueba2.
\n");
a2.imprimir();
}
static void prueba1(Alumno b) {
b.cambiargrupo('B');
}
static void prueba2(Alumno b) {
b = new Alumno();
b.cambiargrupo('B');
System.out.println("\nDentro del metodo prueba2. \n");b.imprimir();
}
}
18. En una tienda cada factura se representa por su número y una serie de productos. Cada producto secaracteriza por su código alfanumérico y su precio. Se pide:
a) Dibujar el diagrama de clases indicando las relaciones entre las mismas y los miembros quehay en cada una. Debe incluir métodos para la consulta del número de factura y el/los productosde la factura y métodos para actualización de los datos del/los productos.
b) Implemente en Java dichas clases
c) Implemente un programa principal donde se imprima una factura con los siguientesproductos: (código: C1, precio: 24 euros), (código: H23, precio: 234 euros) y (código:M30, precio: 109 euros). A continuación debe cambiarse el segundo producto de lafactura por el siguiente (código: K123, precio:247 euros) y volver a imprimir la factura