miércoles, 14 de septiembre de 2011

13.- Creación de clases

Definir atributos de la clase (variables, propiedades o datos de la clases)



Cuando se definen los datos de una determinada clase, se debe indicar el tipo de propiedad que es (String, int, double, int[][],...) y el especificador de acceso (public, private,...). El especificador indica en qué partes del código ese dato será visible.

Ejemplo:
                    class Persona {
                                  public String nombre;    //Se puede acceder desde cualquier clase
                                  private int contraseña;   //Sólo se puede acceder desde la clase Persona
                                  protected String dirección;    //Acceden a esta propiedad esta clase y sus 
                                                                              //descendientes

Por lo general las propiedades de una clase suelen ser privadas o protegidas, a no ser que se trate de un valor constante, en cuyo caso se declararán como públicos.
Las variables locales de una clase pueden ser inicializadas.

             class auto{
                              public nRuedas=4;

Ilustración 8, La clase persona en UML. El signo + significa public,
el signo # protected y el signo - private




Definir métodos de clase (operaciones o funciones de clase)

Un método es una llamada a una operación de un determinado objeto. Al realizar esta llamada (también se le llama enviar un mensaje), el control del programa pasa a ese método y lo mantendrá hasta que el método finalice o se haga uso de return. Para que un método pueda trabajar, normalmente hay que pasarle unos datos en forma de argumentos o parámetros, cada uno de los cuales se separa por comas.

Ejemplos de llamadas:

                                balón.botar();                 //sin argumentos
                                miCoche.acelerar(10);
                                ficha.comer(posición15);  //posición 15 es una variable que se pasa como argumento
                                partida.empezarPartida(“18:15”,colores);

Los métodos de la clase se definen dentro de ésta. Hay que indicar un modificador de acceso (public, private, protected o ninguno, al igual que ocurre con las variables y con la propia clase) y un tipo de datos, que indica qué tipo de valores devuelve el método.
Esto último se debe a que los métodos son funciones que pueden devolver un determinado valor (un entero, un texto, un valor lógico,...) mediante el comando return. Si el método no devuelve ningún valor, entonces se utiliza el tipo void que significa que no devuelve valores (en ese caso el método no tendrá instrucción return).
El último detalle a tener en cuenta es que los métodos casi siempre necesitan datos para realizar la operación, estos datos van entre paréntesis y se les llama argumentos. Al definir el método hay que indicar que argumentos se necesitan y de qué tipo son.

Ejemplo:

      public class vehiculo {
                            /** Función principal */
                                int ruedas;
                                private double velocidad=0;
                                 String nombre;
                            /** Aumenta la velocidad*/
                            public void acelerar(double cantidad) {
                               velocidad += cantidad;
                            }
                            ** Disminuye la velocidad*/
                            public void frenar(double cantidad) {
                               velocidad -= cantidad;
                            }
                            /** Devuelve la velocidad*/
                            public double obtenerVelocidad(){
                               return velocidad;
                            }
                            public static void main(String args[]){
                                  vehiculo miCoche = new vehiculo();
                                  miCoche.acelerar(12);
                                  miCoche.frenar(5);
                                  System.out.println(miCoche.obtenerVelocidad());
                            } // Da 7.0


En la clase anterior, los métodos acelerar y frenar son de tipo void por eso no tienen sentencia return. Sin embargo el método obtenerVelocidad es de tipo double por lo que su resultado es devuelto por la sentencia return y puede ser escrito en pantalla.

Ilustración 9, Versión UML de la clase
Coche







No hay comentarios:

Publicar un comentario