Sie sind auf Seite 1von 20

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERIA ELECTRICA Y


ELECTRONICA
ESCUELA DE INGENIERIA ELECTRONICA
SEPARATA
5.- PROGRAMACIN JAVA :
EJEMPLOS PRACTICOS EN
ORIENTACION A
OBJETOS - HERENCIA
CURSO :
PROGRAMACION DIGITAL II
PROFESOR:
FERNANDO MENDOZA APAZA
AO : 2010
1
CONSTRUCTORES.
Un Constructor es un mtodo especial en Java empleado para inicializar valores
en Instancias de Objetos, a travs de este tipo de mtodos es posible generar
diversos tipos de instancias para la Clase en cuestin; la principal caracterstica
de este tipo de mtodos es que llevan el mismo nombre de la clase, a
continuacin se describen varios ejemplos utilizando constructores
Cdigo Fuente Arboles.java.
public class Arboles {
public Arboles() {
System.out.println("Un rbol genrico");
}
public Arboles(String tipo) {
System.out.println("Un rbol tipo " + tipo);
}
public Arboles(int altura) {
System.out.println("Un rbol de " + altura + " metros");
}
public Arboles(int alturaString tipo) {
System.out.println("Un " + tipo + " de " + altura + "
metros");
}
public static !oid main(String args"#) {
Arboles arbol$ % ne& Arboles(');
Arboles arbol( % ne& Arboles(")oble");
Arboles arbol* % ne& Arboles();
Arboles arbol' % ne& Arboles(+",ino");
}
}
2
Herencias ("Ineritance"!
Uno de las partes medulares en un lenguaje orientado a Objetos es el uso de
!erencias "#In$eritance#% , el cual permite reutilizar Clases e&istentes con todas
las 'uncionalidades(comportamientos )a dise*adas en ellas; en !erencias
"#In$eritance#% el termino reutilizable toma otro sentido al utilizado en la
secciones anteriores al importarse Clases "import%, uno m+s complejo )
poderoso, observe
,l primer diagrama U-. "#Universal -ar/up .anguage#% muestra 0
Clases"Guitarra,Piano,Saxofn% que $eredan "#In$erit#% de una Clase 1ase
"Instrumento%,mientras el segundo diagrama muestra 2 Clases
"Circulo,Triangulo% que $eredan "#In$erit#% de una Clase 1ase "Figura%; este
mecanismo permite que nuevas Clases hereden el comportamiento de una Clase
1ase )a depurada ) 'uncional, en el proceso teniendo acceso a los
mtodos(campos )a creados con anterioridad ; a continuacin se describe un
ejemplo que $ace uso de !erencias "#In$eritance#%
C"#I$O FUENTE MINICOMPONENTE.JAVA
class )adio {
pri!ate String r % ne& String(")adio- ");
3

public !oid agrega(String a) { r +% a; }
public !oid imprimir() { System.out.println(r); }

public !oid .recuencia() { agrega(" .recuencia()
"); }
public !oid !olumen() { agrega(" !olumen() "); }
public !oid modelo() { agrega(" modelo() "); }
public static !oid main(String"# args) {
)adio / % ne& )adio();
/..recuencia() ; /.!olumen(); /.modelo();
/.imprimir();
}
}
public class 0ini1omponente e/tends )adio {
22 1ambiar el metodo ("3!erride")
public !oid !olumen() {
agrega( " 0ini1omponente.!olumen() ");
super.!olumen(); 22 4lamar la !ersion de la 1lase
5ase
}
22 Agregar metodo
public !oid e6uali7ador() { agrega(" e6uali7ador()
"); }
public static !oid main(String"# args) {
0ini1omponente / % ne& 0ini1omponente();
/..recuencia();
/.!olumen();
/.modelo();

/.e6uali7ador();
/.imprimir();
System.out.println(",robar la 1lase 5ase- ");
)adio.main(args);
}
}
#e%inicin de #os Clases & Herencias ("Ineritance"!.
Como se puede observar, $an sido de'inidas dos Clases en el mismo arc$ivo
'uente llamado 0ini1omponente.8a!a, el $ec$o que e&istan dos Clases en el mismo
arc$ivo 'uente no in'lu)e en ning3n 'actor, en este caso se opto por dic$o dise*o
debido a razones did+cticas, aunque bien se pudo $aber realizado el dise*o de
este manera por razones administrativas, de cualquier manera, ntese que se
sigue cumpliendo la caracterstica de una Clase Java debe ser de'inida al menos
una Clase con el mismo nombre del arc$ivo 'uente4
,ntrando al problema espacial (real!, es posible a'irmar que todo
-iniComponente inclu"e un 5adio "6-(7-% entre sus dispositivos , debido a esto
se $a decidido reutilizar(#eredar! el comportamiento de una Clase 1ase de
5adio, a continuacin se describe la Clase 5adio4
Clase Radio.
Como cualquier Clase Java se utiliza el vocablo class, sin embargo, no se
utiliza ning3n cali'icador de acceso, por lo que esta Clase solo ser+ accesible
internamente "O al paquete #pac/age# si 'uera incluida en alguno %;esto es lo
que se re'iere como acceso amigable, descrito en la seccin de Calificadores4
8e de'ine un campo tipo String con la re%erencia r, el cual es asignado un
valor inicial de ")adio- "4
,l primer mtodo llamado agrega, toma como valor de entrada un String )
su 'uncin es concatenar diversos 8tring9s, ntese que se utiliza el operador
+%; a travs de este operador es posible concatenar diversos elementos, en
5
esta de'inicin se esta declarando que el 8tring de entrada "a% debe ser
concatenado con el 8tring r el cual es el campo de'inido en la Clase4
.os mtodos .recuencia !olumen ) modelo $acen uso del mtodo agrega
concatenando distintos valores4
7inalmente el mtodo imprimir $ace uso de la Clase System.out.println para
enviar a pantalla el valor del 8tring r "el campo de la Clase%4
,n el mtodo principal " main % se genera una instancia de la Clase )adio,
posteriormente a travs de la respectiva re%erencia se mandan llamar los
distintos mtodos de la Clase4
Una vez compilado el cdigo 'uente, es posible ejecutar la Clase )adio a travs
del comando 8a!a )adio ) observar los resultados iniciales4
Clase 'iniCom(onente.
6l de'inir esta Clase se utiliza el vocablo e/tends que implica !erencia
"#In$eritance#%, seguido de ste se indica la Clase que ser+ $eredada
"#In$erited#%, en este caso )adio4
,l primer mtodo de'inido se llama !olumen, ntese que en la Clase )adio
tambin e&iste un mtodo con este nombre, dentro de esta Clase se esta
modi'icando el comportamiento de dic$o mtodo, esto es conocido como
o$erride en lenguajes orientados a Objetos4
:entro de este mismo mtodo, inicialmente se $ace una llamada al mtodo
agrega, si observa el resto de la composicin de esta Clase notar+ que no
e&iste ninguno por este nombre, sin embargo, dentro de la Clase 1ase e&iste
dic$o mtodo, en este caso se esta $aciendo uso de los mtodos de la Clase
1ase4
.a segunda llamada en este mtodo es super.!olumen, el vocablo super
indica una llamada $acia la Clase 1ase ")adio%, a travs de esta linea se esta
realizando una llamada $acia el mtodo !olumen de'inido en )adio; el vocablo
!
super es utilizado en los casos donde surge una ambig;edad de nombres
entre la Clase $eredada ) base4
8e de'ine un mtodo nuevo llamado e6uali7ador, que tambin $ace uso del
mtodo agrega4
:entro del mtodo principal main se genera una instancia de la Clase
0ini1omponente, seguido de diversas llamadas a distintos mtodos, ntese que
aquellos no de'inidos dentro de la Clase, son llamados con la implementacin
de la Clase 1ase4
,n el 3ltimo paso del mtodo main se realiza una llamada $acia el otro
mtodo main de'inido en la Clase )adio4
Una vez compilado el cdigo 'uente, es posible ejecutar la Clase 0ini1omponente a
travs del comando 8a!a 0ini1omponente ) observar los resultados iniciales as
como las variaciones de comportamiento en la Clase )adio4
CON#ICION)*ES IF/ELSE.
,n Java al igual que otros lenguajes son utilizados condicionales que permiten
controlar el 'lujo de ejecucin en un programa, los tres principales tipos son el
conocido if%else,&hile ) for; a continuacin se describen varios ejemplos con el
uso de if%else
C"#I$O FUENTE CONDICIONAL.JAVA
public class 1ondicional {
static int analisis(int prueba int ob8eti!o) {
int resultado % 9;

i.(prueba : ob8eti!o)
resultado % +$;
else i.(prueba ; ob8eti!o)
"
resultado % <$;
else
resultado % 9; 22 ,rueba igual a 3b8eti!o
return resultado;
}
public static !oid main(String"# args) {
System.out.println(analisis(= *));
System.out.println(analisis(* =));
System.out.println(analisis(= =));
}
}
Clase Condicional.+a,a
<rimeramente se declara la Clase atravs del vocablo class4
,s de'inido un mtodo llamado analisis el cual retorna una respuesta en base a
las operaciones del condicional if%else; una caracterstica de este mtodo es que
utiliza el cali'icativo static, esto se debe a que es llamado directamente del mtodo
principal main el cual tambin es static; debido a que el vocablo static es
empleado en mtodos que no requieren instancias, si se realiza un llamado $acia
determinado mtodo de uno static ste tambin deber+ ser static, esto garantiza
un posible error al invocar mtodos estaticos4
:entro del mtodo principal "main% es invocado el mtodo analisis en tres
ocasiones, imprimiendo los respectivos resultados a pantalla4
Uso de llaves "' (% en Ciclos4
Una caracterstica del ciclo if%else as como los otros ciclos disponibles en Java es el uso
de llaves ' (, en el ejemplo anterior pudo notar que no 'ueron utilizadas llaves ' ( para
delimitar las condicionales, al no emplearse este mecanismo, se asume que el ciclo o
condicional tendr+ e'ecto 3nicamente en la linea contigua a su inicio46unque es
recomendable utilizar llaves "' ( % para incrementar la legibilidad del cdigo, es
importante se*alar que esta sinta&is de no utilizar llaves "' ( % es valida ) mu) com3n
")amentablemente% 4
#
,&iste otra variacin de if%else que agrupa las condicionales en una sola e&presin
i. (expresion Boolean > operacin verdadera - operacin
falsa)
6 continuacin se describe un ejemplo empleando esta variacin de if%else4
Codigo Fuente Tercia.java
public class ?ercia {
public static int trio(int r) {
return r ; $9 > r@* - r@((;
}
public static !oid main(String args"#) {
System.out.println(trio(());
System.out.println(trio((9));
}
}
Clase Tercia
,s de'inido un mtodo llamado trio el cual $ace uso de la variante if%else; la
e&presin boolean es r ; $9, si esta e&presin resulta verdadera es ejecutada la
operacin r@*, caso contrario r@((4
:entro del mtodo principal main es invocado el mtodo trio en dos ocasiones,
enviando a pantalla los respectivos resultados4
USO #E *OS CIC*OS FOR - WHILE
,l uso de Ciclos en lenguajes de programacin es un concepto ampliamente
utilizado, a continuacin se describe el uso del ciclo .or ) &Aile
SINT).IS #E* CIC*O FOR.
.a 8inta&is empleada por el ciclo for es la siguiente
.or (valores de entrada ; condicin de terminacin ;
iteracin por ciclo)
$
.as tres partes del ciclo se encuentran separadas por / "punto ) coma%
.a primer parte del ciclo especi'ica valores previo a su inicio4
.a segunda parte indica la condicin de terminacin para el ciclo, la cual
esta directamente relacionada con los valores iniciales4
7inalmente, la 3ltima parte especi'ica como ser+n manipulados los valores
iniciales en cada iteracin del ciclo4
Cada parte del ciclo debe incluir al menos un elemento, a la cual es posible
agregar otros elementos a partir de una 0 "coma%4
Cdigo Fuente PrebaFor.java

public class ,ruebaBor {
public static !oid main(String"# args) {
.or(int i % $ 8 % i + $9; i ; +; i++ 8 % i @ () {
System.out.println("i% " + i + " 8% " + 8);
}
}
}
Clase 1ruebaFor.
8e inicia este programa con la cl+sica de'inicin de class4
8e de'ine el mtodo principal " main %, el uso de corc$etes ""#% al lado de la
Clase 8tring indica un *rreglo de String+s4
8e de'ine el ciclo for con las siguientes caractersticas
:os variables iniciales "primitivos% i ) ,4
.a condicin para terminar el ciclo es de'inida cuando el valor de la
variable i sea menor =4
1%
Cada iteracin de ciclo el valor de la variable i debe ser incrementado
en uno "++% ) el valor de , debe ser igualado a dos veces el valor de i4
:entro del Ciclo se utiliza la Clase System.out.println para imprimir los
valores de las variables i ) , en cada iteracin de ciclo4
SINT).IS #E* CIC*O WHILE.
.a 8inta&is empleada por el ciclo &hile es la siguiente
&Aile (condicin de terminacin)
Consta de un solo elemento que indica la condicin de terminacin para un
Ciclo4
Cdigo Fuente PrebaW!ile.java
public class ,ruebaCAile {
public static !oid main(String"# args) {
double r % 9;
&Aile(r ; 9.DDd) {
r % 0atA.random();
System.out.println(r);
}
}
}
Clase 1rueba2ile.
8e inicia este programa de'iniendo la Clase en cuestin4
8e de'ine el mtodo principal " main %, el uso de corc$etes ""#% al lado de la
Clase 8tring indica un *rreglo de String+s4
8e de'ine un primitivo del tipo double con valor inicial de > "cero%4
11
,l ciclo &hile utiliza la condicin de terminacin $asta que el valor de la
variable d sea asignado un valor ma)or a >4??; la d al 'inal del numero indica
un n3mero "primitivo% del tipo double 4
:entro del ciclo, el valor de la variable es modi'icado con un numero
aleatorio a travs de la 'uncin 0atA.random 4
,s impreso a pantalla "va System.out.println% el valor de la variable r4
USO #E SWITCH.
6 travs de un S&itch se posible de'inir una serie de tareas cada una asignada a
una lista de valores, este tipo de estructura es ideal cuando se requieren
condicionales que lleven m+s de dos valores, en lugar de anidar grupos de
condicionales if%else es posible lograr el mismo comportamiento a travs de un
s&itch
SINT).IS #E* SWITCH.
.a 8inta&is empleada por un s&itch es la siguiente
s&itcA (variable) {
case ;posible !alor: - Enstrucciones - breaF;
case ;posible !alor: - Enstrucciones - breaF;
case ;posible !alor: - Enstrucciones - breaF;
case ;posible !alor: - Enstrucciones - breaF;
case ;posible !alor: - Enstrucciones - breaF;
de.ault - Enstrucciones ;
:ada una variable de entrada esta se de'ine seguido del vocablo s&itcA4
8e abre una llave para iniciar los posibles valores que pueda tomar dic$a
variable4.os juegos de valores son iniciados con case seguido del posible valor
de la variable, posteriormente es de'inido un juego de instrucciones que
12
ser+n ejecutados en caso de corresponder con el valor de la variable )
'inalmente "opcional% se utiliza vocablo breaF para salir de ciclo case-
Un valor opcional es la de'inicin de la linea de.ault, cu)as instrucciones
ser+n ejecutadas en caso que la variable del s&itch no coincida con los
valores de'inidos4
Cdigo Fuente Meses.java
public class 0eses {
public static !oid main(String"# args) {
int montA % G;
s&itcA (montA) {
case $- System.out.println("Hnero"); breaF;
case (- System.out.println("Bebrero"); breaF;
case *- System.out.println("0ar7o"); breaF;
case '- System.out.println("Abril"); breaF;
case +- System.out.println("0ayo"); breaF;
case I- System.out.println("Junio"); breaF;
case =- System.out.println("Julio"); breaF;
case G- System.out.println("Agosto"); breaF;
case D- System.out.println("Septiembre"); breaF;
case $9- System.out.println("3ctubre"); breaF;
case $$- System.out.println("Ko!iembre"); breaF;
case $(- System.out.println("Liciembre"); breaF;
}
}
}
Clase 'eses
8e de'ine un primitivo con valor de @, el cual es utilizado como variable para
un s&itch4
:entro del sAitc$ son de'inidos valores del B al B2, los cuales tienen como
instruccin imprimir a pantalla el valor del mes correspondiente4
13
Cuando se describi la 8inta&is de un s&itch se mencion que el uso de breaF al
'inal de cada declaracin "case% era opcional, esto se debe a la posibilidad que
e&ista m+s de un valor que deba ejecutar las mismas instrucciones, a
continuacin se describe este caso
Cdigo Fuente Meses".java
public class 0eses( {
public static !oid main(String"# args) {
int mes % $9;
int aMo % (99(;
int numLias % 9;
s&itcA (mes) {
case $-
case *-
case +-
case =-
case G-
case $9-
case $(-
numLias % *$;
breaF;
case '-
case I-
case D-
case $$-
numLias % *9;
breaF;
case (-
i. ( ((aMo N ' %% 9) OO P(aMo N $99 %% 9))
QQ (aMo N '99 %% 9) )
numLias % (D;
else
1
numLias % (G;
breaF;
}
System.out.println("Kumero de Lias % " + numLias);
}
}
Clase 'eses3
,n esta Clase el uso de s&itch vara, )a que son agrupados distintos valores, al
omitir el uso del vocablo breaF; el uso de breaF en un s&itcA es crtico )a que al
no ser de'inido puede ocasionar un comportamiento err+tico, )a que al no
indicarse se contin3an evaluando los distintos valores restantes en un s&itch,
posiblemente causando un comportamiento no deseado4 7inalmente, vale
mencionar que las datos que se puede evaluar a travs de un s&itch son solo
primitivos, esto es, no se puede de'inir un juego de String+s ) comparar sus
valores, para este tipo de situaciones "8tring u otro Objeto% se requiere usar
condicionales if%else anidadas4
4RE)56CONTINUE EN CIC*OS.
,n ciertas ocasiones surge la necesidad de interrumpir un ciclo si ocurre
determinada condicin, o bien, saltar una iteracin en ciertas circunstancias,
este comportamiento se logra a travs de los vocablos brea. ) continue, a
continuacin se describe su uso
C"#I$O FUENTE #REA$%CONTIN&E.JAVA
public class 5reaFR1ontinue {
public static !oid main(String"# args) {
.or(int i % 9; i ; $99; i++) {
i.(i %% =') breaF; 22 Buera de 1iclo
i.(i N D P% 9) continue; 22 Siguiente EteraciSn
15
System.out.println(i);
}
int i % 9;
22 Un ciclo "in.inito"-
&Aile(true) {
i++;
int 8 % i @ (=;
i.(8 %% $(ID) breaF; 22 Buera del 1iclo
i.(i N $9 P% 9) continue; 22 )egreso al Enicio del
1iclo
System.out.println(i);
}
}
}
Clase 4rea7-Continue
.a Clase 3nicamente contiene cdigo en su mtodo principal "main% descrito a
continuacin
8e inicia un ciclo for con cien iteraciones empleando la variable i, cada
iteracin es impreso el valor la variable a pantalla, salvo los siguientes casos
8i el valor de la variable i equivale a =' se termina todo el ciclo
debido al vocablo brea.4
8i la variable i no es m8lti(lo de 9 se interrumpe la iteracin actual
debido al vocablo continue4
6ntes de iniciarse un ciclo &Aile se reinicializa la variable i a cero4
:entro del ciclo se imprimen los valores de la variable i en cada iteracin,
e&cepto en los siguientes casos
8i el valor de la variable 8 equivale a $(ID se termina todo el ciclo
debido al vocablo brea.4
1!
8i la variable i no es m8lti(lo de :; se interrumpe la iteracin actual
debido al vocablo continue4
ETI<UET)S *)4E*S EN CIC*OS.
Otra variacin para interrumpir ) saltar iteraciones en ciclos es a travs de ,tiquetas
")abels%, este mecanismo logra un comportamiento similar al 'amoso, pero criticado
"goto"4 6unque su uso es permitido, es 'uertemente desalentado debido a la poca
legibilidad que resulta en el cdigo4
C"#I$O FUENTE LA#ELFOR.JAVA
public class 4abelBor {
public static !oid main(String"# args) {
int i % 9;
e/terno- 22 Le.inicSn de 4abel
.or(; true ;) { 22 1iclo En.inito
interno- 22 Le.inciSn de 4abel

.or(; i ; $9; i++) {
prt("i % " + i);

i.(i %% () {
prt("continue");
continue;
}
i.(i %% *) {
prt("breaF");
i++; 22 Encrementar antes del "5reaF"
breaF;
}
i.(i %% =) {
prt("continue e/terno");
i++; 22 Encrementar antes del "4abel"
continue e/terno;
1"
}
i.(i %% G) {
prt("breaF e/terno");
breaF e/terno;
}
.or(int F % 9; F ; +; F++) {
i.(F %% *) {
prt("continue interno");
continue interno;
}
}
}
}
}
static !oid prt(String s) {
System.out.println(s);
}
}
Resultados de E+ecutar Clase *abelFor
.os resultados de esta Clase son los siguientes
T 8a!a 4abelBor
i % 9
continue interno
i % $
continue interno
i % (
continue
i % *
breaF
i % '
continue interno
1#
i % +
continue interno
i % I
continue interno
i % =
continue e/terno
i % G
breaF e/terno
CO#I$O FUENTE LA#ELWHILE.JAVA
public class 4abelCAile {
public static !oid main(String"# args) {
int i % 9;
e/terno-
&Aile(true) {
prt("H/terno 1iclo &Aile");
&Aile(true) {
i++;
prt("i % " + i);
i.(i %% $) {
prt("continue");
continue;
}
i.(i %% *) {
prt("continue e/terno");
continue e/terno;
}
i.(i %% +) {
prt("breaF");
breaF;
}
i.(i %% =) {
prt("breaF e/terno");
1$
breaF e/terno;
}
}
}
}
static !oid prt(String s) {
System.out.println(s);
}
}
Resultados de E+ecutar Clase *abel2ile
.os resultados de esta Clase son los siguientes
T 8a!a 4abelCAile
H/terno 1iclo &Aile
i % $
continue
i % (
i % *
continue e/terno
H/terno 1iclo &Aile
i % '
i % +
breaF
H/terno 1iclo &Aile
i % I
i % =
breaF e/terno
2%

Das könnte Ihnen auch gefallen