Capitulo2 POO Tecnicas

31
 J J A A V V A A  P P r r o o g g r r a a m m a a c c i i ó ó n n  O O r r i i e e n n t t a a d d a a a a  O O b b j j e e t t o o s s 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.  Cap í ítulo 2 2  Contenido: 2.1. Introducción 2.2. Definición de clase 2.3. Creación de una clase en  java 2.4. Definición Objeto 2.5. Declaración de objetos 2.6.  Asignación de objetos 2.7.  Atributos 2.8. Métodos 2.9. Paquetes 2.10.  Ocultamiento de datos. 2.11.  Sobrecarga 2.12.  Constructores 2.13.  Constructores con parámetros 2.14.  Sobrecarga de Constructores 2.15.  Ejercicios

Transcript of Capitulo2 POO Tecnicas

Page 1: Capitulo2 POO Tecnicas

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

Page 2: Capitulo2 POO Tecnicas

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

Page 3: Capitulo2 POO Tecnicas

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

Page 4: Capitulo2 POO Tecnicas

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

Page 5: Capitulo2 POO Tecnicas

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();

Page 6: Capitulo2 POO Tecnicas

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.

Page 7: Capitulo2 POO Tecnicas

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( ) {

}}

Page 8: Capitulo2 POO Tecnicas

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

Page 9: Capitulo2 POO Tecnicas

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

}

Page 10: Capitulo2 POO Tecnicas

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

}

Page 11: Capitulo2 POO Tecnicas

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

Page 12: Capitulo2 POO Tecnicas

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

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

ar

Page 13: Capitulo2 POO Tecnicas

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

Page 14: Capitulo2 POO Tecnicas

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.

Page 15: Capitulo2 POO Tecnicas

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

Page 16: Capitulo2 POO Tecnicas

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

Page 17: Capitulo2 POO Tecnicas

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

Page 18: Capitulo2 POO Tecnicas

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

}}

Page 19: Capitulo2 POO Tecnicas

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

Page 20: Capitulo2 POO Tecnicas

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());

}

}

Page 21: Capitulo2 POO Tecnicas

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;

}

Page 22: Capitulo2 POO Tecnicas

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.

Page 23: Capitulo2 POO Tecnicas

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 

Page 24: Capitulo2 POO Tecnicas

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();

}

}

Page 25: Capitulo2 POO Tecnicas

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

Page 26: Capitulo2 POO Tecnicas

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.

Page 27: Capitulo2 POO Tecnicas

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)+" ");

}

Page 28: Capitulo2 POO Tecnicas

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”); 

}

}

Page 29: Capitulo2 POO Tecnicas

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");

Page 30: Capitulo2 POO Tecnicas

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());

Page 31: Capitulo2 POO Tecnicas

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