L'encapsulation est-elle correctement conçue dans cette classe? Exemples d'instances d'objets avec des valeurs de hauteur et de largeur négatives peuvent ou ne peuvent pas exister?Si l'encapsulation est correctement conçue dans la classe
import java.awt.Dimension;
/** * Example class. The x and y values should never * be negative.
*/
public class Example {
private Dimension d = new Dimension (0, 0);
public Example() {}
/** * Set height and width. Both height and width must be nonnegative * or an exception is thrown. */
public synchronized void setValues (int height, int width) throws IllegalArgumentException {
if (height < 0 || width < 0) throw new IllegalArgumentException();
d.height = height;
d.width = width;
}
public synchronized Dimension getValues() { // Passing member content by ref
return d;
}
}
Vous n » t besoin d'une bibliothèque pour faire un clone profond: 'return new Dimension (d);' fait ce dont vous avez besoin. –
@AndyTurner Je suis d'accord qu'un constructeur de copie suffirait dans le contexte actuel. J'ai suggéré une bibliothèque, car à mesure que les objets deviennent plus complexes, un programmeur novice peut avoir du mal à créer une copie profonde réelle. –
Ce que vous avez essentiellement dit, c'est «Je sais que OP ne veut qu'un clou dans le mur pour accrocher une photo, mais je leur parlerai des excavateurs, au cas où ils auraient besoin de construire une maison». Parlez d'abord aux solutions simples aux débutants, afin qu'ils ne supposent pas qu'ils doivent utiliser des solutions compliquées pour résoudre des problèmes faciles. –