Acesso aos métodos de uma classe declarada como variável de outra classe [Resolvido]

Pessoal, estou com a seguinte dúvida (a mensagem é grande mais tenho certeza que o problema é relativamente fácil) :

Imaginando que tenho a seguinte classe “Arquivo”

public abstract class Arquivo {
		private String nomeArquivo;
		private String dataCriacao;
		
		public String getNomeArquivo() {
			return nomeArquivo;
		}
		
		public String getDataCriacao() {
			return dataCriacao;
		}
		public void setNomeArquivo(String nome){
			nomeArquivo = nome;
		}
		
		public void setDataCriacao(String data) {
			dataCriacao = data;
		}
}

… e uma classe “Documento” que extende “Arquivo”

public class Documento extends Arquivo{

private int numeroDoc;
private int notaDoc;	

public int getNumeroDoc() {
	return numeroDoc;
}

public void setNumeroDoc(int numero){
	numeroDoc = numero;
}

public int getNotaDoc() {
	return notaDoc;
}

public void setNotaDoc(int nota){
	notaDoc = nota;
}

}

E agora, em outra classe, eu preciso usar a classe “Documento” como uma variável de instância :

class Livraria {

private String nomeLivraria;
private Documento doc[];

public Livraria() {
doc = new Documento(2);
}
.  
.
.
}

Minha dúvida é a seguinte : como declarei na classe “Livraria” uma variável private do tipo “Documento” , eu vou ter que definir novamente todos os métodos de acesso aos membros privados da classe “Documento” dentro da classe “Livraria” ?

Por exemplo, se em algum ponto do meu programa eu fizer isso :

Livraria livraria = new Livraria();
livraria. ????   <---- Quero alterar os dados da varíavel "doc" que está dentro de Livraria.
Como faço isso visto que "doc" é do tipo private???

Devo criar dentro da classe Livraria métodos GET/SET para acessar os métodos GET/SET da classe Documento? E quanto aos métodos herdados da classe Arquivo?? Devo criar novamente esses métodos também na classe Livraria? Existe algum jeito menos trabalhoso de fazer isso sem que eu tenha que declarar a varíavel “doc” como pública?

Espero que alguem tenha tido paciencia de ler essa mensagem inteira…

Muito obrigado!

Tem q fazer um get/set pro DOC tambem… ai vc da objeto.getUmObjeto().getOutroObjeto()

Sacou?

mas nao seria melhor vc criar um arraylist ao invez de um vetor dessa classe?

Para poder acessar o objeto Documento a partir do objeto Livraria, o mais óbvio seria você alterar a variável de instância private Documento para public. Entretanto, isso iria corromper o aspecto de encapsulamento, então você deve declarar o seguinte método dentro do objeto livraria:

public Documento[] getDocumento()
  { return (doc); }

E quanto à sua segunda pergunta, a resposta é não. Uma vez que os métodos de Arquivo são public, eles ficam disponíveis, não importa o nível de acoplamento usado.

Exemplo de utilização após implementação do método que eu passei:

Livraria bookstore = new Livraria();
System.out.println(bookstore.getDocumento().getNomeArquivo());

O código acima deverá funcionar perfeitamente. Quaisquer dúvidas, poste.

Perfeito, Yky Mattshawn , funcionou certinho… era exatamente isso que estava precisando. Muito obrigado pela ajuda!

leandroqbs, realmente preciso usar a classe, não posso utilizar um arraylist.