Salta el contingut
 

Exercici: Proves d'objectes

Autor: Joan Puigcerver Ibáñez

Correu electrònic: j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Proves d'objectes

ud4.exercises.objects

Per aquest exercici, es demana implementar i provar diferents objectes i els seus mètodes.

Exercicis de programació

Podeu realitzar les proves de tots els objects de programació orientada a objectes que s'han vist en el Mòdul Professional: Programació.

Figures geomètriques

ud4.exercises.objects.shapes

Implementa i prova les classes Circle i Rectangle que representen les figures geomètriques corresponents situades en un pla bidimensional.

Consell

Si ja coneixeu herència podeu implementar les classes Circle i Rectangle com a subclasses de la classe abstracta Shape i extreure els mètodes i atributs comuns.

classDiagram
    class Circle {
        - «get/set» x: double
        - «get/set» y: double
        - «get» radius: double
        + Circle()
        + Circle(radius: double)
        + Circle(x: double, y: double)
        + Circle(x: double, y: double, radius: double)
        + getArea(): double
        + getPerimeter(): double
        + move(x: double, y: double): void
        + contains(x: double, y: double): boolean
    }
    class Rectangle {
        - «get/set» x: double
        - «get/set» y: double
        - width: double
        - height: double
        + Rectangle()
        + Rectangle(width: double, height: double)
        + Rectangle(x: double, y: double, width: double, height: double)
        + getArea(): double
        + getPerimeter(): double
        + move(x: double, y: double): void
        + contains(x: double, y: double): boolean
    }

Descripció de les classes:

Atributs
  • double x, y: coordenades del centre del cercle.
  • double radius: radi del cercle.
Constructors
  • Circle(): constructor per defecte, crea un cercle amb centre a l'origen (0, 0) i radi 1.
  • Circle(radius: double): crea un cercle amb centre a l'origen (0, 0) i el radi especificat.
  • Circle(x: double, y: double): crea un cercle amb el centre especificat i radi 1.
  • Circle(x: double, y: double, radius: double): crea un cercle amb el centre i radi especificats.
Mètodes
  • double getArea(): retorna l'àrea del cercle.
  • double getPerimeter(): retorna el perímetre del cercle.
  • void move(double x, double y): mou el cercle la distància especificada respecte la posició actual.
  • boolean contains(double x, double y): retorna true si el punt especificat és dins del cercle; false en cas contrari.
Atributs
  • double x, y: coordenades de l'angle superior esquerre del rectangle.
  • double width, height: amplada i alçada del rectangle.
Constructors
  • Rectangle(): constructor per defecte, crea un rectangle amb l'angle superior esquerre a l'origen (0, 0) i dimensions 1x1.
  • Rectangle(width: double, height: double): crea un rectangle amb l'angle superior esquerre a l'origen (0, 0) i les dimensions especificades.
  • Rectangle(x: double, y: double, width: double, height: double): crea un rectangle amb les dimensions i posició especificades.
Mètodes
  • double getArea(): retorna l'àrea del rectangle.
  • double getPerimeter(): retorna el perímetre del rectangle.
  • void move(double x, double y): mou el rectangle la distància especificada respecte la posició actual.
  • boolean contains(double x, double y): retorna true si el punt especificat és dins del rectangle; false en cas contrari.

Robot

ud4.exercises.objects.robot

Implementa i prova la classe Robot que representa un robot que es pot moure en un pla bidimensional (2D).

classDiagram
    class Robot {
        - «get» x: double
        - «get» y: double
        - «get» speed: double
        + Robot()
        + Robot(x: double, y: double)
        + accelerate(): void
        + decelerate(): void
        + up(): void
        + down(): void
        + left(): void
        + right(): void
        + toString(): String
    }
Atributs
  • double x, y: coordenades del robot.
  • double speed: velocitat del robot.
Constructors
  • Robot(): constructor per defecte, crea un robot a l'origen (0, 0) amb velocitat 1.
  • Robot(x: double, y: double): crea un robot a les coordenades especificades amb velocitat 1.
Mètodes
  • void accelerate(): incrementa la velocitat del robot en 0.5. La velocitat màxima és 10.
  • void decelerate(): redueix la velocitat del robot en 0.5. La velocitat mínima és 0.
  • void up(): mou el robot cap amunt segons la seua velocitat.
  • void down(): mou el robot cap avall segons la seua velocitat.
  • void left(): mou el robot cap a l'esquerra segons la seua velocitat.
  • void right(): mou el robot cap a la dreta segons la seua velocitat.
  • String toString(): retorna una representació en text del robot amb les seues coordenades i velocitat.

    Robot{x=0.0, y=0.0, speed=1.0}
    

Product i ShoppingCart

ud4.exercises.objects.shoppingcart

Implementa i prova les classes Product, ShoppingCartItem i ShoppingCart, que representen l'estructura d'una cistella de la compra.

A la classe ShoppingCart:

  • void addProduct(Product product, quantity: int): Afegeix la quantitat de producte al carro de la compra. Si el producte ja existeix, incrementa la quantitat. Si no, afegeix un nou producte.

  • void removeProduct(Product product, quantity: int): Elimina la quantitat de producte del carro de la compra. Si la quantitat final és 0, elimina el producte del carro.

classDiagram
    class Product {
        - «get» name: String
        - «get» price: double
        + Product(name: String, price: double)
    }
    class ShoppingCartItem {
        - product: Product
        - «get/set» quantity: int
        + ShoppingCartItem(product: Product, quantity: int)
    }
    class ShoppingCart {
        - products: List~ShoppingCartItem~
        + ShoppingCart()
        + addProduct(product: Product, quantity: int): void
        + removeProduct(product: Product, quantity: int): void
        + getTotalPrice(): double
    }
    ShoppingCart "1" *-- "0..*" ShoppingCartItem : contains
    ShoppingCartItem "0..*" -- "1" Product : has