Hola ivan0590, una asociación es cuando una clase tiene una referencia a otra clase como atributo, por ejemplo
Código Java:
Ver originalpublic class ClasePrincipal {
private ClaseSecundaria objetoClaseSecundaria;
}
public class ClaseSecundaria {
private ClasePrincipal objetoClasePrincipal;
}
En el ejemplo de arriba, ClasePrincipal está asociada a ClaseSecundaria con una relación de 1 a 1. Ambas pueden usar los métodos de la otra por medio del objeto declarado.
Cita: además tampoco se como se implementaría una asociación directa, me refiero a la asociación con punta de flecha.
Una asociación "con punta de flecha" quiere decir que es unidireccional, o sea...
[ClasePrincipal]---->[ClaseSecundaria]
ClasePrincipal tiene un atributo
ClaseSecundaria objetoClaseSecundaria como en el ejemplo de arriba, pero ClaseSecundaria no tiene el de ClasePrincipal, ya que, como te marca la flecha,
no puede ir para esa dirección.
Si por ejemplo tenes una relación
1 a n (1 a muchos / 1 a *), en vez de declarar un objeto, declaras un vector/arreglo/lista.
[ClasePrincipal](1)--------(0..*)[ClaseSecundaria]
En este caso, ClasePrincipal tendría de atributo un arregla de tipo ClaseSecundaria y ClaseSecundaria tendría un objeto de tipo ClasePrincipal.
En cuanto a Agregación y Composición, no te puedo ayudar porque nunca me lo puse a ver en detalle ya que me recomendaron que trate de no usarlo.
Espero te ayude mi respuesta, te dejo un pdf para que lo veas, tiene ejemplos de UML a Java bien detallados, me sirvieron cuando tuve alguna duda. También te recomiendo el libro "UML for Java Programmers"
UML a Java
Saludos!