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ó .
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:
Circle
Rectangle
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
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