En este lab, implementareis una calculadora básica en Java. La calculadora debe ser capaz de realizar operaciones matemáticas simples como suma, resta, multiplicación y división. Además, debe incluir conversiones de unidades y cálculos de módulo y valor absoluto.
Aprenderemos a implementar clases y métodos en Java, así como a trabajar en equipo usando git y GitHub. Vamos a dividirnos en grupos para realizar el lab. Cada persona se enfocará en una clase diferente y luego juntaremos todo en usando git.
- Crea un nuevo repositorio en GitHub con el título
calculator-lab
, este repositorio debe estar vacío, ni siquiera deberá contener el readme. (Un solo repositorio por grupo). - Invita a tus compañer@s de grupo al repositorio (deberéis compartir vuestro usuario de github).
- Crea un nuevo proyecto con IntelliJ usando maven. El nombre del proyecto será
calculator-lab
. (Un solo proyecto por grupo). - Inicializa git en el proyecto.
git init
- Crea una clase inicial dentro de la carpeta java llamada "Main". Esta clase contendrá el método
main
y será el punto de entrada de la aplicación. En esta clase no se implementará ninguna lógica, la usaremos más adelante. De momento pongamos un println para ver que todo funciona bien.
public class Main {
public static void main(String[] args) {
System.out.println("Hola mundo!");
}
}
- Añadir y subir los cambios al repositorio.
git add .
git commit -m "Initial commit"
git push origin main
- El resto del equipo deberá clonar el repositorio. Un
clone
es una copia del repositorio que tenemos en github pero localmente en nuestro ordenador.
git clone <url del repositorio>
- Cada miembro del equipo deberá crear su propia rama. El nombre de la rama será el nombre de la persona que la crea mas el nombre de la clase que va a implementar. Por ejemplo, si yo me llamo "Juan" y voy a implementar la clase "Suma", el nombre de mi rama será
Juan-suma
.
git checkout -b Juan-suma
-
Implementar la clase. Cada miembro del equipo deberá implementar su propia clase siguiendo las instrucciones que se encuentran más abajo.
-
Definir convención para el naming. Cada miembro del equipo deberá seguir la misma convención para el nombre de las clases y métodos que hayáis acordado. Así que toca ponerse de acuerdo. 😅
Implementa operaciones relacionadas con la suma.
Métodos:
-
Suma de dos números double (reales)
- Parámetros: 2 números double
- Salida (return): 1 número real (resultado)
-
Suma de dos números enteros (int)
- Parámetros: 2 números enteros
- Salida: 1 número entero (resultado)
-
Suma de tres números double
- Parámetros: 3 números double
- Salida: 1 número real (resultado)
(EXTRA) 4. Suma con valor acumulado Recuerdas las calculadoras que tienen un botón de "M+"? Pues vamos a hacer algo parecido.
- Parámetro: 1 número (se acumulará al valor guardado)
- La clase mantendrá un valor acumulado interno.
Implementa operaciones relacionadas con la resta.
Métodos:
-
Resta de dos números double (reales)
- Parámetros: 2 números double
- Salida: 1 número real (resultado)
-
Resta de dos números enteros (int)
- Parámetros: 2 números enteros
- Salida: 1 número entero (resultado)
-
Resta de tres números double
- Parámetros: 3 números double
- Salida: 1 número real (resultado)
(EXTRA) 4. Resta con valor acumulado
- Parámetro: 1 número (se restará al valor acumulado)
- La clase mantendrá un valor acumulado interno.
Implementa operaciones de multiplicación y potencia.
Métodos:
-
Producto de dos números reales
- Parámetros: 2 números reales
- Salida: 1 número real (resultado)
-
Producto de dos números enteros
- Parámetros: 2 números enteros
- Salida: 1 número entero (resultado)
-
Producto de tres números reales
- Parámetros: 3 números reales
- Salida: 1 número real (resultado)
-
Potencia
- Parámetros: base (número), exponente (número)
- Salida: 1 número (resultado de la operación)
Implementa operaciones de división.
Métodos:
-
División de dos números reales
- Parámetros: 2 números reales
- Salida: 1 número real (resultado)
-
División de dos números enteros
- Parámetros: 2 números enteros
- Salida: 1 número entero (resultado)
-
Inverso de un número real
- Parámetro: 1 número real
- Salida: 1 número real (1/valor_entrada)
Operaciones de módulo y valor absoluto.
Métodos:
-
Cálculo del módulo
- Parámetros: int a, int b
- Salida: int (a % b)
-
Valor absoluto
- Parámetro: double a
- Salida:
- Si a ≥ 0: |a| = a
- Si a < 0: |a| = -a
Conversiones de temperatura y ángulos.
Métodos:
-
Celsius a Fahrenheit
- Fórmula: F = (C × 9/5) + 32
- Parámetro: double celsius
- Salida: double (fahrenheit)
-
Fahrenheit a Celsius
- Fórmula: C = (F - 32) × 5/9
- Parámetro: double fahrenheit
- Salida: double (celsius)
-
Grados a Radianes
- Fórmula: radianes = grados × π / 180
- Parámetro: double grados
- Salida: double (radianes)
-
Radianes a Grados
- Fórmula: grados = radianes × 180 / π
- Parámetro: double radianes
- Salida: double (grados)
- Una vez hemos implementado todos los métodos, vamos a hacer un commit. Cada persona deberá hacer un commit de su rama.
git add .
git commit -m "Implementación de la clase Suma"
- Subir los cambios al repositorio.
git push origin Juan-suma
- Merge localmente. Una vez que todos los miembros del equipo han subido sus cambios, uno de los miembros del equipo deberá hacer un merge de todas las ramas en la rama principal.
- Volvemos a la rama principal:
git checkout main
- Hacemos un merge de cada rama:
git merge Juan-suma
git merge Maria-resta
git merge Pedro-multiplicacion
Verás que los cambios de cada rama se han añadido a la rama principal.
- Subir los cambios al repositorio.
git push origin main
Ahora la rama main contiene todos los cambios de cada miembro del equipo.
- Actualizar el repositorio local. Una vez que hemos hecho el merge, cada miembro del equipo deberá actualizar su repositorio local.
git checkout main
git pull origin main
Así tendremos la última versión del código en nuestro repositorio local. Confirma con tu compañer@ que todo ha ido bien.