Programa Java - Orientação Objeto

Crie um programa, modo DOS/Console, que permita realizar o cadastro de CASAS. O usuário deve poder cadastrar quantas casas ele desejar!
Ao cadastrar uma nova casa, ele indica a sua cor e vai adicionando PORTAS e JANELAS de forma livre, ou seja, sem limite de quantidade. Cada porta ou janela deve ter suas dimensões definidas, uma cor, e um nome
O programa deve permitir que sejam listadas todas as casas, e de cada uma delas permitir listar todas as portas e janelas, realizar a abertura e fechamento de cada uma delas de forma individual, disparar um alarme que retorne todas as portas e janelas que estão abertas

Fiz esses códigos…

public class Casa {

private String color;
private Porta[] portas = new Porta[3];
public Casa() {
     this(3);
}
public Casa(int numeroDePortas) {
     portas = new Porta[numeroDePortas];
    Porta[] porta = null;
     for(int i = 0; i < portas.length ; i++)
        porta[i] = new Porta();
}
//Prof, use fecharPorta(1) para fechar a 1° porta e fecharPorta(3) para a terceira...
public void fecharPorta(int numero) {
    portas[numero-1].fechar();
}
public void abrirPorta(int numero) {
    int numer = 0;
    portas[numer-1].abrir();
}
public int quantidadeDePortasAbertas() {
    int portasAbertas = 0;
    for(Porta porta : portas)
        if (porta.isAberta())
             portasAbertas++;
    return portasAbertas;
}
public int quantidadeDePortasFechadas() {
    return portas.length - quantidadeDePortasAbertas();
}

}

e o da porta…

class Porta {
private boolean aberta = false;
public Porta() {
}
public void abrir() {
this.aberta = true;
}
public void fechar() {
this.aberta = false;
}
public boolean isAberta() {
return aberta;
}
public boolean isFechada() {
return !aberta;
}
}

Faltou dizer em que ponto está com dúvida nesse código.

Não consigo fazer ele funcionar e certamente esta faltando uns detalhes

Seja mais específico para que alguém consiga te ajudar. Desenvolva e teste por partes pequenas, senão vai ficar perdido com o todo sem saber se reportar direito em que problema específico empacou.