Diseño y Programación Orientados a Objetos
1er. Sem 2005
Tarea 1: Vector, una clase simple


Esta tarea tiene por objeto que usted se familiarize con el ambiente de desarrollo que usará en otras tareas y su proyecto.
Evalúe la herramienta que resulte más cómoda para usted. En clases he sugerido trabajar con Emacs o Jgraps.
La tarea será revisada desde consola; es decir se requiere que usted cree un archivo Makefile para que el ayudante compile su trabajo sólo ejecutando la sentencia
$ make
Para ejecutar su programa el ayudante ejecutará
$ make run

Clase Vector
    Un vector puede ser representado por un punto en el espacio. Digamos que las operaciones que podemos aplicar sobre este vector son:
Constructores:
Vector(double x, double y): crea un vector a partir de sus coordenadas cartesianas.
Vector(float r, double alfa): crea un vector a partir de sus coordenadas polares.

sumarle(Vector v): esta operación traslada el vector a la posición dada por la inicial del mismo sumada con el vector pasado como argumento.
multiplicacionPorEscarlar(float m): esta operación mantiene el ángulo del vector pero incrementa su magnitud en un factor dado por m.
rotar(float alfa): Manteniendo la magnitud del vector, incrementa su ángulo en el valor indicado (en radianes).
toString(): Este método retorna la representación como String de un vector para efectos de su lectura como texto.
boolean equals(Vector v):  retorna verdadero si v es un vector con igual estado de aquel  que recibe el  mensaje.

Es posible definir algunos métodos estáticos como:
Vector suma (Vector a, Vector b): Éste retorna un nuevo vector con la suma de ambos vectores (a+b).
Vector resta (Vector a, Vector b): Éste retorna el vector de la resta a-b.
float  productoPunto(Vector a , Vector b): Éste retorna el producto punto de ambos vectores (a.b).
(Vector productoCruz(Vector a, Vector b): retorna el producto cruz de a y b (a x b)....CORRECCIÓN...NO CONSIDERAR EN LA TAREA (requiere vectores en R3!!)

Una vez que usted haya implementado la clase Vector, prepare la clase testVector la cual permite verificar la funcionalidad de su clase. La clase testVector debe efectuar las siguientes verificaciones en secuencia:
Para cada verificación se imprime el nombre del test, los valores que intervienen, el resultado y luego si el test es correcto "passed" en otro caso "failed".
Test:
Translación: crea un vector cualquiera y le suma otro vector.
Multiplicación por Escalar: crea un vector y lo multiplica por un escalar.
Ídem para rotar, sumar, resta, productoPunto y productoCruz.

Observación, para revisar su tarea, el ayudante además de correr su programa testVector, él correrá su propio testVector.
En la documentación de esta tarea, no es necesario que usted haga una descripción en alto nivel de los algoritmos usados. En esta tarea la verificación de estilo es voluntaria. Usted debe entregar su código documentado de manera que se pueda generar la documentación con el utilitario javadoc.

Dele una mirada a un ejemplo de Makefile. Más información sobre Makefiles.