Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
UNIDAD Nº I
Clases e Interacción De Objetos
www.iplacex.cl
SEMANA 2
INTRODUCCIÓN
2 www.iplacex.cl
IDEAS FUERZA
Abstracción y modularización: nos referimos a centrarnos en los aspectos generales,
dejando de lado los detalles de los elementos de un todo. Por otra parte, cada detalle
está subdividido en una tarea específica lo cual denominamos modularización.
Operadores:
Operadores de relación.
Estructura condicional if: este código permite tomar decisiones mediante una
pregunta lógica, usando los operadores y de esta forma definir un comportamiento
condicional de ejecución de código que es dependiente del resultado de la evaluación.
3 www.iplacex.cl
Desarrollo
Abstracción y modularización
Módulos
4 www.iplacex.cl
independiente, lo que hace más fácil encontrar errores en el código o modificar ciertas
características, facilitando el desarrollo y depuración del código.
Los módulos de código definen lo que se conoce como su responsabilidad, es
decir lo que el módulo debe hacer, mientras más específico sea el módulo más simple
será programarlo y posteriormente el hacer su mantención.
Por ejemplo:
Imagina que existe un programa, llamado sistema de ventas. Contiene 3 clases
diferentes, Transacción, Informe, y Producto.
Cada una de estas clases tiene una tarea específica (su responsabilidad). Producto es
la encargada de guardar los atributos que
le pertenecen, Transacción se encarga de
las transacciones de ventas, Informe se
encarga de mostrar un informe al usuario.
Una clase puede pasar información de una
a la otra mediante mensajes, pero no debe
realizar las tareas que son para otra clase.
Así, se divide un Sistema en módulos.
Otro ejemplo que te puede servir es que imagines un auto. El auto está
compuesto por múltiples piezas, supongamos que se desgastan los neumáticos,
¿deberías comprar un auto nuevo? Lo más probable es que baste sólo con cambiar el
neumático que está gastado y no todo el auto. Esa es la facilidad que te entrega el
trabajar con objetos que interactúan entre sí, cada uno de estos objetos realiza algunas
tareas que son específicas y de las cuales se hace responsable. Ningún objeto debería
realizar todas las tareas, pues será difícil de mantener y de programar.
5 www.iplacex.cl
Abstracción en software
La abstracción de software es una técnica que permite
aislar sólo los comportamientos y los atributos que interesan
para la resolución de un problema en un contexto específico.
Eso quiere decir que debemos centrarnos en el contexto y de
ahí derivar aquellos atributos y métodos que sean necesarios
para resolver el problema en es esa situación en particular.
Imagina el siguiente caso, en un sistema de matrícula,
debes poder registrar a los alumnos en la institución y asignarles uno o más cursos.
Teniendo esto en cuenta podríamos querer registrar los siguientes datos: rut, nombre,
dirección, teléfono, lista de cursos que ha inscrito. Las acciones que debería hacer la
clase serían crearse como alumno y registrar las asignaturas que el alumno quiere
tomar. Si te fijas, dejamos de lado algunos datos, por ejemplo, ¿nos interesaría conocer
el género del alumno?, ¿O el estado civil?, ¿O si sus padres son profesionales? La
respuesta no es simple pues depende del contexto en que nos encontremos, si bien
todos esos datos son parte del alumno, el contexto nos dirá los atributos necesarios y
las acciones que éste ejecuta, sin ir más lejos, fíjate que nuestro alumno no estudia, ni
come, ni respira, lo que hicimos fue crear una “abstracción” de la clase alumno,
definiendo sólo sus características y comportamientos más importantes en función del
contexto del problema y por ende de los datos que necesitamos conocer y procesar.
Tipos de datos
Ya hemos mencionado antes los tipos de datos. Como bien sabrás, todas las
aplicaciones que programamos son ejecutadas en un sistema operativo. El código que
vamos a escribir está orientado a indicarle al sistema operativo que cosas tiene que
hacer.
En el caso de los tipos de datos cuando los usamos le indican al sistema
operativo que realice un proceso de reserva de espacio para almacenar un valor en
particular. Los datos que registran nuestras aplicaciones deben ser guardados en un
6 www.iplacex.cl
espacio en la memoria antes de ser guardados en el disco o en una base de datos.
Para hacer esto, debemos indicarle al sistema operativo que reserve espacio en la
memoria, pero este aviso debe ser preciso pues la memoria es limitada y todas las
aplicaciones quieren ocuparla. Entonces ahí es cuando surgen los tipos de datos que
son los encargados de definir un espacio en la memoria para que el sistema operativo
reserve y además indican cómo se debe convertir cuando se guarda o se lee un valor.
Por ejemplo, ya hemos trabajado con tipos de datos “int” para representar
valores enteros, pero existen otros tipos de datos, por ejemplo, “long”, que también
sirve para almacenar números enteros, pero de un tamaño más grande. Por eso,
debemos usar el tipo de datos adecuado dependiendo del dominio del dato. Se
entiende por dominio del dato al grupo de valores máximos y mínimos que se podrían
almacenar. Utilizando el concepto del dominio por ejemplo podríamos tratar de definir el
mejor tipo de dato para un atributo “edad”, si analizamos podemos definir que el rango
de valores para la edad comienza en 0 y termina en ¿120?, ¿130.? Teniendo esta
información podríamos buscar en los tipos de datos disponibles el que más se acerque
a este rango de valores, lo hacemos de esta forma para no reservar espacio de más en
la memoria, como analogía podríamos decir que reservar un tipo muy grande para la
edad sería como reservar espacio para estacionar un camión con acoplado en el centro
de la ciudad y luego llegar en bicicleta.
Variables
Ahora que sabemos un poco sobre tipos de datos, veamos algo sobre las
variables. Las variables son las encargadas de guardar datos, para que, a lo largo de la
ejecución de un código, podamos usar ese valor para diferentes funciones.
La característica principal es que este valor puede ir cambiando a medida que se
ejecuta el código. Aunque ya
se haya declarado un valor
inicial para una variable, éste
puede volver a cambiar las
7 www.iplacex.cl
veces que sea necesario durante la ejecución del código.
La declaración de una variable está compuesta de varias partes, primero se
define el modificador de acceso, luego el tipo de dato y finalmente el identificador.
El modificador de acceso permite definir la forma en que otros objetos que
componen la aplicación pueden acceder a los datos o atributos de la clase. Existen tres
modificadores de acceso en java, private, protected y public, por el momento basta con
definir que estos modificadores definen la forma en que se puede acceder a los datos o
los comportamientos desde otras clases, más adelante haremos una definición más
completa al respecto.
El tipo de dato, tal como lo definimos hace un momento, permite definir la
cantidad de memoria que el sistema operativo asignará para escribir y leer datos.
El identificador, permite “identificar” la posición de memoria en donde se deben
guardar y leer los datos. El sistema operativo cuando asigna espacio en la memoria lo
hace usando un puntero que indica la posición específica en la cual comienza el grupo
de datos que se deben leer o escribir, el tipo de datos define el tamaño y para que no
nos equivoquemos, el lenguaje de programación, nos permite definir un identificador
para trabajar con el puntero a la dirección de memoria. Recuerda siempre definir el
identificador utilizando un nombre que defina de la mejor manera lo que deseas
guardar o leer, por ejemplo, si vamos a almacenar la edad de una persona, lo más
probable es que la variable se llame “edad”, si utilizas otro identificador como
“XvUh123” lo más probable es que no te haga sentido a ti ni al resto de los
desarrolladores respecto al dato que se va a almacenar ahí.
PREGUNTA DE REFLEXIÓN ¿Has advertido que en tu vida diaria, convives Comentado [JdRAV1]: Aquí, debes hacer una pregunta de
reflexión para el autoaprendizaje.
constantemente con datos? Enumera algunos de los que utilizas. EJ:
Comentado [DR2R1]: OK
8 www.iplacex.cl
Operadores de relación.
9 www.iplacex.cl
Operadores lógicos
10 www.iplacex.cl
Operadores Aritméticos
PREGUNTA DE REFLEXIÓN. Los operadores lógicos permiten evaluar el Comentado [JdRAV3]: Generar una pregunta de reflexión
en torno al contenido
resultado de dos expresiones con valores verdadero o falso. Todos los días Comentado [DR4R3]: Listo!
11 www.iplacex.cl
Estructura condicional if
Ahora que conocemos un poco más sobre operadores, veamos cómo usar una
estructura condicional. Recordemos que este bloque de código hace una pregunta. Si
su condición se cumple, entra a ejecutar cierto código, pero si no se cumple, el código
continúa ejecutándose, saltándose lo que se encuentre dentro del if.
Es decir, este código permite tomar decisiones mediante una pregunta lógica,
usando los operadores y de esta forma definir un comportamiento condicional de
ejecución de código que es dependiente del resultado de la evaluación.
12 www.iplacex.cl
Estructura if else
Este bloque de código es muy similar al anterior, pero se agrega una segunda
parte, en la que el código dice “si no”, y ejecuta otro bloque. Es decir, al ejecutarse este
bloque de código, solo existen dos opciones posibles que pueden ocurrir, y
necesariamente, el código ejecutará sólo una de las dos.
En el ejemplo anterior si el valor que se recibe para la variable precio es mayor a cero,
se ejecuta la asignación del precio al atributo de la clase.
Si el precio no es mayor a cero, entonces se muestra un mensaje que dice “Precio
debe ser mayor a cero”.
13 www.iplacex.cl
-Modularización y abstracción
-Datos primitivos
-Operadores lógicos y operadores de relación
Modularización
14 www.iplacex.cl
Abstracción
15 www.iplacex.cl
Datos primitivos
Ya hemos hablado de los tipos de datos que puede tener una variable. Aquí
puedes ver una tabla con los tipos de datos que existen, y el rango al que pueden usar:
16 www.iplacex.cl
Como puedes ver en el código
que se muestra aquí, existen dos
variables: la variable valor es de tipo
int. Eso significa, que almacenará un
dato de tipo número entero y que usará
un espacio de almacenamiento de 32
bits de memoria.
La variable descuenta es de tipo
boolean. Es decir, almacenará un dato
verdadero o falso, y utilizará un espacio
de 1 bit de memoria.
17 www.iplacex.cl
Operadores lógicos
18 www.iplacex.cl
El método público totalAPagar() contiene una variable entera total, a la cual se le
asignó el valor cero.
Un if pregunta si descuenta es verdadero. De ser así realizará una operación
matemática que está entre llaves.
Nota que al multiplicar la variable valor por 0.1, el resultado será con decimales
(recuerda que int sólo almacena números enteros), sin embargo, al agregar (int)
delante de la expresión, lo convertirá a un int (entero). A este tipo de conversión se le
llama: casting.
Comentado [DR5]: Esta imagen tiene un error, el
condicional está mal hecho, dice “if(descuenta=0)” y debería
decir “if(descuenta == 0)” el comparador lógico es ==, si va un
solo signo de igualdad, se está asignando un valor y no
comparando
19 www.iplacex.cl
Operadores de relación
Como hemos visto, los operadores de relación nos servirán para realizar
comparaciones entre distintos valores. Generalmente, los usaremos en los bloques de
código if. En conjunto son muy útiles para tomar decisiones que pueden alterar una
respuesta inteligente.
20 www.iplacex.cl
Otros operadores
21 www.iplacex.cl
PREGUNTA DE REFLEXIÓN. Si utilizamos el módulo para saber si un número es Comentado [JdRAV6]: Generar una pregunta en torno al
tema.
par o impar, ¿cuál debería ser la condición para saber si un número es múltiplo Comentado [DR7R6]: Listo!!
de 5?
22 www.iplacex.cl
Demuestra la idea
INSTRUCCIÓN
23 www.iplacex.cl
Es posible ver como se ejecuta el nuevo módulo agregado a la clase.
INSTRUCCIÓN
Luego ejecuta el método getSaldo() verá que el estado del objeto cambió.
24 www.iplacex.cl
El siguiente paso será agregar un nuevo método que permita girar dinero de la cuenta
de ahorro
INSTRUCCIÓN
25 www.iplacex.cl
Se puede ver en el ejercicio a continuación, como se ejecuta el nuevo módulo
agregado a nuestra clase.
INSTRUCCIÓN
Luego ejecute el método getSaldo() verá que el estado del objeto cambió.
26 www.iplacex.cl
El método girar (…) permite restar un monto al saldo, sin embargo, lo correcto
sería no girar más allá del valor que contiene el saldo.
Para que esto ocurra utilizaremos la estructura if con algún operador de relación (>,<,
>=, <= !=).
INSTRUCCIÓN
27 www.iplacex.cl
Veremos cómo se comporta el método girar después de haber agregado la estructura if
INSTRUCCIÓN
Compile el código
28 www.iplacex.cl
Si agregamos un mensaje al bloque else estaremos informando el problema de
no tener el saldo suficiente para efectuar el giro
INSTRUCCIÓN
Compile el código
29 www.iplacex.cl
Mejoremos la condición if preguntando: si monto es mayor que cero “y” monto es
menor o igual saldo
INSTRUCCIÓN
Compile el código
30 www.iplacex.cl
Comentado [JdRAV8]: Consignar al menos media página
CONCLUSIÓN de las conclusiones
Comentado [DR9R8]: Listo!!
31 www.iplacex.cl