Salta el contingut
 

DAMs1: Examen 2a avaluació

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Entrega

Perill

Si l'entrega no compleix aquests criteris, no és qualificarà.

  • Cal utilitzar el repositori creat en l'organització del mòdul: CognomNom-ED.
  • Tots els exercicis han d'estar situats en el package corresponent: exam2
  • El nom de la classe on comença l'execució (main()) de cada exercici ha de ser el títol de l'exercici.
  • S'ha d'entregar a Aules un fitxer .zip amb el contingut del package corresponent.
    • Renombrar el .zip perquè incloga el vostre nom i cognoms.
  • El format de la eixida del programa ha de ser consistent amb el format demanat.
  • El codi ha d'estar pujat a GitHub en el vostre repositori de l'assignatura en el package corresponent.
  • El codi ha de poder-se compliar.

Exercici 1: Git Avançat

Bloc 2: Control de versions20% exam2

Advertència

Tingueu en compte les següents consideracions:

  • Utilitzeu exactament el mateix nom de les branques.
  • Utilitzeu exactament el mateix missatge per als commits.
    • Deixeu el nom per defecte dels commits quan feu merge o rebase.
  • Feu un push sols quan s'indique en l'enunciat.

Has de realitzar els següents passos en el repositori de Git:

  1. Crea la branca ex2/backup. Aquesta branca servirà per indicar-nos el punt de partida de l'exercici, per poder tornar enrere fàcilment.

  2. Crea el package exam2 (si no existeix prèviament).

  3. Des de la branca main, crea un commit amb el missatge: "Exam2: Creació exercici1.md". on s'afegeix el fitxer exercici1.md dins del package exam2.

    # Exercici 1 - Nom Cognom
    
  4. Crea les branques ex2/canviA i ex2/canviB.

  5. Situa't en cadascuna de les branques i fes els següents canvis.

    Missatge del commit: Exam2: Canvi A

    diff --git a/exercici1.md b/exercici1.md
    index 98d41c3..cd34b45 100644
    --- a/ex1.md
    +++ b/ex1.md
    @@ -1 +1,2 @@
     # Exercici 1 - Nom Cognom
    +- Canvi A
    

    Missatge del commit: Exam2: Canvi B

    diff --git a/exercici1.md b/exercici1.md
    index 98d41c3..cd34b45 100644
    --- a/ex1.md
    +++ b/ex1.md
    @@ -1 +1,2 @@
     # Exercici 1 - Nom Cognom
    +- Canvi B
    
  6. Crea les etiquetes Exam2-CanviA i Exam2-CanviB en els commits corresponents.

  7. Des de la branca ex2/canviA, desfés el canvi A sense modificar la història anterior del repositori.
  8. Des de la branca ex2/canviA, aplica els canvis del commit etiquetat amb Exam2-CanviB.
  9. Des de la branca ex2/canviA, torna a aplicar el canvis del commit etiquetat amb Exam2-CanviA.
    • L'ordre dels canvis en el fitxer ha de ser: Canvi A, Canvi B.
  10. Fusiona la branca ex2/canviA a la branca main en un sol commit amb el missatge: "Exam2: Canvis A i B".
  11. Publica totes les branques i etiquetes al repositori remot.

Rúbrica

Estructura inicial de commits i branques.
Creació de les branques i commits segons l'enunciat.
10 punts
Etiquetes
Creació de les etiquetes Exam2-CanviA i Exam2-CanviB.
20 punts
Desfer canvis sense modificar la història
Desfer el canvi A sense modificar la història anterior del repositori a la branca ex2/canviA.
20 punts
Aplicar el Canvi B.
Aplicar els canvis del commit etiquetat amb Exam2-CanviB a la branca ex2/canviA.
10 punts
Aplicar el Canvi A.
Aplicar els canvis del commit etiquetat amb Exam2-CanviA a la branca ex2/canviA.
20 punts
Fusió en un sol commit
Fusionar la branca ex2/canviA a la branca main en un sol commit.
20 punts

Exercici 2: Lamp

Bloc 3: Prova de programari30% exam2

Mitjançant l'estratègia TDD, implementa la classe Lamp que representa una làmpara que es pot encendre i apagar.

Consell

Recorda que el TDD consisteix en escriure els tests abans de programar la lògica de l'aplicació.

LampTest

Crea la classe LampTest per implementar les proves unitàries de la classe Lamp.

  • Utilitza l'annotació @Nested per agrupar els tests.
  • Utilitza l'annotació @DisplayName per donar un nom significatiu als tests i a les classes anidadedes.
  • Utilitza l'anotacions necessàries per simplificar la codificació dels tests.
  • Manteniu l'ordre de creació dels tests per veure el procés TDD seguit.
  • Si has d'esborrar un test, no l'esborres, comenta'l.

Lamp

La classe Lamp representa una làmpara que es pot encendre i apagar.

classDiagram
    class Lamp {
        - consumption: double
        - on: boolean
        + Lamp(consumption: double)
        + Lamp(consumption: double, on: boolean)
        + isOn(): boolean
        + getConsumption(): double
        + turnOn(): void
        + turnOff(): void
        + toggle(): void
        + consume(seconds: double): double
    }
Constructors

Els objectes d'aquesta classe poden ser instanciats de dues maneres:

  • Especificant el consum en kWh. La làmpara es crea apagada.
  • Especificant el consum en kWh i l'estat inicial (encès o apagat).
Mètodes

Aquesta classe ha de d'implementar les següents funcionalitats:

Important

No cal implementar les proves per aquests mètodes.

  • isOn(): boolean: retorna true si la làmpara està encesa, false en cas contrari.
  • getConsumption(): double: retorna el consum de la làmpara en kWh.
  • turnOn(): encén la làmpara.
  • turnOff(): apaga la làmpara.
  • toggle(): alterna l'estat de la làmpara; si està encesa l'apaga i si està apagada l'encén.
  • consume(double seconds): double: retorna el consum de la làmpara en kW després de passar el temps indicat en segons.
    • Si la làmpara està apagada no consumeix res.

Tip

Els kilowatts consumits per una làmpara encesa es poden calcular com a:

\[ kW = kWh \cdot \frac{seconds}{3600} \]
  • \(kW\): kilowatts consumits.
  • \(kWh\): kilowatts-hora.

Calculadora

Consumption (kW): 0.00000

Rúbrica

Constructors
Prova i implementació dels constructors en una classe anidada.
30 punts
turnOn()
Prova i implementació del mètode turnOn en una classe anidada o test parametritzat.
10 punts
turnOff()
Prova i implementació del mètode turnOff en una classe anidada o test parametritzat.
10 punts
toggle()
Prova i implementació del mètode toggle en una classe anidada o test parametritzat.
10 punts
consume()
Prova i implementació del mètode consume en una classe anidada o test parametritzat.
40 punts
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.