Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 53

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof.

Carpio
1

1. INTRODUCCIN A LA PROGRAMACIN ORIENTADA A OBJETOS.

1.1 Programacin Orientaa a O!"eto#.

La orientacin a objetos es un paradigma de programacin que facilita la creacin de software de calidad por sus factores que
potencian el mantenimiento, la etensin ! la reutili"acin del software generado bajo este paradigma.
La programacin orientada a objetos trata de amoldarse al modo de pensar del #ombre ! no al de la m$quina. %sto es posible
gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio del problema, ! a
propiedades como la jerarqu&a o el encapsulamiento.

%l elemento b$sico de este paradigma no es la funcin 'elemento b$sico de la programacin estructurada(, sino un ente
denominado objeto. )n objeto es la representacin de un concepto para un programa, ! contiene toda la informacin necesaria
para abstraer dic#o concepto* los datos que describen su estado ! las operaciones que pueden modificar dic#o estado, !
determinan las capacidades del objeto. +a,a incorpora el uso de la orientacin a objetos como uno de los pilares b$sicos de su
lenguaje.

1.$ Lo# o!"eto#.

Podemos definir objeto como el -encapsulamiento de un conjunto de operaciones 'm.todos( que pueden ser in,ocados
eternamente, ! de un estado que recuerda el efecto de los ser,icios-. %Piattini et a&.' 1(()*.

)n objeto adem$s de un estado interno, presenta una interfa" para poder interactuar con el eterior. %s por esto por lo que se dice
que en la programacin orientada a objetos -se unen datos ! procesos-, ! no como en su predecesora, la programacin
estructurada, en la que estaban separados en forma de ,ariables ! funciones.

)n objeto consta de*
Tiempo de ,ida* La duracin de un objeto en un programa siempre est$ limitada en el tiempo. La ma!or&a de los objetos
slo eisten durante una parte de la ejecucin del programa. Los objetos son creados mediante un mecanismo
denominado instanciacin, ! cuando dejan de eistir se dice que son destruidos.
%stado* Todo objeto posee un estado, definido por sus atributos. Con .l se definen las propiedades del objeto, ! el estado
en que se encuentra en un momento determinado de su eistencia.
Comportamiento* Todo objeto #a de presentar una interfa", definida por sus mtodos, para que el resto de objetos que
componen los programas puedan interactuar con .l.
%l equi,alente de un objeto en el paradigma estructurado ser&a una variable. /s& mismo la instanciacin de objetos equi,aldr&a a
la declaracin de variables, ! el tiempo de vida de un objeto al mbito de una variable.

1.+. La# c&a#e#.

Las clases son abstracciones que representan a un conjunto de objetos con un comportamiento e interfa" com0n.

Podemos definir una clase como -un conjunto de cosas 'f&sicas o abstractas( que tienen el mismo comportamiento !
caracter&sticas. %s la implementacin de un tipo de objeto 'considerando los objetos como instancias de las clases(-. )na clase no
es m$s que una plantilla para la creacin de objetos. Cuando se crea un objeto 'instanciacin( se #a de especificar de qu. clase es
el objeto instanciado, para que el compilador comprenda las caracter&sticas del objeto.

Las clases presentan el estado de los objetos a los que representan mediante ,ariables denominadas atributos. Cuando se instancia
un objeto el compilador crea en la memoria din$mica un espacio para tantas ,ariables como atributos tenga la clase a la que
pertenece el objeto.

Los mtodos son las funciones mediante las que las clases representan el comportamiento de los objetos. %n dic#os m.todos se
modifican los ,alores de los atributos del objeto, ! representan las capacidades del objeto 'en muc#os tetos se les denomina
servicios(.

1esde el punto de ,ista de la programacin estructurada, una clase se asemejar&a a un mdulo, los atributos a las ,ariables
globales de dic#o mdulo, ! los m.todos a las funciones del mdulo.





Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
2
1.,. Moe&o e o!"eto#.

%isten una serie de principios fundamentales para comprender cmo se modeli"a la realidad al crear un programa bajo el
paradigma de la orientacin a objetos. %stos principios son* la abstraccin, el encapsulamiento, la modularidad, la jerarqu&a, el
paso de mensajes ! el poliforfismo.
a.) Principio de Abstraccin.
3ediante la abstraccin la mente #umana modeli"a la realidad en forma de objetos. Para ello busca parecer entre la realidad ! la
posible implementacin de objetos del programa que simulen el funcionamiento de los objetos reales.

Los seres #umanos no pensamos en las cosas como un conjunto de cosas menores4 por ejemplo, no ,emos un cuerpo #umano
como un conjunto de c.lulas. Los #umanos entendemos la realidad como objetos con comportamientos bien definidos. 5o
necesitamos conocer los detalles de porqu. ni cmo funcionan las cosas4 simplemente solicitamos determinadas acciones en
espera de una respuesta4 cuando una persona desea despla"arse, su cuerpo le responde comen"ando a caminar.

Pero la abstraccin #umana se gestiona de una manera jer$rquica, di,idiendo sucesi,amente sistemas complejos en conjuntos de
subsistemas, para as& entender m$s f$cilmente la realidad. %sta es la forma de pensar que la orientacin a objeto intenta cubrir.

b.) Principio de Encapsulamiento.
%l encapsulamiento permite a los objetos elegir qu. informacin es publicada ! qu. informacin es ocultada al resto de los
objetos. Para ello los objetos suelen presentar sus m.todos como interfaces p0blicas ! sus atributos como datos pri,ados e
inaccesibles desde otros objetos.

Para permitir que otros objetos consulten o modifiquen los atributos de los objetos, las clases suelen presentar m.todos de acceso.
1e esta manera el acceso a los datos de los objetos es controlado por el programador, e,itando efectos laterales no deseados.

Con el encapsulado de los datos se consigue que las personas que utilicen un objeto slo tengan que comprender su interfa",
ol,id$ndose de cmo est$ implementada, ! en definiti,a, reduciendo la complejidad de utili"acin.

c.) Principio de Modularidad.
3ediante la modularidad, se propone al programador di,idir su aplicacin en ,arios mdulos diferentes '!a sea en forma de clases
o bibliotecas(, cada uno de ellos con un sentido propio. %ste disminu!e el grado de dificultad del problema al que da respuesta el
programa, pues se afronta el problema como un conjunto de problemas de menor dificultad ! facilita la comprensin del
programa.

d.) Principio de Jerarqua.
La ma!or&a de nosotros ,e de manera natural nuestro mundo como objetos que se relacionan entre s& de una manera jer$rquica.
Por ejemplo, un perro es un mam&fero, ! los mam&feros son animales, ! los animales seres ,i,os...

1el mismo modo, las distintas clases de un programa se organi"an mediante la jerarqua. La representacin de dic#a organi"acin
da lugar a los denominados rboles de herencia* Clase Padre, Clase 6ija1, Clase 6ija2, Clase 5ieta1, Clase 5ieta 2, Clase 5ieta
7.

3ediante la herencia una clase hija puede tomar determinadas propiedades de una clase padre. /s& se simplifican los dise8os ! se
e,ita la duplicacin de cdigo al no tener que ,ol,er a codificar m.todos !a implementados. /l acto de tomar propiedades de una
clase padre se denomina heredar.

e.) Principio del Paso de Mensajes.
3ediante el denominado paso de mensajes, un objeto puede solicitar de otro objeto que realice una accin determinada o que
modifique su estado. %l paso de mensajes se suele implementar como llamadas a los m.todos de otros objetos. 1esde el punto de
,ista de la programacin estructurada, esto corresponder&a con la llamada a funciones.

f.) Principio de Polimorfismo.
Polimorfismo quiere decir -un objeto ! muc#as formas-. %sta propiedad permite que un objeto presente diferentes
comportamientos en funcin del conteto en que se encuentre. Por ejemplo un m.todo puede presentar diferentes
implementaciones en funcin de los argumentos que recibe, recibir diferentes n0meros de par$metros para reali"ar una misma
operacin, ! reali"ar diferentes acciones dependiendo del ni,el de abstraccin en que sea llamado.

1.- Re&acione# entre o!"eto#.
1urante la ejecucin de un programa, los di,ersos objetos que lo componen #an de interactuar entre s& para lograr una serie de
objeti,os comunes.




Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
7

$. INTRODUCCIN A JA.A.

$.1 Origen e Ja/a. +a,a fue dise8ado en 199: por +ames ;osling, de <un 3icros!stems, como software para dispositi,os
electrnicos* como calculadoras, microondas ! la tele,isin interacti,a. Curiosamente, este lenguaje fue dise8ado antes de que
diese comien"o la era =orld =ide =eb.
Inicialmente +a,a se llam Oa> 'roble en ingl.s(, aunque tu,o que cambiar de denominacin, debido a que dic#o nombre !a
estaba registrado por otra empresa. <e dice este nombre se le puso debido a la eistencia de tal $rbol en los alrededores del lugar
de trabajo de los promotores del lenguaje.
Tres de las principales ra"ones que lle,aron a crear +a,a son*
1. Creciente necesidad de interfaces muc#o m$s cmodas e intuiti,as que los sistemas de ,entanas que proliferaban #asta el
momento.
2. ?iabilidad del cdigo ! facilidad de desarrollo. ;osling obser, que muc#as de las caracter&sticas que ofrec&an C o C@@
aumentaban de forma alarmante el gran costo de pruebas ! depuracin. Por ello en sus ratos libres cre un lenguaje de
programacin donde intentaba solucionar los fallos que encontraba en C@@.
7. %norme di,ersidad de controladores electrnicos. Los dispositi,os electrnicos se controlan mediante la utili"acin de
microprocesadores de bajo precio ! reducidas prestaciones, que ,ar&an cada poco tiempo ! que utili"an di,ersos
conjuntos de instrucciones. +a,a permite escribir un cdigo com0n para todos los dispositi,os.
/unque muc#as de las fuentes consultadas se8alan que +a,a no lleg a caer en un ol,ido, lo cierto es que tu,o que ser Aill +o!
'cofundador de <un ! uno de los desarrolladores principales del sistema operati,o )ni de Aerc>le!( el que sac a +a,a del letargo
en que estaba sumido. +o! ju"g que Internet podr&a llegar a ser el campo adecuado para disputar a 3icrosoft su primac&a en el
terreno del software, ! ,io en Oa> el instrumento idneo para lle,ar a cabo estos planes.
Para poder presentarlo en sociedad se tu,o que modificar el nombre de este lenguaje de programacin, cuando un grupo de
empleados de <un ,isit una cafeter&a local, sugiriern el nombre de +a,a 'como se conoce tambi.n en ingl.s al caf.( ! se tu,o
que reali"ar una serie de modificaciones de dise8o para poderlo adaptar al propsito mencionado. /s& +a,a fue presentado en
sociedad en agosto de 199B.
$.$ Caracter0#tica# 1rinci1a&e# e Ja/a.

M2&titarea o M2&ti3i&o 4m2&tit3reae5. +a,a permite reali"ar muc#as acti,idades simult$neas en un programa. Las
acti,idades o tareas a ,eces llamadas, procesos ligeros o #ilos de ejecucin, son b$sicamente peque8os procesos o pie"as
independientes de un gran proceso. /l estar estas tareas construidas en el mismo lenguaje, son m$s f$ciles de usar.

%l beneficio de ser multitarea consiste en un mejor rendimiento interacti,o ! mejor comportamiento en tiempo real.
/unque el comportamiento en tiempo real est$ limitado a las capacidades del <istema Operati,o ')ni, =indows, 3acO<, etc.(
de la plataforma.

Din6mico. +a,a se beneficia todo lo posible de la tecnolog&a Orientada a Objetos ! no intenta conectar todos los mdulos
que comprenden una aplicacin #asta el mismo tiempo de ejecucin. Las librer&as nue,as o actuali"adas no parali"ar$n la
ejecucin de las aplicaciones actuales.

Bi!&ioteca e c&a#e# e Ja/a 4API A11&ication Programming Inter7ace8 Inter7a9 e Programacin e
A1&icacione#5.

Los programas +a,a consisten en pie"as llamadas clases ! m.todos. <e puede programar cada pie"a que se ,a!a a
necesitar para formar un programa +a,a, pero la ma!or&a de los programadores que usan +a,a apro,ec#an las ricas colecciones de
clases ! m.todos que eisten !a en las bibliotecas de clases de +a,a. Por tanto, el aprendi"aje del mundo de +a,a tiene en realidad
dos aspectos.

%l primero es aprender el Lenguaje +a,a 'sintaxis( mismo para poder programar clases ! m.todos propios.
%l segundo consiste en aprender usar las clases ! m.todos de las etensas bibliotecas de clases de +a,a /PI.

Las Aibliotecas de la /PI de +a,a consisten de ,arios paquetes, cada uno de los cuales contiene ,arias clases que se
agrupan de acuerdo con su funcionalidad. %stas clases consisten de campos y mtodos.




Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
C

Con e#ta# !i!&ioteca# 1oemo# rea&i9ar &a# #ig2iente# accione#:

Inter7ace# e 2#2ario' Animacin ; Proce#amiento e Im6gene# 4"a/a.a<t5 4A=T8 A!#tract =ino< Too&>it5.
<ir,e para crear interfaces atracti,as 0tiles para applets. Por ejemplo* +a,a.awt.;rap#ics, /pplet.getImgae'( ! men0s.
A11&et#. 4"a/a.a11&et5. <ir,e para crear applets e interactuar con el na,egador. Por ejemplo ja,a.appet./pplet.
A1&icacione# e Entraa ; #a&ia 4"a/a.io5. <ir,e para comunicar un programa en Lenguaje +a,a 'entradaDsalida(. Por
ejemplo* <!stem.out.println'(4
Com2nicacin 4"a/a.net5. <ir,e para comunicarse con otras fuentes de informacin en red o Internet. Por ejemplo*
ja,a.net.ser,er<oc>et.
Mane"o e ato# 4"a/a.&ang5. <ir,e para el manejo de datos b$sicos, manejo de errores, seguridad al cliente al na,egar
en Internet, este paquete es el cora"n del Lenguaje +a,a, inclu!e una gran ,ariedad de m.todos. Por ejemplo* 3.todos
matem$ticos utili"ando la clase 3at#. <!stem.out.println'3at#.ma'2,E((4 el resultado en pantalla es ?.

$.+ A1&icacione# en Ja/a.

+a,a en ma!o de 199B #i"o surgir un inter.s inmediato en la comunidad de los negocios en ,ista de la magnitud del inter.s
comercial por la =orld =ide =eb. +a,a no era un lenguaje acad.mico como otros lenguajes 'C, Pascal, etc.(, m$s bien, +a,a
#ab&a dise8ado con moti,os comerciales, principalmente para desarrollar sistemas relacionados con la Internet, la =orld =ide
=eb.

A1&icacione#:

Bases de Datos. +1AC '+a,a 1ataAase Conecti,it!(, adem$s un doble traductor bridge 'puente( llamado
+1ACO1ACdri,er.
Sistemas Expertos. /PI /I3/ de +a,a 'algoritmos de b0squeda #eur&stica* /F, I1/F, Profundidad, /nc#ura,
Profundidad Iterati,a, 6illclimbing ! <imulated /nneling(
Telefona mvil* +a,a +23%D3I1P 1.: 'Tel.fono m,il* <iemens CBB, 5o>ia GG1:(.
Ingeniera Web. Plataforma +2%% '+a,a 2 Platform, %nterprise %dition(, Tecnolog&as +a,a <er,let, +<P '+a,a<er,er Page(
! +<TL '+<P <tandard Tag Librar!(.
$., @erramienta# e e#arro&&o en Ja/a.
$.,.1 Eicin. %l programa fuente en +a,a terminan con la etensin ja,a. <e puede crear un programa utili"ando cualquier editor
de teto plano /<CII, aunque actualmente se utili"an los %ntornos Integrados de 1esarrollo que proporcionan editores espec&ficos
para +a,a con caracter&sticas de edicin a,an"ada, como coloracin de sintais, autocompletado de sentencias, etc. Por ejemplo
Jcreator, o awa.
Primer programa que imprime un mensaje H6ola 3undoI en la pantalla.
// Hola.java
class Hola{
public static void main(String args[]) {
System.out.println("Hola Mundo!");


AA @o&a."a/a. Comentarios unil&nea.
c&a## @o&aB

%sta l&nea declara la clase @o&a. %l nombre de la clase especificado en el arc#i,o fuente se utili"a para crear un arc#i,o
nombredeclase.class en el directorio que se compila la aplicacin. %n este caso, el compilador crear$ un arc#i,o llamado
@o&a.c&a##.

12!&ic #tatic /oi main4String arg#%*5 B
%sta l&nea especifica el m.todo que el int.rprete +a,a busca para ejecutar en primer lugar. La palabra cla,e, main, para especificar
la primera funcin a ejecutar. %n este ejemplo no se pasan argumentos.
public significa que el m.todo main45 puede ser llamado por cualquiera, inclu!endo el int.rprete +a,a.
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
B
static es una palabra cla,e del Lenguaje le dice al compilador que main se refiere a la propia clase @o&a.
void indica que main45 no de,uel,e ning0n ,alor.
args!" es la declaracin de un arreglo tipo String.
S;#tem.o2t.1rint&n4C@o&a M2noDC5E
Jsta es la funcionalidad de la aplicacin. %sta l&nea muestra el uso de un nombre de clase ! m.todo. <e usa el m.todo printfln#) de
la clase o2t que est$ el paquete S;#tem, permite presentar en la salida est$ndar del <istema el argumento que se le pase. %n este
caso, muestra en pantalla la cadena @o&a M2noD
F
F
?inalmente , se cierran las lla,es que limitan el m.todo main45 ! la clase @o&a.
$.,.$. Com1i&acin.
%l compilador Javac se encuentra en el directorio bin dentro del directorio Java, o aquel donde se #a!a instalado la plataforma
+a,a. %l compilador de +a,a traslada el cdigo fuente +a,a a b!tes, que son los componentes que entiende la M$quina %irtual
Java que est$ incluida en los na,egadores con soporte +a,a.
)na ,e" creado el programa fuente hola.java se puede compilar introduciendo la siguiente l&nea de comandos*
"a/ac @o&a."a/a
<i no se #an cometido errores al editar el programa, ni se #an tenido problemas con el P/T6 a la #ora de especificar el directorio
del programa fuente ! del compilador, no deber&a aparecer mensaje alguno en la pantalla, ! cuando ,uel,a a aparecer el prompt
del sistema, se deber&a ,er un programa &ola.class nue,o en el directorio donde se encuentra el programa fuente.
<i aparece alg0n problema, es necesario editar de nue,o el programa para re,isar el tipo de error ! nue,amente compilar el
programa fuente.
$.,.+ E"ec2cin.
Para ejecutar la aplicacin @o&a.c&a##, se utili"a el int.rprete "a/a, que tambi.n se encuentra en el directorio bin. <e ejecutar$ la
aplicacin con la l&nea*
Ja/a @o&a
K deber&a aparecer en pantalla la respuesta de +a,a*
@o&a M2noD
Cuando se ejecuta una aplicacin +a,a, el int.rprete +a,a busca e in,oca el m.todo main45 de la clase cu!o nombre coincide con
el nombre del arc#i,o 6ola.class que se indique en la l&nea de comandos.





Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
G
PLANTILLA DE UN PROGRAMA JA%A.

$.,.,. E& 1rimer a11&et e Ja/a.
)n a11&et es un programa que anima una porcin de una p$gina =eb. <e recupera a partir de la red ! corre en la m$quina del
usuario, pero con muc#as restricciones de modo que no pueda afectar la integridad del ambiente del usuario.

/ continuacin ,eremos ,ersin a11&et del ejemplo anterior. %s decir un programa que coloca en una p$gina =eb el mensaje
I6ola 3undo /ppletLI.
Crear el programa fuente 6ola/p.java*
/* !jemplo de un "pplet # Hola"p.java */
import java.a$t.%rap&ics;
import java.applet."pplet;
public class Hola"p e'tends "pplet{
public void paint(%rap&ics g){
g.dra$String("Hola mundo "pplet!!"()*()*);
F
F
FD



FD






class


{
public static void main(String arg[])
{








import
import
+omentarios
<ir,e para describir
el programa
Sentencias import
Llama los paquetes de las
bibliotecas para cargar las clases
de +a,a o Interfa" de +a,a /PI,
para compilar el programa.

,ombre de la clase
5ombre descripti,o de la clase
principal
+uerpo del M-todo
<ir,e para escribir todas las
instrucciones necesarias para que
funcione el m.todo.
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
M
Compilar con* javac HolaAp.java
1ado que un a11&et no se in,oca desde el int.rprete de comandos, no tiene sentido definir el m.todo main. %l browser =eb
notifica al a11&et que debe dibujar su contenido in,ocando el m.todo paint. %sto ocurre cada ,e" que se muestra la porcin
de la p$gina html que contiene este a11&et. Por lo tanto un a11&et debe definir el m.todo paint 'en ,e" de main(.
Las instrucciones*
import java.awt.Graphics;
import java.applet.Applet;
indican que dentro del arc#i,o las clases java.awt.Graphics ! java.applet.Applet ser$n conocidas simplemente
como Graphics ! Applet.
Luego ,iene la definicin de la clase 6ola/p con*
public class HolaAp extends Applet { ... }

Las palabras extends indican que HolaAp es una etensin de la clase de biblioteca Applet. %sto significa que HolaAp es
casi como /pplet, solo que se modifica el comportamiento del m.todo paint.
%l m.todo paint recibe como argumento un objeto de tipo Graphics que corresponde a una clase de biblioteca. %ste objeto
se usa para dibujar en la porcin de p$gina html asignada al a11&et.
La instruccin g.dra$String("Hola mundo "pplet!!"()*()*); dibuja la cadena Hola mundo "pplet!! en la porcin
asignada en las coordenadas '2B, 2B(.
%s necesario construir la p$gina html que ,a a contener el a11&et. Crear la p$gina HolaAp.html con el siguiente contenido*
.!// Hola"p.&tml( programa 0ue llama la clase Hola"p //1
.H2M31

."443!2 +56!7"Hola"p.class" 8962H7:;; H!9%H27*;1
./"443!21
./H2M31

@o&aA1.3tm& debe estar en el mismo directorio que 6ola/p.ja,a.
Ner el applet con* appletviewer HolaAp.html
%l mismo a11&et tambi.n se puede ,er desde =eb como Internet %plorer u otros.







Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
E

PLANTILLA DEL APPLET.

LA PLA'TILLA DE (' P)*+)AMA &TML .
.!// comentarios //1
.H2M31

."443!2 +56!7"Nombre.class" 8962H7 ancho del rea H!9%H27altura del rea1
./"443!21
./H2M31










DF

FD







public class e'tends "pplet
{

public void paint (%rap&ics g)
{




import java.applet.*;
import java.a$t.*;
+omentarios
<ir,e para describir
el programa
Sentencias import
Inclu!e las bibliotecas necesarias
de applets, para compilar el
programa.

,ombre de la subclase
5ombre descripti,o para la
subclase applet
+uerpo del M-todo
<ir,e para escribir todas las
instrucciones necesarias para que
funcione el applet.
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
9

III. MANEJO DE DATOS.
+.1 .aria!&e#.
Tiene tres propiedades* una posicin de memoria para almacenar el ,alor, el tipo de dato almacenado en la posicin de memoria !
el nombre usado para referirse a esa posicin de memoria.

%isten 7 tipos de ,ariables*
de instancia
de clase
locales
%n +a,a no #a! globales, debido a que es un lenguaje -puro- orientado a objetos.

Los nombres de ,ariables deben empe"ar con*
letra,
O , o
P
<ensible a ma!0sculasDmin0sculas, as& la ,ariable A es distinta de la ,ariable a ! ambas son distintas de la ,ariable aA.
/l igual que en cualquier lenguaje de programacin cualquier nombre debe tener un significado 0til.
,reacin de variables-

Para crear una ,ariable, simplemente #a! que poner el tipo deseado seguido del nombre que se desee dar a la ,ariable.

%jemplo*
int calificacion4
c#ar ,alor14
boolean eito4
Tipos de informacin

)n programa +a,a maneja dos tipos de informacin*
Tipos primiti,os
Objetos
Tipos primitivos
%isten oc#o tipos de datos primiti,os agrupados en los siguientes cuatro grupos*

Cada tipo de datos primiti,o tiene el mismo tama8o ! caracter&sticas 'no importa plataforma o sistema operati,o(.

Enteros
Ti1o TamaGo
4!;te#5
.a&ore#
b!te 1 Q12E a 12M
s#ort 2 Q72,MGE a 72,MGM
int C Q2,1CM,CE7,GCE a 2,1CM,CE7,GCM
long E 92277M2:7M R 1: %@1E
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
1:

P2nto 7&otante
Ti1o TamGo 4!;te#5 .a&ore#
float C 1.CC%QCB a 7.C%@7E
double E C.9%Q72C a 1.M%@7:E

Caractere#

<e usa para caracteres indi,iduales como letras, n0meros, puntuacin ! otros s&mbolos
Boo&eano#
<olamente pueden tener el ,alor de -true- o -false-
Iniciali.acin-
Cuando una ,ariable es declarada autom$ticamente +a,a iniciali"a las ,ariables de acuerdo a*
5um.ricas :
Caracteres ST:U
Aooleanos false
Asignacin
)na ,e" que una ,ariable #a sido declarada, se le puede asignar un ,alor con el operador de asignacin '8(.
%jemplo*

int i4
iVB4

%s posible declarar e iniciali"ar una ,ariable en el mismo enunciado. %jemplo*
int a8o V 2:::4
boolean aprobado V true4
int edad V 2:, peso V E:4
<e pueden encadenar las instrucciones de asignacin* %jemplo* V ! V " V 1:4
+.$ EH1re#ione# aritmItica#.
)na instruccin es una epresin que produce un ,alor. %jemplo*
c&a## GeometriaB
12!&ic #tatic /oi main 4String arg#%*5B
int &ao# 8 ,E AAec&aracin e inicia&i9acin
S;#tem.o2t.1rint&n 4CUn c2arao tiene C J &ao# J C &ao#C5E
&ao# 8 +E AA#entencia e a#ignacin
S;#tem.o2t.1rint&n 4CUn triang2&o tiene C J &ao# J C &ao#C5E
F
F





Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
11

O1eraore# aritmItico#
O1eraor Signi7icao E"em1&o
@ <uma 7 @ C
Q Westa 1: Q B
F multiplicacin 2 F M
D di,isin B D 2
BD2.:
X mdulo BX2

!jemplos#

Expresin resultado Expresin resultado Expresin <esultado Expresin <esultado Expresin <esultado
5/2 ) 5/2.0 ).* 10.0/3.0 =.==== 15.0/2 >.* 2+3*4 :?
5%2 : 10%2 ; 27%4 = 14%0 error (2+3)*4 );
6+1/2*4-1*10 /? 1*3/3+8%8-2 /: 2*3+4 :; 2*(3+4) :? 2*5+3/2 ::

O1eraore# e a#ignacin
EH1re#in Signi7icao
@V ! V @ !
QV ! V Y !
FV ! V F !
DV ! V D !

Operadores de Incremento ! 1ecremento*

Incremento @@
1ecremento Q Q

Pueden ser prefijos o posfijos* %jemplo*

Considere el siguiente segmento de cdigo*

int a V B,bV1:4
a@@4 bQQ4

<!stem.out.println '-a V - @ a(4 aV 6
<!stem.out.print ln'-b V - @ b(4 bV 9

+5,@!<S9A, 6! 2945S#

El Lenguaje de Java, si se mezclan variables y constantes de diferentes tipos en una expresin, Java los convierte en el mismo tipo, convirtiendo
todos los operandos a tipos de operandos ms grande (en bytes) y esta tcnica se reconoce con el nombre de CAST.

FORMATO (tipo) EXPRES!"#$

int A%5, &%2$
(float)A/&$ ).* (int) (2.5+4)$ B (int)A/&$ )
(char)65$ " (int)'A'$ B* (int)67.($ B>
(float)84$ C?.; (float)A/ (float)&$ ).* (int)10.3(/(int)3.0$ =

!'presiDn para redondear un nEmero Flotante#

Float r%(.67

(int)(r+0.5)$


:;
float r%(.45$

(int)(r+0.5)$


G

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
12

+.+ Con#tante#.

3ientras se ejecuta un programa no cambia su ,alor asignado, de forma que no pueda ocurrir ning0n cambio. )na constante se
declara de forma similar a una ,ariable, pero a8adiendo la palabra reser,ada final. )na constante tiene un ,alor asignado cuando
se declara. %jemplo*

final doble PIV7.1C1G4 final s#ort Z3V1:::4 final int 1ICI%3AW%V124 final c#ar /<T%WI<COV[F[4

<e recomienda para nombrar constantes, usar letras ma!0sculas ! subra!ado. %jemplos*

<!stem.out.print ln'-PI es igual - @ PI(4 PI es igual .!"!6
<!stem.out.println'H)n >ilmetro tiene H @ Z3 @ H metros H(4 )n >ilmetro tiene !### metros
<!stem.out.print ln'-%l n0mero de diciembre es* H @ 1ICI%3AW%(4 %l n0mero de diciembre es* !$

%jemplo para calcular el $rea de un C&rculo. La frmula que nos calcula el $rea es la siguiente* \rea V ] ^ r2

12!&ic c&a## AreaCirc2&o B
12!&ic #tatic /oi main4String arg#%*5 B
7ina& o2!&e raio 8 )E 7ina& o2!&e PI8+.1,1)E
o2!&e areaE
area 8 PI K 4raioKraio5E
S;#tem.o2t.1rint&n4CLrea e 2n circ2&o e raio CJ raio J C e# C J area5E Lrea e 2n circ2&o e raio 6 e# 113.0976
F
F
+., La C&a#e Mat3.
Cuando se desea tener acceso a un m.todo es necesario especificar dnde est$ la clase a la que pertenece as& es que se utili"a la
declaracin im1ort.

)na declaracin im1ort especifica un identificador 'el nombre de la clase( que ser$ referenciada, ! el nombre del paquete en el
que est$ definida. )n F indica que cualquier clase del paquete puede ser referenciada. %jemplos*

im1ort "a/a.a<t.Gra13ic#E
im1ort "a/a.a11&et.A11&etE
im1ort "a/a.io.K4
im1ort "a/a.2ti&.KE

%n +a,a los m.todos siempre est$n dentro de una clase. /lgunos m.todos pueden ser in,ocados o llamados a tra,.s del nombre de
la clase en la que fueron definidos sin tener que instanciar un objeto de la clase primero. %stos m.todos son llamados m.todos
est$ticos o de clase.

La c&a#e Mat3

La clase Mat3 ofrece un gran n0mero de funciones matem$ticas b$sicas. La siguiente tabla muestra algunos m.todos. %l formato
es Math.metodo, a continuacin se muestran fragmentos de programas para dar los ejemplos*

int aVQB, r4

1. <!stem.out.println'-Nalor absoluto V - @ Mat3.a!#4a5(4 .a&or a!#o&2to 8 - AA como #a&ia e ato#

2. r8Mat3.a!#4M?5E AA como a#ignacin
<!stem.out.println'-Otro resultado V - @ r(4 Otro re#2&tao 8 ?

7. if ' Mat3.a!#41N5 VV r @ 2( DD 1ara &a #e&eccin e ato#

C. <!stem.out.println'-%l ma!or es - @ 3at#.ma'Mat3.a!#4a5,1((4 %l ma!or es BDDcomo 1ar6metro#





Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
17


MItoo Ti1o e
arg2ment
o
De#cri1cin %jemplo Wesultado
abs 'n( int
float
long
Wegresa el ,alor absoluto de n <!stem.out.println'3at#.abs'1:((4
<!stem.out.println'3at#.abs'QE((4
1:
E
ma'a,b( int
float
long
Wegresa el ,alor m$s grande entre a ! ! <!stem.out.println'3at#.ma'1:,2:((4 2:
min'a,b( int
float
long
Wegresa el ,alor m$s peque8o entre a !
!
<!stem.out.println'3at#.min'1:,2:((4 1:
round'n( int
float

Wegresa el ,alor entero de n redondeado
al n0mero m$s cercano.
<!stem.out.println'3at#.round'B.G((4
<!stem.out.println'3at#.round'B.C((4
<!stem.out.println'3at#.round'B.B((4
<!stem.out.println'3at#.round'QB.G((4
G
B
G
QG
pow
'n,e(
double Wegresa el n0mero n ele,ado a la
potencia de e
<!stem.out.println'3at#.pow'2.:,7.:((4 E.:
random
'(
5o tiene ;enera un n0mero aleatorio entre :.: a
1.:
<!stem.out.println'3at#.random'((4 :.M:
sqrt 'n( double 1e,uel,e la ra&" cuadrada de n <!stem.out.println'3at#.sqrt'9.:((4 7.:
PI 5o tiene 1e,uel,e el ,alor de PI <!stem.out.println'3at#.PI(4 7.1C1B92

Nota: NO e# nece#ario 2ti&i9ar import 1ara 2#ar 2na 72ncin e &a c&a#e Mat3
+.- La c&a#e String.

+a,a posee gran capacidad para el manejo de cadenas dentro de su clase String. Las cadenas son apropiadas para crear editores de
tetos, procesadores de palabras, software de formacin de p$ginas, sistemas de tipograf&a computari"ados ! otros tipos de
software para procesar tetos.

)na cadena es una serie de caracteres que se tratan como una unidad. )na cadena puede incluir letras, d&gitos, ! di,ersos
caracteres especiales como @,Q,F,P ! otros. )na cadena en +a,a es un Objeto de la clase String 'cadena para manejarlas en el
paquete "a/a.&ang(. Las literales de cadena o constantes 'tambi.n llamados objetos de <tring annimos( en +a,a se escriben como
una secuencia de caracteres entre comillas4 por ejemplo*

H)/%3I
HCuerna,aca 3orelosI
HClase 2::MI
H127CBGMEI

Concatenacin e caena#:

%l operador -@- reali"a la concatenacin cuando, al menos, uno de los operandos es un String:
%jemplos*
cadena1V-este- @ -aquel-4 DD Produce -esteaquel-
cadena2V-abc- @ BG DD Produce -abcBG-
E @ - casa- @ -s- DDProduce -Ecasas-
-a- @ -casa- @ -a"ul- DD Produce -acasaa"ul-

)n <tring se puede asignar a una referencia en una declaracin* <tring msg V H?eli" cumplea8osI4

Iniciali"a la referencia <tring msg de modo que se refiera al objeto <tring annimo H?eli" cumplea8osI.



)n <tring puede declararse de la siguiente manera*
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
1C

<tring nombre4 <tring ,ac&a V --4 <tring mensaje V -#ola-4 <tring msgV H#olaI4 <tring ciudad V new <tring'(4

<tring despedida V new <tring '-adios-(4 <tring cV-3eico lindo ! querido-4 <tring t1V-otra cosa-4

+.) MItoo# 1ara e& mane"o e caena#. Para los ejemplos considere las cadenas definidas anteriormente.

Oormato: caena.metoo
MItoo Acti/ia E"em1&o Re#2&tao
lengt# '( 1e,uel,e el n0mero de caracteres de la cadena <!stem.out.println'mensaje.lengt#'((4 C
c#ar/t 'n( 1e,uel,e el car$cter que se encuentra en la
posicin n
<!stem.out.println'mensaje.c#ar/t':((4 #
equals'otra( 1etermina si la cadena es igual al <tring otra <!stem.out.println'mensaje.equals'msg(
(4
<!stem.out.println'mensaje.equals't1((4
true
false
cad1VVcad2 Compara si el <tring cad1 es igual al <tring
cad2
<!stem.out.println'mensajeVVmsg(4
<!stem.out.println'mensajeVVt1(4
true
false
compareTo 'otra( Comparacin leicogr$fica. 1e,uel,e : si los
dos <tring son iguales, un n0mero negati,o si el
<tring que in,oca a comparteTo es menor que el
<tring que se pasa como argumento ! un
n0mero positi,o en caso contrario. %l ,alor
de,uelto es la diferencia entre las
representaciones enteras del primer car$cter que
es diferente en cada <tring.
<tring aV-/AC-4
<tring bV-CA/-4
<tring cV-/AC-4

<!stem.out.println'a.compareTo'b((4
<!stem.out.println'b.compareTo'a((4
<!stem.out.println'a.compareTo'c((4




Q2
2
:
substring'i,j( Crea un nue,o objeto <tring copiando parte de
un objeto <tring eistente.
substring ' i ( o substring 'i, j(
t1Vc.substring':,G(4
<!stem.out.println't1(4
<!stem.out.println'c.substring'M,12((4
<!stem.out.println'c.substring'1E,2:((4
<tring aV-%do.3e-4
<!stem.out.println'a.substring'7((4

3eico
lindo
_

.3e
Con,ersin a string* /l unir con el operador @ una cadena con
cualquier tipo, el resultado final es un <tring.
int nV127CB4
<tring c4
cV-- @ n4
<!stem.out.println'c.c#ar/t'2((4
<!stem.out.println'c.c#ar/t':((4



7
P
concat'otra( Concatena dos <tring ! de,uel,e un nue,o
objeto <tring que contiene los caracteres de los
dos <tring originales.
<tring aV-3%R-4
<tring bV-1?-4
aVa.concat'b(4
<!stem.out.println'a(4
<!stem.out.println'b(4



3%R1?
P
replace'c#ar,c#ar( ;enera un objeto <tring en el que cada
ocurrencia del primer car$cter en el <tring con
que se in,oca se substitu!e por el segundo
car$cter. <i no #ubiera coincidencias se regresa
una copia del <tring original.
<tring aV-me ! oo-4
<!stem.out.println'a.replace'``,`F`((4
<!stem.out.println'a(4
<!stem.out.println'a.replace'`Z`, `L`((4



meF ! FoFo
me ! oo
P
to)pperCase ' ( Wegresa un objeto de la clase <tring igual pero
cu!as caracteres son todos ma!0sculas
<tring aV-%do. 3e-4

<!stem.out.println'a.to)pperCase'((4


%1O.3%R
<tring toLowerCase
'(
Wegresa un <tring con todos los caracteres en
min0sculas
<tring aV-%do. 3e-4

<!stem.out.println'a.toLowerCase'((4


edo.me
indeOf''int(c#ar( 1e,uel,e el &ndice del car$cter del <tring, si no
eiste regresa Q1
<tring aV-%do. 3e-4
<!stem.out.println'a.indeOf''int(`o`((4
<!stem.out.println'a.indeOf''int(`>`((4
<!stem.out.println'a.indeOf''int(`3`((4

2
Q1
P
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
1B


+.Q MItoo# e Sa&ia.
1espliegue de un string*
<tring sVI6ola Waton sin colaI4
<tring t4
<!stem.out.println's(4 &ola )aton sin cola
<!stem.out.println't(4 // Error t no tiene valor

+.? MItoo# e Entraa.

3.todo para introducir caracteres indi,iduales tecleados por el usuario* S0stem.in.read, el formato es*

int c4

cVS0stem.in.read#);

%mpleando este m.todo slo se puede leer un d&gito a la ,e", esto se debe a lo limitado de las capacidades de +a,a para leer
informacin del flujo de entrada. Con frecuencia es necesario leer informacin como* enteros, flotantes, cadenas ! otro tipos para
introducirlos a un programa.


La forma de leer ms fcilmente cosas )ue no sean bytes (leer cadenas de texto o nmeros), es usar las clases
!nputStreamReader y &ufferedReader conjuntamente.

9nputStream<eader# Es capaz de convertir bytes a caracteres.

HuFFered<eader Es capaz de leer hasta un fin de lnea. La forma de instanciar estas clases para usarlas con
System.in es la siguiente

9nputStream<eader isr 7 ne$ 9nputStream<eader(System.in);
HuFFered<eader br 7 ne$ HuFFered<eader (isr);

Con esto, podemos leer lneas completas usando el HuFFered<eader br. As, por ejemplo, si escribimos en el teclado
una cadena 4umas, con

String cadena % br.readLine()$
Obtendremos en cadena *Pumas*.

Si )ueremos leer nmeros necesitando hacer la conversin de cadena a tipo numrico. Por ejemplo, si escribimos un
entero 32, en cadena obtendremos *32*.

Scanner#

La clase Scanner instancia esta clase pasndole el System.in y a partir de ah tememos muchos mtodos
(!nteger.parse!nt(cadena), Float.parseFloat(cadena), +ouble.parse+ouble(cadena), para obtener exactamente lo )ue
)ueremos. Por ejemplo, podemos leer 32 as, la conversin se hara con 9nteger.parse9nt

cadena% br.readLine()$
int numero % !nteger.parse!nt (cadena)$

System.out.println(numero+numero)$ B?







Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
1G

/*Para )ue el programa compile correctamente debe importarse el
pa)uete java.io, ya )ue en l se encuentran las clases )ue se emplean
para la captura de datos desde teclado. Esto se consigue con esta
lnea, )ue debe escribirse antes )ue cual)uier declaracin de clase. El
asterisco indica )ue se tiene acceso a todas las clases de primer nivel
del pa)uete */

//LEE +OS #,MEROS E#TEROS

import java.io.*$
public class lee{
public static void main(String args[])thros !OException{
//Creacin del flujo para leer datos
!nputStreamReader isr%ne !nputStreamReader(System.in)$
//Creacin del filtro para optimizar la lectura de datos
&ufferedReader br%ne &ufferedReader(isr)$
System.out.print(*Teclea el primer numero. *)$
//Lectura de datos mediante el mtodo readLine()
String texto1%br.readLine()$
//Conversin a int de la String anterior para poder sumar
int num1%!nteger.parse!nt(texto1)$
System.out.print(*Teclea el segundo numero *)$
String texto2%br.readLine()$
int num2%!nteger.parse!nt(texto2)$
//Sumar los dos enteros
System.out.println(*Suma de *+num1+* y *+num2+* es
*+(num1+num2))$
-
-

//LEE +OS #,MEROS FLOTA#TES

import java.io.*$

public class lee2{
public static void main(String args[])thros !OException{

//Creacin del flujo para leer datos
!nputStreamReader isr%ne !nputStreamReader(System.in)$

//Creacin del filtro para optimizar la lectura de datos
&ufferedReader br%ne &ufferedReader(isr)$
System.out.print(*Teclea el primer numero. *)$

//Lectura de datos mediante el mtodo readLine()
String texto1%br.readLine()$

//Conversin a float de la String anterior para poder sumar
float num1%!nteger.parseFloat(texto1)$

System.out.print(*Teclea el segundo numero *)$
String texto2%br.readLine()$
float num2%!nteger.parseFloat(texto2)$

//Sumar los dos flotantes
System.out.println(*Suma de *+num1+* y *+num2+* es *+(num1+num2))$
-
-



//LEE +OS #,MEROS +O&LES


import java.io.*$

public class Lee+ouble{
public static void main(String args[])thros !OException{

String texto1,texto2$
double num1,num2$

!nputStreamReader isr%ne !nputStreamReader (System.in)$
&ufferedReader br%ne &ufferedReader(isr)$


System.out.print(*Teclea el primer numero *)$ texto1%br.readLine()$
num1%+ouble.parse+ouble(texto1)$

System.out.print(*Teclea el segundo numero *)$texto2%br.readLine()$
num2%+ouble.parse+ouble(texto2)$

System.out.println(*Suma *+(num1+num2))$
-
-
//LEER ,# CAR.CTER E !MPR!M!R S, /ALOR #,MER!CO.

import java.io.*$

public class lee4{
public static void main(String args[])thros !OException{

char c$
String texto1$

!nputStreamReader isr%ne !nputStreamReader (System.in)$
&ufferedReader br%ne &ufferedReader(isr)$

System.out.print(*Teclea caracter *)$ texto1%br.readLine()$
c%texto1.charAt(0)$

System.out.println((int)c)$
-
-


im1ort "a/a.io.KE

AALEE UNA CADENA EN MINUSCULA R LO CON.IERTA A MARUSCULA

12!&ic c&a## con/ierteB
12!&ic #tatic /oi main4String arg#%*5t3ro<# IOEHce1tionB
String teHto1E

In12tStreamReaer i#r8ne< In12tStreamReaer 4S;#tem.in5E
B277ereReaer !r8ne< B277ereReaer4i#r5E

S;#tem.o2t.1rint4CTec&ea caena: C5E teHto18!r.reaLine45E
S;#tem.o2t.1rint&n4teHto1.toU11erCa#e455E
F
F

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
1M

Tambi.n se puede dise8ar una clase propia o utili"ar una dise8ada por otras personas, a continuacin se propone la siguiente*

Ponga en su directorio de trabajo el siguiente arc#i,o*

Teclado.ja,a

Compilar el programa "a/ac Tec&ao."a/a ! generar la clase Tec&ao.c&a##

)tili"ar alguna de las funciones de lectura que se encuentran en el arc#i,o Tec&ao."a/a, las cuales tienen el siguiente formato*
tipo ,ariable4
,ariable V Tec&ao. M1todo '(4

%jemplos*

int a4
a V Teclado. readInt '(4

E#ta c&a#e contiene &o# #ig2iente# mItoo# 1ara &eer:
read<tring '(
read=ord '(
readAoolean '(
readC#ar '(
readInt '(
readLong '(
read?loat '(
read1ouble '(


%jemplos*

int nE String caE 7&oat n7E c3ar cE

S;#tem.o2t.1rint4CDar n2mero entero: C5E
n8Tec&ao.reaInt45E
S;#tem.o2t.1rint4CDar nom!re: C5E
ca8Tec&ao.reaString45E
S;#tem.o2t.1rint4CDar n2mero 7&otante: C5E
n78Tec&ao.reaO&oat45E
S;#tem.o2t.1rint4CDar caracter: C5E
c8Tec&ao.reaC3ar45E



























Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
1E



,. ESTRUCTURAS DE CONTROL.

,.1 OPERADORES RELACINALES:

L/< %RPW%<IO5%< a)% )TILIZ/5 LO< OP%W/1OW%< W%L/CIb5/L%< 1%N)%LN%5 )5 N/LOW 1% true %5
C/<O 1% CI%WTO K false %5 C/<O 1% ?/L<O.


54!<"65< "++95, !'presiDn <esultado
0
.7
1
17
% %
!7
ME#OR 2,E
M!,5< 5 9%I"3 JI!
MA3OR 2,E
M"K5< 5 9%I"3 JI!
!4,AL A
69L!<!,2! "
200
?.7)
61 -3
M"M17 M+'
'S'%% 'S'
:)= !7 =):
false
False
true
False
true
true

=.) 54!<"65<!S 35%9+5S#

L/< %RPW%<IO5%< LO;IC/< 1%N)%LN%5 %L N/LOW 1% true %5 C/<O N%W1/1%WO K false %5 C/<O 1%
?/L<O.

54!<"65< ACC!O# Expresin Resulta
do
Expresin Resultado Expresin Resultado
55
N N
6
3
5
#E4AC!"#
true 55 true
False OO False
true 55 false
False OO true
true
False
false
false
true N N true
False N N False
true 7 7 false
False N N true
true
False
true
true
6 true
! False
false
true


,.$ ESTRUCTURAS DE DECISION:

Todos los programas presentados #asta a#ora son relati,amente simples. %l cuerpo principal #a consistido en una sucesin de
enunciados, que deber$n ser ejecutados por la computadora en el orden dado.

La computadora tiene la capacidad de tomar decisiones es decir, de #acer pruebas para escoger el curso adecuado de accin seg0n
el resultado de esas pruebas. / esta capacidad se le llama seleccin. <upngase por ejemplo, que las pelotas de b.isbol tienen un
precio unitario de PG.B: 'pesos( cuando se compra al menos die", ! de PM.:: si se compran menos de die". Para calcular el costo
de una compra, la computadora debe eaminar si se est$n comprando al menos die" pelotas, para escoger la formula adecuada. La
computadora efect0a estas selecciones e,aluado epresiones booleanas esto es, epresiones que tienen ,alores de true ',erdadero(
o false 'falso( Q.

<%L%CCIb5 <I3PL% 'if(

La seleccin simple se usa cuando se quiere que la computadora efect0e una accin condicionalmente es decir, slo cuando cierta
condicin es ,erdadera Q.

OORMATO GENERAL PARA LA ESTRUCTURA DE DECISION SIMPLE:



i7 4CONDICION5
SENTENCIAE


i7 4CONDICION5B
Sentencia 1E
Sentencia $E
:
.
Sentencia NE
F




Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
19

<i la condicin es true, la computadora ejecuta el enunciado de accin ! contin0a despu.s con el siguiente en el programa. <i la
condicin es false, la computadora contin0a directamente con la siguiente instruccin del programa. Por ejemplo, se permiten los
siguientes enunciados*


if 'edad cV 1E( <!stem.out.println'-puede entrar-(4

if 'a@b cV c( contador V contador @ 14

%jemplo*

LEER UN NSMERO E IMPRIMIR EL .ALOR ABSOLUTO.

+ar numero -7
!3 @"35< "HS53I257 >

AA a!#o&2to."a/a ca&c2&a e& /a&or a!#o&2to e 2n n2mero
c&a## a!#o&2toB
12!&ic #tatic /oi main4String arg%*5B
int nE
S;#tem.o2t.1rint4CDar n2mero: C5E n8Tec&ao.reaInt45E
i74nTN5
n8nK4M15E
S;#tem.o2t.1rint&n4CEL .ALOR ABSOLUTO8 C J n5E
F
F

<%L%CCIb5 %5TW% 1O< /LT%W5/TIN/<

OORMATO GENERAL PARA LA ESTRUCTURA DE DECISION COMPUESTA:




i74CONDICION5
#entencia 1E
e&#e
#entencia $E


i74CONDICION5B
Sentencia 1E
Sentencia $E
:
.
Sentencia NE
F
e&#e B
Otra# Sentencia#E
:
.
F


%n la seleccin simple la computadora #ace algo o no #ace nada, dependiendo del resultado de la prueba. %n la seleccin doble, la
computadora efect0a una prueba ! despu.s reali"a algo en cualquier caso. <i la condicin es true, la computadora ejecuta la
sentencia 1. <i es false, la computadora ejecuta la alternati,a else.

PW%;)5T/* Cuando se ejecuta el fragmento dqu. se imprime para cada ,alor dado de calif_

'a( calif V BE 'b( calif V MC

i7 4ca&i7 U8 QN5
S;#tem.o2t.1rint&n4Ca1ro!aoC5E
e&#e
S;#tem.o2t.1rint&n 4Cre1ro!aoC5E




Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
2:
%jemplo*
LEER UNA CADENA R SI EL NUMERO DE CARACTERES DE LA CADENA ES IMPAR IMPRIMIR EL
CARACTER DE EN MEDIO DE LO CONTRARIO IMPRIMIR EL ULTIMO CARLCTER.

Ejemplo 1

+AR CA+E#A A#A
+"<P+2!< 6! !, M!695 ,
Ejemplo 2

+AR CA+E#A PACO
I329M5 +"<P+2!< 5

AA caim1ar."a/a
c&a## caim1arB
12!&ic #tatic /oi main4String arg%*5B
int n'n2mE String caE
S;#tem.o2t.1rint4CDar caena: C5E ca8Tec&ao.reaString45E
n8ca.&engt345E
i74nV$8815 B
n2m 8 nA$ E
S;#tem.o2t.1rint&n4CCARACTER DE EN MEDIO: CJ ca.c3arAt4n2m55E
F
e&#e
S;#tem.o2t.1rint&n4CULTIMO CARACTER: CJ ca.c3arAt4nM155E
F
F

6/C%W )5 PWO;W/3/ a)% 1%T%W3I5% % I3PWI3/ L/ C/5TI1/1 TOT/L / P/;/W POW )5/ LL/3/1/
T%L%?b5IC/ T%5I%51O %5 C)%5T/ LO <I;)I%5T%*

/ TO1/ LL/3/1/ a)% 1)W% 3%5OW O I;)/L / 7 3I5)TO< TI%5% )5 CO<TO 1% 1: P%<O<, C/1/ 3I5)TO
/1ICIO5/L / P/WTIW 1% LO< 7 PWI3%WO C)%<T/ B P%<O<.

Ejemplo 1

+AME LOS M!#,TOS +E LA LLAMA+A 2
!3 +5S25 6! 3" 33"M"6" !S :;.;;;;;
Ejemplo 2

+AME LOS M!#,TOS +E LA LLAMA+A 4
!3 +5S25 6! 3" 33"M"6" !S :*.;;;;;

c&a## &&amaaB
12!&ic #tatic /oi main4String arg%*5B
7&oat LLAMADA'C'C1'C$E
S;#tem.o2t.1rint4CDAME LOS MINUTOS DE LA LLAMADA:C5E
LLAMADA8Tec&ao.reaO&oat45E
i7 4LLAMADA T8+5
C 8 1NE
e&#eB
C1 8 LLAMADA M + E C$ 8 C1 K -E C 8 C$ J 1N E
F
S;#tem.o2t.1rint&n4CEL COSTO DE LA LLAMADA ES CJ C5E
F
F

Escriba un programa )ue reciba dos nmeros enteros como entrada y escriba el mensaje signos opuestos solo si uno
de los enteros es positivo, y el otro, negativo. ,se un solo operador booleano en la condicin if.

Ejemplo 1

+ar el primer numero! 5
+ar el segundo numero-8
Signos opuestos
Ejemplo 2

+ar el primer numero! -8
+ar el segundo numero 7
Signos opuestos
Ejemplo 1

+ar el primer numero! 1
+ar el segundo numero 2

Ejemplo 1

+ar el primer numero! -3
+ar el segundo numero-(8


public class sigopuestos {
public static void main(String[] args) {
int a(b(r;
System.out.print("6ar primer numero..# "); a72eclado.read9nt();
System.out.print("6ar segundo numero.# "); b72eclado.read9nt();
r7a*b;
iF(r.;)
System.out.print("Signos opuestos");


Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
21

Escriba un programa )ue reciba como entrada dos enteros positivos distintos y escriba la diferencia entre el nmero
mayor y el menor. Asegrese de )ue su programa escriba 6 tanto cuando la entrada es ( y 15 como cuando la
entrada es 15 y (.

public class diFerencia {
public static void main(String[] args) {
int a(b(r;
System.out.print("6ar primer numero..# "); a72eclado.read9nt();
System.out.print("6ar segundo numero.# "); b72eclado.read9nt();
r7Mat&.abs(a/b);
System.out.print("<esultado7 "Qr);


DECISIN MSLTIPLE PARA CONSTANTES NUMWRICAS ENTERAS R DE CARLCTER.

%n algunos casos puede requerirse que la computadora escoja de una lista de m$s de dos opciones. 6asta a#ora, la 0nica t.cnica
que se #a presentado para #acer eso consiste en usar ,arias pruebas ifQelse, como en el siguiente ejemplo*

if 'notacVEB( califV-bueno-4
else
if''notaeEB( ff 'notacVM:( ( califV-regular-4
else
if 'notaeM:( califV-malo-4

Para e,itar #acer esto, se puede utili"ar la siguiente estructura de control*
switc#'N/WI/AL%(
g
case CO5<T/5T%1 *
<%5T%5CI/< 4 brea>4
case CO5<T/5T%2*
<%5T%5CI/<4 brea>4
.
.
.
default*
OTW/< <%5T%5CI/<4
h

LEER UN NUMERO ENTRE EL RANGO DEL N AL + E IMPRIMIR EL NUMERO EN INGLES' SI EL NUMERO
ESTA OUERA DE ESTE RANGO MARCAR UN ERROR.

Ejemplo 1

+AR ,# #,MERO 2
285
Ejemplo 2

+AR ,# #,MERO 0
R!<5
Ejemplo 3

+AR ,# #,MERO 33
!<<5<
Ejemplo 4

+AR ,# #,MERO -1
!<<5<

c&a## n2m#ing&e#B
12!&ic #tatic /oi main4String arg%*5B
int NUME
S;#tem.o2t.1rint4CDAR UN NUMERO : C5E NUM8Tec&ao.reaInt45E
#<itc34NUM5B
ca#e N :
S;#tem.o2t.1rint&n4CXEROC5E !rea>E
ca#e 1 :
S;#tem.o2t.1rint&n4CONEC5E !rea>E
ca#e $ :
S;#tem.o2t.1rint&n4CT=OC5E !rea>E
ca#e + :
S;#tem.o2t.1rint&n4CT@REEC5E !rea>E
e7a2&t :
S;#tem.o2t.1rint&n4CERRORC5E
F
F
F
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
22

,.+ ESTRUCTURAS REPETITI.AS:

%n los programas que se #an considerado #asta a#ora, la computadora no #a ejecutado ninguna instruccin m$s de una ,e". )na
posibilidad poderosa de la computadora es su capacidad de ejecutar ,arias ,eces el mismo grupo de l&neas. %ste es el proceso de
ciclos, ! el grupo de l&neas se ejecutan ,arias ,eces se llama el cuerpo del ciclo.

)n ciclo es ,entajoso cuando se #a de repetir esencialmente la misma tarea un n0mero especificado de ,eces. %n tales casos, basta
codificar una sola ,e" la tareaQ como cuerpo del ciclo. Por ejemplo, en un programa para calcular e imprimir c#eques para mil
empleados, no se necesita incluir 1,::: grupos distintos de l&neas para lle,ar a cabo la tarea de calcular e imprimir los c#eques.
%n ,e" de ello se puede usar un solo grupo de l&neas, como el cuerpo de un ciclo, que se #a de repetir 1,::: ,eces.

Las tres estructuras disponibles para ciclos en +a,a son los ciclos* for, w#ile ! do w#ile.

ESTRUCTURAS REPETITI.AS PARA 47or5

for 'N/WVN/LOWI5ICI/L4 CO51ICIO54 I5CW%3%5TO O 1%CW%3%5TO<( g
<%5T%5CI/<4
*
.
h

5ota* Para que entre el ciclo la condicin debe ser ,erdadera ' true (.

%+%3PLO<*

7or 4 i 8 1 E i T8 - E iJJ5
S;#tem.o2t.1rint&n4 i J C Y$ 8Z J iK i 5E

<alida del programa*

:S) 7 :
)S) 7 ?
=S) 7 G
?S) 7 :B
*S) 7 )*


Cuerpo del ciclo. %l cuerpo del ciclo en un ciclo for es la l&nea o grupo de l&neas que se ,an a ejecutar un n0mero especificado de
,eces. %n el ejemplo siguiente, el cuerpo del ciclo es la 0nica instruccin. <!stem.out.println'-+uan P.re"-(4

%+%3PLO*

for 'iV14 ieV74 i@@(
<!stem.out.println'-+uan P.re"-(4

La siguiente es una ,ersin incorrecta de un segmento de programa que trata de calcular el promedio de cinco n0meros de entrada*

for 'iV14 ieVB4 i@@(g
sumaV:4
<!stem.out.println'-escriba numero-(4 numero V Teclado.readInt' (4
sumaV suma @ numero4
h
prom V sumaDB4
<!stem.out.println '-%l promedio es -@ prom(4

<i se corriera este programa, se obtendr&a un ,alor incorrecto para el promedio. <i se inserta el enunciado adicional
<!stem.out.println '-suma actual - @ suma(4 como la 0ltima instruccin dentro del cuerpo del ciclo ser&a m$s f$cil a,eriguar lo que
est$ equi,ocado.





Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
27

%jemplos de ciclos*



6acer un programa que lea una cadena ! que lo
imprima en forma in,ertida.

!ntroducir una cadena Linda
adni3

class invertir{
public static void main(String args[ ]) {
int i; String cad;
System.out.print("6ar cadena# ");
cad72eclado.readString();
For (i7 cad.lengt&()/: ; i 17 ; ; i //)
System.out.print(cad.c&ar"t( i ));
System.out.println();



8acer un programa lea una cadena y cuente cuantos espacios en blanco tiene.
Por ejemplo

+ar cadena$ A#A L!#+A
"," 39,6" tiene ) espacios

class ctaespacios{
public static void main(String args[ ]) {
int i(spc7;;;
String cad;
System.out.print("6ar cadena# ");
cad72eclado.readString();
For (i7;; i.cad.lengt&()/:;iQQ)
iF(cad.c&ar"t(i)77T T)
spcQQ;
System.out.println(cadQ " tiene "QspcQ" espacios");



!scribir un programa en 3enguaje +( )ue produzca la tabla siguiente

9ilmetros Metros 30%Metros
1 1000 300
2 2000 600
3 3000 (00
4 4000 1200
5 5000 1500
Total 15000 metros 4500

public class tabla=; {
public static void main(String[] args) {
int i(m(res(total7;(restotal7;;
double F;
System.out.println("Uilometros"Q"Vt"Q"Metros"Q"VtVtVt"Q"=;WMetros");
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
For(i7:; i.7*;iQQ){
m7i*:;;;;
total7totalQm;
F7 m*;.=Q;.*;
res7(int)F;
System.out.println(iQ"VtVtVt"QmQ"Vt"Q"VtVt"Qres);

F7total*;.=Q;.*;
restotal7(int)F;
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
System.out.println( "2otal"Q"VtVt"QtotalQ" metros"Q"Vt"Qrestotal);




8acer un programa )ue imprima los nmeros
del 1 al 5 de menor a mayor. Ejemplo

:()(=(?(*
public class nums"sc {
public static void main(String[] args) {
int i;
For (i7:; i.*; iQQ)
System.out.print(iQ"(");
System.out.print(i);


8acer un programa )ue imprima los nmeros
del 1 al 5 de mayor a menor. Ejemplo

*(?(=()(:
public class nums6esc {
public static void main(String[] args) {
int i;
For (i7*; i1:; i//)
System.out.print(iQ"(");
System.out.print(i);


8acer un programa )ue imprima los nmeros
impares del 1 al 5. Ejemplo

:(=(*
public class impares {
public static void main(String[] args) {
int i;
For (i7:; i.*; iQ7))
System.out.printF(iQ"(");
System.out.print(i);





Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
2C

EJEMPLO DE UN CICLOS 7or ANIDADO#.

6/C%W )5 PWO;W/3/ a)% L%/ )5 C/W\CT%W , COL)35/< K ?IL/< % I3PWI3/ C)/1W/1O W%LL%5O 1%
%<T% C/W\CT%W.


5um. columnas* 7
5um. filas* C
1ar caracter* F
KKK
KKK
KKK
FFF

DD pantalla.ja,a
c&a## 1anta&&aB
12!&ic #tatic /oi main4String arg%*5
B
c3ar CAR E int C'R'COL'OILE
S;#tem.o2t.1rint4CN2m. co&2mna#: C5ECOL 8 Tec&ao.reaInt45E
S;#tem.o2t.1rint4CN2m. 7i&a#: C5E OIL 8 Tec&ao.reaInt45E
S;#tem.o2t.1rint4CDar caracter: C5ECAR 8 Tec&ao.reaC3ar45E
7or 4R81 E RT8 OILE RJJ5 B
7or 4C81 ECT8 COL E CJJ5
S;#tem.o2t.1rint4CAR5E
S;#tem.o2t.1rint&n45E
F
F
F

L5<M"25 %!,!<"3 +9+35 M9!,2<"S#


$&ile (condicion)
sentencia;


$&ile (condicion){
sentencia:;
sentencia)#
#
.
SentenciaXn;


"sY trabaja un ciclo $&ile. 3a computadora empieZa probando la condiciDn del $&ile. Si la condiciDn es verdadera ( true )( se ejecuta todo
el cuerpo del ciclo. 3uego se pasa el control al principio para volver a probar la condiciDn. 3a primera veZ 0ue al probar la condiciDn
resulte Falso (False )( la computadora sale del ciclo. 4or ejemplo#
Salida
public class nums {
public static void main(String[] args) {
int i7:;
$&ile(i.G) {
System.out.println( i );
i7 i Q );

System.out.println("&asta luego");

-

:
=
*
>
&asta luego













Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
2B

6/C%W )5 PWO;W/3/ a)% CO5NI%WT% 1% 5)3%WO /W/AI;O< / 5)3%WO< WO3/5O<. <I5 CO5<I1%W/W
C/<O< %<P%CIL%< 'CVIIII, 9VNIIII, 1CVRIIII, etc(


%jemplo1*

1ar numero* 2MMM
MMDCCL[[.II


%jemplo2*

1ar numero* 27C
CC[[[IIII

c&a## romano#B
12!&ic #tatic /oi main4String arg#% *5 B
int nE
S;#tem.o2t.1rint4CDar n2mero: C5E n8 Tec&ao.reaInt45E
<3i&e4nU81NNN5 B
S;#tem.o2t.1rint4CMC5E
n8 n M1NNNE
F
<3i&e4nU8-NN5 B
S;#tem.o2t.1rint4CDC5E
n8 n M-NNE
F
<3i&e4nU81NN5 B
S;#tem.o2t.1rint4CCC5E
n8 n M1NNE
F
<3i&e4nU8-N5 B
S;#tem.o2t.1rint4CLC5E
n8 n M-NE
F
<3i&e4nU81N5 B
S;#tem.o2t.1rint4C[C5E
n8 n M1NE
F
<3i&e4nU8-5 B
S;#tem.o2t.1rint4C.C5E n8 n M-E
F
<3i&e4nU815 B
S;#tem.o2t.1rint4CIC5E nMME
F
S;#tem.o2t.1rint&n45E
F
F

CICLO MIENTRAS CON LA CONDICION AL OINAL DEL CICLO

%l ciclo do w#ile es mu! similar al ciclo w#ile en el grado de ,ersatilidad que ofrecen. 1e #ec#o, #a! muc#as situaciones en las
que funciona tan bien una estructura de ciclo como la otra, ! es una cuestin de preferencia personal cual se escoja. Tambi.n se
dan casos en los que una de estas estructuras de ciclo QQQ ! no la otra QQQ debe ser usada.

1espu.s de una bre,e introduccin a la sintais del ciclo do w#ile, se consideran dos tipos principales*

CICLO< CO5TWOL/1O< POW C%5TI5%L/. Como en el caso de los ciclos w#ile controlados por datos centinela, estos ciclos
permiten al usuario indicar cuando se desea dejar de ingresar grupos de datos. %n el caso del ciclo doiw#ile, sin embargo la
se8al es la respuesta directa del usuario a un mensaje como* Teclee < para continuar, 5 para parar

?OW3/TO*
oB
SENTENCIASE
F <3i&e 4CONDICION5E



Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
2G
PROBLEMAS:
8acer un programa )ue lea una cantidad e imprima el
nmero de dgitos del nmero. Ejemplo

+ar numero 123
!l numero :)= tiene = digitos

class numciFras{
public static void main(String arg[ ]){
int ,IM( ,67;(,;
System.out.print("6ar numero# ");
,IM7 2eclado.read9nt(); ,7 ,IM;
do {
,6QQ;
,IM7,IM/:;;
$&ile (,IM1;);
System.out.println("!l numero " Q , Q " tine "Q ,6
Q " digitos");


Escriba un programa en Lenguaje de Programacin + en el )ue el usuario debe
introducir enteros positivos entre 1 y 5. El programa debe informar al usuario cuando
haya escrito un entero )ue hace )ue la suma de los nmeros dados pase de 21.
Adems del mensaje MAS +E 21, la computadora debe imprimir la suma y el ltimo
entero introducido. Por ejemplo

+ar numero 2
+ar numero 3
+ar numero C
+ar numero 5
+ar numero 4
+ar numero 1
+ar numero B
+ar numero 5
+ar numero 3
M"S 6! ):( SIM"7 )= y =
public class mas): {
public static void main(String[] args) {
int n(suma7;;
do{
System.out.print("6ar numero# "); n7 2eclado.read9nt();
iF(n17: OO n.7*)
suma7sumaQn;
$&ile(suma.7):);
System.out.println("M"S 6! ):(SIM"7"QsumaQ" y "Qn);



8acer un programa )ue tenga un men para sumar o multiplicar dos nmeros.

ME#,
Sumar
Multiplicar
Lin S
Menu Sumar
+ar primer numero! 3
+ar segundo numero 5
<esultado7 C

ME#,
Sumar
Multiplicar
Lin M
Menu Multiplicar
+ar primer numero! 4
+ar segundo numero 6
<esultado7 )?

ME#,
Sumar
Multiplicar
Lin F

Lin del programa


c&a## Men2B
12!&ic #tatic /oi main4String arg%*5B
c3ar o1'1a2#aE int a'!E
oB
S;#tem.o2t.1rint&n4CMENUC5E
S;#tem.o2t.1rint&n4CS2maC5E
S;#tem.o2t.1rint&n4CM2&ti1&icarC5E
S;#tem.o2t.1rint&n4COinC5E
o1 8 Tec&ao.reaC3ar45E
#<itc34o15B
ca#e \S\:
ca#e \#\:
S;#tem.o2t.1rint&n4CMENU S2maC5E
S;#tem.o2t.1rint4CDar 1rimer n2mero.: C5E a8 Tec&ao.reaInt45E
S;#tem.o2t.1rint4CDar #eg2no n2mero: C5E !8 Tec&ao.reaInt45E
S;#tem.o2t.1rint&n4CRe#2&tao8 CJ 4aJ!55E
S;#tem.o2t.1rint4CO1rima c2a&]2ier tec&a 1ara contin2ar...C5E
1a2#a8Tec&ao.reaC3ar45E!rea>E
ca#e \M\:
ca#e \m\:
S;#tem.o2t.1rint&n4CMENU M2&ti1&icarC5E
S;#tem.o2t.1rint4CDar 1rimer n2mero.: C5E a8 Tec&ao.reaInt45E
S;#tem.o2t.1rint4CDar #eg2no n2mero: C5E !8 Tec&ao.reaInt45E
S;#tem.o2t.1rint&n4CRe#2&tao8 CJ aK!5E
S;#tem.o2t.1rint4CO1rima c2a&]2ier tec&a 1ara contin2ar...C5E
1a2#a8Tec&ao.reaC3ar45E!rea>E
F
F<3i&e 4o1D8\O\ ^^ o1D8\7\5E
S;#tem.o2t.1rint&n4COin e& 1rogramaC5E
F
F
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
2M
-. MWTODOS CONSTRUIDOS POR EL USUARIO.

-.1 DEOINICIONES DE MWTODOS.

Los 3.todos permiten al programador modulari"ar sus programas. Todas las ,ariables declaradas en las definiciones de 3.todos
son ,ariables locales* slo se conocen en el 3.todo en el que se definen. Casi todos los 3.todos tienen una lista de par$metros
que permiten comunicar informacin entre 3.todos. Los par$metros de un 3.todo tambi.n son ,ariables locales.

6a! ,arios moti,os para modulari"ar los programas con 3.todos. %l enfoque de di,ide ! ,encer$s #ace m$s manejable la tarea
de desarrollo de los programas. Otra moti,acin es la reutili"acin del software* usar 3.todos !a eistentes para crear programas
nue,os. )na tercera moti,acin es e,itar la repeticin de cdigo en un programa. <i empacamos el cdigo en un 3.todo,
podremos ejecutarlo desde ,arios puntos de un programa con slo in,ocarlo.

1eclaracin de m.todos.

%n +a,a toda la lgica de programacin '/lgoritmos( est$ agrupada en 3.todos.

)n m.todo es* )n bloque de cdigo que tiene un nombre,
Wecibe unos par$metros o argumentos 'opcionalmente(,
Contiene sentencias o instrucciones para reali"ar algo 'opcionalmente( !
1e,uel,e un ,alor de alg0n Tipo conocido 'opcionalmente(.

La sintais global es*

public static TipoONalorOde,uelto nombreOm.todo ' listaOargumentos ( g
bloqueOdeOcodigo4
h

! la lista de argumentos se epresa declarando el tipo ! nombre de los mismos 'como en las declaraciones de ,ariables(. <i #a!
m$s de uno se separan por comas.

Por ejemplo* 6acer un m.todo que se llame <uma%nteros, recibe dos par$metros tambi.n enteros. <us nombres son a ! b,
de,uel,e un entero.

%n el ejemplo la cl$usula return se usa para finali"ar el m.todo de,ol,iendo el ,alor de la ,ariable c.

%jemplo* <uma.ja,a

AAS2ma."a/a
c&a## S2maB
12!&ic #tatic /oi main4String arg%*5B
int n8S2maEntero#4$')5' mE
S;#tem.o2t.1rint&n4n 5E
S;#tem.o2t.1rint4CDar n2mero: C5E m8Tec&ao.reaInt45E
S;#tem.o2t.1rint&n4S2maEntero#4n'm5 5E
F

12!&ic #tatic int S2maEntero# 4 int a' int ! 5 B
int c 8 a J !E
ret2rn cE
F
F

?
Dar n2mero: )
1,



%l tipo ,oid

%l #ec#o de que un m.todo de,uel,a o no un ,alor es opcional. %n caso de que de,uel,a un ,alor se declara el tipo que de,uel,e.
Pero si no necesita ning0n ,alor, se declara como tipo del ,alor de,uelto, la palabra reser,ada ,oid. Por ejemplo*

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
2E
12!&ic #tatic /oi 3aceA&go45 B
. . .
F

Cuando no se de,uel,e ning0n ,alor, la cl$usula return no es necesaria. Obser,ese que en el ejemplo el m.todo #ace/lgo tampoco
recibe ning0n par$metro. 5o obstante los par.ntesis, son obligatorios.

)so de m.todos

Los m.todos se in,ocan con su nombre, ! pasando la lista de argumentos entre par.ntesis. %l conjunto se usa como si fuera una
,ariable del Tipo de,uelto por el m.todo.

Por ejemplo*
int 4
V <uma%nteros'2,7(4

5ota* %sta sintais no est$ completa, pero sir,e para nuestros propsitos en este momento. La sintais completa se ,er$ cuando se
#able de objetos.
/unque el m.todo no reciba ning0n argumento, los par.ntesis en la llamada son obligatorios. Por ejemplo para llamar a la funcin
#ace/lgo, simplemente se pondr&a*

#ace/lgo'(4

Obser,ese que como la funcin tampoco de,uel,e ning0n ,alor no se asigna a ninguna ,ariable. '5o #a! nada que asignar(.


OTWO< %+%3PLO< 1% 3JTO1O<* Imprime mensaje 'no regresa ,alor(, maimo de tres ! un m.todo boleano.

AAE"em1&o#."a/a
c&a## E"em1&o#B
12!&ic #tatic /oi main4String arg%*5B
c3ar cE
Men#a"e4COin...C5E
S;#tem.o2t.1rint&n4CE& ma;or e tre# n2mero# CJ MaHeTre#41'$'+55E
S;#tem.o2t.1rint4CDar caracter: C5E c8Tec&ao.reaC3ar45E
i74C3eca4c55
S;#tem.o2t.1rint&n4c J C e#ta en ma;2#c2&aC5E
e&#e
S;#tem.o2t.1rint&n4c J C e#ta en min2#c2&aC5E
F

AA mItoo ]2e no regre#a ning2n /a&or' #o&o im1rime 2n men#a"e
12!&ic #tatic /oi Men#a"e4String M#g5B
S;#tem.o2t.1rint&n4M#g5E
F

AA mItoo enc2entra e& ma;or e tre# n2mero#
12!&ic #tatic int MaHeTre#4int H' int ;' int 95B
ret2rn Mat3.maH4Mat3.maH4H';5'95E
F

AA mItoo !oo&eano' c3eca #i 2n caracter e#ta en ma;2#c2&a
12!&ic #tatic !oo&ean C3eca4c3ar c5B
ret2rn cU8\A\ ^^ cT8\X\E
F
F

Oin...
E& ma;or e tre# n2mero# +
Dar caracter: @
@ e#ta en ma;2#c2&a



Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
29

-.$ SOBRE CARGA DE MWTODOS:

La firma de un m.todo es la combinacin del tipo de dato que regresa, su nombre ! su lista de argumentos.

La sobrecarga de m.todos es la creacin de ,arios m.todos con el mismo nombre pero con diferentes firmas ! definiciones. +a,a
utili"a el n0mero ! tipo de argumentos para seleccionar cu$l definicin de m.todo ejecutar.

+a,a diferencia los m.todos sobrecargados con base en el n0mero ! tipo de argumentos que tiene el m.todo ! no por el tipo que
de,uel,e. %jemplos*

AK MItoo# #o!recargao# KA
12!&ic #tatic int ca&c2&aS2ma4int H' int ;' int 95B
...
F

12!&ic #tatic o!&e ca&c2&aS2ma4o2!&e H' o2!&e ;' o2!&e 95B
...
F

AK Error: e#to# mItoo# no e#t6n #o!recargao# KA
12!&ic #tatic int ca&c2&aS2ma4int H' int ;' int 95B
...
F

12!&ic #tatic o2!&e ca&c2&aS2ma4int H' int ;' int 95B
...
F


%jemplo del 3.todo sobrecargado Cubo, sir,e para calcular el cubo de un entero 'int( ! el cubo de un doble 'double
(.

AAC2!o."a/a
c&a## C2!oB
12!&ic #tatic /oi main4String arg%*5B
S;#tem.o2t.1rint&n4CE& c2!o e& entero $ e# C J C2!o4$55E
S;#tem.o2t.1rint&n4CE& c2!o e& o2!&e $.- e# C J C2!o4$.-55E
F

12!&ic #tatic int C2!o4int H5 B
ret2rn HKHKHE
F

12!&ic #tatic o2!&e C2!o4o2!&e H5 B
ret2rn Mat3.1o<4H'+.N5E
F
F

E& c2!o e& entero $ e# ?
E& c2!o e& o2!&e $. - e# 1-. )$-













Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
7:

*.= <!+I<S9@96"6.
6eFiniciDn Es cuando un objeto esta formado pro si mismo o se define en funcin de s mismo.

4rocedimientos recursivos#

CARACTERISTICAS:
Se llama a si mismo.
+ebe tener una condicin de paro.
En cada llamado debe acercarse al resultado esperado. .
+efinicin de la expresin recursiva en trminos recursivos.

VENTAJAS:

Cdigo compacto (ms pe)ue"o )ue el iterativo).
Ms rpido.
Se utiliza para Lenguajes de Programacin )ue no tienen ciclos (Por ejemplo L!SP).
Aprovechamiento de la memoria para utilizar la recursin.

!jemplos de casos recursivos#

8ACER ,#A F,#C!O# REC,RS!/A 2,E CALC,LE EL FACTOR!AL +E ,# #,MERO POS!T!/O.
a) 06 % 1
b) n10 n6 % n * (n-1)6

Por ejemplo factorial de 66% 1*2*3*4*5*6 % 720

8ACER ,#A F,#C!O# REC,RS!/A 2,E ELE/E ,# #,MERO A ,# EXPO#E#TE.

a) &:0 %1
b) &:E, E10 ELE/A%ELE/A(&,E-1)*&

Por ejemplo 2:3 %2*2*2 %8

8ACER ,#A F,#C!O# REC,RS!/A 2,E RE4RESE LA S,MA +E LA EC,AC!O# X%1/1+1/2+ ! + 1/#

Por ejemplo x(3) % 1/1 + 1/2 + 1/3 % 1.83333

8ACER ,#A F,#C!O# REC,RS!/A 2,E E#C,E#TRE EL #,MERO F!&O#ACC! +E ,# #,MERO. LOS
#,MEROS F!&O#ACC! SO# ,#A S,CES!O# +E #,MEROS. LOS +OS PR!MEROS #,MEROS POS!T!/OS
SO# 1. +E A8; E# A+ELA#TE, CA+A #,MERO F!&O#ACC! ES LA S,MA +E LOS +OS A#TER!ORES. Por
ejemplo

#umero 1 2 3 4 5 6 7 8 ( 10 11

Fibonacci 1 1 2 3 5 8 13 21 34 55 8(

Fib(n) para esto existe las siguientes ecuaciones

Fib(1) %1
Fib(2)%2
Fibn%Fib(n-2)+Fib(n-1)










Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
71

class !jemplos<ecursion {
public static void main(String[] args) {
System.out.println("Lactorial de ?!7"QLactorial(?));
System.out.println(") al =7"Qeleva()(=));
System.out.println("'7=7"Q'(=));
System.out.println("Libonacci de >7"QLib(>));


public static int Lactorial(int n){
iF(n77;) return :;
else
return n*Lactorial(n/:);

public static int eleva(int b( int e){
iF(e77;) return :;
else
return eleva(b(e/:)*b;


public static double '( int n){
iF(n77:) return :.;;
else
return '(n/:)Q :.;/n;


public static int Lib(int n){
iF((n77:)NN (n77))) return :;
else
return Lib(n/)) Q Lib(n/:);


































Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
72

EJERCICIOS DE MWTODOS.

1. %scriba un 3.todo que reciba tres ,alores enteros que representan calificaciones. %l 3.todo debe regresar el ,alor de cadena
BIEN para un promedio de al menos EB, REGULAR para un promedio de al menos M: pero de menor a EB, o MAL para un
promedio menor de M:.

Ejemplo1

System.out.println(Calificacion((0,80,(5))$
H9!,
Ejemplo2

System.out.println(Calificacion(70,80,75))$
<!%I3"<
Ejemplo3

System.out.println(Calificacion(50,30,45))$
M"3

2. %scriba un 3.todo esPar que utilice el operador de X residuo para determinar si un entero es par o no. %l 3.todo deber$
recibir un argumento entero ! de,ol,er tr2e si el entero es par ! 7a&#e en caso contrario.

Ejemplo1

System.out.println(esPar((0))$ true
Ejemplo2

System.out.println(esPar(7))$ False

3. !mplemente los siguientes dos mtodos para enteros
a) Mtodo Celsius )ue devuelve el e)uivalente en grado Celsius de una temperatura en grados Fahrenheit.
b) Mtodo Fahrenheit )ue devuelve el e)uivalente en grados Fahrenheit de una temperatura en grados Celsius.
c) ,tilice estos Mtodos para escribir un programa en Java )ue permita al usuario introducir una temperatura en grados Fahrenheit y exhiba
el e)uivalente Celsius, o bien una temperatura en grados Celsius y exhiba el e)uivalente Fahrenheit.

+onversiDn de temperatura
+onversiDn de +elsius a La&ren&eit#

[+ a [L


Multiplica por (, divide entre 5, despus suma 32
+onversiDn de La&ren&eit a +elsius#

[L a [+


Resta 32, despus multiplica por 5, despus divide entre (

%jemplo1*

<!stem.out.println'deCa?'1::((4 $1$
%jemplo2*

<!stem.out.println'de?aC'212((4 1NN

C. %scriba un 3.todo mininum7 que de,uel,a el m$s peque8o de tres n0meros de punto flotante. )tilice el m.todo 3at#.min
para implementar mininum7. Incorpore el 3.todo en programa que lea tres ,alores tecleados por el usuario ! utilice mininum7
para determinar cu$l es el m$s peque8o. %#iba el resultado en la pantalla de la computadora.

E"em1&o 1:
class 3inTresg
public static ,oid main'<tring argjk(g
int a,b,c4
<!stem.out.print'-1ar primer numero...* -(4 aVTeclado.readInt'(4
<!stem.out.print'-1ar segundo numero* -(4 bVTeclado.readInt'(4
<!stem.out.print'-1ar tercer numeroi* -(4 cVTeclado.readInt'(4
<!stem.out.println'-%l menor esV- @ mininum7'a,b,c,((4
h
h

B. %scriba un 3.todo <uma5atural, que reciba un n0mero entero ! de,uel,a la suma de todos los n0meros naturales del
par$metro que reciba, por ejemplo* <uma5atural'7(, ser&a '1@2@7( es ), otro ejemplo* <uma5atural'B(, ser&a '1@2@7@C@B( es
1-.

G. 1ise8ar un 3.todo sobrecargado que calcule <uma de tres n0meros tipo int o tres numero tipo double,
E"em1&o1:

%jemplo2*
int nV<umadeTres'1,2,7(4

<!stem.out.println'n(4
)
double tV<umadeTres'2.:,1.B,G.2(4

<!stem.out.println'n(4
(.Q
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
77
). ARREGLOS.

B.: +5,+!425S "<<!%35S.

Se considerarn dos tipos estndares de casos en los )ue son tiles los arreglos

(1) Cuando una lista de datos se debe procesar ms de una vez.

(2) Cuando se necesita un gran nmero de variables relacionadas de suma o conteo.

Todas las variables )ue se han considerado hasta ahora han sido de tipo simple. ,na variable de tipo simple consiste de una sola caja de
memoria y solo puede contener un valor cada vez. En cambio, una variable de tipo estructurado consiste en toda una coleccin de casillas de
memoria.

,n arreglo, ( o disposiciDn ) la clase ms elemental de estructura de datos, consiste en una coleccin de casillas de memoria para almacenar
una lista de valores )ue deben ser del mismo tipo -Por ejemplo, una lista de nmeros enteros, una lista de nmeros reales, una cadena de la
misma longitud declarada, o una de valores bolanos. A la lista completa se le da un nombre.

4rficamente se representa un arreglo a unidimensional de la siguiente forma

Arreglo c

25.1 34.2 5.25 7.45 6.0(
0 1 2 3 4

El nmero de posicin en corchetes recibe el nombre ms formal de subndice. ,n subndice debe ser un entero o una expresin entera.

Todo arreglo en Java conoce su propia longitud y se determina con la siguiente expresin nombre#arreglo.length, por ejemplo el arreglo c sera
c.length, dara cinco elementos del arreglo con c[0], c[1], c[2], ! c[4]. El valor de c[0] es 25.1, el valor de c[1] es 34.2, el valor de c[2] es 5.25, el
valor de c[3] es 7.45 y el valor de c[4] es 6.0( Si )uisiramos calcular la suma de los valores contenidos en los tres primeros elementos del arreglo
c y almacenar la suma en la variable sum, sera sum% c[0]+c[1]+c[2]$

Si )uisiramos dividir el valor del tercer elemento del arreglo c entre 2 y asignar el resultado a la variable x, escribiramos x % c[3] / 2$

B.) 6!+3"<"+9A, 6! "<<!%35S I,969M!,S95,"3!S.

Los arreglos ocupan espacio en la memoria. El programador especifica el tipo de los elementos y usa el operador ne para asignar espacio de
almacenamiento al nmero de elementos re)ueridos por cada arreglo. Para asignar memoria a los 12 elementos del arreglo c, usa la declaracin

int c[ ] % ne int [12]$

El enunciado anterior tambin se puede realizarse en dos pasos como sigue

int c[ ]$ //declara el arreglo
c % ne int [12]$ //asigna memoria al arreglo

Cuando se asigna espacio de almacenamiento a un arreglo, los elementos se inicializan automticamente a cero en el caso de variables
numricas, a false para variables bolean o a null en el caso de tipo String.

Los elementos de una arreglo se pueden inicializar en la declaracin del arreglo continuando la declaracin con un signo igual y una lista separada
por comas y encerradas en llaves { - de inicializadores. En este caso, el tama"o del arreglo )ueda determinado por el nmero de elementos de la
lista de inicializadores.

int a[]%{(0,10,45,6,(,26,68,70,3,6-$
double n[]7{).=?(>B*.:)(=).;C;
char a[]%{$l$,$u$,$i$,$s$-$ // arreglo tipo char
String s[:*]7{"<5\5"("@!<6!"(""RI3"(",!%<5"; // arreglo de cadenas


El siguiente programa inicializa un arreglo de enteros con cinco valores e imprime el arreglo en forma tabular.

// ejemplos de inicializacion de arreglos
class !nicializa{
public static void main(String arg[]){
int c[ ]%{8,2,4,1,-10-, i$
System.out.println(*Elemento /alor*)$
for(i%0$i0c.length$i++)
System.out.println(*i *+ i + *<t<t<t*+ c[i])$
-
-

Elemento /alor
i 0 8
i 1 2
i 2 4
i 3 1
i 4 -10

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
7C


Los valores de los elementos de los arreglos se pueden introducir a travs del teclado.

EL S!4,!E#TE PRO4RAMA SOL!C!TA AL ,S,AR!O /ALORES +E T!PO FLOTA#TE 3 LO ALMACE#A AL ARRE4LO af 3 O&T!E#E LA S,MA
TOTAL.

// Lee datos desde teclado y los asigna al arreglo af
class LeeArreglo{
public static void main(String args[]){
float af[]%ne float[5], suma%0$ int i$

// solicita valores
for(i%0$i0af.length$i++){

System.out.print(*+ar elemento af[*+i+*] *)$ af[i]%Teclado.readFloat()$
-
for(i%0$i0af.length$i++)
suma%suma + af[i]$
System.out.println(*Total del arreglo af * + suma)$
-
-

+ar elemento af[0] 1.0
+ar elemento af[1] 2.3
+ar elemento af[2] 4.7
+ar elemento af[3] 3.2
+ar elemento af[4] 7.0
Total del arreglo af 18.2


!\!<+9+95S 6! "<<!%35S I,969M!,S95,"3!S#

1. Muestre lo )ue imprimir el siguiente fragmento de programa para los
datos

5 12 8 4 23 1(
0 1 2 3 4 5

si nums es de tipo int nums[]%ne int [6]$

for (i%0$i0%5$i++)
numsf[i]%Teclado.read!nt()$

for (i%0$i0%4$i++)
if (nums [i] 1 nums [i+1] ) nums [i]% 0$
else nums [i]% nums [ i ] + 5$
for (i%0$i0%5$i++)
printf(*%d<n *,nums[i])$
2. #ote )ue en el programa siguiente, el arreglo & esta declarado de
manera )ue su mximo ndice es 4.

int &%ne int[5], i$
for(i%0$i0%6$i++)
&[i]%i + 5$
for(i%0$i0%6$i++)
System.out.println(&[ i ])$

a. =2ue suceder al correr este programa% (Prubelo.)


3. Suponga )ue el
arreglo & se ha
declarado como int
&%ne int[10]$ y
)ue se ha llenado
con valores. =2u
est mal en el
fragmento
siguiente%

for (i%0$i0%($i++)
&[i]% &[i+1]$

4. +etermine la salida de este
fragmento de programa
considerando )ue el arreglo int
primero[):]; tiene los siguientes
valores 3,7,4,-1,0,6

int primero[]%ne int [21],i$

for(i%1$i0%6$i++){
System.out.print(*+ar numero *)$
primero[i]%Teclado.read!nt()$
-
for(i%3$i10$i--)
System.out.print(primero[2*i]+*,*)$
System.out.println()$
5. +etermine la salida de este fragmento de programa considerando )ue el arreglo
int segundo[):]; tiene los siguientes valores
> dar un valor atraves del teclado de > y los valores B(=(;(:(G asignarlo al arreglo
segundo

int segundo[]%ne int [21]$
int i,>,j$

System.out.print(*+ar valor de > *)$
>%Teclado.read!nt()$
for(i%3$i0%>$){
System.out.print(*+ar numero *)$
segundo[i]%Teclado.read!nt()$
i++$
-
j%4$
System.out.println(segundo[>]+segundo[j+1])$













Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
7B

B.= 4"S5 6! "<<!%35S I,969M!,S95,"3!S " M]2565S.

Para pasar un argumento de arreglo a un Mtodos, especificar el nombre del arreglo sin los corchetes. Por ejemplo, si se declar el arreglo
Temperaturas como

int Temperaturas[ ] % ne int[24]$

la llamada del Mtodo sera

ModificaArreglo(Temperaturas )$

Pasa el arreglo Temperaturas al Mtodo ModificaArreglo. En Java, todo objeto de arreglo conoce su propio tama"o$ as )ue cuando pasamos un
objeto de arreglo a un mtodo no necesitamos parar tambin el tama"o del arreglo como argumentos. Los arreglos se pasan por referencia, si el
arreglo sufre modificacin, tambin sufrir cambio el arreglo )ue se envio.
Para )ue un Mtodo reciba un arreglo a travs de una llamada de Mtodo, la lista de parmetros del Mtodo debe indicar )ue se recibir un
arreglo. Por ejemplo, la cabecera del Mtodo ModificaArreglo podra escribirse as public static void ModificaArreglo(int b[])

Para indicar )ue ModificaArreglo espera recibir un arreglo entero en el parmetro b. +ado )ue los arreglos se pasan por referencia, cuando el
Mtodo invocado utiliza el nombre del arreglo b, se refiere al arreglo real en el invocador o sea al arreglo Temperaturas.


public static void !mprimeArr(int Arr#nums[]){
for(int i%0 $i 0 Arr#nums.length$ i++)
System.out.print(Arr#nums[i]+* *)$ //imprime el arreglo nums
-


!\!M435S 6! "<<!%35S I,969M!,S95,"3!S y M!2565S#

1. Este programa lee tres valores del teclado y lo asigna al arreglo F,
despus lo inicializa todos los elementos en 1 y lo imprime en pantalla.

Ejemplo

;.; ;.; ;.;
6ar = numeros
+ar valores tipo flotante 2.3
+ar valores tipo flotante 4.54
+ar valores tipo flotante 87.3
).= ?.*? C>.=

:.; :.; :.;

class Inos{
public static void main(String args[]){
Float L[]7ne$ Float[=];
int i;
9mprime"rregloLlotante(L);
4edir6atosLlotantes(L);
9mprime"rregloLlotante(L);;
"signarInos(L);
9mprime"rregloLlotante(L);


public static void 4edir6atosLlotantes(Float "[]){
System.out.println("6ar "Q".lengt&Q" numeros");
For(int i7;;i. ".lengt&; iQQ){
System.out.print("6ar valores tipo Flotante# ");
"[i]72eclado.readLloat();



public static void 9mprime"rregloLlotante(Float "[]){
For(int i7;;i. ".lengt&; iQQ)
System.out.print("[i]Q" "); //imprime el arreglo "
System.out.println();


public static void "signarInos(Float "[]){
For(int i7;;i. ".lengt&; iQQ)
"[i]7:;
System.out.println();



2. Este programa inicializa el arreglo con los ndices del arreglo del 0 al
(. Ejemplo

; ; ; ; ; ; ; ; ; ;
; : ) = ? * B > C G

class !ndices{
public static void main(String args[]){
int x[]%ne int[10]$
int i$
!mprimeArreglo(x)$
Asigna(x)$
!mprimeArreglo(x)$$
-

public static void !mprimeArreglo(int A[]){
for(int i%0$i0 A.length$ i++)
System.out.print(A[i]+* *)$ //imprime el arreglo A
System.out.println()$
-

public static void Asigna(int A[]){
for(int i%0$i0 A.length$ i++)
A[i]%i$
-
-








Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
7G

3. Este programa calcula la suma de todos los elementos del arreglo ".
Ejemplo

) = : ; ?
Sumatoria7:;



class Suma{
public static void main(String args[]){
int "[]7{)(=(:(;(?;
int i(suma7;;
9mprime"rreglo(");
System.out.println("Sumatoria7"QSuma"rreglo("));


public static void 9mprime"rreglo(int "[]){
For(int i7;;i. ".lengt&; iQQ)
System.out.print("[i]Q" "); //imprime el arreglo "
System.out.println();


public static int Suma"rreglo(int "[]){
int suma7;;
For(int i7;;i. ".lengt&; iQQ)
suma7sumaQ"[i];
return suma;



4. Este programa busca un color en el arreglo colores, si lo encuentra
regresar el ndice del arreglo, de lo contrario regresar -1 (no existe el
color).

Ejemplo1

<5\5 @!<6! "RI3 ,!%<5
Color a buscar A?,L
<esultado7)

Ejemplo2

<5\5 @!<6! "RI3 ,!%<5
Color a buscar MORA+O
<esultado7/:

class Colores{
public static void main(String args[]){
String x[]%{*ROJO*,*/ER+E*,*A?,L*,*#E4RO*-,color$
int i$
!mprimeColor(x)$
System.out.print(*Color a buscar *)$
color%Teclado.readString()$
System.out.println(*Resultado%*+&uscar(x,color))$
-

public static void !mprimeColor(String c[]){
for(int i%0$i0 c.length$ i++)
System.out.print(c[i]+* *)$ //imprime el arreglo c
System.out.println()$
-

public static int &uscar(String c[],String color){
for(int i%0$i0 c.length$ i++)
if(c[i].e)uals(color)){
return i$
-
return -1$
-
-







































Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
7M

5. 8acer un mtodo )ue reciba un arreglo de valores y un nmero y
multipli)ue todos los valores del arreglo por ese nmero. !mprima el
arreglo resultante. Ejemplo

; ; ;
+ar numero 1
+ar numero 2
+ar numero 3
: ) =
= B G

class Mult{
public static void main(String args[]){
int Ar[]%ne int[3]$
int i$
!mprimeArreglo(Ar)$
Pide+atos(Ar)$
!mprimeArreglo(Ar)$$
Multiplica(Ar,3)$
!mprimeArreglo(Ar)$
-

public static void Multiplica(int Ar[],int num){
for(int i%0$ i0Ar.length$ i++)
Ar[i]%Ar[i]*num$
-

public static void !mprimeArreglo(int Ar[]){
for(int i%0$ i0Ar.length$ i++)
System.out.print(Ar[i]+* *)$
System.out.println()$
-

public static void Pide+atos(int Ar[]){
for(int i%0$ i0Ar.length$ i++){
System.out.print(*+ar numero *)$
Ar[i]%Teclado.read!nt()$
-
-
-
6. Escribir un Mtodo )ue reciba dos arreglos y compruebe si todos los
elementos del primero se encuentran en el segundo devolviendo true o
false en funcin de si encuentra o no todos los valores

Ejemplo1

: ) =
* = > ) : C
true

Ejemplo2

: ) = G
* = > ) : C
False

class EncuentraTodos{
public static void main(String args[]){

int a1[]%{1,2,3-$
int a2[]%{5,3,7,2,1,8-$

!mprimeArreglo(a1)$
!mprimeArreglo(a2)$
System.out.println(Comprueba(a1,a2))$
-

public static void !mprimeArreglo(int c[]){
for(int i%0$i0 c.length$ i++)
System.out.print(c[i]+* *)$ //imprime el arreglo c
System.out.println()$
System.out.println()$
-

public static boolean Comprueba(int a1[],int a2[]){
int i,j$
for(i%0$i0 a1.length$ i++){
for(j%0$j0 a2.length$ j++)
if(a1[i]%%a2[j])
brea>$
if(j%%a2.length)
return false$
-
return true$
-
-


B.? "plicaciones utiliZando "rreglos Inidimensionales.


B.?.: 5rdenar arreglos.

El ordenamiento de datos, esto es, colocar los datos en algn orden especfico, como ascendente o descendente, es una de las aplicaciones ms
importantes de las computadoras. ,n banco ordena todos los che)ues por nmero de cuenta para poder preparar estados de cuenta bancarios
individuales al final de cada mes. Las compa"as telefnicas ordenan sus listas de cuentas por apellidos para facilitar la localizacin de nmeros
telefnicos. Prcticamente todas las organizaciones necesitan ordenar datos, y en algunos casos cantidades enormes de datos.

El siguiente programa ordena los valores del arreglo a de 10 elementos en orden ascendente. La tcnica se denomina ordenamiento de burbuja,
los valores ms pe)ue"os gradualmente suben hacia el principio del arreglo, mientras )ue los valores ms grandes descienden hacia el final del
arreglo.

La tcnica consiste en realizar varias pasadas por el arreglo. En cada pasada se comparan pares de elementos sucesivos. Si un par sta en orden
creciente, dejamos los valores tal como estn. Si un par est en orden creciente, intercabiamos sus valores del arreglo.

public class Hurbuja{
public static void main(String args[]) {
int a[]7{G;(:;(?*(B(G()B(BC(>;(=(B;
System.out.println("6atos del arreglo .a1 en el orden original#");
9mprime"rr(a);
5rdenar(a);
System.out.println("VnVn6atos del arreglo .a1 en el orden ascendente#");
9mprime"rr(a);
System.out.println("Vn");




Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
7E

public static void 9mprime"rr(int "rrXnums[]){
For(int i7; ;i . "rrXnums.lengt&; iQQ)
System.out.print("rrXnums[i]Q" "); //imprime el arreglo nums


public static void 5rdenar(int a[]){
int au';
For(int pas7:;pas . a.lengt&;pasQQ )
For(int i7; ;i . a.lengt&/:; iQQ)
iF(a[i]1 a[iQ:]){
au'7a[i];
a[i]7 a[iQ:];
a[iQ:]7au';





6atos del arreglo .a1 en el orden original#

G; :; ?* B G )B BC >; = B

6atos del arreglo .a1 en el orden ascendente#
= B B G :; )B ?* BC >; G;







B.?.) 4ila (Sac^).

!structuras de datos !st_ticas.

Son a)uellas )ue se implementan usando vectores por lo )ue tienen un nmero de elementos limitado.

,na pila es un contenedor de datos cuyo comportamiento est regido por el principio L!FO (Last !nput Firt Output). En este tipo de estructura los
datos o elementos pueden insertarse y suprimirse elementos solo por un extremo, llamado tope o cima$ es decir, en una pila el ltimo dato en
entrar es el primero en salir.

Aplicaciones de las Pilas. Los navegadores de !nternet almacenan las direcciones visitadas recientemente. Cada vez )ue el usuario visita una
pgina, su direccin es almacenada en una pila, de forma )ue cada vez )ue el usuario hace clic> en bac> se retira el ltimo elemento insertado en
la pila, esto es, se muestra en pantalla la ltima pgina visitada.

5peraciones con pilas#

H_sicas#




` Pila vaca y llena.


Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
79
` El tope de la pila.




` Push & Pop

Las operaciones bsicas de la pila son: insertar un elemento (push) y quitar un elemento (pop).

PUSH: Cuando se ejecuta la instruccin Push en una Pila, se ejecuta un algoritmo que inserta un elemento dentro de la pila
de datos. Suponga que queremos insertar el numero en una pila de n!meros:




POP: Cuando se ejecuta la instruccin Pop en una pila se esta indicando que queremos borrar el elemento que se
encuentre en la cima de nuestra pila:









5peraciones "u'iliares#
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
C:

llena()#Regresa verdadero si la pila est llena.
vacia()#Regresa verdadero si la pila est vaca.
siZe()# Regresa el tope de la pila.
vaciar()# Elimina todos los elementos de la pila

9mplementaciDn del 62" !st_tico 4ila en \ava.

class 4ila {
private int[]pila;
private int tope;
private int ma';
public 4ila() {
ma'7=;
pila7ne$ int[ma'];
tope7/:;


public void 4us&(int dato){
iF(tope77ma'/:)
System.out.println("!rror# 4ila llena...");
else
pila[QQtope]7dato;


public int 4op(){
int '7/:;
iF(tope.;)
System.out.println("!rror. 4ila @acia");
else
'7pila[tope//];
return ';


public int Stac^X2op(){
int '7/:;
iF(tope.;)
System.out.println("!rror. 4ila vacia");
else
'7pila[tope];
return ';


public void Stac^X3oo^(){
c&ar continuar;
System.out.println();
System.out.println("!stado "ctual de la 4ila");
For(int i7tope; i17;;i//)
System.out.println("["QiQ"]7 "Qpila[i]);
continuar72eclado.read+&ar();
System.out.println();




























public class 4rueba4ila {
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
C1

public static void main(String[] args) {
4ila p:7 ne$ 4ila();
int elementos7;( dato7;;
c&ar op(continuar;
do{
Menu();
op72eclado.read+&ar();
s$itc&(op){
case T4T#
case TpT#
System.out.println();
System.out.println("9,S!<2"<");
System.out.print("6ar numero# ");
dato72eclado.read9nt();
p:.4us&(dato);
p:.Stac^X3oo^();
brea^;
case TJT#
case T0T#
System.out.println();
System.out.println("!39M9,"<");
dato7p:.4op();
// si dato es /: pila vacia
System.out.println("!lemento "Qdato);
p:.Stac^X3oo^();
brea^;
case T@T#
case TvT#
System.out.println();
System.out.println("@!<");
dato7p:.Stac^X2op();
System.out.print("!lemento "Qdato);
p:.Stac^X3oo^();
brea^;

$&ile(op!7TLT OO op!7TFT);


public static void Menu(){
System.out.println("M!,I 493"");
System.out.println("45,!<");
System.out.println("JI92"<");
System.out.println("@!<");
System.out.print("L9,# ");



B.* "<<!%35S H969M!,S95,"3!S.

Es frecuente utilizar arreglos con dos subndices para representar tablas de valores, )ue consisten en informacin dispuesta en filas y columnas.
Para identificar un elemento particular de la tabla debemos especificar dos subndices el primero identifica la fila del elemento y el segundo
identifica la columna del elemento. Ejemplo de un arreglo a con dos subndices, )ue contiene tres filas y cuatro columnas, por lo )ue decimos )ue
es un arreglo de 3 por 4. En general, un arreglo con m filas y n columnas es un arreglo de m por n.

Columna 0 Columna 1 Columna 2 Columna 3

Fila 0 a[0][0] a[0][1] a[0][2] a[0][3]
Fila 1 a[1][0] a[1][1] a[1][2] a[1][3]
Fila 2 a[2][0] a[2][1] a[2][2] a[2][3]

Cada elemento del arreglo a se identifica con un nombre de elemento de la forma a[i][j]$ a es el nombre del arreglo, e i y j son los subndices )ue
identifican de forma nica cada elemento de a.

El arreglo a se declara int a[][] % ne int[3][4]$

Todo el arreglo a se inicializa con cero.

Los arreglos bidimensionales tambin se pueden declarar e inicializar

int a[ ][ ]%{
{4,2,7,1-,
{1,7,8,5-,
{(,4,6,3-
-$
Para exhibir el contenido de cada arreglo se determina de la siguiente forma
#ombre#del#arreglo.length, esto determina el nmero de filas de todo el arreglo.
#ombre#del#arreglo.length[fila], esto determina el nmero de columnas de cada fila del arreglo.

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
C2
>. 4<5%<"M"+9A, 5<9!,2"6" " 5H\!25S.

>.: 4<5%<"M"+9A, H"S"6" !, 5H\!25S.

Caractersticas de la Programacin basada en Objetos

Todo es un objeto Considere un objeto una variable especial, no solamente guarda datos, sino tambin se pueden hacer solicitudes a este Objeto
en s. En teora, cual)uier elemento en el problema espacial (real) (edificios, servicios, automviles, u otra entidad) puede ser representado como
un objeto en un programa.

,n programa es un conjunto de Objetos, envindose mensajes entre s Para realizar una solicitud a un Objeto es necesario enviarle un mensaje.
Concretamente se puede pensar )ue un mensaje es una solicitud para llamar un mtodo )ue pertenece a cierto objeto.

Cada Objeto tiene su memoria, conformada por otros Objetos En otras palabras, es posible generar un tipo de Objeto nuevo agrupando Objetos
existentes. +e esta manera se pueden armar estructuras complejas en un programa, escondidas detrs de la simplicidad de Objetos.
Todo Objeto tiene su Tipo En este sentido Tipo se refiere a Clase, donde cada Objeto es una instancia de una Clase en cuestin. La caracterstica
ms importante de una Clase es el tipo de mensajes )ue pueden ser enviados a ella.

Todo Objeto de un mismo tipo puede recibir los mismos mensajes Esto implica )ue si un Objeto es del tipo Circulo un Objeto del tipo Figura ser
capaz de recibir mensajes de Circulo, puesto )ue un Circulo es una Figura. Este concepto forma parte medular de todo lenguaje Orientado a
Objetos como Java.

>.) 6!L9,9+95, 6! I," +3"S!.

El elemento bsico de la Programacin Orientada a Objetos en Java es la clase. ,na clase define la forma y comportamiento de un objeto.
Para crear una clase slo se necesita un archivo fuente )ue contenga la palabra clave reservada public lass seguida de un identificador legal y un
blo)ue delimitado por dos llaves para el cuerpo de la clase.

public class Mi+lase{

/// / /

/// / /



Las clases tpicas de Java incluirn variables y mtodos de instancia. Los programas en Java completos constarn por lo general de varias clases
de Java en distintos archivos fuente.
,na clase es una plantilla para un objeto. Por lo tanto define la estructura de un objeto y su interfaz funcional, en forma de mtodos. Cuando se
ejecuta un programa en Java, el sistema utiliza definiciones de clase para crear instancias de las clases, )ue son los objetos reales. Los trminos
instancia y objeto se utilizan de manera indistinta.

La forma general de una definicin de clase es

public class ,ombreXdeXlaX+lase {
tipo var:(var)( / / /( var,; // @"<9"H3!S 6! 9,S2",+9"
public ,ombreXdeXlaX+lase (){ // +5,S2<I+25<!S
var:7@alorX9nicial( var)7@alorXinicial( var,7@alorXinicial;


//M!2565S#
tipo Metodo:( listaXdeXparametros ) {
cuerpoXdelXm-todo:;

tipo Metodo)( listaXdeXparametros ) {
cuerpoXdelXm-todo);

/// / /


@ariables de instancia.

Los datos se encapsulan dentro de una clase declarando variables dentro de las llaves de apertura y cierre de la declaracin de la clase, variables
)ue se conocen como de instancia. Se declaran igual )ue las variables locales de un mtodo en concreto. En el ejemplo MiClase la variable de
instancia entera llamada i.

+onstructores.

Las clases pueden implementar un mtodo especial llamado constructor. ,n constructor es un mtodo )ue inicia un objeto inmediatamente
despus de su creacin. +e esta forma nos evitamos el tener )ue iniciar las variables explcitamente para su iniciacin.

El constructor tiene exactamente el mismo nombre de la clase )ue lo implementa$ no puede haber ningn otro mtodo )ue comparta su nombre
con el de su clase. ,na vez definido, se llamar automticamente al constructor al crear un objeto de esa clase (al utilizar el operador ne).
El constructor no devuelve ningn tipo, ni si)uiera void. Su misin es iniciar todo estado interno de un objeto (sus atributos), haciendo )ue el objeto
sea utilizable inmediatamente$ reservando memoria para sus atributos, iniciando sus valores.




Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
C7
Por ejemplo la clase MiClase, el constructor es

public Mi+lase(){
i7:;;


+onde inicializa la variable de instancia i%10$

Los mtodos son subrutinas )ue definen la interfaz de una clase, sus capacidades y comportamiento.

,n mtodo ha de tener por nombre cual)uier identificador legal distinto de los ya utilizados por los nombres de la clase en )ue est definido. Los
mtodos se declaran al mismo nivel )ue las variables de instancia dentro de una definicin de clase.

!jemplo:. La clase MiClase sirve para calcular la suma de dos nmeros

public class Mi+lase{
public static int i; //variable de instancia
public Mi+lase()//+onstructor {
i7:;;


publi c static void SumaXaXi ( int j ) { // M-todo
i7iQj;



+espus de escribir la clase, nicamente se compila javac MiClase.java y genera la clase MiClase.class, para )ue posteriormente utilizarlo en una
aplicacin.

>.= 9,S2",+9"+9A, 6! 3"S +3"S!S.

Referencias a Objeto e !nstancias

Los tipos simples de Java describan el tama"o y los valores de las variables. Cada vez )ue se crea una clase se a"ade otro tipo de dato )ue se
puede utilizar igual )ue uno de los tipos simples. Por ello al declarar una nueva variable, se puede utilizar un nombre de clase como tipo. A estas
variables se las conoce como referencias a objeto.

Se puede declarar una variable mc del tipo MiClase y guardar una referencia a una instancia de este tipo de clase

MiClase mc % ne MiClase()$

Esta es una declaracin de una variable mc )ue es una referencia a un objeto de la clase MiClase.
La lista de parmetros especificada despus del nombre de una clase en una sentencia ne se utiliza para pasar parmetros al constructor.

Se llama al mtodo constructor justo despus de crear la instancia y antes de )ue ne devuelva el control al punto de la llamada. En este ejemplo
no se le enva parmetros, solo inicializa la variable i%10$

Acceso al objeto. El operador punto (.)

El operador punto (.) se utiliza para acceder a las variables de instancia y los mtodos contenidos en un objeto, mediante su referencia a objeto

referencia#a#objeto . nombre#de#variable#de#instancia
referencia#a#objeto . nombre#de#mtodo( lista-de-parmetros )$

8emos creado un ejemplo completo )ue combina el operador ne y punto para crear un objeto mc, almacenar algunos valores en l e imprimir sus
valores finales

As, cuando ejecutamos la siguiente instruccin

System.out.println(*i% *+mc.i)$
Se muestra en la pantalla i % 10

Para crear un programa Java )ue contenga ese cdigo, se debe de crear una clase )ue contenga un mtodo main(). El intrprete Java se
ejecutar el mtodo main de la clase )ue se le indi)ue como parmetro.

Ejemplo de cmo utilizar la clase MiClase

class PruebaMiClase{
public static void main(String args[]) {
MiClase mc = new MiClase(); int n;
Teclado T= new Teclado();
mc.i; !! "#"=""
S$stem.out.println(%i= %mc.i);
S$stem.out.print(%&ar numero' %);
n=T.read(nt();
mc.Suma)a)i(n); !! ""n
S$stem.out.println(%&espues de sumar i= % mc.i);
*
*

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
CC

i7 ::
6ar numero# )=
6espues de sumar i7 =?




!jemplo). La clase A sirve para cambiar los valores de x,y, incrementar en uno la variable x y mostrar los valores de x,y.

6!L9,9+9A, 6! 3" +3"S! "

public class +{
public static int ,-$;
public +(){
,=./; $="##;
*

!! m0todos
public static void Set(int v,-int v$){
,=v,; $=v$;
*

public static void (nc,(){
,;
*

public static void Print,$(){
S$stem.out.println(,% %$);
*
*

9,S2",+9"+9A, 6! 3" +3"S! "

!!prueba de la clase +
class PruebaClase+{
public static void main(String args[]) {
+ a = new +();
a.Print,$();
a.Set(1-"");
a.Print,$();
a.(nc,();
a.Print,$();
S$stem.out.println(a., % %a.$);
+ a2= new +();
a2.Set(.-3"1);
a2.Print,$();
*
*


C* :;;
B ::
> ::
> ::
C /:B






!jemplo=. +ise"ar una clase con el nombre de CtlArreglos )ue contenga los siguientes mtodos.

a. Pedir+atos(Arreglo). Este mtodo recibe un arreglo con valores en cero tipo entero de tres elemento. Este sirve para solicitar al usuario
nmeros y almacenarlo al Arreglo.

6ar numero# :
6ar numero# )
6ar numero# =

El Arreglo contendr los elemento :()(=

b. !mpArreglo(Arreglo). Este mtodo recibe el Arreglo valores tipo entero de tres elemento. Este sirve para mostrar todos los elementos del
arreglo en forma horizontal. Por ejemplo, considerando el ejemplo anterior el arreglo se mostrara de la siguiente forma 1 2 3

c. Multiplica(Arreglo, numero). Este mtodo recibe un Arreglo valores de tres elemento tipo entero y un nmero tipo entero, el mtodo debe
multiplicar todos los elementos del Arreglo por este nmero y el resultado asignarlo de nuevo al Arreglo. El contenido del Arreglo seria
3 6 (

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
CB
d. Escribir un programa Prueba para utilizar estos mtodos. Por ejemplo

public class Ctl+rreglos {

public static void Multiplica(int +r[]-int num){
4or(int i=#; i5+r.lengt6; i)
+r[i]=+r[i]7num;
*

public static void (mp+rreglo(int +r[]){
4or(int i=#; i5+r.lengt6; i)
S$stem.out.print(+r[i]% %);
S$stem.out.println();
*

public static void Pide&atos(int +r[]){
4or(int i=#; i5+r.lengt6; i){
S$stem.out.print(%&ar numero' %);
+r[i]=Teclado.read(nt();
*
*
*

public class TestCtl+rreglos {
public static void main(String[] args) {
int +r[]=new int[8];
Ctl+rreglos C+= new Ctl+rreglos();
C+. (mp+rreglo(+r);
C+. Pide&atos(+r);
C+. (mp+rreglo(+r);
C+.Multiplica(+r-8);
C+. (mp+rreglo(+r);
*
*

; ; ;
6ar numero# :
6ar numero# )
6ar numero# =
: ) =
= B G

!jemplo?. +lase %uitarra.

public class 4uitarra{
private int numeroCuerdas$
private String tono$
private String color$
private String nombre+ue"o$
public 4uitarra (){-

public 4uitarra (String tono, String color, String nombre+ue"o){
setTono(tono)$
setColor(color)$
set#ombre+ue"o(nombre+ue"o)$
-

public 4uitarra (int ncuerdas, String tono, String color){
set#umeroCuerdas(ncuerdas)$
setTono(tono)$
setColor(color)$
-

public void set#umeroCuerdas (int valor){
if(valor07){
this.numeroCuerdas % valor$
-
else{
System.out.println(*no hay numero de cuerdas mayor )ue 7*)$
-
-

public void set#ombre+ue"o (String valor){
this.nombre+ue"o % valor$
-

public void setTono (String t){
this.tono % t$
-

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
CG
public void setColor (String c){
this.color % c$
-

public int get#umeroCuerdas(){
return this.numeroCuerdas$
-

public String getTono(){
return this.tono$
-

public String getColor(){
return this.color$
-

public String get#ombre+ue"o(){
return this.nombre+ue"o$
-
-

Mtodo Principal

public class Test4uitarra{

public static void main (String [] arreglo){
4uitarra g1% ne 4uitarra ()$
4uitarra g2% ne 4uitarra (*sol*,*rojo*,*>arol*)$
4uitarra g3% ne 4uitarra (6,*Mi*,*azul*)$
System.out.println (g2.getTono() + * * + g2.getColor() + * * +g2.get#ombre+ue"o())$
System.out.println (g3.get#umeroCuerdas() + * * + g3.getTono() + * * +g3.getColor())$
-
-



!jemplo*. +lase Hanco

public class &anco {
private int numeroCuenta$
private String nombreCliente$
private int deposito$
private int saldo$

public &anco(int numeroCuenta, String nombreCliente){
set#umeroCuenta (numeroCuenta)$
set#ombreCliente (nombreCliente)$
-

public &anco (int deposito, int saldo){
set+eposito (deposito)$setSaldo (saldo)$
-

public &anco (int numeroCuenta, String nombreCliente,int deposito,int saldo){
set#umeroCuenta (numeroCuenta)$
set#ombreCliente (nombreCliente)$
set+eposito (deposito)$setSaldo (saldo)$
-

public void set#umeroCuenta (int valor){
if (valor 0 1000){
this.numeroCuenta % valor$
-
else{
System.out.println (*el numero de cuenta no existe*)$
-
-

public void set#ombreCliente (String valor) {
this.nombreCliente % valor$
-

public void set+eposito(int d) {
this.deposito% d$
-

public void setSaldo(int s){
this.saldo % s$
-

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
CM
public int get#umeroCuenta(){
return this.numeroCuenta$
-

public String get#ombreCliente(){
return this.nombreCliente$
-

public int get+eposito(){
return this.deposito$
-

public int getSaldo(){
return this.saldo$
-
-

M-todo 4rincipal


public class Test&anco {

public static void main (String [] args){
&anco b1 % ne &anco (((,*+avid*)$
&anco b2 % ne &anco (100000,150000)$
&anco b3 % ne &anco (200, *Mariana*,450000,800000)$
System.out.println (b1.get#umeroCuenta() + * * + b1.get#ombreCliente())$
System.out.println (b2.get+eposito() + * * + b2.getSaldo())$
System.out.println (b3.get#umeroCuenta() + * * + b3.get#ombreCliente() + * * +b3.get+eposito() + * * + b3.getSaldo())$
-
-

>.? !structura +ola de 5bjetos.

Colas %n +a,a

)na cola es simplemente un lugar para almacenar cosas, donde esas cosas se insertan una detr$s de otra ! para etraer
siempre se lo #ace por adelante de la cola donde se encuentra el primer elemento. )na cola funciona como una fila o cola de
personas, que esperan su turno para ser atendidas, la primera persona atendida es siempre la primera de la fila ! cuando
llega una persona ! queremos incorporarla a cola o adicionarla debemos #acerlo por detr$s de la 0ltima persona en la cola.

Con fines educati,os una cola se la puede representar gr$ficamente as&*


)na cola puede almacenar lo que nosotros queramos, n0meros, personas, documentos, cualquier cosa. %sta estructura de
datos tiene muc#as aplicaciones en la inform$tica al igual que la pila, por ejemplo cuando mandan a imprimir ,arios
documentos a una impresora, eiste una cola de impresin que sigue la filosof&a, se imprimen los primeros documentos ! si
quiero imprimir un nue,o documento se adiciona al final de todos los documentos que est$n esperando a imprimirse.
)na ,e" comprendido en concepto a#ora ,eamos como se implementa esto en un lenguaje de programacin, por a#ora lo
implementaremos en +a,a. Pues bien eisten dos formas de implementar para que la cola sea o bien est$tica 'reser,amos un
espacio fijo en memoria( o bien din$mica 'el tama8o en memoria ,a creciendo seg0n se requiere(, se implementa con
arreglos con listas enla"adas respecti,amente.


+lase +ola 9mplementada con 5bjetos.
Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
CE

public class #odo {
public int dato$
public #odo next$

public #odo(int n) {
dato%n$
next%null$
-
-

public class Cola+in {
private #odo start,,$

public void add(int #) {
#odo aux%start$
char pausa$
if(aux%%null){ // si la cola esta vacia
aux%ne #odo(#)$
start%aux$
-
else{
hile(aux.next6%null)
aux%aux.next$
aux.next%ne #odo(#)$
,%aux$
-
-

public void remove(){
#odo aux%start$
char pausa$
if(aux%%null)
System.out.println(*Error. La cola esta vacia*)$
else
{
aux%start$
if(start%%,)
,%null$
System.out.println(*+ato eliminado0*+start.dato+*1*)$
start%aux.next$
-
-
public void Consultas(){
#odo aux%start$ char pausa$
hile(aux6%null){
System.out.print(aux.dato+*-1*)$
aux%aux.next$
-
pausa%Teclado.readChar()$
-
-
public class TestCola {
public static void main(String[] args) {
char op,pausa$ int n,m,i$
Cola+in L% ne Cola+in()$
do{
Menu()$
op%Teclado.readChar()$
sitch(op){
case $!$ case $i$
System.out.println(*ME#, !#SERTAR*)$
System.out.print(*+ar numero *)$n%Teclado.read!nt()$
L.add(n)$
L.Consultas()$ brea>$
case $E$ case $e$
System.out.println(*ME#, EL!M!#AR*)$
L.remove()$
L.Consultas()$ brea>$
-
-hile(op6%$S$55 op6%$s$)$
-
public static void Menu(){
System.out.println(*ME#, COLA*)$
System.out.println(*!nsertar*)$
System.out.println(*Eliminar*)$
System.out.println(*Salir*)$
-
-

Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
C9
>.* Herencia.

Es una propiedad )ue permite )ue los objetos sean creados (e'tends) a partir de otros ya existentes, obteniendo caractersticas (mtodos y
atributos) similares a los ya existentes. Es la relacin entre una clase general y otra clase especifica. Es un mecanismo )ue permite crear clases
derivadas a partir de la clase base, permite compartir automticamente mtodos y datos entre clases subclases y objetos.

La herencia es uno de los mecanismos de la programacin orientada a objetos, por medio del cual una clase se deriva de otra, llamada entonces
superclase (super), de manera )ue extiende su funcionalidad. ,na de sus funciones ms importantes es la de proveer Polimorfismo.

La idea es la de partir de las situaciones ms generales e ir derivando hacia las ms particulares, creando categoras, de la misma forma en )ue
piensa el ser humano.


Hobi tiene ? patas

He^er tiene B patas


!jemplo de Herencia en \ava#

public class Mamifero{
private int patas$
private String nombre$

public void imprimirPatas(){
System.out.println(nombre+ @ tiene @+ patas+ @ patas)$
-

public Mamifero(String nombre, int patas){
this.nombre % nombre$
this.patas % patas$
-
-

public class Perro e'tends Mamifero {
public Perro(String nombre){
super(nombre,4)$
-
-

public class 4ato e'tends Mamifero {
public 4ato(String nombre){
super(nombre,4)$
-
-

public class CreaPerro {
public static void main(String args[]){
Perro bobi % ne Perro(@&obi)$
bobi.imprimirPatas()$ /*Esta en la clase mamifero*/
-
-

Se declaran las clases mamferos, gato y perro, haciendo )ue gato y perro sean unos mamferos (derivados de esta clase), y se ve como a travs
de ellos se nombra al animal perro as tambin se accede a pastas dndole el valor por defecto para esa especie.

/entajas

A Ayuda a los programadores ahorrar cdigo y tiempo, ya )ue si tiene una clase lista es solo de implementarla y listo todo el cdigo de esta se
resume a solo un llamado.

A Los objetos pueden ser construidos a partir de otros similares. Para ello es necesario )ue exista una clase base y una jerar)ua (modificando lo
heredado).

A Las clases )ue heredan propiedades de otra clase pueden servir como clase base de otras. Estereotipos de herencia.

A 8erencia simple ,n objeto puede extender las caractersticas de otro objeto y de ningn otro, es decir, )ue solo puede heredar o tomar atributos
de un solo padre o de una sola clase.

A 8erencia mltiple ,n objeto puede extender las caractersticas de uno o ms objetos, es decir, puede tener varios padres. En este aspecto hay
discrepancias entre los dise"adores de lenguajes. Algunos de ellos han preferido no admitir la herencia mltiple por las posibles coincidencias en
nombres de mtodos o datos miembros. Por ejemplo C++, Python permiten herencia mltiple, mientras )ue Java, Ada y CB slo permiten herencia
simple.







Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
B:
>.B "ppletMs.

El primer applet de Java.

,n applet es un programa )ue anima una porcin de una pgina Ceb. Se recupera a partir de la red y corre en la m)uina del usuario, pero con
muchas restricciones de modo )ue no pueda afectar la integridad del ambiente del usuario.

A continuacin veremos versin applet del ejemplo anterior. Es decir un programa )ue coloca en una pgina Ceb el mensaje 8ola Mundo
Applet6.

Crear el programa fuente 8olaAp.java

// !jemplo de un "pplet # Hola"p.java
import java.a$t.%rap&ics;
import java.applet."pplet;
public class Hola"p e'tends "pplet{
public void paint(%rap&ics g){
g.dra$String("Hola mundo "pplet!"()*()*);



Compilar con javac 8olaAp.java

+ado )ue un applet no se invoca desde el intrprete de comandos, no tiene sentido definir el mtodo main. El broser Ceb notifica al applet )ue
debe dibujar su contenido invocando el mtodo paint. Esto ocurre cada vez )ue se muestra la porcin de la pgina html )ue contiene este applet.
Por lo tanto un applet debe definir el mtodo paint (en vez de main).

Las instrucciones

import java.at.4raphics$
import java.applet.Applet$

indican )ue dentro del archivo las clases java.at.4raphics y java.applet.Applet sern conocidas simplemente como 4raphics y Applet.
Luego viene la definicin de la clase 8olaAp con

public class 8olaAp extends Applet { ... -

Las palabras extends indican )ue 8olaAp es una extensin de la clase de biblioteca Applet. Esto significa )ue 8olaAp es casi como Applet, solo
)ue se modifica el comportamiento del mtodo paint.

El mtodo paint recibe como argumento un objeto de tipo 4raphics )ue corresponde a una clase de biblioteca. Este objeto se usa para dibujar en
la porcin de pgina html asignada al applet.

La instruccin g.draString(*8ola mundo Applet66*,25,25)$ dibuja la cadena 8ola mundo Applet66 en la porcin asignada en las coordenadas (25,
25).

Es necesario construir la pgina html )ue va a contener el applet. Crear la pgina 8olaAp.html con el siguiente contenido

.!// Hola"p.&tml( programa 0ue llama la clase Hola"p //1
.H2M31
."443!2 +56!7"Hola"p.class" 8962H7*; H!9%H27:*;1
./"443!21
./H2M31

8olaAp.html debe estar en el mismo directorio )ue 8olaAp.java.

/er el applet con appletvieer 8olaAp.html

El mismo applet tambin se puede ver desde Ceb como !nternet Explorer u otros.





















Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
B1
//5btiene el ma'imo de tres numeros
import java.a$t.*;
import java.applet."pplet;
public class Ma'num e'tends "pplet {
3abel label:(label)(label=( result3abel;
2e'tLield number:( number)( number=( result;
int num:(num)(num=(ma';
// establecer ratulos y campos de te'to
public void init() {
label:7 ne$ 3abel("2ecle el primer numero# ");
number:7 ne$ 2e'tLield(""(:;);
label)7 ne$ 3abel("2ecle el segundo numero# ");
number)7 ne$ 2e'tLield(""(:;);
label=7 ne$ 3abel("2ecle el tercer numero# ");
number=7 ne$ 2e'tLield(""(:;);
result3abel 7 ne$ 3abel("!l valor ma'imo es#");
result 7 ne$ 2e'tLield(""(:;);
result.set!ditable(False);

add(label:);
add(number:);
add(label));
add(number));
add(label=);
add(number=);
add(result3abel);
add(result);


// 6eFinicion del metodo ma'inum
public int ma'inum(int '( int y( int Z){
return Mat&.ma'('(Mat&.ma'(y(Z));


//5btener los enteros e invocar el metodo ma'inum
public boolean action( !vent e( 5bject o){
num:7 9nteger.parse9nt(number:.get2e't());
num)7 9nteger.parse9nt(number).get2e't());
num=7 9nteger.parse9nt(number=.get2e't());
ma'7ma'inum(num:(num)(num=);
result.set2e't(" ");
result.set2e't(9nteger.toString(ma'));
return true;



.!// Ma'num.&tml( programa 0ue llama la clase Ma'inum //1
.H2M31
."443!2 +56!7"Ma'num.class" 8962H7);; H!9%H27=*;1
./"443!21
./H2M31





























Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
B2
>.> "49Ms

&iblioteca de clases de Java (AP! Application Programming !nterface% !nterfaz de Programacin de Aplicaciones).

Los programas Java consisten en piezas llamadas clases y mtodos. Se puede programar cada pieza )ue se vaya a necesitar para formar un
programa Java, pero la mayora de los programadores )ue usan Java aprovechan las ricas colecciones de clases y mtodos )ue existen ya en las
bibliotecas de clases de Java. Por tanto, el aprendizaje del mundo de Java tiene en realidad dos aspectos.

El primero es aprender el Lenguaje Java (sintaxis) mismo para poder programar clases y mtodos propios.

El segundo consiste en aprender usar las clases y mtodos de las extensas bibliotecas de clases de Java AP!.

Las &ibliotecas de la AP! de Java consisten de varios pa)uetes, cada uno de los cuales contiene varias clases )ue se agrupan de acuerdo con su
funcionalidad. Estas clases consisten de campos y mtodos.

Con estas bibliotecas podemos realizar las siguientes acciones

A !nterfaces de usuario, Animacin y Procesamiento de !mgenes (java.at) (ACT% Abstract Cindo Tool>it). Sirve para crear interfaces
atractivas tiles para applets. Por ejemplo Java.at.4raphics, Applet.get!mgae() y mens.

A Applets. (java.applet). Sirve para crear applets e interactuar con el navegador. Por ejemplo java.appet.Applet.

A Aplicaciones de Entrada y salida (java.io). Sirve para comunicar un programa en Lenguaje Java (entrada/salida). Por ejemplo
System.out.println()$

A Comunicacin (java.net). Sirve para comunicarse con otras fuentes de informacin en red o !nternet. Por ejemplo java.net.serverSoc>et.

A Manejo de datos (java.lang). Sirve para el manejo de datos bsicos, manejo de errores, seguridad al cliente al navegar en !nternet, este pa)uete
es el corazn del Lenguaje Java, incluye una gran variedad de mtodos.

//!\!M435 6! "49 4"<" +<!"< I, M!,I +5, 69L!<!,2!S 54+95,!S

import java.applet.Applet$
import java.at.*$
public class MenuExample extends Applet{
private Menu category$
private Menu&ar bar$
private +isplay picture$

public void init(){
bar% ne Menu&ar()$
category % ne Menu(*+ocumento*)$
category.add(*1a. Opcion*)$
category.add(*2a. Opcion*)$
category.add(*3a. Opcion*)$
bar.add(category)$

category% ne Menu(*Sesion*)$
category.add(*Resetear*)$
category.add(*Reiniciar*)$
bar.add(category)$

category % ne Menu(*Pantalla*)$
category.add(*Cambiar Colores*)$
category.add(*+esplegar los titulos*)$
bar.add(category)$

picture% ne +isplay()$
picture.setMenu&ar(bar)$
picture.setTitle(*Ejemplo de Menu*)$
picture.sho()$
-
-

class +isplay extends Frame{
public boolean action(Event evt, Object arg){
char c$
if(arg.e)uals(*2a. Opcion*)){
System.out.println(*2a. Opcion****)$
c%Teclado.readChar()$
return true$
-
return super.handleEvent(evt)$

-





Programacin Orientada a Objeto Instituto Tecnolgico de Zacatepec Prof. Carpio
B7
public boolean handleEvent(Event evt){
if(evt.id%% Event.C!#+OC#+ESTRO3){
hide()$
return true$
-
return super.handleEvent(evt)$
-
-



06-- MenuExample.html, programa )ue llama la clase MenuExample.class --1
08TML1
0APPLET CO+E%*MenuExample.class* C!+T8%50 8E!48T%1501
0/APPLET1
0/8TML1

También podría gustarte