Exercici: Proves d'objectes
(Reconeixement - NoComercial - CompartirIgual) 🅭
Proves d'objectes
ud4.objects
L'objectiu d'aquests exercicis és implementar i provar diferents classes i els seus mètodes.
Exercicis de Programació
A més dels exercicis següents, pots fer les proves de totes les classes de programació orientada a objectes
que has implementat en el mòdul professional de Programació .
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)
+ Robot(x: double, y: double, speed: 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 en l'origen (0, 0) amb velocitat 1.
Robot(x: double, y: double) : crea un robot en les coordenades especificades amb velocitat 1.
Robot(x: double, y: double, speed: double) : crea un robot en les coordenades i amb la velocitat
especificades. La velocitat ha d'estar entre 0 i 10:
Si s'especifica un valor inferior a 0, la velocitat serà 0.
Si s'especifica un valor superior a 10, la velocitat serà 10.
Mètodes
ud4.objects.shapes
Implementa i prova les classes
Circle i
Rectangle, que representen
les figures geomètriques corresponents situades en un pla bidimensional.
Sense herència Amb herència
classDiagram
class Circle {
- «get/set» x: double
- «get/set» y: double
- «get/set» radius: double
+ Circle()
+ Circle(radius: double)
+ Circle(x: double, y: double)
+ Circle(x: double, y: double, radius: double)
+ getArea(): double
+ getPerimeter(): double
+ setPosition(x: double, y: double): void
+ move(dx: double, dy: double): void
+ contains(x: double, y: double): boolean
}
class Rectangle {
- «get/set» x: double
- «get/set» y: double
- «get/set» width: double
- «get/set» height: double
+ Rectangle()
+ Rectangle(width: double, height: double)
+ Rectangle(x: double, y: double, width: double, height: double)
+ getArea(): double
+ getPerimeter(): double
+ setPosition(x: double, y: double): void
+ move(dx: double, dy: double): void
+ contains(x: double, y: double): boolean
}
Si ja coneixes l'herència , pots implementar les classes
Circle
i
Rectangle com a subclasses de la classe abstracta
Shape i extraure'n els atributs i mètodes comuns.
classDiagram
Shape <|-- Rectangle
Shape <|-- Circle
class Shape {
<<abstract>>
# «get/set» x: double
# «get/set» y: double
# Shape(x: double, y: double)
+ «abstract» getArea(): double
+ «abstract» getPerimeter(): double
+ setPosition(x: double, y: double): void
+ move(dx: double, dy: double): void
+ «abstract» contains(x: double, y: double): boolean
}
class Circle {
# «get/set» radius: double
+ Circle()
+ Circle(radius: double)
+ Circle(x: double, y: double)
+ Circle(x: double, y: double, radius: double)
+ getArea(): double
+ getPerimeter(): double
+ contains(x: double, y: double): boolean
}
class Rectangle {
# «get/set» width: double
# «get/set» height: double
+ Rectangle()
+ Rectangle(width: double, height: double)
+ Rectangle(x: double, y: double, width: double, height: double)
+ getArea(): double
+ getPerimeter(): double
+ contains(x: double, y: double): boolean
}
Les classes tenen els atributs, constructors i mètodes següents:
Atributs
double x, y : coordenades del centre del cercle.
double radius : radi del cercle.
Constructors
Circle() : constructor per defecte. Crea un cercle amb centre en l'origen (0, 0) i radi 1.
Circle(radius: double) : crea un cercle amb centre en 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 el radi especificats.
Mètodes
double getArea() : retorna l'àrea del cercle.
double getPerimeter() : retorna el perímetre del cercle.
void setPosition(double x, double y) : mou el cercle a la posició especificada.
void move(double dx, double dy) : mou el cercle la distància especificada respecte a la posició actual.
boolean contains(double x, double y) : retorna true si el punt especificat és dins del cercle,
o false en cas contrari.
Atributs
double x, y : coordenades del vèrtex inferior esquerre.
double width, height : amplària i altura del rectangle.
Constructors
Rectangle() : constructor per defecte. Crea un rectangle amb el vèrtex inferior esquerre
en l'origen (0, 0) i dimensions 1x1.
Rectangle(width: double, height: double) : crea un rectangle amb el vèrtex inferior esquerre
en l'origen (0, 0) i les dimensions especificades.
Rectangle(x: double, y: double, width: double, height: double) : crea un rectangle amb la posició
i les dimensions especificades.
Mètodes
double getArea() : retorna l'àrea del rectangle.
double getPerimeter() : retorna el perímetre del rectangle.
void setPosition(double x, double y) : mou el rectangle a la posició especificada.
void move(double dx, double dy) : mou el rectangle la distància especificada respecte a la posició actual.
boolean contains(double x, double y) : retorna true si el punt especificat és dins del rectangle,
o false en cas contrari.
ud4.objects.shoppingcart
Implementa i prova les classes Product, ShoppingCartItem i ShoppingCart,
que representen l'estructura d'una cistella de la compra.
La classe ShoppingCart té, entre d'altres, els mètodes següents:
void addProduct(Product product, int quantity) : afig la quantitat indicada del producte
a la cistella de la compra. Si el producte ja hi és, n'incrementa la quantitat. Si no, l'afig com a producte nou.
void removeProduct(Product product, int quantity) : lleva la quantitat indicada del producte
de la cistella de la compra. Si la quantitat final és 0, elimina el producte de la cistella.
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
📌 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.