You are on page 1of 58

Taller de programacin I

Taller de Programacin I
Semana I
1

Taller de programacin I

Indice

Indice
I Presentacin de la Asignatura 04 04 04 05 06 07
07 08 08 09 09

II Unidad I: Conceptos de Orientacin a Objetos III Aprendizajes esperados IV Introduccin V Historia del lenguaje Java
Qu es la programacin orientada a objetos? Atributos Comportamiento Estados Clase

VI Programacin orientada a objetos

VII Fundamentos de la POO


Abstraccin Encapsulamiento Herencia Polimorfismo Paquetes

11
11 11 12 13 13

VIII Elementos bsicos del lenguaje


Comentarios en Java Caracteres en Java Secuencias de escape

22
22 23 23

IX Tipos de datos
Primitivos byte short int long float double boolean char

24
24 24 25 25 25 25 26 26 26

String Vida y mbito de una variable Conversin entre tipos

Tipo de objetos

27
27 28 32

XI Operadores

Operadores aritmticos

34
34

Taller de programacin I

Indice

Indice
Operadores unarios y de auto asignacin Operadores relacionales Operador ternario 34 35 36

XII Descripcin de las excepciones XIII Uso del depurador assert


La clase String

36 38
40

XIV Estructuras de decisin

if if anidados switch Estructuras de Iteracin while Do- while for Etiquetas de corte: Break, Continue y label (etiquetas propias)

44
44 45 47 48 49 50 54

XV Resumen de la Semana XVI Sinopsis de la prxima clase

57 57

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Presentacin de la Asignatura
Se presenta la asignatura a los alumnos y se explica su alcance en el mundo laboral

Unidad I: Conceptos de Orientacin a Objetos


Aprendizajes esperados
1.1 Describe conceptos relacionados con la Programacin Orientada a Objeto (POO). 1.2 Codifica controles de flujos y la clase String para solucionar un problema propuesto.

04

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Introduccin
Mediante el presente documento vamos a tratar principalmente tres temas, los cuales vamos a ir aprendiendo en paralelo y cuya combinacin pretende convertirte en un programador capaz de desenvolverse con soltura y confianza en el desarrollo de software. Por una parte aprenders Programacin Orientada a Objetos (POO), la cual es un conjunto de normas que persigue que los programadores puedan desarrollar software ms escalable, fcil de mantener y en un menor tiempo, sin embargo el concepto de programacin orientada a objetos, desde el punto de vista terico puede no ser tan complejo como su utilizacin, aterrizar los conceptos y aplicarlos en algn lenguaje orientado a objetos (JAVA, C#, C++) resulta ser una tarea algo ms compleja que requiere una preparacin y una forma especfica de plantear y resolver problemas, por ello en el prximos captulos aprenders de manera guiada y a travs de variados ejemplos como pensar, respirar y ver todo como un objeto. Para poder llevar a la prctica tus conocimientos de la POO necesitaremos de un lenguaje de programacin potente que nos permita probar nuestros futuros conocimientos de POO, para ello utilizaremos el lenguaje de programacin JAVA, el cual ser nuestro canal para comunicarnos con el hardware convirtindose en nuestro segundo tema a tratar. Sin embargo JAVA es mucho ms que slo un lenguaje de programacin y mediante este entretenido recorrido aprenderemos que JAVA es una tecnologa muy completa que permite desarrollar distintos tipo de aplicaciones de software o proveer soluciones utilizando una combinacin de ellas. En una segunda parte del curso trataremos el diseo y programacin de aplicaciones utilizando interfaces grficas con SWING (tecnologa JAVA para las interfaces grficas de escritorio). Analizaremos todo el proceso de creacin de interfaces grficas y de validaciones de datos para que el usuario final pueda utilizar sin problemas nuestras aplicaciones. Para finalizar trataremos los tpicos de acceso a base de datos utilizando tecnologa JDBC (JAVA DataBase Connectivity), la cual nos permitir registrar los datos con los cuales trabajarn nuestras aplicaciones, en una primera etapa conoceremos la forma de crear mantenedores de datos de la forma ms simple posible para finalizar el curso con la creacin de software con una orientacin a un modelo de varias capas.

05

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Historia del lenguaje Java


Java es un lenguaje de programacin que nace el ao 1991 y fue desarrollado por Sun Microsytem (hoy Oracle) a cargo de un grupo liderado por James Gosling. Java es el resultado de un proyecto de investigacin para desarrollar software con el fin de comunicar distintos aparatos electrnicos de la poca, como por ejemplo, videos, televisores, etc. El problema mayor era que todos los dispositivos contaban con distintos modelos de procesadores y una muy limitada capacidad de memoria, a partir de esto, nace Oak, un lenguaje muy portable, con la capacidad de ejecutar los programas realizados en l de forma independiente al hardware que lo ejecuta, siendo adems muy liviano debido a la limitante de memoria que posean los dispositivos en aquel entonces.

En 1994 aparece un navegador Web llamado Mosaic para la World Wide Web (WWW), el exito de fue rotundo y levanto un gran inters entre los programadores de la poca, Oak, mientras tanto haba sido liberado a la comunidad de forma gratuita, lo que lo hizo muy aceptado y esto provoc que una gran cantidad de programadores transformara a Oak en un proyecto cuya finalidad era generar un lenguaje capaz de ejecutarse en cualquier equipo del mundo que est unido a la red de redes (WWW), la investigacin se bas en el hecho de que a pesar de que el hardware de los equipos destinos era muy variado, todos tenan algo en comn al navegar por la red y ello era Mosaic un navegador grfico que se recuerda como el segundo de la historia despus de violaWWW.

Desde aquel entonces se comenz a hablar de Java, el nombre de Oak fue reemplazado debido a que exista otro proyecto con el mismo nombre. Las aplicaciones Java que se ejecutaban a travs del navegador, se conocen hasta el da de hoy como applets.

Hoy por hoy Java es un lenguaje de programacin que presenta una enorme cantidad de ventaja sobre otros lenguajes, as como tambin existen lenguajes con mayores prestaciones que l, como es el caso de C++, sin embargo Java aporta una gran simplicidad en su codificacin y una importante reutilizacin de funcionalidades gracias a una amplia cantidad de packages, los cuales contienen clase desarrolladas por el equipo de Sun (ahora Oracle) que permiten realizar tareas comunes en el desarrollo de software.

Otra caracterstica importante es que Java es un lenguaje orientado a objetos, el desarrollo de software bajo estos conceptos permite reducir errores y aumentar la productividad, permitiendo el desarrollo de software ms flexible y escalable.

El lenguaje de Java est fundamentado en C++, lo que significa que su sintaxis y estructura de programacin son muy similares, facilitando as el aprendizaje a todos aquellos desarrolladores que ya conozcan C++

La mayora de los lenguajes modernos se han basado de una u otra forma en C++, por ello C++ se conoce como el lenguaje padre de todos los lenguajes modernos, provocando una similitud en su sintaxis y estructura lo que permite a desarrolladores facilitar el aprendizaje de nuevos lenguajes, algunos ejemplo de ellos son C# y Java.

06

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Programacin orientada a objetos


Muchas personas al escuchar por primera vez la frase programacin orientada a objetos la asocian inmediatamente a un programa o una tecnologa, sin embargo dicha asociacin es incorrecta, por ello antes de adentrarnos en el mundo de la programacin orientada a objetos (POO. desde ahora en adelante) y sus beneficios vamos a aclarar algunos puntos importantes.

Qu es la programacin orientada a objetos?


La programacin orientada a objetos es un conjunto de normas, que se basan en la idea de construir un software de forma mucho ms cercana a la vida real. Simplificando las tareas de desarrollo de software y entregando importantes beneficios a los programadores, los cuales se benefician principalmente de la reutilizacin de cdigo, evitando as volver a realizar tareas comunes una y otra vez.

La POO no es aplicable slo a JAVA, la POO es una norma (una forma de hacer las cosas) independiente del lenguaje, por ende, esta norma puede ser utilizada no slo con JAVA, sino que con cualquier lenguaje orientado a objetos del mercado, como por ejemplo, C#, C++ o PHP desde su versin 5.0. Esto representa un importante beneficio para el programador, ya que la transicin de aprender un lenguaje orientado a objetos distinto se hace ms liviana cuando ya dominas alguno de ellos.

Antes de continuar, es imprescindible comprender a que nos referimos con Objeto y para ello hagamos el siguiente ejercicio: miremos a nuestro alrededor y veamos los objetos que nos rodean, fjate que cada elemento que miras es un objeto y que para cada uno de ellos existen propiedades, un comportamiento y un estado. En informtica nos referimos a un objeto como el bloque de construccin de un programa orientado a objetos. Un programa que utiliza la Orientacin a Objetos (desde ahora en adelante OO) bsicamente contiene una coleccin de objetos. Un objeto es la instancia de una clase, la cual contiene propiedades, comportamientos, estados y una identidad que lo hace nico. Un objeto es un concepto, abstraccin o cosa con un significado y lmites claros en el problema en cuestin (Rumbaugh) Es aquel que posee propiedades, estado y comportamientos. (Booch)

07

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Atributos
Piensa en un televisor y trata de identificar qu atributos este contiene, algunos de los ms visibles son: Color Marca Modelo Tamao Peso Podemos definir entonces un atributo como la caracterstica de un objeto, la cual posee un valor. Por ejemplo el atributo color puede tener los valores: verde, caf, blanco, etc. As como la propiedad peso puede ser: 3 kilos, 4 kilos, etc. No es vlido entonces afirmar que 2 metros es un atributo, debido a que la expresin 2 metros es en realidad el valor de un atributo. Ahora si bien un objeto puede tener muchas propiedades, no todas son tiles al momento de programar, pues slo las que son tiles en el contexto del problema deben ser consideradas. Por ejemplo si estoy creando un objeto que me permita representar al cliente de un banco es muy probable que la estatura que tenga no sea un dato relevante para el proceso que realiza el banco.

Comportamiento
Estos se refieren a todas aquellas actividades que pueden llevarse a cabo con el objeto, los cuales se ejecutan como respuesta a un mensaje proveniente desde el usuario u otros objetos. Volvamos al ejemplo del televisor y pensemos en los distintos comportamientos que un televisor tiene, los cuales son por ejemplo: Encender Apagar Cambiar canal Cambiar el volumen.

Con estos comportamientos entramos a analizar una caracterstica bsica de los sistemas de informacin en general, y dice que cualquier proceso que estos realicen, afecta al valor de un atributo, ahora aunque te cueste creerlo, los valores de dichos atributos no crecen en el suelo ni caen del cielo, alguien los produce y el software los consume para realizar un proceso. En el caso de los objetos, los datos generalmente estn asociados a un atributo y el comportamiento del objeto utiliza estos datos. as se da una relacin directa entre el dato y el comportamiento, el comportamiento afecta al atributo y el valor del atributo afecta al comportamiento. Por ejemplo, si creamos una clase que represente un plumn, podemos identificar un comportamiento bsico que es rayar (el plumn no escribe lo haces t), ahora, un atributo del plumn es la cantidad de tinta que este posee, si te fijas si no tengo tinta no puedo rayar y cada vez que rayo, la cantidad de tinta disminuye. De esta forma la propiedad define al comportamiento y el comportamiento afecta a este atributo.

08

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Estados
Es informacin que posee el objeto, la cual puede ser fija o variable. Por ejemplo, en el caso de nuestro televisor algunos estados son: Encendido Apagado En silencio (mute).

El estado permite definir los comportamiento que el objeto puede o no realizar, por lo tanto no slo se trata de los valores de las propiedades del objeto, sino de como este se comporta con los valores que est manejando.

Clase
A menudo en informtica se utiliza la palabra clase y objeto como sinnimos, sin embargo dicha asociacin es incorrecta. Una clase es la definicin de un objeto, de sus atributos, comportamientos y estados, es muy similar a lo que para un arquitecto es el plano de una casa, en l se definen la posicin de las puertas y las dimensiones que estas tendrn. En informtica, por ejemplo, la clase que permite crear objetos de tipo persona definir atributos como: el Rut, nombre, edad y comportamientos como: comer, jugar, cantar y estudiar.

Continuando con el ejemplo del televisor, pensemos en que sucede si ahora ponemos frente a nuestra vista 3 televisores, qu es lo que tienen en comn? La respuesta a la pregunta sera, atributos, comportamientos y estados, debido a que los 3 son el mismo objeto, ntese, que la expresin el mismo objeto es en realidad ms compleja de lo que parece, debido a que son en realidad el mismo objeto? Definitivamente no, es verdad que tienen los mismos atributos, por ejemplo, ambos tienen tamao, marca y modelo, recuerde que los valores de las propiedades pueden variar, es decir uno puede ser de 22 pulgadas y los otros dos de 15 sin embargo los tres comparten una atributo llamado cantidad de pulgadas, donde lo que cambia es su valor, as mismo comparten los comportamientos de encender, apagar y los estados de encendido y apagado. Dado lo anterior podemos decir entonces que los objetos siempre se pueden identificar como un objeto distinto a otro, a este concepto se llama identidad.

La identidad es un concepto que no est asociado a los valores de los atributos o diferencias entre los comportamientos que estos puedan tener, es decir, si para el ejemplo anterior los tres televisores tuviesen la misma cantidad de pulgadas, la misma marca y modelo, aun as son 3 objetos que poseen su propia identidad.

Recordemos que uno de los principales beneficios de la programacin orientada a objetos dice que permite la reutilizacin de cdigo, pues bien, ahora veremos como las clases aportan de manera significativa en este proceso. Para simplificar an ms la explicacin, vamos a recurrir nuevamente a nuestro arquitecto, el cual tiene la difcil tarea de construir un gran condominio de 20 casas iguales, es necesario que nuestro arquitecto idee, calcule, mida y dibuje 20 planos de casas? Pues no, el slo idear un plano y por qu?, sencillo, porque no es necesario, debido a que todas las casas tienen mucho en comn y a partir de un solo plano (clase) se puede construir una N cantidad de casas (objetos)

09

Taller de programacin I

Semana I - Programacin Orientada a Objetos

De all proviene la definicin de objeto, la cual dice que un objeto es la instancia de una clase, debido a que todos los objetos son construidos a partir de una misma clase. Veamos como habra que construir una clase para satisfacer el requerimiento de registro del personal de una clnica, del cual sabemos que existen alrededor de 1000 trabajadores entre los que se incluyen doctores, enfermeras, dentistas, administrativos, personal de aseo, etc. Solucionar este problema es mucho ms sencillo de lo que parece, primero tenemos que definir qu informacin se desea obtener de cada uno, como se puede notar, todos tienen algo en comn y es que todos son personas, por ende comparten comportamientos y propiedades y de ellas registraremos: el Rut el cual representa un usuario como nico (identidad), nombres, apellidos, edad y departamento en el que trabajan. Por ende la clase que debemos crear debe tener las siguientes propiedades: Rut (representado por una combinacin de nmeros y caracteres). Nombres y apellido (representado por una combinacin de caracteres). Edad (representada por un nmero) Departamento (representada por una combinacin de caracteres)

Adicionalmente podemos agregar algunos comportamientos: Verificar edad (el cual verifica que la edad sea mayor a 18 aos)

Una vez nuestra clase (definicin de como es un objeto) est resuelta, debemos utilizar un lenguaje como JAVA para crear la clase en nuestro computador y a partir de ella podemos crear todos los objetos que deseemos con distintos valores en sus propiedades los que representarn a las personas que laboran en la clnica. Finalmente utilizando la tecnologa Java debemos complementar lo anterior creando aplicaciones que permitan a los usuarios interactuar a travs de una aplicacin Web o de escritorio que les permita ingresar y posteriormente ver la informacin referente al personal.

10

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Fundamentos de la POO
En la programacin Orientada a Objetos existen 4 pilares fundamentales que hay que conocer antes de arriesgarse a programar clases, el profundo conocimiento de ellos, te permitir identificar como crear mejores clases y ahorrar una gran cantidad de trabajo, as como disminuir las posibilidades de cometer errores: Abstraccin. Encapsulamiento. Herencia. Polimorfismo.

Abstraccin
La abstraccin corresponde a la ignorancia selectiva con la que enfrentamos un problema, el concepto de abstraccin nos dice que debemos preocuparnos slo de lo importante e ignorar de manera selectiva lo que no lo es. Un ejemplo de abstraccin es el siguiente, sabes que algunas propiedades correspondientes a una persona seran: Edad, Nombre, Rut, Peso, Estatura, gnero, masa muscular, nacionalidad. Pero qu sucede si las personas que deseamos gestionar mediante un software son jugadores de ftbol? En dicho caso algunas propiedades candidatas a tomar en cuenta son: nmero de camiseta, equipo en el que juega, edad, nacionalidad y cantidad de goles realizados. Observa que en esta ocasin de manera selectiva hemos obviado propiedades como alimento preferido, el color que ms le gusta, color de ojos, etc. Que si bien son propiedades comunes para las personas, para un futbolista no son relevantes.

Encapsulamiento
Es la caracterstica que tienen las clases de ocultar la complejidad de sus comportamientos, mediante la presentacin al usuario de una interfaz, la cual responde a peticiones a travs de mtodos sin la necesidad de exponer los medios utilizados para brindar un resultado.

El encapsulamiento es un concepto con el que lidiamos a menudo sin darnos cuentas, por ejemplo, si volvemos al caso del televisor citado antes y recordamos los comportamientos que este posee, nos daremos cuenta que encender y apagar el televisor son comportamientos que utilizamos a menudo, pero que afortunadamente la complejidad del proceso, es decir el que sucede para que se encienda o apague est oculta para nosotros (el usuario), curiosamente, tampoco nos interesa saber como funciona, la razn de esto se debe a que el televisor expone al usuario una interfaz que presenta de forma comprensible las entradas (lo que necesita para encenderse) y las salidas (el resultado) , entonces, el usuario enva un mensaje al televisor el cual es enviado a travs del control remoto , por otra parte el televisor en su interfaz, a travs del receptor o el botn de power nos indica que es lo que necesita para comenzar a ejecutar el comportamiento encender, entonces, sin importar si el mensaje es enviado a travs de la pulsacin del botn o por medio del control remoto, el mensaje es entregado como dato de entrada necesario para la ejecucin, as, el televisor de forma oculta (encapsulada) ejecuta todos los mecanismos para encenderse, finalmente el usuario recibe como recompensa un televisor preparado para comenzar a disfrutar de su programa preferido.

11

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Herencia
La herencia es una de las ms interesantes bondades que presenta la POO, gracias a ella es posible una jerarquizacin de las clases y una mayor reutilizacin de cdigo, donde las clases en lo ms alto de la jerarqua contendrn un conjunto de funcionalidad comunes que utilizarn las clases de niveles inferiores, las cuales agregan nuevas funciones que son cada vez ms especficas. La herencia define una relacin entre clases, en la cual una clase comparte su estructura y comportamientos con otra.

El ejemplo ms claro de la herencia es la especie humana, donde la herencia se da en un conjunto de atributos fsicos que se van pasando de generacin en generacin (nuestros atributos), incluso los humanos heredamos a nuestros hijos, una serie de comportamientos que son propios de lo humanos y otros que vamos modificando (especializando) con el tiempo.

12

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Polimorfismo
El polimorfismo es una palabra proveniente del griego que significa muchas formas, el polimorfismo es un concepto que se encuentra muy ligado a la herencia y consiste en la capacidad que tienen los objetos a dar distintas respuestas a un mensaje segn el objeto que ejecuta el comportamiento, por ejemplo, en el caso del perro y el gato ambos animales comen al igual que un mamfero, pero que sucede en el siguiente caso?

En este caso, tanto el cuadrado como el circulo tienen el comportamiento dibujar y calcular su rea, un momento! Es realmente posible que el crculo y el cuadrado calculen su rea de igual forma? Pues no, si bien ambas clases heredan el comportamiento desde figura, en este caso en particular debern tomar el comportamiento heredado y modificarlo para que cumpla con la forma de calcular el rea de la figura que corresponda, a este concepto se le denomina sobre escribir (Override), esto significa que ahora las dos clases hijas tienen una definicin del mtodo calcular rea que tienen una funcionalidad distinta entre s, el polimorfismo es entonces la capacidad de ejecutar el clculo correcto del rea dependiendo de qu objeto (figura) lo invoca.

Paquetes
Los package o paquetes en Java son una forma simple de agrupar clases de forma fsica y lgica, si bien ellos son opcionales, son una gran forma de mantener todo ordenado, hagamos una simple analoga para que comprendas su importancia, supongamos que tienes una conjunto de cajas en una pequea bodega las cuales estn destinadas a ser entregadas a distintos clientes a lo largo de chile, para un bodega muy pequea el orden no sea una prioridad y para encontrar dicha caja basta con buscarla entre todas las cajas que all existen, supongamos ahora que la bodega es inmensamente grande y que las cajas sern entregadas a distintas personas que representan a un pequeo grupo de empresas ubicada en tu cuidad, para este caso, nos conviene ordenar nuestra bodega de forma tal que las cajas queden apiladas segn la empresa hacia la que van, de esta forma si alguien necesita una caja en particular, bastar con preguntar a qu empresa est destinada para as delimitar el rango de bsqueda evitando tener que buscar en toda la bodega, seamos un poco ms ambiciosos y supongamos ahora que las cajas van a distintas empresas ubicadas en distintas regiones a lo largo de nuestro pas, de esta forma podramos reubicar las cajas ordenndolas por regin y luego para cada regin crear grupos ms pequeos para agrupar las empresas, de esta forma cuando necesites encontrar una caja, conocer la regin de destino evitar

13

Taller de programacin I

Semana I - Programacin Orientada a Objetos

buscar en todos los estantes, delimitando la bsqueda a una en particular, luego conocer la empresa evitar recorrer el estante completo, pues bien, este concepto de agrupar elementos no es nada que no hayas visto antes dado que esta es la misma forma en la trabajas con directorios y subdirectorios para organizar los contenidos de tu computador. En Java las clases al igual que las cajas del ejemplo anterior tambin pueden ser ordenadas, imagina entonces un package como un contenedor de clases, en el cual puedes agrupar todas las clases que estimes conveniente, por ejemplo, si tienes las clases Doctor, Auto, Camin, Secretaria, Moto y Empresario podemos notar rpidamente que son agrupables, reconociendo dos grupo principales, las personas, compuesto por el doctor, la secretaria y el empresario y el grupo de los vehculos compuesto por el camin, el auto y la moto. Para realizar este agrupamiento en Java los veremos con un ejemplo prctico.

En la imagen anterior vemos que existe un proyecto llamado PackageDemo, el cual ya incluye un paquete creado por defecto, el cual tiene el mismo nombre que el proyecto y es en l donde se agregarn todas las clases que creamos por defecto, sin embargo para mantener un orden agregamos dos package ms, llamados persona y vehculos, para ello debes hacer clic con el botn secundario del ratn sobre la carpeta source package y seleccionar nuevo-> java package

14

Taller de programacin I

Semana I - Programacin Orientada a Objetos

La siguiente ventana aparecer, en el campo package name se ingresa el nombre del package y presionamos finalizar.

El nuevo package aparecer.

Repetimos el proceso para crear el package llamado vehculo.

15

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El color gris nos indica que ambos package no contienen clases, por lo que procederemos a agregar la clase doctor dentro del package persona, para hacerlo debes realizar clic con el botn secundario del ratn sobre persona y seleccionar nuevo -> Java Class... en la ventana siguiente escribimos el nombre de la clase Doctor, recuerda mantener la letra D con maysculas. Una vez realizado la clase se agregar dentro del package seleccionado.

Es importante destacar que una clase que se encuentra dentro de un package utiliza la palabra reservada package ms el nombre de la clase para indicarlo.

Siguiendo estos mismos pasos completamos la creacin de todas las clases anteriormente mencionadas.

16

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Como puedes ver en la imagen anterior, las clases estn agrupadas segn su tipo, sin embargo existen otros beneficios asociados a la creacin de packages, supongamos que tanto el Doctor como el empresario tienen una secretaria, el mayor problema se dar si la secretaria del Doctor y la del empresario no realizan la misma actividad, teniendo entonces que crear dos clases distintas, para ello podemos crear dos grupos diferentes (packages) dentro de personas, los cuales llamaremos salud y negocio, con el fin de agrupar a doctor y secretaria en salud y empresario y secretaria en negocio.

Una vez creados ambos package debemos mover Doctor y secretaria a salud, mover empresario a negocio y luego crear la secretaria que falta dentro del package que contiene al empresario. En IDEs como NetBeans se recomienda arrastrar las clases de un package a otros, de esta forma es el propio editor es el que se encarga de editar los archivos para que el nombre del package escrito coincida con el del package que lo contiene, por ejemplo NetBeans muestra la siguiente ventana al arrastrar ambas clases hacia salud.

17

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El botn refactorizar le dir al editor que no slo mueva los archivos (los mueva de carpeta) sino que tambin edite las clases para que el nombre del package coincida. Al finalizar la estructura quedar de la siguiente forma:

De esta manera es posible tener dos clases que se llamen secretaria, un beneficio adicional al orden que hemos establecidos, para completar ms an la idea la siguiente imagen muestra la disposicin fsica de las clases en nuestro disco duro.

18

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Veamos ahora como utilizar las clases que estn dentro de un package, para ejemplificar utilizaremos el mtodo main ubicado en el package por defecto (marcada con azul en la imagen que se presenta a continuacin).

La imagen que viene muestra el error que dar tratar de instanciar un objeto de tipo Auto en el mtodo main.

Como se puede apreciar no es un problema de sintaxis, la que por lo dems est bien, la razn que aqu provoca el error est asociada a problemas de visibilidad, el cual se produce cuando la clase que est tratando de invocarse se encuentra en un package distinto, para solucionar esto se utiliza la palabra clave import de la siguiente forma:

19

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Observa que justo de la lnea que indica el package en la que la clase se encuentra agregamos la instruccin import la cual lleva el nombre del package y seguido por un punto el nombre de la clase que queremos importar, en una clase no hay lmites para agregar import, eso quiere decir que podras repetir la instruccin para camin y moto, sin embargo, si deseas utilizar varias clases que se encuentren dentro de un mismo package puedes hacerlo utilizando el comodn *, la siguiente imagen muestra un ejemplo.

El nico caso que difiere de lo visto hasta ahora es la utilizacin de la clase Secretaria, para entender mejor e problema observemos la siguiente imagen.

20

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Para este caso tanto el package Salud y empresaria que se encuentran dentro de persona han sido importados, por lo que es posible entonces instanciar un objeto de tipo doctor y empresario, sin embargo, la secretaria causar un error de ambigedad, dado que no es posible determinar cul de las dos secretarias es, la solucin a esto es utilizar su nombre completo, el cual se determina por la ruta completa para llegar a ella, es decir; dentro del package persona, luego dentro de saludo y/o negocio y luego el nombre de la clase.

21

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Elementos bsicos del lenguaje


A continuacin, vamos a realizar un recorrido por los elementos bsicos del lenguaje Java, adicionalmente cada uno de ellos los contextualizaremos en la programacin OO, los cuales acompaaremos con un ejemplo prctico y algunas reseas con buenas prcticas sobre la confeccin de clases.

Comentarios en Java
Los comentarios, son notas explicativas sobre la funcionalidad de algn elemento de tu cdigo que no es parte del programa (no se compila) y puede ir en cualquier lugar del archivo que lo contiene. Cuando un comentario slo utiliza una lnea se escribe de la siguiente forma: // Esto es un comentario que utiliza una sola lnea.

Cuando el cometario incluye ms de una lnea el comentario debe iniciar con /* y finalizar con */ /* Este comentario Utiliza ms de una lnea */

Existe otro tipo de comentarios el cual se utiliza para generar documentacin en formato HTML, el cual estudiaremos ms adelante.

Para mostrar un ejemplo de cada uno de los tpicos que vayamos pasando crearemos una clase llamada Persona, con algunos comportamientos y atributos tpicos de ellas y en el captulo de POO con java crearemos un programa que a partir de ella nos permite instanciar varias personas distintas.

22

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El siguiente ejemplo, muestra una clase llamada Persona la cual utiliza comentarios.

Caracteres en Java
Los caracteres que pueden ser utilizados en java son: Letras maysculas y minsculas desde la A hasta la Z, incluyendo las letras acentuadas y la . Nmeros desde el 0 al 9. Caracteres _, $ y cualquier otro carcter Unicode. Los espacios en blanco son permitidos, sin embargo los espacios reiterativos son ignorados, por ejemplo, es lo mismo codificar correr() que correr (). Las letras maysculas y minsculas son consideradas caracteres diferentes, es decir Sebastin y sebastian son diferentes.

Secuencias de escape
Existen combinaciones de caracteres conocidas como secuencias de escape, las cuales representan una accin que se debe realizar, estas combinaciones provienen desde el lenguaje C y comienzan con el carcter \.

23

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Tipos de datos
En java existen dos tipo, los primitivos (o simples) y las referencias a objetos.

Primitivos
Los tipos de datos primitivos son aquellos que pueden utilizarse directamente en un programa sin necesidad de utilizar POO, dado que no son objetos, los tipos de datos primitivos aportan un uso ms eficiente en el almacenamiento de datos y pueden ser divididos en dos grupos, los bolanos y numricos, los cuales se subdividen en dos grupos, los enteros (byte, short, int, long y char) y los reales (float y double). La declaracin de una variable utiliza la siguiente sintaxis: Tipo de dato identificador = [valor][, identificador] [=valor] ; En java los identificadores tambin tiene una norma, la forma correcta de declarar una variable es escribindola con minsculas y las maysculas slo se utilizan en la primera letra a partir de la segunda palabra si es que la hay, por ejemplo el identificador miVariable lleva la letra V con mayscula debido a que es una palabra escrita despus de mi lo mismo sucede con miPrimeraVariable, donde tanto P como V van con maysculas

byte
El byte es una variable que tiene una capacidad de 8 bits y permite almacenar un valor de tipo entero (sin decimales) entre el -128 y + 127. El siguiente ejemplo declara la variable y luego le asigna el valor de cero, cuando un valor es dado de forma inicial recibe el nombre de inicializacin de la variable.

Las variables pueden ser inicializadas con un valor (cero en este caso) o una expresin, se entiende por expresin un conjunto de operadores que dan un resultado, pudiendo as declarar byte (o cualquier otro tipo de dato) de la siguiente forma: byte a = 1+1*2; Tambin debes tener en cuenta que las variables numricas no inicializadas comienzan en cero.

24

Taller de programacin I

Semana I - Programacin Orientada a Objetos

short
El short tiene una capacidad de 16 bits y permite almacenar un valor entero entre -32768 y +32767 (al igual que el entero en C). La siguiente lnea de cdigo declara e inicializa dos variables.

int
El tipo de dato entero tiene una capacidad de 32 bits y permite almacenar un valor entero entre -2147483648 y +2147483647.

long
El tipo de dato long tiene una capacidad de 64 bits y permite almacenar un valor entero entre -9.223.372.036.854.775.808 y +9.223.372.036.854.775.809

float
El tipo de dato float tiene una capacidad de 32 bits y permite almacenar un valor real en coma flotante (decimales) entre -3,4*10-38 hasta 3,4*1038 . Los valores expresados en float deben ir acompaados de una letra f minscula al final.

25

Taller de programacin I

Semana I - Programacin Orientada a Objetos

double
El tipo double tiene una capacidad de 64 bits y permite almacenar un valor real entre -1,7*10-308 y +1,7*10308. El double es el tipo de dato que asume Java al escribir un real, por ello no va acompaado de ningn carcter como en el caso del float.

boolean
El tipo de dato booleano es utilizado para conocer el resultado de una evaluacin booleana, los dos posibles valores son true y false.

Si su valor de inicio no es especificado, el valor por defecto es false.

char
El tipo char, es un tipo de datos que permite almacenar una caracter, sin embargo el valor que en realidad almacena es un entero equivalente entre los valores del 0 al 127 de la tabla de caracteres ASCII, la forma de declarar un char es la siguiente:

Para el caso de la variable letra1 el valor es el carcter a, el cual sebe ir entre comillas, sin embargo en letra2, las comillas no existen, porque no se le est asignando un carcter, el nmero 97 representa la letra a en la tabla ASCII, esto significa que letra1 y letra2 tienen en realidad la misma letra almacenada.

26

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Tipo de objetos
Los tipos de objetos incluyen todos los objetos que pueden ser instanciados a partir de las clases provenientes con java y todas las que sean desarrolladas por el programador, si bien, ambos tpicos sern vistos ms adelante, en este captulo voy a mostrarte el String, la cual es una clase de mucha utilidad y es a veces tratada como un tipo primitivo, aunque no lo sea.

String
Un String (con su letra s mayscula) no es un tipo de dato primitivo, sin embargo se trata en este apartado debido a que su uso es muy habitual en los programas y adicionalmente se puede utilizar de la misma forma en la que se declaran los tipos primitivos. Un String es un tipo de dato que permite almacenar una cantidad de caracteres variables. Su declaracin y asignacin es de la siguiente forma:

String, es en realidad una clase, que almacena como atributo un arreglo de caracteres. Tanto las clases como los arreglos sern estudiados con mayor detalle ms adelante.

El siguiente ejemplo muestra la declaracin de variables bajo el paradigma de la programacin estructurada dentro del mtodo main

27

Taller de programacin I

Semana I - Programacin Orientada a Objetos

La siguiente imagen, presenta un ejemplo de la utilizacin de los tipos vistos en declaracin de atributos de nuestra clase Persona.

Private, representa el nivel de accesibilidad y ser estudiado ms adelante.

Vida y mbito de una variable


Las variables cuando son declaradas, tienen lo que se conoce como un mbito, el cual define las fronteras dentro de las cuales las variables pueden ser utilizadas, tradicionalmente la programacin estructurada tiene dos niveles de visibilidad distintos, las variables locales y globales, sin embargo en la programacin orientada el mbito de una variable dentro de una clase es algo ms complejo y ser tratado a lo largo de este manual. Las variables siempre deben ir dentro de una estructura que los contenga, para cada estructura existe un inicio y cierre de bloque que la delimita, por ejemplo la siguiente imagen muestra una clase con su respectivo inicio y cierre de bloque.

28

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Fjate, que ahora la clase Persona, posee adems un comportamiento llamado correr y descansar, los cuales tambin tienen limitado su bloque, podemos decir entonces, que la clase Persona contiene dentro un comportamiento llamado correr y descansar.

En este caso, la variable cansancio es una variable de instancia debido a que est definida dentro de la clase, pero fuera de sus comportamientos, por ende los mtodos descansar y cansancio (que tambin son parte de la clase) tienen visibilidad sobre cansancio, aumentando en este caso su valor al correr y disminuyndola al descansar.

29

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El mbito de una variable siempre depender de del lugar donde se produzca su declaracin, por ejemplo, ya vimos que si declaramos la variable dentro de los bloques que limitan la clase persona, pero fuera de correr o descansar, la variable se denomina una variable de instancia y est disponible para todos los mtodos que la clase contenga, en el siguiente ejemplo la variable cansancio es ahora una variable declarado dentro de del comportamiento correr , esto se denomina variable local del mtodo, para este caso la visibilidad de dicha variable son los lmites donde fue declarada, vale decir el inicio y bloque de correr, el siguiente ejemplo causa un error debido a que descansar no tiene una visibilidad sobre la variable cansancio.

Las variables de instancia son capaces de mantener el valor durante toda la vida de un objeto, sin embargo las declarada dentro de un comportamiento son creadas, utilizadas y eliminadas al finalizar la ejecucin del comportamiento que la contiene.

30

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Tambin es posible crear lmites dentro de los comportamientos correr, si bien la tcnica que se presenta en el siguiente no es muy comn, es reconocida por el lenguaje Java.

En la imagen anterior se muestran dos casos a considerar, en el interior del mtodo correr existe una delimitacin dentro que contiene la declaracin de una variable entera cuyo identificador es a, sin embargo al terminar el lmite donde fue declarada la variable ha vuelto a ser declarada, a primera vista da la idea de que correr tiene dos variables llamadas a, pero sabemos que eso es imposible, recordemos que el identificador de una variable debe ser nica en un mismo mbito, lo que en realidad sucede es que la variable que se declara primero tiene una vida til desde que se declara hasta el cierre de bloque en el que fue declarado, por ende al ser declarada la segunda variable llamada a, la primera ya ha sido eliminada. En descansar en cambio se produce un error debido a que se declara primero una variable entera dentro de los lmites del comportamiento descansar, lo que provoca que tambin est disponible para el mbito que existe en el interior del mtodo, por lo tanto, en el mbito interior, no es posible declarar la variable entera con el identificador a, debido a que ya existe en l.

31

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Conversin entre tipos


En Java existen dos tipos de conversiones, la implcita y explicita, la implcita es aquella que no necesita de alguna intervencin por parte del programador para que se lleve a cabo, siendo Java el encargado de realizarla, el ejemplo ms comn es la operacin aritmtica de dos tipos de datos distintos, en una variable de que tipo debo almacenar el resultado entre la suma entre un float y un double?

La conversin explicita o tambin conocida como cast consiste en forzar la conversin entre un tipo de dato a cualquier otro (excepto desde booleanos a enteros o reales), la sintaxis para realizar una conversin explicita es la siguiente (Tipo destino) expresin o variable. En el siguiente ejemplo se convierte una expresin que da como resultado un float (debido a que es ms grande que un short y un long) en un entero dando como resultado el valor de 3.

Muchas veces se piensa que el resultado es 4, debido a que la suma de los 3 da en realidad 3.8f sin embargo convertir este resultado a un entero no implica una aproximacin, sino que slo tomar la parte entera del valor resultante (tambin conocido como truncar datos)

32

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El siguiente ejemplo muestra una clase en la que el comportamiento miPeso el cual retorna los kilos de su peso sin contar los gramos.

33

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Operadores

Operadores aritmticos
Los operadores aritmticos son aquellos que permiten realizar operaciones matemticas y son:

El siguiente ejemplo muestra una operatoria aritmtica que incluye una conversin explicita cuyo resultado es 4:

Operadores unarios y de auto asignacin

Este tipo de operadores son una forma reducida de utilizar los operadores aritmticos tradicionales, por ejemplo:

34

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Dada la declaracin int a=6; la siguiente tabla muestra las equivalencias:

Debes prestar especial atencin cuando uses los operadores -- y ++ dentro de una expresin aritmtica, debido a que el orden en el que se utilizan cambia el resultado de la operacin. -- y ++ pueden ser utilizados como sufijos o como prefijos, lo que implica la jerarqua con la que se ejecuta, por ejemplo, en este caso ++ est antes de la variable a lo que implica que previo a cualquier operacin que vaya ejecutarse sobre l la prioridad es incrementarlo en 1, siendo el resultado para este caso 6 dado que a es 1 antes de ejecutar la suma.

Operadores relacionales

35

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Operador ternario
Es un operador especial para evaluar una condicin y entregar un valor u otro dependiendo de si la condicin se cumple. Su sintaxis es: Condicin ? operando1 : operando3. La forma de utilizarlo es la siguiente, la expresin booleana se efecta, si el resultado es verdadero se retorna el operando1, de lo contrario el operando3. El siguiente ejemplo, retorna el valor que hay que sumar o restar a la variable a para igualar a b, dicho resultado se almacena en c. int c=3; boolean par = (c%2==0)?true:false;

Descripcin de las excepciones


Muchas veces producto de las entradas que digitan los usuarios, problemas de conexin o una mala lgica del programador llevan a los programas a producir errores consecuencia de acciones inesperadas del software, siempre es mejor evitar un error que buscarle una solucin, al igual como es mejor utilizar la medicina predictiva que correctiva, sin embargo al igual que en la vida esto no siempre es posible, en Java el control de errores se ha simplificado bastante gracias a la utilizacin de excepciones, permteme explicarte con un ejemplo en que consiste una excepcin, supongamos que tenemos un pequeo programa que permita el ingreso de dos nmeros de tipo float los cuales se dividen entre si, cuando el usuario digite 3 y 2, el resultado ser 3/2 = 1.5f, pero qu suceder cuando se digite 0? La divisin por cero sabemos que no es posible y por ello, deberamos antes de realizarla validar que el nmero ingresado sea distinto de cero.

En una aplicacin de un tamao tan pequeo como este la prediccin de errores es bastante simple, pero en sistemas que tienen miles de lneas de cdigo el escenario es bastante ms difcil, piensa incluso que existen ocasiones en que es imposible prevenir un error, supongamos que tenemos un programa que mediante una red se comunica con otro equipo, Qu suceder si la red no se encuentra disponible? Por suerte para nosotros Java cada vez que ocurra un error que no hayamos prevenido generar una excepcin, estas excepciones portan toda la informacin de la causa del error y permiten controlarlas y codificar lo que necesitemos que ocurra en caso de haber un error.

36

Taller de programacin I

Semana I - Programacin Orientada a Objetos

En la pequea aplicacin de la cual estabamos hablando cuando el usuario ingresa los valores 2 y 0 la aplicacin no se ejecutar, esto se debe a que el flujo normal del programa se ha visto interrumpido dado que la divisin por cero en una divisin entera no es posible, lo que provoca que el programa no contine con su ejecucin, si vemos la descripcin del error nos encontraremos con que el tipo de excepcin es ArithmeticException y la razn es: by zero, lo que significa que hubo uno operacin aritmtica que no se pudo realizar y es la divisin por cero.

As como existe ArithmeticException Java tiene una gran cantidad de excepciones que indican el error ocurrido, estas clases, las cuales heredan todas de la sper clase Exception se puede ver en la siguiente imagen:

37

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Aprendamos ahora como trabajar con errores, ahora que sabemos que el cdigo puede fallar debemos envolver el cdigo susceptible a fallos dentro de un bloque llamado try - catch (intentar capturar) la sintaxis es la siguiente:

La lnea que captura el resultado y el que la imprime estn ahora dentro del bloque try, fijese que tenemos un catch, que capturar todos los errores de tipo ArithmeticException que ocurra, por ello esta vez, si se intenta dividir por cero el mensaje de no es posible realizar el clculo ser mostrado y el cdigo continuar ejecutndose de forma normal al finalizar el bloque de try- catch.

38

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Uso del depurador assert


Durante el periodo de desarrollo de una aplicacin el cdigo suele probarse y corregirse varias veces antes de su publicacin, durante este proceso los programadores tienen la misin detectar errores en sus algoritmos, muchos de estos errores se deben a flujos no previstos o a valores inesperados en alguna variable, la tcnica ms comn cuando se detecta un error es agregar al cdigo una condicin if que evale si el valor esta dentro de un rango no vlido, de esta forma cuando la sentencia se cumple imprima en el log un mensaje que pueda ayudar al programador a saber donde esta ocurriendo el error, sin embargo con esta tcnica la ejecucin del programa continua, si deseas realizar una depuracin ms estricta el uso de assert te ayudar a que bajo ciertas condiciones agregadas en el cdigo la ejecucin del programa se detenga mediante el uso de excepciones, la ventaja que esto tiene es que los assert slo generarn el error durante el proceso de depuracin, ocultndose cuando sean los usuarios quienes utilicen el software, veamos un ejemplo prctico.

En la clase matemticas existe un mtodo llamado calculosSinNegativos el cual tiene como misin generar alguna accin con un parmetro de tipo entero, por ahora el cuerpo del cdigo slo incrementa el valor de la variable a, luego imprime un mensaje para marcar que el cdigo a pasado por all y al final retorna el valor, naturalmente y como su nombre lo dice este cdigo se desea se ejecute slo con nmeros positivos, entonces el uso de assert en este ejemplo ser interrumpir la ejecucin si un valor menor a cero llega al mtodo.

39

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Nota que la condicin assert ha sido agregada al cdigo con la condicin que a sea mayor o igual a cero, o esto estamos diciendo que este mtodo slo debe aceptar valores que cumplan dicha condicin, lo ventajoso de esto es que si ejecutas el cdigo utilizando un valor negativo el cdigo no fallar ya que el uso de assert debe activarse y es de esta forma en la que slo el programador ve las excepciones que ocurran, para activarlas debes ir al men run -> set Project configuration -> customize

Bajo la seccin de run debes agregar el argumento ea tal y como muestra la imagen.

Una vez agregada esta opcin llamaremos el mtodo utilizando un valor negativo para ver su comportamiento con el siguiente cdigo de ejemplo.

40

Taller de programacin I

Semana I - Programacin Orientada a Objetos

La clase String
El String en Java es una cadena de caracteres al igual que en lenguajes como C, sin embargo su principal diferencia es que esta no es slo una cadena de caracteres, sino un objeto producto de la instancia de la clase String (esto quiere decir que String como cualquier otra clase tambin posee comportamientos que puede realizar), dichos comportamientos, estn todos asociados al manejo de una cadena, lo que presenta una gran ayuda al momento de trabajar con ellas, esta clase se encuentra dentro del package java.lang.

Algunas de las utilidades que presta la clase String permiten contar la cantidad de caracteres que tiene una cadena, buscar caracteres, juntar y dividir cadenas de texto, entre muchas otras. La sintaxis de un String es la siguiente:

En la declaracin anterior, es Java quien se encarga de crear un objeto de tipo String llamado hola, el cual contiene como atributo una cadena de caracteres que dice hola mundo, es importante saber que una cadena de caracteres no es ms que un arreglo de objetos del tipo char[], afortunadamente, la clase string es la que se encarga de redimensionar dicho arreglo cuando es necesario, por ejemplo, si luego de su declaracin al String hola se le asigna hola mundo otra vez ser Java quien gestione el redimensionamiento necesario para que el nuevo String quepa en el arreglo creado antes dentro del objeto.

La documentacin de todas las clases que vienen en java puede ser encontrada en: http://download.oracle.com/javase/1.4.2/docs/api/

Prestaremos especial atencin en la documentacin de la clase String, a la cual se puede acceder de forma directa desde: http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html

Memorizar no lo es todo en la programacin, una buena lgica, un conocimiento de las APIs y saber como leer e interpretar su documentacin es una combinacin que no falla para resolver la mayora de los problemas.

La documentacin de todas las clases se encuentra estructurada de la siguiente forma: Field Summary: un resumen de los atributos que posee la clase. Constructor Summary: un resumen con sus constructores y las sobre cargas existentes Method Summary: un resumen con la descripcin de sus mtodos, tipos de datos que reciben y tipo de retorno.

41

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Vamos a aprender como leer la documentacin a partir de la aplicacin de algunos de los elementos descritos en ella. Comenzaremos con las formas de construir un objeto de tipo String que existen, para ello nota que de la lista de constructores, el primero luce de la siguiente forma:

Esto significa que puede crearse un objeto de tipo String sin pasar parmetros, vale decir, slo llamando a su constructor por defecto:

En captulos anteriores habamos utilizado el objeto String sin necesidad de crear una instancia, esto se debe a que su uso es tan comn que se ha realizado una excepcin con esta clase y se ha permitido declararla como un tipo de dato primitivo, sin embargo de forma interna se ejecuta el constructor como muestra el fragmento de cdigo anterior. Observe el siguiente constructor, el cual necesita para dar un valor inicial a la cadena un arreglo de caracteres:

El constructor debe ser llamado de cualquiera de las siguientes formas:

Para cualquiera de los dos casos la impresin de obj da como resultado: OpenDev Como puede ver, la clase tiene varias sobrecargas en su constructor, esto permite instanciar un String, entregando su valor inicial a travs de distintos tipos de origen, vamos a aprender ahora como leer el apartado de los mtodos. Todos los mtodos que tiene una clase, contienen una descripcin de su parmetro de retorno, nombre del mtodo, dato de entrada y una descripcin, por ejemplo:

Con esta informacin la dificultad de utilizar las clases provistas por Java se desvanece casi en su totalidad, por ejemplo, el comportamiento sabes que tiene el nombre de charAt, y su descripcin dice que nos retornar el carcter de un ndice especificado, que necesita para ejecutarse
42

Taller de programacin I

Semana I - Programacin Orientada a Objetos

el nmero de la posicin del carcter que deseas obtener y a cambio nos retorna un objeto de tipo char con el carcter que ocupa dicha posicin. Dado que el comportamiento es slo aplicable a los objetos de tipo String, entonces lo ejecutamos de la siguiente forma:

El cual nos permite conocer si una cadena comienza con la cadena que se le entrega como parmetro, el resultado es un booleano, veamos su uso:

Para este caso, el resultado de la ejecucin de obj.startsWith(Open) representa un booleano verdadero, dado que la cadena comienza con Open, por ello la sentencia if al evaluar dicho resultado permite la impresin. Analicemos su sobre carga:

Este mtodo tambin permite conocer si una cadena comienza con una cadena en particular, la diferencia est dada en que adems permite especificar de la cadena original, desde que carcter deseo comenzar a evaluar, por ejemplo:

Para este caso, el if no se cumple, ya que a partir del carcter 2 la cadena se reduce a enDev.

43

Taller de programacin I

Semana I - Programacin Orientada a Objetos

A continuacin se listan los mtodos ms utilizados para su anlisis: charAt: retorna un objeto de tipo char con el carcter que ocupa dicha posicin Concat: permite juntar dos cadenas endsWith: evala si la cadena comienza con una cadena especificada equals: evala si la cadena y el parmetro son iguales. Length: retorna el largo de la cadena Replace: permite reemplazar caracteres startsWith: evala si la cadena termina con una cadena especificada subString: permite extraer una porcin de la cadena original toCharArray: transforma la cadena a un arreglo de caracteres. toLowerCase: retorna una copia del String original en minscula toUpperCase: retorna una copia del String original en mayscula trim: retorna una copia del String original sin los espacios al comienzo y al final. valueOf: retorna la representacin del parmetro entregado como un String.

44

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Estructuras de decisin
Las estructuras de condicin son aquellas que permiten controlar el flujo de un programa dependiendo de alguna condicin. Java soporta dos tipos de sentencias,if y switch

if
La sentencia if, permite en base a el resultado de una condicin cambiar el flujo de un programa a travs de dos caminos, el siguiente cdigo muestra la estructura general del if. If(condicin) sentencias si la condicin se cumple; else sentencias en caso de no cumplirse;

El siguiente extracto de cdigo, imprime el mayor entre la variable a y b.

La condicin del if puede ser cualquier expresin de tipo boolean, en el siguiente caso, tenemos una funcin la cual retorna un valor booleano y dado su valor ejecuta un procedimiento.

45

Taller de programacin I

Semana I - Programacin Orientada a Objetos

En el caso anterior si la funcin estudiar es verdadero ejecutar llevarBuenaVida(), de lo contrario disfrutarAhoraProblemasDespues() , pero es muy probable que estudiar implique la llamada a ms funciones que slo llevarBuenaVida() , en dicho caso todas las lneas de cdigos que deban ejecutarse al cumplir una condicin deben ir encerradas entre inicio y cierre de bloque.

if anidados
En algunas ocasiones el flujo de un programa requiere que el cumplimiento o no de una expresin booleana de paso a una nueva evaluacin, por ejemplo, si la temperatura es muy alta, hay que encender el aire acondicionado, sin embargo si se desea utilizar el control remoto para ello an quedara por evaluar si el dispositivo tiene las pilas con la carga suficiente para ello. El siguiente ejemplo evala el tipo de licencia de conducir y presenta un mensaje con el resultado:

46

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El siguiente ejemplo muestra la utilizacin de un if en nuestra clase persona, en el cual desarrollamos un mtodo que retorna verdadero o falso dependiendo de si la persona ser o no mayor de edad.

En los prximos ejemplos slo se mostrar el comportamiento que contenga el ejemplo, sin embargo debes recordar que van dentro de la clase persona as como miPeso y soyMayor lo estn.

47

Taller de programacin I

Semana I - Programacin Orientada a Objetos

switch
El switch es una estructura que permite en base al resultado de una expresin seguir mltiples caminos, por ejemplo, en el caso anterior la variable licencia puede tener varios valores y cada uno de ellos se evala utilizando un else if en caso de no cumplirse la sentencia anterior, el problema se puede resolver utilizando un switch.

En el ejemplo anterior, la variable licencia es evaluada, el valor de dicha variable se busca en los casos que contenga nuestro switch a partir desde el primero, si coincide con alguno, se ejecutarn todas las lneas que se encuentren entre el case y la sentencia break, la cual se encarga de realizar un corte, evitando as que los otros casos se evalen, por otro lado, si ninguno de los casos coincide con el valor de la variable, se ejecutarn todas las lneas de cdigo que se encuentren dentro de default. El caso por defecto es opcional, es decir, la palabra reservada default no es obligatoria dentro del switch.

El switch no evala cualquier tipo de expresin, para que la expresin pueda ser evaluada, el tipo del cual se desea conocer su valor debe ser de alguno de los siguientes tipos: byte, short, int o char.

48

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El siguiente ejemplo implementa el comportamiento anterior en persona, el cual retorna un String con un mensaje segn la licencia obtenida.

Estructuras de Iteracin while


El ciclo while consiste en un conjunto de sentencias que se repetirn mientras la expresin que se evala sea verdadera. El siguiente cdigo muestra un ejemplo que imprime un nmero del 1 al 10.

Nota que el cdigo anterior no utiliza los inicios y cierres de bloque debido a que el while slo involucra una lnea de cdigo.

49

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El siguiente while en cambio realiza lo mismo, pero utilizando una variable booleana que controla la ejecucin del ciclo:

Do- while
La iteracin do-while, es muy similar a while, con una diferencia en el orden en la que se evala la expresin que define la continuidad del ciclo, el ciclo while visto, realiza la evaluacin de una expresin booleana ,antes de ejecutar las lneas de cdigo que deben iterarse, si esta es falsa, el ciclo nunca llega a ejecutarse, el ciclo do- while en cambio, realiza la evaluacin despus de ejecutarse una vez, esta iteracin es ideal para cuando se necesita que el ciclo se ejecute al menos una vez. El siguiente ejemplo muestra la ejecucin de un ciclo do while que valida que el usuario ingrese de forma obligatoria un valor entre 1 y 10.

Para este caso el mensaje que solicita un valor al usuario siempre se mostrar, debido a que no existe una condicin que lo evite ya que esta se encuentra al final del cdigo, luego de ello, el sistema quedar a la espera de que el usuario ingrese un valor por medio de System.in.read(), el cual lee un valor entero ingresado por la consola, posterior a ello se evala la condicin por primera vez, si el nmero ingresado no se encuentra dentro del rango, el ciclo iterar de forma indefinida hasta que el usuario ingrese el valor requerido.

50

Taller de programacin I

Semana I - Programacin Orientada a Objetos

System.in.read() lee un valor entero a travs de la consola, si se desea leer un carcter, se debe realizar la conversin utilizando un cast, de la siguiente forma: char variable = (char) System.in.read();

for
El ciclo for es muy utilizado, debido a la facilidad y la versatilidad que presenta, este ciclo, se caracteriza por incluir en su sintaxis una declaracin, condicin e iteracin, se dice que es verstil debido a que cualquiera de las partes que lo compone es opcional, veamos la sintaxis general de un ciclo for. for(declaracin e inicializacin; condicin; iteracin) sentencia; El siguiente ejemplo, muestra 10 salidas por consola que presenta un mensaje con el nmero de iteracin.

Como se puede ver, la primera lnea de cdigo muestra la sintaxis general de un for, en la primera parte (hasta antes de la primera ;) hay declarada e inicializada una variable con identificador i con un valor cero, en caso de que la variable exista bastara con la inicializacin, en la segunda parte, se encuentra la condicin, la cual dice que la iteracin se producir mientras i sea menor a 11, en la tercera parte se produce un incremento de la variable i en cada iteracin y finalmente el cuerpo del ciclo, el cual no lleva inicio y cierre de bloques debido a que solo involucra una lnea de cdigo, es la encargada de imprimir por pantalla el mensaje iteracin nmero ms el valor de la variable i. La manera en la que este ciclo se ejecuta es la siguiente: Primera iteracin: ejecuta la declaracin e inicializacin y luego la condicin, el incremento de i o cualquier otra lnea de cdigo que all se codifique es omitida, si la condicin se cumple comienza se comienza a ejecutar las lneas de cdigo que deben iterarse, en este caso la impresin. Segunda iteracin en adelante: el orden cambiar, desde ahora y hasta que la condicin deje de cumplirse, el for saltar la declaracin e inicializacin y pasar directamente a la sentencia que en este caso ejecuta un incremento de i, despus de ello, el for evala si la condicin an se cumple para continuar con la ejecucin del cdigo, as el orden de esta segunda iteracin se repite hasta que la condicin sea falsa.

51

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Otra caracterstica importante es que cada una de las 3 partes que componen la declaracin del for son opcionales, aqu un ejemplo en la que la declaracin, inicializacin e incremento estn definidos fuera de la declaracin de for:

La salida del ejemplo anterior sera:

El ciclo for tambin permite omitir la condicin, pero esto provoca que el ciclo nunca llegue a ejecutarse, debido a que la condicin es por defecto falso.

El siguiente comportamiento calcula la sumatoria de todas las edades hasta la actual:

52

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Nuestra clase podra probarse de manera muy sencilla utilizando el siguiente cdigo en el mtodo main.

La ejecucin de este cdigo da como resultado la siguiente salida:

El resultado siempre ser el mismo, debido a que los valores de la persona creada sern siempre los mismos y se debe a que la clase no contiene mecanismos que permitan especificar edad, peso y tipo de licencia. Estos comportamientos sern vistos ms adelante.

53

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Si tuvisemos un comportamiento que permita cambiar los datos podramos crear un programa que permita gestionar ms de una persona, tal y como muestra el siguiente ejemplo:

54

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Etiquetas de corte: Break, Continue y label (etiquetas propias)


Existen algunas caractersticas extras en el uso de ciclos que son menos usuales de encontrar, pero que en algunos casos prestan mucha utilidad. La primera de ellas es la sentencia break, esta instruccin dentro de un ciclo permite la interrupcin total de la misma sin importar si la condicin es o no verdadera, a continuacin veremos un ejemplo utilizando un cliclo while, sin embargo, esta instruccin puede ser utilizada con cualquier ciclo

En la imagen anterior, por ejemplo, la condicin del cliclo while determina que el ciclo debe realizarse mientras la variable a sea menor a 10, por lo tanto si incrementamos la variable a de uno en uno, hola deber imprimirse 10 veces, Sin embargo dentro del ciclo hemos agregado una condicin if, la cual se cumplir cuando la variable a tenga el valor de 4 (la quinta iteracin), cuando esto ocurra, la instruccin break se ejecutar lo que provocar que el ciclo termine su ejecucin, de esta forma el mensaje hola se imprimir siempre 5 veces, a pesar de que su valor sea menor a 10. La instruccin continue, es similar a break, con la diferencia de que no corta la ejecucin de todo un ciclo, si no que fuerza al ciclo a finalizar la iteracin actual, veamos un ejemplo de ello.

En el cdigo anterior el ciclo tiene como iterar mientras la variable sea menor a 10, al igual que en el caso anterior, la variable es incrementada de uno en uno, por lo que hola debiese imprimirse 10 veces por pantalla, sin embargo, la estructura if dentro del ciclo ejecutar una instruccin de tipo continue cuando la variable tenga le valor de 4, cuando ello ocurra, y el continue en cuestin se ejecute todo el cdigo que venga despus de l ser omitido lo que provocar que en esta iteracin System.out.println(hola) no logre ejecutarse, de esta forma la impresin se llevar a cabo slo nueve veces, omitindose en la 4 iteracin.

55

Taller de programacin I

Semana I - Programacin Orientada a Objetos

El uso de continue y break, puedes ser muy tiles en algunos momentos, pero debes cuidar de no cometer algunos errores tpicos de su uso, por ejemplo:

Como muestra la imagen la lnea que imprime hola no permite compilar el cdigo, sin embargo la responsable de ello es la instruccin continue que lo precede, al ubicarla all sin ninguna condicin esta se ejecutar siempre, lo que provocar que todo el resto del cdigo que contenga el ciclo no se ejecute dejando la impresin como inaccesible. Otro error comn es el siguiente:

Este cas es ms crtico que el anterior, dado que el error se producir en tiempo de ejecucin ya que a diferencia del ejemplo anterior compila, sin embargo cuando el valor de la variable a alcance 4 se ejecutar el continue, lo que provocar que todo el resto del cdigo se omita, esto incluir el incremento de la variable a, de esta forma el ciclo se ejecutar de forma infinita. Por defecto continue y break siempre afectan al ciclo ms cercano que lo contiene, por ejemplo:

56

Taller de programacin I

Semana I - Programacin Orientada a Objetos

En el cdigo anterior el ciclo for tiene la instruccin de iterar 10 veces y por cada una de ellas el ciclo while otras diez, sin embargo el ciclo while slo imprime 3 veces hola, ya que la instruccin break lo interrumpe cada vez que a es igual a 4, el for en cambio itera las 10 veces que le corresponden debido a que el break contenido en el while no lo afecta. Es posible que en determinado momento desees interrumpir el ciclo for dependiendo de alguna condicin que ocurra dentro del while, para realizar eso existe una forma muy limpia de hacerlo, en la que a cada ciclo lo bautizamos con algn identificados, de esta forma podemos especificarle a nuestro break y/o continue que ciclo queremos que afecte. El siguiente cdigo muestra un ejemplo:

Como muestra la imagen tanto el ciclo for como el ciclo while han sido etiquetados con un nombre, donde cada uno se llama elfor y elwhile respectivamente, en este caso entonces el break introducido dentro del if an continua afectando slo el while, a menos de que le especifiquemos explcitamente que el ciclo que deseamos interrumpir el el ciclo for, para hacerlo basta con hacer lo siguiente:

57

Taller de programacin I

Semana I - Programacin Orientada a Objetos

Resumen de la Semana
Esta semana conociste los conceptos bsicos de la orientacin a objetos y el trabajo con Java. Aprendiste sobre los distintos tipos de datos, los operadores aritmticos, las estructuras de decisin, las excepciones y el uso del depurador.

Sinopsis de la prxima clase


La prxima semana aprenders a trabajar con estructuras de arreglos, matrices y listas. Conocers las distintas formas de utilizarlas y las clases y mtodos que facilitan el trabajo con estas estructuras.

58

You might also like