Si quieres hacerlo bien necesitarías tirar de autómatas. Yo no entiendo sobre el tema pero... desde ya te digo que es bastante complejo, no es algo para alguien que esté empezando.
Para pasar objetos es igual que para pasar enteros
Código
Alumno b =new Alumno();
Profesor a =new Profesor();
a.setAlumno(b);
Solo necesitas que tu profesor tenga un setAlumno() que le entre por parametro un Alumno
Código
public setAlumno(Alumno alum)
{
miAlumno = alum;
}
Es un ejemplo al azar, no se si te piden eso, pero así es como se pasan objetos. Por supuesto la variable miAlumno es una variable privada de la clase Profesor inicialmente sin valor (private Alumno miAlumno);