Relacionar classes e metodos de um programa

Estou com uma grande duvida, quero fazer um programa que gerencia uma escola nivel fundamental, mas não consigo relacionar as classes e obter atributos quando preciso.

[code]import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public abstract class Pessoa
{
protected String nome;
protected String endereço;
protected String cpf;
protected String data_nascimento;

public abstract void login(String senha);

}

class Aluno extends Pessoa
{
private String nome_pai;
private String nome_mae;
private String login;
private double nota_1,nota_2,media;
private int frequencia;
private int serie;

public int getSerie() {
	return serie;
}

public void setSerie(int serie) {
	this.serie = serie;
}

public void login(String senha){
	  if(this.login==senha)
	  {
		  System.out.println("Bem vindo"); 
	  }
	  else
		  System.out.println("Senha errada");
 }

public void setNome_pai(String nome_pai) {
	this.nome_pai = nome_pai;
}
public String getNome_pai() {
	return nome_pai;
}
public void setNome_mae(String nome_mae) {
	this.nome_mae = nome_mae;
}
public String getNome_mae() {
	return nome_mae;
}
public void setLogin(String login) {
	this.login = login;
}
public String getLogin() {
	return login;
}

public void setNota_2(double nota_2) {
	this.nota_2 = nota_2;
}

public double getNota_2() {
	return nota_2;
}



public void setNota_1(double nota_1) {
	this.nota_1 = nota_1;
}

public double getNota_1() {
	return nota_1;
}

public void setMedia(double media) {
	this.media = media;
}

public double getMedia() {
	return media;
}

public void setFrequencia(int frequencia) {
	this.frequencia = frequencia;
}

public int getFrequencia() {
	return frequencia;
}

}

class Professor extends Pessoa
{
private String turma;
private String login;

 public void login(String senha){
	  if(this.login==senha)
	  {
		  System.out.println("Bem vindo"); 
	  }
	  else
		  System.out.println("Senha errada");
 }
	  
 public void colocarNota()
 {
	 //vou ter que ter acesso a lista turma
 }
 public void editaNota()
 {
	 
 }
 
 public void frequencia()
 {
	 
	 
 }
 public void editaFrequencia()
 {
	 
	 
 }

public void setTurma(String turma) {
	this.turma = turma;
}

public String getTurma() {
	return turma;
}

public void setLogin(String login) {
	this.login = login;
}

public String getLogin() {
	return login;
}

}

class Secretario extends Pessoa {
private String login;

int tamanho_1;


//FALTA IMPLEMENTAR RELATORIO
public void login(String senha){
	  if(this.login==senha)
	  {
		  System.out.println("Bem vindo"); 
	  }
	  else
		  System.out.println("Senha errada");
 }






public void cadastrarAluno(int numeroAlunos){

	
	List <Aluno> lista_alunos1 = new ArrayList<Aluno>(); 
	List <Aluno> lista_alunos2 = new ArrayList<Aluno>(); 
	List <Aluno> lista_alunos3 = new ArrayList<Aluno>(); 
	List <Aluno> lista_alunos4 = new ArrayList<Aluno>(); 
	for (int i=0; i < numeroAlunos; i++){  
        Scanner sc = new Scanner(System.in);  
        Aluno aluno = new Aluno();  
        System.out.println("Digite a serie do aluno(1,2,3,4 ou 5)"); 
        aluno.setSerie(sc.nextInt());
        System.out.println("Digite o nome do "+(i+1)+"º aluno");  
        aluno.nome=sc.nextLine();  
        System.out.println("Digite o cpf do aluno");  
        aluno.cpf=sc.nextLine();  
        System.out.println("Digite o endereço do aluno");  
        aluno.endereço=sc.nextLine();  
        System.out.println("Digite a data de nascimento do aluno");  
         aluno.data_nascimento=sc.next();
        System.out.println("Digite o nome do pai aluno");  
        aluno.setNome_pai(sc.nextLine());
        System.out.println("Digite o nome da mae aluno");  
        aluno.setNome_mae(sc.nextLine());
        
    	
        if(aluno.getSerie()==1 && lista_alunos1.size()<)       // aki não consigo acessar a lista lista_turma1 que criei na classe diretor
        { lista_alunos1.add(aluno);}
        
        if(aluno.getSerie()==2 && lista_alunos2.size()<50)
        { lista_alunos2.add(aluno);}
        
        if(aluno.getSerie()==3 && lista_alunos3.size()<50)
        { lista_alunos3.add(aluno);}
        
        if(aluno.getSerie()==4 && lista_alunos4.size()<50)
        { lista_alunos4.add(aluno);}
        
        
	}
	
}

public void editarAluno()
{
	
	//implementar apartir das 5 listas
}

}

class Diretor extends Pessoa {

private Secretario secretario;
private String login;
private Turma turma;

public static List <Turma> lista_turma1 = new ArrayList<Turma>(); 
public static List <Turma> lista_turma2 = new ArrayList<Turma>(); 
public static List <Turma> lista_turma3 = new ArrayList<Turma>(); 
public static List <Turma> lista_turma4 = new ArrayList<Turma>(); 
public static List <Turma> lista_turma5 = new ArrayList<Turma>(); 
	

public Secretario getSecretario() {
	return secretario;
}


public void setSecretario(Secretario secretario) {
	this.secretario = secretario;
}


public void login(String senha){
	  if(this.login==senha)
	  {
		  System.out.println("Bem vindo"); 
	  }
	  else
		  System.out.println("Senha errada");
 }


public void cadastrarProfessor(int numeroProfessores)
{
	

}

public void editartProfessor(String serie)
{
	
	
}



public void cadastrarSecretario()
{
	
    if(secretario== null)
    {
	Scanner sc = new Scanner(System.in);
	secretario = new Secretario();
	System.out.println("Digite o nome do secretário");  
	secretario.nome=sc.nextLine();  
    System.out.println("Digite o cpf do secretário");  
    secretario.cpf=sc.nextLine();  
    System.out.println("Digite o endereço do secretário");  
    secretario.endereço=sc.nextLine();  
    System.out.println("Digite a data de nascimento do secretário"); 
    secretario.data_nascimento=sc.next();
    
	
    }
    else{System.out.println("secretário já cadastrado ");}
}

public void editarSecretario()

{  
	Scanner sc = new Scanner(System.in);
	
	if (secretario==null){
		
		System.out.println("Não existe secretário cadastrado "); }
	
	else {
		System.out.println("Digite o nome do secretário");  
		secretario.nome=sc.nextLine();  
        System.out.println("Digite o cpf do secretário");  
        secretario.cpf=sc.nextLine();   
        System.out.println("Digite o endereço do secretário");  
        secretario.endereço=sc.nextLine();  
        System.out.println("Digite a data de nascimento do secretário");
        secretario.data_nascimento=sc.next();
		
		
		
	}
	
}



public  void cadastrarTurma(){
	
	
    Scanner sc = new Scanner(System.in);
    System.out.println("Cadastro de turma");
	System.out.println("1-cadastrar 1° serie ");
	System.out.println("2-cadastrar 2° serie ");
	System.out.println("3-cadastrar 3° serie ");
	System.out.println("4-cadastrar 4° serie ");
	System.out.println("5-cadastrar 5° serie ");
	int opp_turma;
	opp_turma=sc.nextInt();
	switch(opp_turma)
	{
	
	case 1:
		
		turma=new Turma();
		turma.setSerie("1");
		System.out.println("Digite o tamanho da turma  "+ opp_turma);
		turma.setTamanho(sc.nextInt());
        
		lista_turma1.add(turma);
		
		
		
		break;
		
	case 2 :
		
		turma=new Turma();
		turma.setSerie("2");
		System.out.println("Digite o tamanho da turma  "+ opp_turma);
		turma.setTamanho(sc.nextInt());
        
		lista_turma2.add(turma);
		break;
		
    case 3:
		
    	turma=new Turma();
		turma.setSerie("3");
		System.out.println("Digite o tamanho da turma  "+ opp_turma);
		turma.setTamanho(sc.nextInt());
        
		lista_turma3.add(turma);
    	
		break;
		
	case 4 :
		
		turma=new Turma();
		turma.setSerie("4");
		System.out.println("Digite o tamanho da turma  "+ opp_turma);
		turma.setTamanho(sc.nextInt());
        
		lista_turma4.add(turma);
		
		break;	
	
    case 5 :
		
    	turma=new Turma();
		turma.setSerie("5");
		System.out.println("Digite o tamanho da turma  "+ opp_turma);
		turma.setTamanho(sc.nextInt());
        
		lista_turma5.add(turma);
    	
		break;	
	
		default:
			
		break;	
	
	
	}
	
}

}

public class Turma 

{
private Professor professor;
private Aluno[] aluno;
private String serie;
private int tamanho;

public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}

public String getSerie() {
return serie;
}
public void setSerie(String serie) {
this.serie = serie;
}
public int getTamanho() {
return tamanho;
}
public void setTamanho(int tamanho) {
this.tamanho = tamanho;
}
public Aluno[] getAluno() {
return aluno;
}
public void setAluno(Aluno[] aluno) {
this.aluno = aluno;
}

}

[/code]

O diretor Cadastrara o secretario, professores e turmas(inclui o limite de aluno em cada turma).
O secretario vincula os professores nas turmas criadas pelo diretor e cadastra os alunos nas turmas com seus respectivos dados .
O professor será vinculado a somente uma turma e colocara as notas e freqüência dos alunos.
O aluno será vinculado a somente uma turma e cosenquetemente a um professor e vai ter as notas e a frequencia.

Para ficar mais simples o programa vai ter apenas 5 turmas.
e cada turma vai ter 8 materias.

Espero que alguem me ajude a resolver esse problema de acesso(QUE ESTÁ NO CODIGO EM FORMA DE COMENTÁRIO)…
Agradeço desde já

if(aluno.getSerie()==1 && lista_alunos1.size()<) 

menor que o que?

Que o tamanho da turma.
Queria colocar lista_turma1.turma.getTamanho()
em cada um desses ifs

Que o tamanho da turma.

if(aluno.getSerie()==1 && lista_alunos1.size()<lista_turma1.turma.getTamanho()) // não tenho acesso a essa lista

Queria colocar em cada um desses ifs

Alguem?