Ajuda em java (poo)

Alguém pode me ajudar?
Preciso fazer um programa em Java mas sou iniciante e não consegui pegar todos os conceitos ainda.
O programa consiste em manipular duas classes com os seguintes atributos: Curso(nomeCurso, turno, cargaHoraria) e Disciplina(nomeDisciplina, creditos, cargaHoraria e semestre).
1)Deve solicitar ao usuário os dados de um curso e cria um objeto do tipo “Curso”;
2)Realiza um laço que fica solicitando os dados de todas as disciplinas de um curso e cria os objetos “Disciplina” do curso, associando ao curso criado no item anterior;
3)Após sair do laço de leitura das disciplinas, imprime o nome do curso e em seguida todas as disciplinas do curso.

Não consigo usar o ArrayList para vincular uma classe a outra e sempre que faço um laço, as informações da disciplina não ficam armazenadas no curso

public class Disciplina {

private String nomeDisciplina;
private String creditos;
private String cargaHoraria;
private String semestre;

public String getNomeDisciplina() {
	return nomeDisciplina;
}
public void setnomeDisciplina(String nomeDisciplina) {
	this.nomeDisciplina = nomeDisciplina;
}

public String getCreditos() {
	return creditos;
}
public void setCreditos(String creditos) {
	this.creditos = creditos;
}

public String getcargaHoraria() {
	return cargaHoraria;
}
public void setcargaHoraria(String cargaHoraria) {
	this.cargaHoraria = cargaHoraria;
}
public String getSemestre() {
	return semestre;
}
public void setSemestre(String semestre) {
	this.semestre = semestre;
}

}

import java.util.ArrayList;
import java.util.List;

public class Curso {

private Disciplina[] disciplina;
List<Disciplina> Disciplinas = new ArrayList<Disciplina>();

private String nomeCurso;
private String turno;
private String cargaHoraria;

public String getNome() {
	return nomeCurso;
}
public void setNome(String nomeCurso) {
	this.nomeCurso = nomeCurso;
}

public String getTurno() {
	return turno;
}
public void setTurno(String turno) {
	this.turno = turno;
}

public String getcargaHoraria() {
	return cargaHoraria;
}
public void setcargaHoraria(String cargaHoraria) {
	this.cargaHoraria = cargaHoraria;
}

}

E cadê o código onde você tenta fazer isso?

O Programa vai ser sem banco de dados ? e sem interface ?

observando, vc só vai precisar programar o main_principal

vão ser duas etapas , informação a respeito do curso , no mesmo curso ele armazena as diciplinas do curso 1. curso possui varias disciplinas , então depois de armazenar todas ele volta e pedi informações do curso 2.

for(){         // laço de todo o cadastro

1- curso1:
     1.1- nomecurso= "sistema de informação",
     1.2- turno=" noturno",
     1.3- cargahoraria= "1600h,"

      for(){            //laço de cadastro de diciplinas
     1.4- diciplinas1:
                   1.4.1- nomediciplina="Sistemas Operacionais",
                   1.4.2- creditos="24h",
                   1.4.3- cargahoraria="40h",
                   1.4.4- semestre= 1,
                   1.4.5- curso=1,
      }

}

cara da pra fazer usando for encadeado , dei um exemplo para entender um pouco ,
são dicas ,
vc pode criar listadecurso contendo objeto curso , e lista de diciplinas contendo objeto diciplina com atributo que salva o curso referente.
agora vc precisa aprender a pegar informação do usuario dentro do laço e salvar nos objetos e salvar em uma lista,

como ler dados do teclado e salvar nas variaveis:
Usando Scanner

é ao contrario , a identificação ,no caso numero do curso ,vai para a disciplina como atributo.

Pensei em fazer uma opção de buscar o nome do curso que o usuário digitar e cadastrar as disciplinas desse curso que for encontrado (seria a opção 3, no caso)

package lista;

import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;

public class Cadastro {

public static void main(String[] args) {

	dadosCadastro();
	
}

public static void dadosCadastro() {

Scanner sc = new Scanner(System.in);
Curso curso;
List<Curso> listaCursos = new ArrayList <Curso> ();
Disciplina disciplina;
ArrayList<Disciplina> listaDisciplinas = new ArrayList<Disciplina>();


int opcao=0;


do {
	 System.out.println("Opção 1 - Cadastra curso");
	 System.out.println("Opção 2 - Imprime cursos cadastrados");
	 System.out.println("Opção 3 - Cadastra disciplinas de um curso");
	 System.out.println("Opção 0 - Sair do programa");
	 System.out.print("Digite aqui sua opção: ");
     opcao = Integer.parseInt(sc.nextLine());
     Scanner entrada = new Scanner (System.in);
     
     if(opcao==1) {
    	 curso = new Curso();
    	 //disciplina = new Disciplina();
    	 
    	 System.out.print("Digite o nome do curso: ");
         curso.setNome(sc.nextLine());
          
         System.out.print("Digite o turno: ");
         curso.setTurno(sc.nextLine());
          
         System.out.print("Digite a carga horaria: ");
         curso.setcargaHoraria(sc.nextLine());
         
         
         listaCursos.add(curso);
         
  
         
         
         
        
          
         }else if(opcao == 2){
    	 
    	 System.out.println(listaCursos.toString());
    
    	 System.out.println("Pressione um tecla para continuar.");
    	 sc.nextLine();
    	 
     
         
         } else if(opcao==3) {
        	 
        	 disciplina = new Disciplina();
        	 
        	 System.out.print("Digite o nome da Disciplina: ");
             disciplina.setnomeDisciplina(sc.nextLine());
             
             System.out.print("Digite os creditos: ");
             disciplina.setCreditos(sc.nextLine());
							                  
             System.out.print("Digite a carga horaria: ");
             disciplina.setcargaHoraria(sc.nextLine());
             
             System.out.print("Digite o semestre: ");
             disciplina.setSemestre(sc.nextLine());
             
             listaDisciplinas.add(disciplina);
             
    	 String busca;
         System.out.print("Procure por um curso cadastrado");
         busca  = entrada.nextLine();
         for(Curso item: listaCursos) {
        	 if(item.getNome().equals(busca)) {
        		 
        		 
        		 
        
        
        		 break;
        		 
        		 
                 
        		 
        
        		 
     } else {
    	 
    	 System.out.println("Curso não encontrado!");
     }
     
     
    
}
     }
}

while (opcao != 0);

sc.close();

}
}

Sim sim, eu já sei fazer essa parte do Scanner, depois que percebi que tinha esquecido de postar o main do código. Mas enfim, não havia pensado em fazer dois for, pensei em cadastrar os cursos, uma opção que o usuario buscaria por um curso especifico ja cadastrado(opcao 3) e cadastraria as disciplinas nesse curso, porém ainda não consegui fazer isso.

package lista;

import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;

public class Cadastro {

public static void main(String[] args) {

	dadosCadastro();
	
}

public static void dadosCadastro() {

Scanner sc = new Scanner(System.in);
Curso curso;
List<Curso> listaCursos = new ArrayList <Curso> ();
Disciplina disciplina;
ArrayList<Disciplina> listaDisciplinas = new ArrayList<Disciplina>();


int opcao=0;


do {
	 System.out.println("Opção 1 - Cadastra curso");
	 System.out.println("Opção 2 - Imprime cursos cadastrados");
	 System.out.println("Opção 3 - Cadastra disciplinas de um curso");
	 System.out.println("Opção 0 - Sair do programa");
	 System.out.print("Digite aqui sua opção: ");
     opcao = Integer.parseInt(sc.nextLine());
     Scanner entrada = new Scanner (System.in);
     
     if(opcao==1) {
    	 curso = new Curso();
    	 //disciplina = new Disciplina();
    	 
    	 System.out.print("Digite o nome do curso: ");
         curso.setNome(sc.nextLine());
          
         System.out.print("Digite o turno: ");
         curso.setTurno(sc.nextLine());
          
         System.out.print("Digite a carga horaria: ");
         curso.setcargaHoraria(sc.nextLine());
         
         
         listaCursos.add(curso);
         
  
         
         
         
        
          
         }else if(opcao == 2){
    	 
    	 System.out.println(listaCursos.toString());
    
    	 System.out.println("Pressione um tecla para continuar.");
    	 sc.nextLine();
    	 
     
         
         } else if(opcao==3) {
        	 
        	 disciplina = new Disciplina();
        	 
        	 System.out.print("Digite o nome da Disciplina: ");
             disciplina.setnomeDisciplina(sc.nextLine());
             
             System.out.print("Digite os creditos: ");
             disciplina.setCreditos(sc.nextLine());
							                  
             System.out.print("Digite a carga horaria: ");
             disciplina.setcargaHoraria(sc.nextLine());
             
             System.out.print("Digite o semestre: ");
             disciplina.setSemestre(sc.nextLine());
             
             listaDisciplinas.add(disciplina);
             
    	 String busca;
         System.out.print("Procure por um curso cadastrado");
         busca  = entrada.nextLine();
         for(Curso item: listaCursos) {
        	 if(item.getNome().equals(busca)) {
        		 
        		 
        		 
        
        
        		 break;
        		 
        		 
                 
        		 
        
        		 
     } else {
    	 
    	 System.out.println("Curso não encontrado!");
     }
     
     
    
}
     }
}

while (opcao != 0);

sc.close();

}
}

limitar o seu sistema seria mais facil , exemplo ele entra cadastra o curso e suas disciplinas de uma vez , assim não vai dar problema a nivel de usuario sabe .

faz usando esses dois ‘for’ ficara mais certinho.

quando souber integrar java com banco de dados ficara facil manipular essas informações que se relacionam. esse exercicio é pra vc entender como é trabalhoso criar relacionamento na pratica em algoritmo