6 - Guía POO
6 - Guía POO
6 - Guía POO
PROGRAMACIÓN
ORIENTADA A
OBJETOS
PARADIGMA ORIENTADO A OBJETOS
Objetivos de la Guía
En esta guía aprenderemos a:
1
La Programación Orientada a Objetos (POO) es un paradigma de programación, es decir, un
modelo o un estilo de programación que se basa en el concepto de clases y objetos. Este tipo de
programación se utiliza para estructurar un programa de software en piezas simples y reutilizables
de código (clases) para crear instancias individuales de objetos.
PERO
ENTONCES, ¿QUÉ ES UN OBJETO?
Un objeto en la programación es la forma que tenemos de llevar a código, la representación más
fidedigna posible de un objeto de la vida real. Un objeto tendrá características (atributos) que son
comunes a todos ellos, pero pueden variar entre sí.
Volvamos al ejemplo del fichero o cajonera. El objeto es la cajonera, cada cajón representará un
atributo. Una vez creado el molde para crear este objeto cajonera, cada uno de sus cajones
alojará un tipo de dato que será el mismo tipo pero la información que se aloje dentro será
diferente. En el primer cajón debemos guardar remeras, pero estas pueden ser rojas en una
cajonera o verdes en otra.
2
Pensemos también a las personas como objetos. Tenemos ciertas características que son
uniformes a todos. Todos tenemos un nombre, un número de identificación, una fecha de
nacimiento. Estas características variarían de una persona a otra, pero al compartir esta
información podemos elaborar código que represente y nos permita identificar a una o varias
personas.
¿CÓMO CREAMOS OBJETOS?
Para llevar cierto orden, por cada uno de los ejercicios de esta guía crearemos un nuevo
proyecto en NetBeans.
3
Luego, necesitamos crear una clase. Una clase es un molde para crear múltiples objetos que
encapsula datos y comportamiento. Una clase es una combinación específica de atributos y
métodos y puede considerarse un tipo de dato de cualquier tipo no primitivo.
4
5
Nombre
de la
Clase (de
qué tipo
Así, una clase es una especie de plantilla o prototipo de objetos: define los atributos que
componen ese tipo de objetos y los métodos que pueden emplearse para trabajar con esos
objetos. En su forma más simple, una clase se define por la palabra reservada class seguida del
nombre de la clase. El nombre de la clase debe empezar por mayúscula.
Si el nombre es compuesto, entonces cada palabra debe empezar por mayúscula. La definición de
la clase se pone entre las llaves de apertura y cierre.
// atributos
// constructores
// metodos propios
EJERCICIO PERSONA
Es tu turno, crea tu propio proyecto con la clase Persona.
PESTADO Y COMPORTAMIENTOP
En términos más generales, un objeto es una abstracción conceptual del mundo real que se
puede traducir a un lenguaje de programación orientado a objetos. Los objetos del mundo real
comparten dos características: Todos poseen estado y comportamiento. Por ejemplo, el perro
tiene estado (color, nombre, raza, edad) y el comportamiento (ladrar, caminar, comer, acostarse,
mover la cola). Por lo tanto, un estado permite informar cuáles son las características del objeto y
lo que este representa, y el comportamiento, consiste en decir lo que sabe hacer.
El estado de un objeto es una lista de variables conocidas como sus atributos, cuyos valores
representan el estado que caracteriza al objeto.
El estado o información de un objeto se almacena en atributos. Los atributos pueden ser de tipos
primitivos de Java (descriptos en la guía Intro Java) o del tipo de otros objetos. La declaración de
un atributo de un objeto tiene la siguiente forma:
• <nombre>: puede ser cualquier identificador válido y denomina el atributo que está siendo
declarado.
Además de definir los atributos de un objeto, es necesario definir los métodos que determinan su
comportamiento. Toda clase debe definir un método especial denominado constructor para
instanciar los objetos de la clase. Este método tiene el mismo nombre de la clase. La declaración
básica toma la siguiente forma:
<sentencia>*
8
• <nombre de clase>: El nombre del constructor debe ser siempre el mismo que el de la
clase.
• <modificador>: Actualmente, los únicos modificadores válidos para los constructores son
public, protected y private.
• <argumentos>: es una lista de parámetros que tiene la misma función que en los métodos.
El método constructor se ejecuta cada vez que se instancia un objeto de la clase. Este método se
utiliza para inicializar los atributos del objeto que se instancia.
Para diferenciar entre los atributos del objeto y los identificadores de los parámetros del método
constructor, se utiliza la palabra this. De esta forma, los parámetros del método pueden tener el
mismo nombre que los atributos de la clase.
Una vez que se ha declarado una clase, se pueden crear objetos a partir de ella. A la creación de
un objeto se le denomina instanciación. Por esta razón que se dice que un objeto es una instancia
de una clase y el término instancia y objeto se utilizan indistintamente. Para crear objetos, basta
con declarar una variable de alguno de los tipos de las clases definidas.
NombreClase nombreObjeto;
Para crear el objeto y asignar un espacio de memoria es necesario realizar la instanciación con el
operador new. El operador new instancia el objeto y reserva espacio en memoria para los
atributos y devuelve una referencia que se guarda en la variable.
9
Al instanciar objetos desde el main u otra clase, verás que te
aparece una señal de alerta en el contador de líneas. En ella te
pedirá que importes la clase que deseas utilizar para acceder a
su información.
Instanciamos dos
Dentro de la clase, para agregar automáticamente los constructores podemos presionar el botón
derecho > Insert Code > Constructor y podemos no seleccionar ningún atributo o seleccionar
todos los atributos.
PABSTRACCIÓN Y ENCAPSULAMIENTOP
La abstracción es la habilidad de ignorar los detalles de las partes para enfocar la atención en un
nivel más alto de un problema. El encapsulamiento sucede cuando algo es envuelto en una capa
protectora. Cuando el encapsulamiento se aplica a los objetos, significa que los datos del objeto
están protegidos, “ocultos” dentro del objeto. Con los datos ocultos, ¿cómo puede el resto del
programa acceder a ellos? (El acceso a los datos de un objeto se refiere a leerlos o modificarlos.)
El resto del programa no puede acceder de manera directa a los datos de un objeto; lo tiene que
hacer con ayuda de los métodos del objeto. Al hecho de proteger los datos o atributos con los
métodos se denomina encapsulamiento.
ABSTRACCIÓN
La abstracción es la propiedad que considera los aspectos más significativos o notables de un
problema y expresa una solución en esos términos. La abstracción posee diversos grados o
niveles de abstracción, los cuales ayudan a estructurar la complejidad intrínseca que poseen los
sistemas del mundo real. La abstracción encarada desde el punto de vista de la programación
orientada a objetos es el mecanismo por el cual se proveen los límites conceptuales de los
objetos y se expresan sus características esenciales, dejando de lado sus características no
esenciales. Si un objeto tiene más características de las necesarias los mismos resultan difíciles
de usar, modificar, construir y comprender. En el análisis hay que concentrarse en ¿Qué hace? y
no en ¿Cómo lo hace?
ENCAPSULAMIENTO
La encapsulación o encapsulamiento significa reunir en una cierta estructura a todos los
elementos que a un cierto nivel de abstracción se pueden considerar pertenecientes a una misma
entidad, y es el proceso de agrupamiento de datos y operaciones relacionadas bajo una misma
unidad de programación, lo que permite aumentar la cohesión de los componentes del sistema.
El encapsulamiento oculta lo que hace un objeto de lo que hacen otros objetos y del mundo
exterior por lo que se denomina también ocultación de datos. Un objeto tiene que presentar “una
cara” al mundo exterior de modo que se puedan iniciar sus operaciones.
11
Los métodos operan sobre el estado interno de un objeto y sirven como el mecanismo primario de
comunicación entre objetos. Ocultar el estado interno y hacer que toda interacción sea a través de
los métodos del objeto es un mecanismo conocido como encapsulación de datos.
MODIFICADORES DE ACCESO
Para lograr el uso correcto del encapsulamiento vamos a utilizar los modificadores de acceso,
estos, van a dejarnos elegir como se accede a los datos y a través de que se accede a dichos
datos. Todas las clases poseen diferentes niveles de acceso en función del modificador de acceso
(visibilidad). A continuación, se detallan los niveles de acceso con sus símbolos correspondientes:
• Public: Este modificador permite a acceder a los elementos desde cualquier clase,
independientemente de que esta pertenezca o no al paquete en que se encuentra el
elemento.
• Private: Es el modificador más restrictivo y especifica que los elementos que lo utilizan sólo
pueden ser accedidos desde la clase en la que se encuentran. Este modificador sólo
puede utilizarse sobre los atributos de una clase y sobre interfaces y clases internas, no
sobre clases o interfaces de primer nivel, dado que esto no tendría sentido. Es importante
destacar también que el modificador private convierte los elementos en privados para
otras clases, no para otras instancias de la clase. Es decir, un objeto de una determinada
clase puede acceder a los atributos privados de otro objeto de la misma clase.
• Protected: Este modificador indica que los elementos sólo pueden ser accedidos desde su
mismo paquete y desde cualquier clase que extienda la clase en que se encuentra,
independientemente de si esta se encuentra en el mismo paquete o no. Este modificador,
como private, no tiene sentido a nivel de clases o interfaces no internas.
mismo PaqueteSI NO SI SI
mismo PaqueteSI NO SI SI
del PaqueteSI NO NO NO
12
MÉTODOS PROPIOS
Los métodos son funciones que determinan el comportamiento de los objetos. Un objeto se
comporta de una u otra forma dependiendo de los métodos de la clase a la que pertenece. Todos
los objetos de una misma clase tienen los mismos métodos y el mismo comportamiento. Para
definir los métodos, el lenguaje de programación Java toma la siguiente forma básica:
{ <sentencias>*
return valorRetorno;
• <tipo de retorno>: el tipo de retorno indica el tipo de valor devuelto por el método. Si el
método no devuelve un valor, debe ser declarado void. La tecnología Java es rigurosa
acerca de los valores de retorno. Si el tipo de retorno en la declaración del método es un int,
por ejemplo, el método debe devolver un valor int desde todos los posibles caminos de
retorno (y puede ser invocado solamente en contextos que esperan un int para ser
devuelto). Se usa la sentencia return dentro de un método para devolver un valor.
• <nombre>: puede ser cualquier identificador válido, con algunas restricciones basadas en
los nombres que ya están en uso.
• <argumento>: permite que los valores de los argumentos sean pasados hacia el método.
Los elementos de la lista están separados por comas y cada elemento consiste en un tipo
y un identificador.
Existen tres tipos de métodos: métodos de consulta, métodos modificadores y operaciones. Los
métodos de consulta sirven para extraer información de los objetos, los métodos modificadores
sirven para modificar el valor de los atributos del objeto y las operaciones definen el
comportamiento de un objeto.
GETTER & SETTER
Para acceder a los atributos de un objeto se definen los métodos get y set. Los métodos get se
utilizan para consultar el estado de un objeto y los métodos set para modificar su estado. Un
método get se declara public y a continuación se indica el tipo de dato que devuelve. Es un
método de consulta. La lista de parámetros de un método get queda vacía. En el cuerpo del
método se utiliza return para devolver el valor correspondiente al atributo que se quiere devolver,
y al cual se hace referencia como this.nombreAtributo.
Por otra parte, un método set se declara public y devuelve void. La lista de parámetros de un
método set incluye el tipo y el valor a modificar. Es un método modificador. El cuerpo de un
método set asigna al atributo del objeto el parámetro de la declaración.
13
• En la línea de código del programa donde se invoca al método se calculan los valores de
los argumentos.
• Se ejecuta el bloque código del método hasta que se alcanza return o se llega al final del
bloque.
14
Se dice que son atributos de clase si se usa la palabra clave static: en ese caso la variable es
única para todas las instancias (objetos) de la clase (ocupa un único lugar en memoria), es decir
que, si se poseen múltiples instancias de una clase, cada una de ellas no tendrán una copia propia
de este atributo, si no que todas estas instancias compartirán una misma copia del atributo. A
veces a las variables de clase se les llama variables estáticas. Si no se usa static, el sistema crea
un lugar nuevo para esa variable con cada instancia (la variable es diferente para cada objeto).
En el caso de una constante no tiene sentido crear un nuevo lugar de memoria por cada objeto de
una clase que se cree. Por ello es adecuado el uso de la palabra clave static. Cuando usamos
”static final” se dice que creamos una constante de clase, un atributo común a todos los objetos
de esa clase.
PATRIBUTOS FINALESP
En este contexto indica que una variable es de tipo constante: no admitirá cambios después de su
declaración y asignación de valor. La palabra reservada final determina que un atributo no puede
ser sobrescrito o redefinido, es decir, no funcionará como una variable “tradicional”, sino como
una constante. Toda constante declarada con final ha de ser inicializada en el mismo momento de
declararla. El modificador final también se usa como palabra clave en otro contexto: una clase
final es aquella que no puede tener clases que la hereden. Lo veremos más adelante cuando
hablemos sobre herencia.
15
Cuando se declaran constantes es muy frecuente que los programadores usen letras mayúsculas
(como práctica habitual que permite una mayor claridad en el código), aunque no es obligatorio.
PCLASE SERVICIOP
La clase servicio (service) o control, va a ser una clase auxiliar que nos va a ayudar con el manejo
de las clases y los objetos de esas clases, pero para poder explicar esto, primero vamos a tener
que ver los patrones generales de software GRASP. Aunque se considera que más que patrones
propiamente dichos, son una serie de "buenas prácticas" de aplicación recomendable en el diseño
de software.
PATRONES GRASP
Un proceso de desarrollo sirve para normalizar quien hace que cosa en
cada momento y como debe realizarse esta cosa.
PATRON EXPERTO
Dentro de los patrones GRASP, vamos a utilizar el patrón experto. El GRASP de experto en
información es el principio básico de asignación de responsabilidades. Nos indica, por ejemplo,
que la responsabilidad de la creación de un objeto o la implementación de un método debe
recaer sobre la clase que conoce toda la información necesaria para crearlo. De este modo
obtendremos un diseño con mayor cohesión y así la información se mantiene encapsulada
(disminución del acoplamiento).
Problema
Solución
Beneficios
Se mantiene el encapsulamiento, los objetos utilizan su propia información para llevar a cabo sus
tareas. Se distribuye el comportamiento entre las clases que contienen la información requerida.
Son más fáciles de entender y mantener.
CLASE SERVICIO
Esta clase del patrón experto va a ser la clase servicio. Es una clase común y corriente pero que
se va a encargar de crear los objetos y va a tener todos los métodos necesarios para la utilización
de ese objeto. Supongamos que necesitamos un método que le sume un valor x a un atributo del
objeto, ese método estará en la clase control.
16
Siempre se crea una clase control, por cada clase que tengamos, si tenemos las clases Persona y
Sueldo, crearemos una clase control para Persona y otra para Sueldo. La idea es que una clase
servicio, se encargue de solo una clase.
Trabaja con
Persona PersonaService
Nombre
Llama a
Main
Llamado crearPersona()
Llamado mostrarPersona()
Como podemos ver en el diagrama, PersonaService llama y trabaja con la clase Persona y crea
instancias de ese objeto a través de un método, también, tiene un método para mostrar la
persona.
Pero, el encargado de llamar a esos métodos de la clase PersonaService va a ser la clase Main,
que vendría a ser el usuario llamando a las cosas que quiere realizar con la Persona.
Para trabajar con clase de servicio o control debemos crear un nuevo paquete en nuestro
proyecto que se llame Servicios.
METODOS CLASE SERVICIO
Como pudimos ver en el diagrama anterior la clase PersonaService, tenía sus propios métodos,
que iban a trabajar con la clase Persona, pero no que no se encuentran en la clase Persona, sino
en PersonaService. Es importante que a la hora de trabajar con métodos dentro de la clase
servicio o métodos externos, tengamos en cuenta las siguientes cosas:
17
Parámetros y argumentos
Los parámetros de un método definen la cantidad y el tipo de dato de los valores que recibe un
método para su ejecución. Los argumentos son los valores que se pasan a un método durante su
invocación. El método recibe los argumentos correspondientes a los parámetros con los que ha
sido declarado. Un método puede tener tantos parámetros como sea necesario. La lista de
parámetros de la cabecera de un método se define con la siguiente sintaxis:
Paso de parámetros
Cuando se invoca un método se hace una copia de los valores de los argumentos en los
parámetros. Esto quiere decir que, si el método modifica el valor de un parámetro, nunca se
modifica el valor original del argumento.
Cuando se pasa una referencia a un objeto se crea un nuevo alias sobre el objeto, de manera que
esta nueva referencia utiliza el mismo espacio de memoria del objeto original y esto permite
acceder al objeto original.
El valor de retorno
Un método puede devolver un valor. Los métodos que no devuelven un valor se declaran void,
mientras que los métodos que devuelven un valor indican el tipo que devuelven: int, double, char,
String o un tipo de objeto.
Sólo utiliza métodos void para mostrar información. Si realizarás
cambios en los atributos del objeto, envía ese objeto por
parámetro y retornalo con los cambios realizados
Sobrecarga de métodos
La sobrecarga de métodos es útil para que el mismo método opere con parámetros de distinto
tipo o que un mismo método reciba una lista de parámetros diferente. Esto quiere decir que
puede haber dos métodos con el mismo nombre que realicen dos funciones distintas. La
diferencia entre los métodos sobrecargados está en su declaración, y más específicamente, en la
cantidad y tipos de datos que reciben.
18
En el Main:
EJERCICIO VOID
Crea un método void que reciba un objeto tipo persona como parámetro y utilice el get para
mostrar sus atributos. Llama ese método desde el main.
PEN RESUMENP
Antes de POO, la técnica estándar de programación era la programación procedural. Se denomina
programación procedural porque en ella se destacan los procedimientos o tareas que resuelven
un problema. Se piensa primero en lo que se quiere hacer: los procedimientos.
En contraste, el paradigma POO invita a pensar en lo que se desea que represente el programa.
Normalmente se responde esta invitación identificando algunas cosas en el mundo que se desea
que el programa modele.
Estas cosas podrían ser entidades físicas o conceptuales, por ejemplo, un libro. Una vez
identificadas las cosas que se quiere modelar, se identifican sus propiedades/atributos básicos.
Estos se pueden agrupar todos juntos en una estructura coherente llamada objeto que creamos a
través de las clases.
19
Pueden encontrar un ejemplo para descargar de POO en el GIT
de tu Curso.
Entre las clases de utilidad de Java más utilizadas y conocidas están las siguientes: Arrays, String,
Integer, Math, Date, Calendar y GregorianCalendar. En la guía anterior vimos solo las clases Math y
String. Ahora vamos a ver el resto de las clases.
CLASE ARRAYS
La clase Arrays es una clase de utilidad que posee una gran cantidad de métodos para manipular
arreglos.
Método Descripción
Arrays.fill(arreglo, variable) Este método lo que hace es inicializar todo el arreglo con
la variable o valor que pasamos como argumento. Este
Arrays.fill(arreglo, int desde, método se puede usar con cualquier tipo de dato y le
int hasta, variable) podemos decir desde y hasta que índice queremos que
llene con ese valor.
Arrays.sort(arreglo) Este método sirve para ordenar un arreglo de manera
ascendente. A este método también le podemos decir
Arrays.sort(arreglo, int desde y hasta que índice queremos que ordene.
desde, int hasta)
20
CLASE INTEGER
La clase Integer permite convertir un tipo primitivo de dato int a objeto Integer. La clase Integer
pertenece al paquete java.lang del API de Java y hereda de la clase java.lang.Number.
Método Descripción
CLASE DATE
La clase Date modela objetos o variables de tipo fecha. La clase Date representa un instante de
tiempo específico con una precisión en milisegundos y permite el uso del formato Universal
Coordinated Time (UTC). Por otro lado, muchas computadoras están definidas en términos de
Greenwich Mean Time (GMT) que es equivalente a Universal Time (UT). GMT es el nombre
estándar y UT es el nombre científico del estándar. La diferencia entre UT y UTC es que UTC está
basado en un reloj atómico y UT está basado en un reloj astronómico.
Las fechas en Java, comienzan en el valor standar based time llamado “epoch” que hace
referencia al 1 de Enero de 1970, 0 horas 0 minutos 0 segundos GMT.
La clase Date posee métodos que permiten la manipulación de fechas. La clase Date pertenece al
paquete java.util del API de Java.
Método Descripción.
Date(int dia, int mes, int año) Constructor que inicializa la fecha sumándole 1900 al año.
21
before(Date fecha2) Retorna verdadero si la fecha esta antes de la fecha
del parámetro
22
PEJERCICIOS DE APRENDIZAJEP
Antes de comenzar con esta guía, les damos algunas recomendaciones:
Este módulo es uno de los más divertidos ya que vamos a comenzar a modelar los objetos del
mundo real con el lenguaje de programación Java. Es importante tener en cuenta que entender la
programación orientada a objetos lleva tiempo y sobre todo PRÁCTICA, así que, a no
desesperarse, con cada ejercicio vamos a ir entendiendo un poco más cómo aplicar este
paradigma.
VIDEOS: Te sugerimos ver los videos relacionados con este tema, antes de empezar los
ejercicios, los podrás encontrar en tu aula virtual o en nuestro canal de YouTube.
1. Crear una clase llamada Libro que contenga los siguientes atributos: ISBN, Título, Autor,
Número de páginas, y un constructor con todos los atributos pasados por parámetro y un
constructor vacío. Crear un método para cargar un libro pidiendo los datos al usuario y
luego informar mediante otro método el número de ISBN, el título, el autor del libro y el
numero de páginas.
2. Declarar una clase llamada Circunferencia que tenga como atributo privado el radio de
tipo real. A continuación, se deben crear los siguientes métodos:
3. Crear una clase llamada Operacion que tenga como atributos privados numero1 y
numero2. A continuación, se deben crear los siguientes métodos:
d) Método para crearOperacion(): que le pide al usuario los dos números y los guarda en
los atributos del objeto.
g) Método multiplicar(): primero valida que no se haga una multiplicación por cero, si fuera
a multiplicar por cero, el método devuelve 0 y se le informa al usuario el error. Si no,
se hace la multiplicación y se devuelve el resultado al main
h) Método dividir(): primero valida que no se haga una división por cero, si fuera a pasar
una división por cero, el método devuelve 0 y se le informa al usuario el error se le
informa al usuario. Si no, se hace la división y se devuelve el resultado al main.
23
4. Crear una clase Rectángulo que modele rectángulos por medio de un atributo privado base
y un atributo privado altura. La clase incluirá un método para crear el rectángulo con los
datos del Rectángulo dados por el usuario. También incluirá un método para calcular la
superficie del rectángulo y un método para calcular el perímetro del rectángulo. Por último,
tendremos un método que dibujará el rectángulo mediante asteriscos usando la base y la
altura. Se deberán además definir los métodos getters, setters y constructores
correspondientes.
5. Realizar una clase llamada Cuenta (bancaria) que debe tener como mínimo los atributos:
numeroCuenta (entero), el DNI del cliente (entero largo) y el saldo actual (entero). Las
operaciones asociadas a dicha clase son:
a) Constructor por defecto y constructor con DNI, saldo, número de cuenta e interés.
6. Programa Nespresso. Desarrolle una clase Cafetera con los atributos capacidadMaxima (la
cantidad máxima de café que puede contener la cafetera) y cantidadActual (la cantidad actual
de café que hay en la cafetera). Implemente, al menos, los siguientes métodos:
• Método llenarCafetera(): hace que la cantidad actual sea igual a la capacidad máxima.
24
7. Realizar una clase llamada Persona que tenga los siguientes atributos: nombre, edad, sexo
('H' hombre, 'M' mujer, 'O' otro), peso y altura. Si el alumno desea añadir algún otro
atributo, puede hacerlo. Los métodos que se implementarán son:
• Metodo crearPersona(): el método crear persona, le pide los valores de los atributos al
usuario y después se le asignan a sus respectivos atributos para llenar el objeto
Persona. Además, comprueba que el sexo introducido sea correcto, es decir, H, M o O.
Si no es correcto se deberá mostrar un mensaje
Crear 4 objetos de tipo Persona con distintos valores, a continuación, llamaremos todos
los métodos para cada objeto, deberá comprobar si la persona está en su peso ideal, tiene
sobrepeso o está por debajo de su peso ideal e indicar para cada objeto si la persona es
mayor de edad.
25
CLASES DE UTILIDAD EN JAVA
Los métodos disponibles para las clases de utilidad Integer, Arrays y Date están en esta guía.
Recordar que la clase String y Math están explicadas en la guía anterior de Intro
Java.
VIDEOS: Te sugerimos ver los videos relacionados con este tema, antes de empezar los
ejercicios, los podrás encontrar en tu aula virtual o en nuestro canal de YouTube.
8. Realizar una clase llamada Cadena que tenga como atributos una frase (de tipo de String) y
su longitud. En el main se creará el objeto y se le pedirá al usuario que ingrese una frase que
puede ser una palabra o varias palabras separadas por un espacio en blanco y a través de los
métodos set, se guardará la frase y la longitud de manera automática según la longitud de la
frase ingresada. Deberá además implementar los siguientes métodos:
b) Método invertirFrase(), deberá invertir la frase ingresada y mostrarla por pantalla. Por
ejemplo: Entrada: "casa blanca", Salida: "acnalb asac".
f) Método unirFrases(String frase), deberá unir la frase contenida en la clase Cadena con
una nueva frase ingresada por el usuario y mostrar la frase resultante.
g) Método reemplazar(String letra), deberá reemplazar todas las letras “a” que se
encuentren en la frase, por algún otro carácter seleccionado por el usuario y mostrar la
frase resultante.
h) Método contiene(String letra), deberá comprobar si la frase contiene una letra que
ingresa el usuario y devuelve verdadero si la contiene y falso si no.
9. Realizar una clase llamada Matemática que tenga como atributos dos números reales con
los cuales se realizarán diferentes operaciones matemáticas. La clase deber tener un
constructor vacío, parametrizado y get y set. En el main se creará el objeto y se usará el
Math.random para generar los dos números y se guardaran en el objeto con su
respectivos set. Deberá además implementar los siguientes métodos:
a) Método devolverMayor() para retornar cuál de los dos atributos tiene el mayor valor
b) Método calcularPotencia() para calcular la potencia del mayor valor de la clase elevado
al menor número. Previamente se deben redondear ambos valores.
c) Método calculaRaiz(), para calcular la raíz cuadrada del menor de los dos valores.
Antes de calcular la raíz cuadrada se debe obtener el valor absoluto del número.
26
Clase Arrays
10. Realizar un programa en Java donde se creen dos arreglos: el primero será un arreglo A de
50 números reales, y el segundo B, un arreglo de 20 números, también reales. El
programa deberá inicializar el arreglo A con números aleatorios y mostrarlo por pantalla.
Luego, el arreglo A se debe ordenar de menor a mayor y copiar los primeros 10 números
ordenados al arreglo B de 20 elementos, y rellenar los 10 últimos elementos con el valor
0.5. Mostrar los dos arreglos resultantes: el ordenado de 50 elementos y el combinado de
20.
Clase Date
11. Pongamos de lado un momento el concepto de POO, ahora vamos a trabajar solo con la
clase Date. En este ejercicio deberemos instanciar en el main, una fecha usando la clase
Date, para esto vamos a tener que crear 3 variables, dia, mes y anio que se le pedirán al
usuario para poner el constructor del objeto Date. Una vez creada la fecha de tipo Date,
deberemos mostrarla y mostrar cuantos años hay entre esa fecha y la fecha actual, que se
puede conseguir instanciando un objeto Date con constructor vacío.
12. Implemente la clase Persona. Una persona tiene un nombre y una fecha de nacimiento
(Tipo Date), constructor vacío, constructor parametrizado, get y set. Y los siguientes
métodos:
• Agregar a la clase el método menorQue(int edad) que recibe como parámetro otra edad
y retorna true en caso de que el receptor tenga menor edad que la persona que se
recibe como parámetro, o false en caso contrario.
27
PEJERCICIOS DE APRENDIZAJE EXTRAP
Estos van a ser ejercicios para reforzar los conocimientos previamente vistos. Estos pueden
realizarse cuando hayas terminado la guía y tengas una buena base sobre lo que venimos
trabajando. Además, si ya terminaste la guía y te queda tiempo libre en las mesas, podes
continuar con estos ejercicios extra, recordando siempre que no es necesario que los termines
para continuar con el tema siguiente. Por último, recordá que la prioridad es ayudar a los
compañeros de la mesa y que cuando tengas que ayudar, lo más valioso es que puedas explicar
el ejercicio con la intención de que tu compañero lo comprenda, y no sólo mostrarlo. ¡Muchas
gracias!
́
1. Desarrollar una clase Cancion con los siguientes atributos: titulo y autor. Se deberádefinir
además dos constructores: uno vacío que inicializa el titulo y el autor a cadenas vacías y
otro que reciba como parámetros el titulo y el autor de la canción. Se deberán además
definir los métodos getters y setters correspondientes.
2. Definir una clase llamada Puntos que contendrá las coordenadas de dos puntos, sus
atributos serán, x1, y1, x2, y2, siendo cada x e y un punto. Generar un objeto puntos
usando un método crearPuntos() que le pide al usuario los dos números y los ingresa en
los atributos del objeto. Después, a través de otro método calcular y devolver la distancia
que existe entre los dos puntos que existen en la clase Puntos. Para conocer como
calcular la distancia entre dos puntos consulte el siguiente link:
http://www.matematicatuya.com/GRAFICAecuaciones/S1a.html
3. Vamos a realizar una clase llamada Raices, donde representaremos los valores de una
ecuación de 2o grado. Tendremos los 3 coeficientes como atributos, llamémosles a, b y c.
Hay que insertar estos 3 valores para construir el objeto a través de un método
constructor. Luego, las operaciones que se podrán realizar son las siguientes:
• Método tieneRaiz(): devuelve un booleano indicando si tiene una única solución, para
que esto ocurra, el discriminante debe ser igual que 0.
́
• Método obtenerRaices(): llama a tieneRaíces() y si devolviótrue, imprime las 2 posibles
soluciones.
́
• Método obtenerRaiz(): llama a tieneRaiz() y si devolviótrue imprime una única raíz. Es en
el caso en que se tenga una única solución posible.
28
4. Dígito Verificador. Crear una clase NIF que se usará para mantener DNIs con su
correspondiente letra (NIF). Los atributos serán el número de DNI (entero largo) y la letra
(String o char) que le corresponde. Dispondrá de los siguientes métodos:
• Método crearNif(): le pide al usuario el DNI y con ese DNI calcula la letra que le
corresponderá. Una vez calculado, le asigna la letra que le corresponde según el
resultado del calculo.
• Método mostrar(): que nos permita mostrar el NIF (ocho dígitos, un guion y la letra en
mayúscula; por ejemplo: 00395469-F).
0 T
1 R
2 W
3 A
4 G
5 M
6 Y
7 F
8 P
9 D
10 X
11 B
12 N
13 J
14 Z
15 S
16 Q
17 V
18 H
19 L
20 C
21 K
22 E
29
5. Crea una clase en Java donde declares una variable de tipo array de Strings que contenga
los doce meses del año, en minúsculas. A continuación, declara una variable mesSecreto
de tipo String, y hazla igual a un elemento del array (por ejemplo, mesSecreto = mes[9]. El
programa debe pedir al usuario que adivine el mes secreto. Si el usuario acierta mostrar
un mensaje, y si no lo hace, pedir que vuelva a intentar adivinar el mes secreto. Un
ejemplo de ejecución del programa podría ser este:
¡Ha acertado!
6. Juego Ahorcado: Crear una clase Ahorcado (como el juego), la cual deberá contener como
atributos, un vector con la palabra a buscar, la cantidad de letras encontradas y la cantidad
jugadas máximas que puede realizar el usuario. Definir los siguientes métodos con los
parámetros que sean necesarios:
• Constructores, tanto el vacío como el parametrizado.
• Método buscar(letra): este método recibe una letra dada por el usuario y busca sila
letra ingresada es parte de la palabra o no. También informará si la letra estaba o
no.
• Método encontradas(letra): que reciba una letra ingresada por el usuario y muestre
cuantas letras han sido encontradas y cuantas le faltan. Este método además deberá
devolver true si la letra estaba y false si la letra no estaba, ya que, cada vez que se
busque una letra que no esté, se le restará uno a sus oportunidades.
Longitud de la palabra: 6
----------------------------------------------
30
Ingrese una letra:
Longitud de la palabra: 6
Longitud de la palabra: 6
----------------------------------------------
Longitud de la palabra: 6
----------------------------------------------
Longitud de la palabra: 6
31
BIBLIOGRAFÍA
Información sacada de libros:
- https://profile.es/blog/que-son-los-paradigmas-de-programacion/
- https://profile.es/blog/que-es-la-programacion-orientada-a-objetos/
32