Está en la página 1de 30

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.

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:

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

www.iplacex.cl3
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

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.

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.

www.iplacex.cl5
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.

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.

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

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

PREGUNTA DE REFLEXIÓN ¿Has advertido que, en tu vida diaria, convives


constantemente con datos? Enumera algunos de los que utilizas.

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

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.

www.iplacex.cl10
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 resultado


de dos expresiones con valores verdadero o falso. Todos los días 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?

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

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.

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.

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.

La variable descuenta es de tipo


boolean. Es decir, almacenará un dato
verdadero o falso, y utilizará un espacio
de 1 bit 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.

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.

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.

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.

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.

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”

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

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.

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.

Se puede ver en el ejercicio a continuación, como se ejecuta el nuevo módulo agregado


a nuestra clase.

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

Veremos cómo se comporta el método girar después de haber agregado la estructura if

INSTRUCCIÓN

www.iplacex.cl26
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

Si agregamos un mensaje al bloque else estaremos informando el problema de no tener


el saldo suficiente para efectuar el giro

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

Agregue el bloque del código else

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.

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.

www.iplacex.cl30

También podría gustarte