Sei sulla pagina 1di 31

PROGRAMACIÓN ORIENTADA A OBJETOS

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.

Adicionalmente aprenderás de modularización, un concepto que te permitirá construir


clases que estén mejor definidas, además aprenderás lo que son los operadores
lógicos y las estructuras condicionales los cuales servirán para que tus aplicaciones
puedan realizar procesos de tomas de decisiones. Conoceremos también los
conceptos de operadores lógicos, relacionales y aritméticos, para que tus aplicaciones
ya puedan comenzar a funcionar comparando y procesando datos.

Finalmente llevaremos todo lo aprendido a ejemplos guiados y a prácticas propuestas


las cuales vendrán acompañadas de la solución de cada uno de los ejercicios.

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.

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:

Operadores de relación.

Un operador de relación es el que permite comparar dos valores. No sólo se


puede realizar esta comparación entre valores de tipo numérico, sino también con
variables ya declaradas.

Operadores lógicos: permite analizar una condición y determinar si esta se cumple o


no, para indicarlo, el resultado de la evaluación siempre devuelve un valor de tipo
verdadero o falso (este tipo de datos se conoce como boolean.)

Operadores Aritméticos:Los operadores aritméticos permiten realizar operaciones


con números y devolver un resultado.

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

Al hablar de abstracción en Programación orientada a objetos, 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.

Los sistemas informáticos exponen


una serie de funcionalidades para los
usuarios. Sin embargo, estas
funcionalidades, fueron construidas como
distintas piezas, que luego fueron unidas
para formas un sistema completo. De ser
necesario, se podrían ir agregando nuevas
piezas a un sistema ya terminado, o quitando
algunas otras sin dañar la funcionalidad del
resto, ya que cada pieza puede cumplir su propia función.

Módulos

Cada módulo de un sistema


funciona como una pieza independiente,
que cumple su función específica, y que
se encuentra conectado a los demás.
Para un programador, es más cómodo y
ordenado separar un sistema en
módulos, ya que cada una de las piezas
es construida aparte. De esta forma, cada módulo puede ser testeado en forma

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.

Un operador de relación es el que permite comparar dos valores. No sólo se


puede realizar esta comparación entre valores de tipo numérico, sino también con
variables ya declaradas.
Por ejemplo, precio>=0, es decir, existe un 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.

9 www.iplacex.cl
Operadores lógicos

Hemos usado el signo = al cambiar el


valor de una variable en el método set, es
decir cuando “asignamos” un valor a una
variable. Pero existen muchos otros
símbolos en el lenguaje que podemos
utilizar, un grupo de estos símbolos se
conocen como operadores lógicos.
Un operador lógico permite analizar
una condición y determinar si esta se
cumple o no, para indicarlo, el resultado de
la evaluación siempre devuelve un valor de
tipo verdadero o falso (este tipo de datos se
conoce como boolean.) Por ejemplo, si quiero que se cumpla una condición de que un
precio sea mayor que 1000, pero también que sea menor que 250.000. Podría evaluar
las dos condiciones agregando un “y” entre ellas. La evaluación de estas expresiones
ha dado paso a una tabla de valores que se muestra a continuación.

10 www.iplacex.cl
Operadores Aritméticos

Los operadores aritméticos permiten realizar operaciones con números y devolver un


resultado.

El listado de operadores es el siguiente:

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!

tomas decisiones, ¿podrías dar un ejemplo usando estos operadores de una


decisión que tomaste hoy en la mañana en algún ámbito de tu vida?

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

Cada método es como una pequeña


pieza (bloque o módulo) que forma parte de una
clase. La modularización está relacionada con
los detalles que conlleva ejecutar una tarea.
Una clase puede tener módulos de código, sin
embargo, cuando la complejidad y el código
crecen, existe la solución de crear nuevas
clases y a su vez, éstas subdividirlas en
métodos.

14 www.iplacex.cl
Abstracción

Como hemos comentado la abstracción en software consiste en seleccionar sólo


los atributos y los comportamientos que nos interesan en función del contexto que
estamos enfrentando.
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.

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?

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

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).

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.

La estructura if pregunta si total es mayor a 100000 y descuenta es igual a


verdadero
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.

20 www.iplacex.cl
Otros operadores

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.
El % modulo obtiene lo que sobra
de una división de enteros.
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.
System.out.println(); muestra el valor de la variable resultado concatenado (+) al
mensaje entre comillas “es par” o bien “es impar”

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

Programa una clase Cuenta de Ahorro la cual tendrá un atributo saldo.

Si se quiere hacer un depósito se debe agregar un “método personalizado” que


reciba un monto por parámetro y lo agregue al saldo.

23 www.iplacex.cl
Es posible ver como se ejecuta el nuevo módulo agregado a la clase.

INSTRUCCIÓN

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ó.

24 www.iplacex.cl
El siguiente paso será agregar un nuevo método que permita girar dinero de la cuenta
de ahorro

INSTRUCCIÓN

Abra el proyecto Cuenta-Ahorro realizado. Agregue el método personalizado girar(…)


tal como lo muestra la siguiente imagen.

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

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ó.

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

Agregue la condición if que permita ingresar un monto sin sobrepasar el saldo de


la cuenta de ahorro

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

Instancie un objeto y agregue un depósito de 100000

Ahora gire 40000 haciendo clic en el método que corresponde

Ejecute el método getSaldo y vea el estado del objeto

Ahora intente girar 90000 y revise nuevamente invocando el método getSaldo

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

De esta manera el usuario sabe que está ocurriendo al momento de ser


favorable o no el giro en dinero.

INSTRUCCIÓN

Agregue el bloque del código else

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

Modifique el código del if

Compile el código

30 www.iplacex.cl
Comentado [JdRAV8]: Consignar al menos media página
CONCLUSIÓN de las conclusiones
Comentado [DR9R8]: Listo!!

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.

Adicionalmente, aprendiste respecto a los tipos de datos y la forma de declarar


variables para almacenar datos que sean atingentes al problema que estás analizando.

Finalmente aprendiste respecto a los operadores de relación, aritméticos y lógicos,


cada uno de estos tipos permiten realizar operaciones ya sean matemáticas o de
comparación de valores. Estos operadores permitirán más adelante procesar datos y
obtener resultados de este análisis es decir información.

31 www.iplacex.cl

Potrebbero piacerti anche