abstract class Repositorio{
...

    /**
     * Método abstrato, ou seja, apenas a
	 * assinatura do método.
     */
	abstract void lsR(); 

}

class Diretorio extends Repositorio{

...

    /**
     * Implementação do método abstrato lsR da classe
	 * Repositorio que imprime na saída padrão o nome
	 * do Diretorio e chama o método listarR do seu
	 * atributo conteudo que é do tipo Lista_Rep (lista de Repositorio)
     */
 	public void lsR(){
     	System.out.println(nome());
     	conteudo.listarR();
 	}

}

class Arquivo extends Repositorio{
...

    /**
     * Implementação do método abstrato lsR da classe
	 * Repositorio que imprime na saída padrão o nome
	 * do Arquivo.
     */
 	public void lsR(){
    	System.out.println(nome());
 	}
}


class Lista_Rep{

...
	/**
     * Chama o método lsR do atributo Rep (Repositorio)
	 * e o método listarR do atributo proximo (Lista_rep)
	 */
 	public void ListarR(){
    	if (Rep!=null){
	   		Rep.lsR();		
	   		proximo.listarR();
    	}
 	}

}
