Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Me 2
Me 2
UNIDAD Nº I
Clases e Interacción De Objetos
www.iplacex.cl
SEMANA 2
INTRODUCCIÓN
En esta sesión (capítulo, unidad) aprenderás conceptos asociados a la forma en que los
objetos se definen y cómo están compuestos y cómo estos pueden almacenar datos.
www.iplacex.cl2
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.
Abstracción en 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.
Operadores:
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.
www.iplacex.cl3
Desarrollo
Abstracción y modularización
Módulos
www.iplacex.cl4
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.
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.
www.iplacex.cl5
Abstracción en software
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.
www.iplacex.cl6
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 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.
www.iplacex.cl7
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 veces
que sea necesario durante la
ejecución del código.
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.
www.iplacex.cl8
probable es que no te haga sentido a ti ni al resto de los desarrolladores respecto al dato
que se va a almacenar ahí.
Operadores de relación.
Por ejemplo, precio>=0, es decir, existe una variable precio, la cual podría contener
cualquier valor, y lo comparamos directamente con un número. También podríamos
comparar entre dos variables, o entre dos números.
www.iplacex.cl9
Operadores lógicos
www.iplacex.cl10
Operadores Aritméticos
www.iplacex.cl11
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.
www.iplacex.cl12
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”.
www.iplacex.cl13
Modularización
Abstracción
En el desarrollo de software la abstracción nos permite crear las estructuras más simples
posibles, facilitando la mantención del software a futuro lo mismo que la integración con
otras aplicaciones.
www.iplacex.cl14
PREGUNTA DE REFLEXIÓN. Siempre interactúas con objetos todos los días y a
cada momento, ¿podrías abstraer los datos y el comportamiento de algún objeto
que conozcas en un contexto determinado?
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:
www.iplacex.cl15
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.
www.iplacex.cl16
Operadores lógicos
Recordemos que un operador lógico, permite generar enlaces entre preguntas teniendo
como resultado un verdadero (true) o un false (flase).
El primer ejemplo se leería: si total
es menor que 100000 y descuenta
es igual a verdadero. El segundo
ejemplo se leería: si no descuenta
(niega el valor boolean si es
verdadero el resultado será falso).
www.iplacex.cl17
El método público totalAPagar() contiene una variable entera total, a la cual se le asignó
el valor cero.
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.
Operadores de relación
www.iplacex.cl18
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.
Note que descuenta es un boolean por lo cual puede dar como resultado un verdadero
o falso. Un if ejecuta su bloque de código (entre llaves) solo si el resultado de toda la
expresión es verdadero, es decir, total debe ser mayor a 100000 y descuenta debe ser
verdadero.
Otros operadores
www.iplacex.cl19
Un operador % permite obtener el resto de una división de enteros, es decir, lo que sobra
de una división. Un operador + tiene dos usos: puede obtener la suma de dos números
o bien unir dos cadenas de textos
o valores.
Si la expresión de if da un
verdadero ejecuta el primer bloque de código entre llaves sino (else) cuando es falso
ejecuta el segundo bloque.
www.iplacex.cl20
PREGUNTA DE REFLEXIÓN. Si utilizamos el módulo para saber si un número es
par o impar, ¿cuál debería ser la condición para saber si un número es múltiplo de
5?
Demuestra la idea
INSTRUCCIÓN
www.iplacex.cl21
Es posible ver como se ejecuta el nuevo módulo agregado a la clase.
INSTRUCCIÓN
www.iplacex.cl22
A continuación instancia un objeto e invoca el método depositar (…) e ingresa un monto
entero (ejemplo:75000) como parámetro.
Luego ejecuta el método getSaldo() verá que el estado del objeto cambió.
El siguiente paso será agregar un nuevo método que permita girar dinero de la cuenta
de ahorro
INSTRUCCIÓN
www.iplacex.cl23
Abra el proyecto Cuenta-Ahorro realizado. Agregue el método personalizado girar(…) tal
como lo muestra la siguiente imagen.
INSTRUCCIÓN
www.iplacex.cl24
A continuación instancien un objeto e invoquen el método girar(…) e ingrese un monto
entero (ejemplo:75000) como parámetro.
Luego ejecute el método getSaldo() verá que el estado del objeto cambió.
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
www.iplacex.cl25
Agregue la condición if que permita ingresar un monto sin sobrepasar el saldo de la
cuenta de ahorro
INSTRUCCIÓN
www.iplacex.cl26
Compile el código
www.iplacex.cl27
De esta manera el usuario sabe que está ocurriendo al momento de ser favorable o no
el giro en dinero.
INSTRUCCIÓN
Compile el código
Mejoremos la condición if preguntando: si monto es mayor que cero “y” monto es menor
o igual saldo
INSTRUCCIÓN
www.iplacex.cl28
Modifique el código del if
Compile el código
CONCLUSIÓN
www.iplacex.cl29
En este módulo aprendimos conceptos muy importantes de la orientación a objetos como
son la abstracción y la modularización además de la abstracción, estos conceptos te
permitirán entender de mejor forma cómo se crean y definen los objetos.
www.iplacex.cl30