## La Clase HighScore

La clase HighScore almacena y protege el acceso a la máxima puntuación del usuario de TerrysGame (y de cualquier otro juego que la llame). Por simplicidad, esta clase grava la máxima puntuación en un fichero, llamado .highscore, en el directorio jome del usuario. Sin embargo, antes de permitie a TerrysGame que recupere y actualice el valor de máxima puntuación del usuario, esta clase chequea para asegurarse de que el usuario ha concedido a TerrysGame el permiso para acceder a la máxima puntuación en su fichero de policía de seguridad.

### Comprobar que TerrysGame tiene el HighScorePermission

> Para comprobar si TerrysGame tiene o no permiso para acceder a la máxima puntuación del usuario, la clase HighScore debe:
> 1. Llamar a System.getSecurityManager() para obtener el controlador de seguridad instalado realmente.

> 2. Si el resultado no es null (es decir, es un controlador de seguridad, lo opuesto a cuando el llamador es una aplicación que no tiene restricciones), entonces

>    1. Construye un objeto HighScorePermission, y

>    2. llama al método checkPermission del controlador de seguridad, y el pasa el objeto HighScorePermission recientemente construido.
> Aquí está el código:

>     SecurityManager sm = System.getSecurityManager();
>     if (sm != null) {
>         sm.checkPermission(new HighScorePermission(gameName));
>     }

> Esencialmente el método checkPermission lepreginta al controlador de seguridad si TerrysGame tiene el HighScorePermission especificado. En otras palabras, le pregunta al controlador se seguridad si TerrysGame tiene permiso para actualizar la máxima puntuación del usuario para el juego específicado (TerrysGame). El marco de trabajo de seguridad en segundo plano consultará el fichero de policía del usuario para ver si realmente TerrysGame tiene este permiso.

### El código HighScore

> Aquí está el código fuente completo de la clase HighScore.

> Nota: las llamadas al método doPrivileged se utilizan para permitir a HighScore un acceso temporal a los recursos que tiene disponibles, pero no está disponible para el código que llamó a (TerrysGame). Por ejemplo, espera que el fichero de policía conceda permiso a HighScore para acceder al fichero .highscore en el directorio home del usuario, pero no concede este permiso a los juegos, como TerrysGame. Para más información sobre el uso de los métodos doPrivileged puedes New Privileged Block API en la web site de java.sun.com.

Ozito