65
INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO A: AMPARO OLAYA BENAVIDES UNIVERSIDAD CENTRAL FACULTAD DE INGENIERÍA INEGENIERÍA DE SISTEMAS PROGRAMACION ORIENTADA A OBJETOS BOGOTÁ D.C., COLOMBIA 2016

INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

  • Upload
    buihanh

  • View
    253

  • Download
    1

Embed Size (px)

Citation preview

Page 1: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA

JENNY CATALINA SUA QUIMBAYO

DIEGO MANUEL MONTERO MEJIA

ANDRES DAVID GOMEZ TOLEDO

PRESENTADO A:

AMPARO OLAYA BENAVIDES

UNIVERSIDAD CENTRAL

FACULTAD DE INGENIERÍA

INEGENIERÍA DE SISTEMAS

PROGRAMACION ORIENTADA A OBJETOS

BOGOTÁ D.C., COLOMBIA

2016

Page 2: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

2

Índice

2. Estructura de un programa de java…………………………………….. 4

La estructura de un programa java ………………………………………………… 4

Los elementos de un programa java………………………………………………... 5

Comentarios………………………………………………………………… 5

Comentarios de bloque………………………………………....................... 5

Comentarios de documentación……………………………………………. 6

Comentarios de línea……………………………………………………….. 6

Variables y valores…………………………………………………........................ 6

Expresiones…………………………………………………………........................ 6

Expresiones aritmético-lógicas…………………………………………………….. 7

3. Clases y objetos…………………………………………………………. 8

Clases………………………………………………………………………………. 8

Atributos…………………………………………………………………………… 9

Métodos y constructores…………………………………………………………… 9

Representación de clases y objetos……………………………………………….. 12

Objetos……………………………………………………………………………. 13

La referencia null…………………………………………………………………. 14

Referencias compartidas por varios objetos……………………………………… 14

Operaciones………………………………………………………………………. 17

Invocación de métodos…………………………………………………………… 18

El método main()…………………………………………………………………. 19

Las variables locales de un método………………………………………………. 20

Sobrecarga de métodos…………………………………………………………… 21

Constructores……………………………………………………………………… 22

4. Extensión de clases……………………………………………………… 25

Composición………………………………………………………………………. 25

Page 3: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

3

Herencia…………………………………………………………………………… 29

Polimorfismo……………………………………………………………………… 35

5. Ampliación de clases……………………………………………………. 39

Elemento de clase (static)…………………………………………………………. 39

Derechos de acceso……………………………………………………………….. 41

Paquetes……………………………………………………………………………42

6. Estructuras de control………………………………………………….. 43

Estructuras de selección…………………………………………………………... 43

Estructura if……………………………………………………………….. 43

Estructura if else…………………………………………………………... 43

Estructuras de selección anidadas………………………………………................ 43

Estructura if else if………………………………………………………… 46

Estructura switch………………………………………………………….. 47

El operador condicional…………………………………………………………… 51

Estructuras de repetición………………………………………………………….. 51

Estructura while…………………………………………………………… 51

Estructura do-while……………………………………………………….. 53

Estructura for……………………………………………………………… 54

Estructuras de salto…..…………………………………………………………… 57

Sentencias break y continue……………………………………………………… 57

7. Estructuras de almacenamiento………………………………………... 61

Arrays……………………………………………………………………………... 61

Arrays multidimensionales………………………………………………………... 62

El algoritmo de ordenación “Bubble Sort”………………………………………... 64

8. Entrada y salida…………………………………………………………. 65

Entrada de datos desde el teclado…………………………………………………. 65

Page 4: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

4

2. Estructura de un programa de JAVA

En este código podemos ver que el autor comienza con un comentario de bloque, seguido

por la definición de la clase HolaMundo, dentro de la definición de clase encontramos la

definición del método main( ) y finalmente dentro del método main hay una sentencia

para mostrar en la consola el mensaje: “Hola Mundo” mediante el método

System.out.println(“mensaje”).

La estructura de un programa Java

Page 5: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

5

Este código comienza con un comentario de bloque, seguido por la definición de la clase

PerimetroCircunferencia, dentro de la definición de clase encontramos la definición del

método main( ) y dentro del método main hay un comentario de línea que se representa

mediante dos //, luego se declaran las variables PI, radio y perímetro que son de tipo

double.

A la variable PI, se le asigna un valor exacto al igual que a la variable radio, a la variable

perímetro se le asigna los valores de las variables PI y radio para operarlos y así hallar el

perímetro de la circunferencia con la fórmula 2*π * r.

Finalmente se muestran los resultados con el método System.out.print(). Para imprimir

mensajes es entre comillas System.out.print(“mensaje”) y para imprimir variables es sólo

el nombre de la variable System.out.print(variable).

Para evitar la ejecución de cuatro métodos se podría sintetizar en uno sólo, utilizando el

operador + para enlazar los textos con las variables de esta manera, ya sea con salto de

línea o no:

System.out.println(“El perímetro de la circunferencia de radio ” + radio + “ es ”

+perimetro);

System.out.print(“El perímetro de la circunferencia de radio ” + radio + “ es ” +perimetro);

Los elementos de un programa Java

Comentarios

Los comentarios ayudan a explicar detalles importantes de un programa, se debe decir qué

se hace, para qué y cuál es el fin del programa, hacen más entendible el programa. En un

programa de Java hay 3 tipos de comentarios:

Comentarios de bloque

Los comentarios de bloque comienzan por /* y terminan con */ . El compilador ignora todo

el texto y se usa generalmente para informar o brindar información principal del programa.

Page 6: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

6

Comentarios de documentación

Los comentarios de documentación comienzan con /** y terminan con */. Por lo general se

indica el autor, la fecha, y otros aspectos con los que cuenta la herramienta javadoc de Java.

Comentarios de línea

Los comentarios de línea comienzan con // y termina al final de la línea.

Variables y valores

Las variables almacenan valores únicos, se definen por un nombre, un tipo de dato y el

rango de valores que puede almacenar. Una vez declarada se puede usar en cualquier parte

del programa.

Si declarara una constante, se usa la palabra final, el tipo de dato, el nombre de la constante

y obligatoriamente se indica su valor.

Expresiones

Las expresiones permiten realizar operaciones entre valores utilizando distintos operadores

. Este código nos permite convertir grados Fahrenheit en grados Centígrados mediante una

fórmula matemática que representamos con la expresión:

Page 7: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

7

Puede ser de tipo int o tipo double, el orden de los cálculos depende de la jerarquía de los

operadores comenzando de izquierda a derecha.

En esta expresión podemos ver que como no hay paréntesis que permitan ordenar de cierto

modo la operación, de acuerdo a la jerarquía de operadores…

Si hay operadores de la misma jerarquía se comienzan a resolver de izquierda a derecha, así

que resolvemos primero la multiplicación entre 2 y 4 y luego la división entre 12 y 6

teniendo como resultado parcial . Por último se resuelven los

operadores de adición y sustracción de izquierda a derecha y se obtiene como resultado 8.

Expresiones aritmético-lógicas

Una expresión aritmético-lógica devuelve un valor verdadero o falso. Esta expresión es

verdadera ya que el resultado de la expresión del lado derecho (10 - 2) es mayor que la del

lado izquierdo (5 – 3).

En esta expresión se evalúan primero expresiones aritméticas, obteniendo así la expresión

lógica . Luego se evalúan los operadores relacionales para

obtener . A continuación se evalúa el operador lógico con los

operandos (false && true) y se obtiene y luego finalmente se obtiene que la

expresión es verdadera.

Page 8: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

8

3. Clases y objetos

Clases

Basicamente este pequeño fragmento de programa nos indica tres cosas, la primera, la

palabra designada para crear una clase es “class”, la segunda, seguido de la palabra “class”

utilizamos el nombre de la clase el cual debe empezar en mayúscula en este caso la clase se

llama “Circulo” y la tercera, utilizamos el numero de atributos que necesitemos pero estos

deben ser características de la clase, en este caso utilizamos 3 x, y, radio, cada uno con su

tipo de dato especifico.

Una vez creamos la clase, podemos crear los objetos de esta clase en este caso se crearon 2

pero el número es acorde a la necesidad.

Page 9: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

9

Es necesario instanciar el objeto para ello utilizamos el operador “new” al igual que “class”

es una palabra reservada, esto nos ayudara a crear un espacio de memoria.

Atributos

Otro ejemplo de clase, en el cual podemos notar que los tipos de datos de los atributos no

son todos iguales, unos son String, double o boolean.

Métodos y constructores

Page 10: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

10

En el siguiente ejemplo se puede notar el comentario realizado debajo de los atributos, en el

cual nos explica que se ha creado un constructor sobrecargado el cual ayuda a inicializar los

atributos del objeto que se instancia, este se define una o más veces. Y dentro del

constructor por defecto están los atributos y sus identificadores, para diferenciar entre ellos

se usa la palabra “this.” De esta manera cuando escribo “this.marca” se refiere al atributo

del objeto y el solo “marca” al parámetro del método. Antes de continuar debo hacer

mención de un error encontrado en el código, se encuentra en el primer identificador dentro

del constructor sobrecargado, no se escribe “this,matricula = matricula;” sino this.matricula

= matricula; siempre es con punto (.).

Para instanciar un objeto se ejecuta el método constructor de esta manera. Otros métodos

importantes que se utilizan con el pasar del tiempo de forma autómata pues se utilizan

demasiado, son los métodos get (recibir) se define para cada uno de sus atributos pues el

get se define para consultar el estado de un objeto y se usa de la siguiente manera

Y set (dar), los set solo se definen para los atributos que pueden ser modificados

Page 11: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

11

Después de haber creado el objeto, en el siguiente ejemplo vemos la manera de utilizar

estos métodos.

Page 12: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

12

Representación de clases y objetos

Este es el modelo de una clase utilizando un programa de modelamiento como Enterprise o

StarUml, estos son solo 2 ejemplos de los muchos programas de modelamiento que existen,

en la parte superior se encuentran los atributos y en la parte inferior los métodos.

Y de esta manera se instancian los objetos, en este caso hay 2 objetos de la clase vehículo.

Page 13: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

13

Objetos

Un objeto se compone de atributos y métodos, en el ejemplo se muestra la manera correcta

pata mostrar los elementos de un objeto de forma directa para ello usamos el método

System.out.println (“mensaje”).

Page 14: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

14

La referencia null

Por ejemplo si un objeto fue declarado pero no se instancio, existe un valor especial

llamado “null” que se usa para esta situación, el null nos indica que un objeto no se ha

instanciado eso quiere decir que no se ha usado la palabra new seguido del constructor. En

el ejemplo vemos dos “if” el primero el cual no está instanciado y el segundo en el que sí,

se usa esta comparación para comprobar si esta instanciado o no, seguido de un mensaje.

Referencias compartidas por varios objetos

Un alias es una referencia que se crea de más en el mismo espacio de memoria del objeto

original, este alias se crea con un objeto que no está instanciado, por ejemplo se crea

vehiculo1 y se asigna a vehiculo3 que es un objeto no instanciado, el espacio de memoria

de estos dos objetos será el mismo.

Page 15: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

15

Page 16: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

16

El alias es usado para mostrar el estado de un objeto y también para modificarlo, si

cambiamos algo de vehiculo3 inmediatamente vehiculo1 también se modificara

Page 17: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

17

Operaciones

Podemos denominar método de operaciones a aquel método que realiza un cálculo o

modifica el estado de un objeto, en el ejemplo anterior podemos ver que la clase Circulo

tiene 2 métodos de operación, calcularPerimetro y calcularArea, las operaciones dependen

de lo requerido en este caso área y perímetro se hayan de distintas maneras, pero como

podemos observar ambas utilizan “this.radio”.

Page 18: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

18

Invocación de métodos

Los métodos se pueden indicar tanto dentro como fuera de la clase donde se declaró, en el

ejemplo podemos ver que el método fue creado en la misma clase donde fue declarado por

esta razón solo basta con indicar su nombre, dentro del método observamos que fueron

invocados los “get” de los diferentes atributos de la clase esto se podría reemplazar

utilizando la referencia directa de los atributos “this.marca” por ejemplo.

Page 19: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

19

Si el método se invoca fuera de la clase donde se declaro es necesario indicar el nombre

del objeto y el nombre del método, en el ejemplo podemos ver que el método

“getAtributos” sirve para mostrar los valores de vehículo.

El método main()

Cada vez que se vaya a crear un programa en java es necesario utilizar el método main este

método se declara de la siguiente manera, public static void, no devuelve un valor de

retorno y los comandos String[] args se refieren a la línea de comandos de la aplicación,

cuando el programa es ejecutado este es el método que ejecuta todos los demás métodos de

la aplicación.

Page 20: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

20

Las variables locales de un método

Las variables locales de un método sirven para guardar temporalmente valores utilizados

por el método, en el ejemplo anterior no estamos usando una variable local eso quiere decir

que esa es una manera de utilizar el método sin variables, pues el valor de retorno se calcula

al momento de hacer return, ahora veamos el siguiente ejemplo.

En este caso estamos utilizando la variable local atributos para guardar los valores del

método getAtributos, esta variable se crea dentro del mismo método y retornamos a

atributos, ambos métodos son equivalentes pero en el primero se evita el uso de una

variable innecesaria.

Page 21: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

21

Sobrecarga de métodos

En este ejemplo vemos cómo funciona la sobrecarga de métodos la cual es útil para que el

mismo método opere parámetros de distinto tipo, esto quiere decir que pueden haber dos o

más métodos con el mismo nombre pero realizan operaciones distintas, como podemos ver

en el ejemplo los métodos se diferencian en la manera en la que fueron declarados, en el

primer método simplemente devuelve los atributos de un vehículo, mientras que en el

segundo método realiza una operación de la tarifa reducida en un 10%.

Page 22: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

22

Constructores

Existen 2 tipos de constructores, el constructor por defecto el cual asigna valores

predeterminados por java a los atributos de la clase, como la inicialización de estos cuando

el tipo de dato es int, o float etc. Y el constructor sobrecargado el cual es creado con el fin

de inicializar los valores de un objeto con valores distintos de los valores por defecto de

java, en el ejemplo de arriba podemos ver como se declara el constructor por defecto,

también podemos notar que los atributos no tienen ningún tipo de visibilidad especificada

Page 23: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

23

esto indica que tiene visibilidad de paquete la cual permite que se acceda mediante una

instancia, pero únicamente desde clases que hagan parte del mismo paquete, los paquetes

son creados para guardar clases y por supuesto puede haber interacción entre paquetes.

En este ejemplo se están utilizando dos constructores, tienen un número distinto de

parámetros, por lo que java mismo reconoce aunque se llamen igual, cual constructor

Page 24: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

24

estamos pidiendo pues el número y el tipo de argumentos que recibe son distintos, los

parámetros son la clave para la utilización de este método, cabe destacar que los atributos

están privados, esto quiere decir que a través de una instancia no es posible acceder a estos

atributos.

De esta manera se instancia vehiculo1 y vehiculo2 utilizando los 2 constructores, como

podemos ver java reconoce que constructor utilizar por el número de parámetros.

Page 25: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

25

4. Extensión de clases

Composición

La composición es una relación fuerte entre clases, básicamente agrupa elementos de una

clase existente a una clase nueva, de manera que la instancia de esta clase contiene

elementos de otras, en este ejemplo podemos ver como se crea una clase con todo lo visto

anteriormente no ha sido alterada en lo absoluto (a excepción de que han sido omitidos los

métodos get y set por espacio).

Page 26: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

26

Creamos otra clase para poder utilizar la composición, y dar lugar a la nueva clase,

recuerde que para utilizar la composición la relación entre clases debe estar ligada al hecho

de que una clase “a” compuesta a otra clase “b” no podría existir sin la clase “b”.

Page 27: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

27

La clase vehiculoAlquilado es aquella que contiene la relación de composición pues

contiene un objeto de la clase cliente y un objeto de la clase vehiculo en otras palabras, la

clase vehiculoAlquilado es contenedora de las clases cliente y vehiculo, estas clases se

llaman por su tipo de dato y el nombre del objeto en este caso por ejemplo seria cliente de

tipo Cliente.

Page 28: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

28

Page 29: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

29

De esta manera mostramos las instancias de la clase, en la cual utilizamos las 2 clases

vehiculo y cliente contenidas en vehiculoAlquilado, creando el respectivo numero de

instancias en este caso un solo cliente y 2 opciones de vehículo

Y por último se muestran los valores almacenados, pero aquí se utilizó algo distinto, el

objeto alquiler1 de la clase vehiculoAlquilado requiere mostrar los datos de Cliente NIF,

nombre y apellidos (por ejemplo alquiler1.getCliente().getNombre+” “) y de vehiculo

únicamente la matricula, así que cuando vemos la salida de consola vemos que los datos de

vehiculo y cliente efectivamente fueron usados por vehiculoAlquilado.

Herencia

Es la capacidad de hacer que una clase con ciertos atributos pueda extenderlos a otras

clases que requieran de estos mismos atributos para su funcionamiento, esta clase original

se denomina superclase y las que heredan los atributos se denominan subclases, la

extensión de una clase tiene la siguiente sintaxis: Public class nombre-subclase extends

nombre-superclase {

}

Page 30: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

30

Aquí vemos el comportamiento de las clases, donde las clases turismo, deportivo y

furgoneta heredan los atributos de vehiculo, este es un programa que nos muestra los

vehículos disponibles según el tipo de vehiculo que elija el usuario y por supuesto una

introducción para entender la relación de herencia en el lenguaje de java, a continuación se

mostrara el código de cada clase.

Page 31: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

31

La declaración de la superclase vehiculo:

Page 32: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

32

La subclase turismo, teniendo en cuenta la sintaxis correcta explicada anteriormente y la

agregación de los atributos de la superclase, esta explicita en el constructor, el proceso se

repite para todas las demás subclases.

Page 33: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

33

La subclase Deportivo:

Page 34: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

34

Y la subclase Furgoneta:

Page 35: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

35

Polimorfismo

Se presenta cuando existen métodos que requieren de comportamiento diferente en cada

clase específica, si nos devolvemos al ejemplo anterior podemos notar que en cada subclase

utilizamos un método llamado getAtributos(), esto significa que el método getAtributos()

de las subclases sobrescribe el método de la superclase pues requiere un comportamiento

distinto para cada subclase.

Este es el comportamiento de las clases, aquí podemos ver de una manera más clara el

método getAtributos() y a continuación un ejemplo del comportamiento de los métodos

sobrescritos en las subclases.

Page 36: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

36

Page 37: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

37

Page 38: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

38

Basicamente se utilizó todo lo referente al capítulo 2, 3 y 4 para mostrar este código,

tenemos que tener en cuenta ciertos detalles, primero, la instancia de las distintas clases que

utilizamos en este código, como lo es el deportivo, la furgoneta etc. Segundo, la invocación

del método getAtributos () para cada objeto. Existe otra manera de realizar el código y es

una a la que me acomodo más y es la utilización del método set, pues este me permite

cambiar los datos si lo requiero y por supuesto este iría ligado a un JOptionPane para que

me permita pedir los datos que requiero.

Page 39: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

39

5. Ampliación de clases

Elemento de clase (Static).

El primer cuadro que resalta este código se debe a que la sintaxis utilizada en la definición

de la constante PI (public static final double PI = 31415926536) también es correcto

escribirlo definiendo primero “final” y luego “static”, quedaría, (public final static double

PI = 31415926536).

“final”: en este contexto indica que una variable es de tipo constante, después de su

declaración y asignación no admitirá cambios.

“static”: es utilizada para abrir un espacio de memoria el cual guarde la constante, de esta

manera se evita crear un nuevo lugar en la memoria para cada objeto ya que esto no tendría

sentido.

El segundo cuadro resala el retorno, ya que en el método no se crea una variable a la que se

le asigne el proceso para luego retornar esa variable, sino que directamente el retorno es el

mismo proceso, diferente a como se había visto hasta hora.

De igual manera pasa en el siguiente método.

En el siguiente ejemplo es posible evidenciar lo antes mencionado:

Page 40: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

40

En comparación con el anterior código en este se crea una variable dentro del método a la

que se le asigna el proceso y luego esta misma es la que se retorna.

En este caso también varían algunos aspectos, principalmente es que se evita crear variables

para asignar los métodos, en cambio simplemente en la impresión del mensaje se llaman los

métodos directamente.

Page 41: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

41

Aquí se puede ver la diferencia en el aspecto mencionado, se crea una nueva variable para

asignarle el método creado, y en la impresión del mensaje se llama a la variable, no al

método.

Derechos de acceso.

Page 42: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

42

En este código es posible ver que todos los atributos tienen el método ‘get’, sin embargo

solo los atributos ‘tarifa’ y ‘disponible’ tienen el método ‘set’; dependiendo de las

necesidades la información se puede dejar fija o editable, tomando como ejemplo este caso

la única información que el usuario puede cambiar es la tarifa y la disponibilidad del objeto,

mientras que los otros atributos solo se podrán ver en caso de ser necesario.

Paquetes.

En este código observamos cómo se importa un componente de un paquete; los paquetes

pueden agrupar clases, interfaces que se relacionan entres sí, entre muchas otras cosas; para

hacer efectivo este proceso se debe llamar al paquete antes de la declaración de la clase, se

puede importar todo el paquete o solo un componente del paquete.

“import java.util.Calendar”, solo importamos el componente “Calendar”, pero si fuera

necesario importar todo el paquete se escribiría de la siguiente manera:

“import java.util.*”, no se coloca el nombre del componente del paquete sino un asterisco,

de esta manera podremos utilizar todos los componentes del paquete sin necesidad de

declararlos uno por uno.

Page 43: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

43

6. Estructuras de control

Estructuras de selección

Permiten modificar el flujo de un programa. Mediante una condición la cual es una

expresión que evalúa un valor lógico, se decide si se ejecuta o no un bloque de sentencias.

Estructura if

Este código nos permite mostrar por consola el mensaje “Matrícula de honor” si la

calificación del estudiante es igual a 10. Para esto el autor crea una variable de tipo int

llamada calificacion para crear la condición que manejará la estructura. La estructura if sólo

ejecuta el bloque de sentencias, es decir sólo muestra por consola el mensaje si se cumple la

condición (calificación == 10), sólo si la calificación del estudiante es igual a 10 se

mostrará el mensaje, de lo contrario continuaría ejecutando las sentencias posteriores al if.

Estructura if else

A diferencia de la estructura if, la estructura if-else permite seleccionar entre dos bloques

de sentencias dependiendo también de la condición. En este código podemos determinar si

un número es par o impar y se muestra por consola. La variable de tipo int, numero, permite

manejar la condición del if else. Si el residuo de un número es igual a cero, quiere decir que

el número sí es par, entonces se ejecuta el bloque de sentencias del if, las cuales consisten

en mostrar por consola, mediante el método System.out.println(), el mensaje “El número es

par”. Si el residuo de un número no es igual a cero, quiere decir que el número no es par, o

sea que no cumple la condición, así que éste ejecuta el bloque de sentencias del else, las

Page 44: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

44

cuales muestran por consola, mediante el método System.out.println(), el mensaje “El

número es impar”.

La sintaxis de dicha estructura cuenta con unas llaves que abren y cierran cada bloque de

sentencias, las cuales NO vemos en este código, es sumamente importante incorporarlas o

de lo contrario nos encontraremos con un error.

Estructuras de selección anidadas

Si es necesario evaluar más de una condición se utilizan varias estructuras de selección

anidadas.

Page 45: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

45

Este código nos permite mostrar por consola la descripción de una nota según la nota que se

le asigna a un estudiante. Para ello en éste código encontramos varias estructuras if-else

anidadas. Principalmente no debemos olvidar las llaves que abren y cierran cada bloque de

sentencias.

Tendremos para mostrar por consola diferentes descripciones para diferentes notas. Primero

se declara una variable de tipo entero con el nombre calificacion a la cual se le asigna un

valor 7. Luego se comienza con las estructuras anidadas else-if las cuales llevarán como

condición (calificacion == valor){ y como bloque de sentencias mostrará mediante el

método System.out.println(); se mostrará por consola el mensaje de descripción para dicha

nota. En este caso a la variable calificacion se le asignó el valor 7, por lo cual no entrará en

el primer bloque de sentencias, es decir el más interno ya que así se resuelven las

estructuras anidadas. Comienza por la condición (7 == 5), como no se cumple continúa con

la siguiente (7 == 6) como tampoco se cumple continúa con la siguiente que es (7 >= 7)

como en esta ocasión si se cumple la condición entra a realizar el bloque de sentencias.

Finalmente muestra por consola mediante el método System.out.println() el mensaje

“Notable” y se sale de todas las estructuras de selección.

Page 46: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

46

Estructura if else if

La estructura if-else-if se puede aplicar en los mismos casos que en la if-else. Esta

estructura permite abreviar y ordenar mejor el código realizando las mismas instrucciones,

funciona de igual manera que el código anterior.

Page 47: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

47

Estructura switch

Este código nos muestra la sintaxis que maneja una estructura switch. Esta estructura es

manejada por una expresión la cual permitirá el “acceso” a cada case (caso) de la estructura

la cual debe estar entre paréntesis obligatoriamente seguida de una llave abierta. Luego

veremos los case de la estructura acompañados de un default. Primero se evalúa la

expresión y luego se comprueba con cuál case coincide. Cada case tiene uno o más valores

constantes del mismo tipo ya sean (int) o (char), si el valor del case coincide con el valor de

la expresión se empieza a realizar el bloque de sentencias que contiene hasta encontrarse

con la sentencia break; que interrumpe el bloque de instrucciones y finaliza la estructura

switch continuando con la sentencia posterior a ella. Si no se encuentra un case que

coincida con el valor de la expresión se ejecuta el bloque de sentencias que contiene la

etiqueta default.

Page 48: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

48

Suponiendo que en una empresa de consultoría la categoría profesional de un empleado se

calcula a partir de su tasa de coste. La siguiente tabla muestra los valores de las tasas y sus

categorías:

Este programa nos permite seleccionar la descripción correspondiente a cada categoría. A

simple vista podemos ver que tiene varios errores, por ejemplo las llaves que abren y

cierran en las estructuras if-else , la ausencia de la sentencia break en cada case y el orden

que maneja no es muy adecuado.

Inicialmente se le asigna el valor de 150 a la variable de tipo (int), tasaEstandar, por lo cual

según la estructura if-else como la tasaEstandar no es menor de 120 se le asigna el valor de

‘A’ a la variable categoriaProfesional.

Page 49: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

49

Luego en la estructura switch, la variable que se evalúa es categoriaProfesional, y

anteriormente como venía con el valor de ‘A’ se cumple el primer case y se supone que

muestra por consola sólo el mensaje “Socio”, pero como no está la sentencia break en cada

uno, se seguirán cumpliendo los bloques de sentencias de los demás case, así:

Tasa 150 euros, categoría ‘A’ de Socio Senior Junior ¡Indefinida!

Lo correcto sería que en la estructura case fuera de la siguiente manera, para así evitar la

ejecución de los demás bloques de sentencias:

Si en el primer código la estructura fuera de esa manera si sería un programa correcto

mostrando como mensaje:

Tasa 150 euros, categoría ‘A’ de Socio

Page 50: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

50

Este código nos permite mostrar por consola la descripción de una nota según la nota que se

le asigna a un estudiante como lo habíamos visto anteriormente pero en este caso se emplea

la estructura switch.

El autor realiza un código muy completo ya que comienza con la definición de la clase

Calificaciones y dentro de ésta la definición del método main. Dentro del método main

encontramos que se declara la variable de tipo (int), calificacion inicializándola con el valor

de 9. Luego tenemos la estructura switch, teniendo a la variable calificacion para evaluar

cada case.

Page 51: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

51

El case 0, 1, 2, 3, y 4 muestran por pantalla mediante el método System.out.println() el

mensaje “Suspenso”, y es el mismo para los 5 ya que la sentencia break se presenta sólo en

el case 4, así que se cumplirá el mismo bloque de sentencias para los 5. El case 6, 7, 8 y 9 y

default tienen cada uno su bloque de sentencias con su respectivo break, así que cada caso

después de ser cumplido saldrá del switch. Este código nos mostrará por consola el mensaje

“Sobresaliente” ya que tiene como valor 9.

El operador condicional

El operador condicional (?:) se relaciona con la estructura if-else, es el único de Java que

utiliza tres operandos y tiene dicha sintaxis.

Primero se declara una variable de tipo (int) denominada edad a la cual se le asigna el valor

de 16 y ésta controlará el operador condicional. Luego se declara una variable de tipo

(string) denominada txt que guardará el resultado del operador condicional. El operador

condicional de esta parte de código tiene como condición lógica (edad >= 18), el valor que

toma dicha expresión cuando es true (verdadera) “Mayor de edad” y el valor que toma la

expresión cuando es false (falsa) “Menor de edad”. En este caso la variable edad tiene

como valor 16, si 16 es mayor o igual de 18 mostrará por consola el mensaje “Menor de

edad” y si el valor no es mayor o igual 18 mostrará el mensaje “Menor de edad”. Como 16

es menor de 18, esto quiere decir que la expresión es falsa. Finalmente mediante el método

System.out.println() se mostrará por consola lo que guarda la variable txt que es el mensaje

“Menor de edad” ya que la condición es false.

Estructuras de repetición

Estructura while

Esta estructura repite el bloque de sentencias mientras que una condición es verdadera.

Esa es la sintaxis general de esta estructura, la condición debe estar siempre entre

paréntesis.

Page 52: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

52

Este código nos permite calcular la función factorial de un número “n” mediante una

estructura repetitiva con una variable que controlará el while comenzando en 1 hasta un

número “n”. La actualización de la variable controladora del while suma uno cada vez.

El autor comienza con la definición de la clase, luego del método main, después declara 3

variables de tipo (int) y las inicializa, i = 1; factorial = 1; y n =5; Luego estará el While

teniendo a i como una variable de control, la condición será (i <= n) y en el bloque de

sentencias tendremos a la variable factorial multiplicada por i y luego ésta se incrementará

en 1. Sabemos que el valor inicial de i es 1 y el de n es 5, así en la condición tendremos (1

<= 5) lo cual es válido así que entra al bloque de sentencias. A la expresión factorial se le

asigna el valor de factorial por el de i, primero se calcula el producto y luego se le asigna el

resultado a la variable. En un principio, tanto factorial como i vienen asignadas con el valor

de 1, por lo cual el valor de dicha expresión será 1, dejándole este valor a factorial. La

siguiente sentencia incrementa a i en 1 así, i ahora tendrá como valor 2, lo que significa que

se sigue cumpliendo la condición y ocurre el mismo proceso hasta cuándo el valor de i es 6

y ahí ya no se cumple la condición así que se saldrá del while continuando con la sentencia

posterior. Finalmente mediante el método System.out.println() se muestra por consola el

mensaje (“El factorial de 5 es 120”).

Page 53: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

53

Estructura do-while

Esta estructura ejecuta el bloque de sentencias al menos una vez, luego comprueba la

condición y repite el bloque de sentencias mientras la condición sea verdadera.

Este código también calcula la función factorial de un número pero utilizando la estructura

do-while. Comienza con el do y ejecutando su bloque de sentencias, a la expresión factorial

se le asigna el valor de factorial por el de i, primero se calcula el producto y luego se le

asigna el resultado a la variable que será 1 y luego se incrementa a i en 1, o sea pasa a ser 2.

Luego se vuelve a evaluar la condición y continúa ejecutando el bloque de sentencias hasta

que ésta no se cumpla. Luego muestra mediante el método System.out.println() por consola

el mensaje

(“El factorial de 5 es 120”).

Page 54: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

54

Estructura for.

Cuando se ejecuta un for primero se evalúa la condición, si ésta es verdadera se ejecuta el

bloque de sentencias de lo contrario finaliza el for.

Este código nos permite al igual que en el código anterior calcular la función factorial de un

número pero mediante una estructura for, manejando las mismas variables. La variable i

controlará el for y se inicializa en 1, la condición es (i <= n), la misma que se utilizó en las

estructuras while y do-while y luego incrementa a i en 1 en cada iteración. Dentro del for

está la misma sentencia de los otros ciclos cumpliendo la misma función para al final,

cuando el for no se ejecute muestre por con sola el mensaje (“El factorial de 5 es 120”).

Page 55: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

55

Éste código es un claro ejemplo de 3 estructuras for anidadas. Cuenta con la definición de

la clase ForAnidado y definición del método main(). En los for anidados encontramos tres

variables distintas e inicializadas en con valores distintos. Para saber cuántas veces se

cumplirá la sentencia que muestra por consola el mensaje “Hola mundo” debemos primero

saber cuántas veces se repite cada for. El for de k se repite 4 veces ya que comienza desde 3

va hasta 6, el for de j se repite 3 veces ya que comienza desde 2 y va hasta 4 y el for de i se

repite 5 veces ya que va desde 1 hasta 5. Las estructuras anidadas se deben ejecutar desde la

más interna, es decir de adentro afuera. Así como el for de k está dentro del de j y este

dentro del de i, el mensaje se imprimirá 60 veces ya que al multiplicar las veces que se

repite cada for 5 por 3 por 4 igual a 60.

Este código nos permite determinar si un número es par o impar mediante restas sucesivas.

Comenzando con la definición de la clase y el método main que son indispensables.

Utilizamos tan sólo una variable llamada numero de tipo (int). Luego de declarar esta

variable con el valor de 12, tenemos una estructura while que tiene como condición

(numero >= 2) y en su bloque de sentencias tiene la expresión: numero = numero – 2 que

indica que a la variable numero le restemos 2 hasta que sea mayor o igual a 2. Así numero

que es igual a 12, cumple la condición del while y ejecuta la sentencia restándole 2 y

dejando a numero con el valor de 10, y así sucesivamente hasta que numero quedé con el

valor de 0, por lo cual saldrá del while y continuará ejecutando el if posterior. Como

numero si es igual a cero muestra por consola el mensaje de “El número es par” de lo

contrario mostraría el mensaje “El número es impar”.

Page 56: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

56

Este código nos muestra por consola números enteros del 0 al 100 aleatoriamente hasta que

salga el 50. Para esto se utiliza una estructura do-while, y un método que genera números

aleatorios. Primero que todo no puede faltar la definición de la clase y del método main,

luego viene la estructura do-while, dentro del do tenemos la sentencia que genera números

aleatorios, a la variable numero, de tipo (int), le asignamos numero = (100 *

Math.random()). Para generar un número entre 0 y 100 debemos multiplicar el método

Math.random() por 100 ya que el rango de números es de 0 a 100. Cada número que genera

el método aleatoriamente se muestra por consola hasta que sea 50, ya que la condición del

while es (numero != 50). Finalmente cuando numero es 50, se muestra por consola y sale

de la estructura do-while.

Page 57: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

57

Este código nos permite calcular la potencia de un numero entero utilizando productos

mediante una estructura for. Inicialmente la definición de la clase y del método main que no

pueden faltar, para este código se calculará 210

(2 elevado a la 10). Para esto utilizamos tres

variables, todas de tipo (int), las cuales declaramos e inicializamos desde un principio, a

base se le asigna el valor de 2, puesto que es la base de nuestra potencia, a exponente se le

asigna el valor de 10, ya que es el exponente de nuestra base y a potencia el valor de 1 ya

que si la base llegará a ser 0, el resultado se sabe que es 1. Luego viene el for, manejado por

la variable i comenzando en 1, como condición (i <= exponente) e incrementando en 1 cada

iteración. Como el exponente es 10, si cumple dicha condición y entra a ejecutar la

expresión potencia = potencia * base, la base tiene como valor 2 y potencia 1, así que

potencia queda con valor de 2 y se sigue cumpliendo la condición porque ahora i es 2, y así

será sucesivamente hasta que i será 11 y no se cumplirá la condición por lo cual saldrá del

for. Finalmente muestra por consola el mensaje (“ La

potencia es 1024”).

Estructuras de salto

En Java existen 2 sentencias que permiten modificar la secuencia del flujo de un programa

generando un salto en la ejecución, éstas 2 se utilizan con estructuras de repetición para

interrumpir la ejecución con break y para volver al principio con continue.

Sentencias break y continue

Page 58: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

58

Este código nos permite contar el número de vocales, consonantes y espacios de una cadena

de caracteres.

Para ello el autor comienza con la definición de la clase ConsonantesVocales y el método

main(). A continuación se crea una variable de tipo (string) llamada frase, la cual

almacenara la cadena de caracteres a evaluar, en este caso “Hola Mundo”. También se

crean las variables vocales, consonantes y espacios de tipo (int) que deberán inicializarse en

0 ya que harán de contador y la variable letra de tipo char que permitirá determinar si es

vocal, consonante o es un espacio. Luego se utiliza un for para evaluar letra por letra de la

cadena de caracteres, el cual será manejado por la variable de tipo (int) i. Ésta se inicializa

en 0, como condición i< frase.length() y como actualización se incrementa

en 1 por iteración. El método .length() nos permite determinar cuál es la longitud de nuestra

cadena de caracteres (string), es decir cuántas letras hay incluyendo espacios. En el bloque

de sentencias del for, encontramos que a la variable letra se le asigna el método

frase.charAt(i), este método nos devuelve el carácter situado en la posición de la variable

(i)que pasamos por parámetro, así que a la variable frase se le asignará el carácter que está

en la posición i. Luego encontramos una estructura switch que será usada para realizar la

cuenta de vocales, consonantes y/o espacios. Finalmente al salir de la estructura for

mostrará por consola el mensaje con todos los resultados:

(“La frase ‘Hola Mundo’ tiene 4 vocales, 5 consonantes y 1 espacios.”)

Page 59: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

59

Este código como el anterior nos permite generar números aleatorias hasta que salga el

numero 25 o el numero 50.

Comienza con la definición de la clase y del método main(), luego en la estructura do-while

tendremos en el bloque de sentencias del do la variable numero de tipo (int) se le asigna un

numero aleatorio que se genera gracias al método Math.random(). La siguiente sentencia

mostrará por consola el número generado y la siguiente es una estructura if que tiene como

condición que la variable numero sea igual a 25, si se cumple la condición la sentencia

break interrumpirá el do-while, de lo contrario si se continúa en el while la variable numero

debe ser igual a 50 para salir del mismo, si no lo es seguirá repitiéndose. En conclusión sólo

cuando el número que se genere aleatoriamente sea 25 o 50 hará que se finalice la

estructura do-while.

Page 60: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

60

Este código nos muestra por consola los números pares entre 2 y 10.

El autor comienza con la definición de la clase NumerosPares y la definición del método

main(), dentro de éste método hay una estructura for comenzando en 1 hasta 10, con

incremento de 1 por iteración. Dentro del for hay una estructura if que permite determinar

si el numero es par o no, esto lo hace mediante la condición que indica el residuo de la

división por 2, entre la variable i que maneja el ciclo for. Si ésta condición se cumple quiere

decir que el número es impar, así que la sentencia continue permite que se interrumpan las

iteraciones impares y continuar ejecutando el programa. De esa manera, el código sólo se

ejecutará cuando “i” sea par y mostrará por consola el mensaje de “Números pares:” y cada

número par.

Page 61: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

61

7. Estructuras de almacenamiento

Arrays.

Cuando se utiliza la instrucción repetitiva ‘para todo (for)’, es correcto escribirla de dos

maneras, primera:

Aquí se están indicando los límites de la variable de control; para indicar el límite superior

se hace uso del atributo “lenght”, el cual guarda el tamaño del arreglo, por ejemplo si el

arreglo es de 5 posiciones el límite se da “nombre_del_arreglo.lenght - 1”, como se inicia

desde la posición 0 es necesario restarle una unidad para que el recorrido del arreglo sea

correcto si se utiliza el comparador ‘<=’, utilizando ‘<’ se ahorra esta aclaración.

Pero hay una segunda forma de escribir esta misma instrucción:

Es una forma simplificada para mostrar los valores de un array, en este caso la variable de

control toma el valor de todos los elementos de la estructura de almacenamiento, esto

quiere decir que cuando se utiliza un “for” no es necesario especificar los límites de la

variable de control, es suficiente con que esta variable sea del tipo almacenado en el array.

Un array puede contener diversos tipos de datos tales como int, double, String, objetos, etc.,

a continuación algunos ejemplos:

Aquí se inicializa el arreglo indicando la lista de valores que se van a almacenar, dichos

valores son de tipo String.

Page 62: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

62

En este caso igual que el anterior se inicializa indicando los valores que se almacenarán

pero variando en el tipo de dato, que es de tipo entero.

Aquí el tipo de dato es una instancia de la clase vehículo, es decir el arreglo está compuesto

de objetos.

Arrays multidimensionales.

Los arrays multidimensionales se escriben de la misma manera de un array unidimensional.

Este es un ejemplo de un array bidimensional indicando los límites de la variable de

control.

Y como ya se ha mencionado en un “for” para mostrar los datos del arreglo no es necesario

indicar los límites de la variable de control.

Page 63: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

63

En este ejemplo en el constructor de la clase se indican tres arreglos especificando el

tamaño, es decir, el arreglo “Cliente [50]”, no puede contener más de 50 elementos de la

manera en la que está indicado en este caso. Con el uso de arrays redimensiónales es

posible evitar indicar el tamaño del array, quedaría expresado de la siguiente manera:

Page 64: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

64

De esta manera el arreglo queda creado y se irán agregando los datos necesarios sin indicar

el tamaño del array, usando la librería “java.util.List” y “java.util.ArrayList”

El algoritmo de ordenación “Bubble Sort”.

Este algoritmo ordena los números de un arreglo de menor a mayor pero hay una etiqueta

que permite realizar este proceso de manera automática por llamarlo de alguna manera;

quedaría escrito de la siguiente manera:

Utilizando el método “sort” se realiza el mismo proceso de ordenar los números de un

arreglo en forma ascendente del anterior código. Java define varios métodos que permiten

realizar operaciones de organización y búsqueda.

Page 65: INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA … · INFORME FUNDAMENTOS DE PROGRAMACION EN JAVA JENNY CATALINA SUA QUIMBAYO DIEGO MANUEL MONTERO MEJIA ANDRES DAVID GOMEZ TOLEDO PRESENTADO

65

8. Entrada y salida

Entrada de datos desde el teclado.

En Java es posible leer los datos que se introducen por teclado, para leer una palabra se usa

el método “next ()”, para leer una línea “nextLine ()”, y un número entero con el método

“nextInt ()”, es necesario también la librería “Scanner” la cual habilita estos métodos y el

flujo de entrada “System.in” lee los datos que se introducen desde el teclado.