---
# System prepended metadata

title: "\n Java OO Aula 7\n"

---

<p><img src="https://i.imgur.com/D01Fpky.png" alt="" title="Entre no nosso site e veja nossos cursos"></p>
<h1>
<img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"> Java OO Aula 7
</h1>

<p>O objetivo deste curso é abordar os principais conceitos, empregar as principais estruturas de dados, e trabalhar utilizando as principais boas práticas de Programação Orientada a Objetos [POO] em **Java**.
<span></span></p>

<blockquote style="border-left-color: red;">
<p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Fernando Gomes - fernandojnr@gmail.com</small></p></blockquote>


<h2 id="-Tema-da-aula" data-id="-Tema-da-aula"><a class="anchor hidden-xs" href="#-Tema-da-aula" title="-Tema-da-aula"><span class="octicon octicon-link"></span></a><img class="emoji" alt=":book:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/book.png">
<span> Tema da aula:</span></h2><span>
<p>Nessa s&eacute;tima aula, apresentamos o relacionamento <strong>many to many</strong> entre classes.</p>
<p><br />Professor tem uma lista de turmas em que d&aacute; aula; Aluno tem uma lista de turmas em que est&aacute; inscrito.</p>
<p><br />A partir da&iacute;, criamos uma lista de professores de um aluno e uma lista de alunos de cada professor.</p>
<p><br />Utilizamos <strong>stream, map, Collectors.toList() e o m&eacute;todo distinct()</strong> para excluir dados repetidos - porque um aluno, por exemplo, pode estar em duas turmas de disciplinas diferentes mas de um mesmo professor.</p>
<br>
</span>

<h4>
Estrutura do projeto depois de finalizado
</h4>

![](https://i.imgur.com/3Ewuhm8.jpg)

<h3>
Aluno.java
</h3>

```java=
package entity;

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

public class Aluno {

	private Integer idAluno;
	private String nome;
	private List<Turma> turmas;

	public Aluno() {
	}

	// construtor sem a lista de turmas
	public Aluno(Integer idAluno, String nome) {
		this.idAluno = idAluno;
		this.nome = nome;
	}

	// tiramos a lista de turmas do toString
	@Override
	public String toString() {
		return "Aluno [idAluno=" + idAluno 
				+ ", nome=" + nome + "]";
	}

	public Integer getIdAluno() {
		return idAluno;
	}

	public void setIdAluno(Integer idAluno) {
		this.idAluno = idAluno;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<Turma> getTurmas() {
		return turmas;
	}

	public void setTurmas(List<Turma> turmas) {
		this.turmas = turmas;
	}

	public void adicionarTurma(Turma... t) {
		if (this.turmas == null) {
			this.turmas = new ArrayList<Turma>();
		}

		for (Turma x : t)
			this.turmas.add(x);

	}

}


```



<h3>
Professor.java
</h3>

```java=
package entity;

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

public class Professor {

	private Integer idProfessor;
	private String nome;
	private List<Turma> turmas;

	public Professor() {
	}

	// construtor sem a lista de turmas
	public Professor(Integer idProfessor, String nome) {
		this.idProfessor = idProfessor;
		this.nome = nome;
	}

	// tiramos a lista de turmas do toString
	@Override
	public String toString() {
		return "Professor [idProfessor=" 
	+ idProfessor + ", nome=" + nome + "]";
	}

	public Integer getIdProfessor() {
		return idProfessor;
	}

	public void setIdProfessor(Integer idProfessor) {
		this.idProfessor = idProfessor;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<Turma> getTurmas() {
		return turmas;
	}

	public void setTurmas(List<Turma> turmas) {
		this.turmas = turmas;
	}

	public void adicionarTurma(Turma... t) {
		if (this.turmas == null) {
			this.turmas = new ArrayList<Turma>();
		}

		for (Turma x : t)
			this.turmas.add(x);

	}

}


```

<h3>
Turma.java
</h3>

```java=
package entity;

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

public class Turma {

	private String disciplina;
	private Professor professor;
	private List<Aluno> alunos;

	public Turma() {
	}

	// construtor sem a lista de alunos
	public Turma(String disciplina, Professor professor) {
		this.disciplina = disciplina;
		this.professor = professor;
	}

	// removemos a lista de alunos do toString
	@Override
	public String toString() {
		return "Turma [disciplina=" + disciplina 
				+ ", professor=" + professor + "]";
	}

	public String getDisciplina() {
		return disciplina;
	}

	public void setDisciplina(String disciplina) {
		this.disciplina = disciplina;
	}

	public Professor getProfessor() {
		return professor;
	}

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

	public List<Aluno> getAlunos() {
		return alunos;
	}

	public void setAlunos(List<Aluno> alunos) {
		this.alunos = alunos;
	}

	public void adicionarAluno(Aluno... a) {
		if (this.alunos == null) {
			this.alunos = new ArrayList<Aluno>();
		}

		for (Aluno x : a)
			this.alunos.add(x);
	}

}

```

<h3>
ControllerTurma.java
</h3>

```java=
package control;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import entity.Aluno;
import entity.Professor;
import entity.Turma;

public class ControllerTurma {

	public static void listarProfessores(Aluno a) {

		List<String> professores = a.getTurmas().stream()
				.map(x -> x.getProfessor().getNome()).distinct()
				.collect(Collectors.toList());
		System.out.println("Professores de " + a.getNome());
		System.out.println(professores + "\n");

	}

	public static void listarAlunos(Professor p) {

		List<String> turmaCompleta = new ArrayList<String>();
		
		for(Turma t : p.getTurmas()){
		List<String>turma = t.getAlunos().stream().
				map(x->x.getNome()+" >>> "+x.getIdAluno())
				.collect(Collectors.toList());
		turmaCompleta.addAll(turma);
		}
		turmaCompleta = turmaCompleta.stream().distinct()
				.collect(Collectors.toList());
		System.out.println("Alunos de "+p.getNome());
		System.out.println(turmaCompleta);

	}

}


```

<h3>
Main.java
</h3>

```java=
package main;

import control.ControllerTurma;
import entity.Aluno;
import entity.Professor;
import entity.Turma;

public class Main {

	public static void main(String[] args) {

		Aluno joao = new Aluno(10, "joao");
		Professor belem = new Professor(100, "belem");
		Professor luciana = new Professor(101, "luciana");
		Turma t1 = new Turma("JAVA", belem);
		Turma t2 = new Turma("Angular", luciana);
		Turma t3 = new Turma("Oracle", belem);

		joao.adicionarTurma(t1, t2, t3);
		// joao esta em 3 turmas

		belem.adicionarTurma(t1, t3);
		// belem tem 2 turmas

		luciana.adicionarTurma(t2);
		// luciana tem uma turma

		Aluno fernando = new Aluno(11, "fernando");
		Aluno daniel = new Aluno(12, "daniel");
		Aluno giovanni = new Aluno(13, "giovanni");
		Aluno juliana = new Aluno(14, "juliana");
		Aluno priscilla = new Aluno(15, "priscilla");

		t1.adicionarAluno(fernando, daniel);
		t2.adicionarAluno(fernando, juliana, giovanni);
		t3.adicionarAluno(priscilla, daniel, giovanni);

		fernando.adicionarTurma(t1, t2);
		daniel.adicionarTurma(t1, t3);
		juliana.adicionarTurma(t2);
		giovanni.adicionarTurma(t2, t3);
		priscilla.adicionarTurma(t3);

		ControllerTurma.listarProfessores(joao);
		ControllerTurma.listarProfessores(giovanni);
		ControllerTurma.listarProfessores(juliana);

		ControllerTurma.listarAlunos(luciana);
		ControllerTurma.listarAlunos(belem);

	}

}


```

<h5>
Rodando o método main, temos:
</h5>

```=
Professores de joao
[belem, luciana]

Professores de giovanni
[luciana, belem]

Professores de juliana
[luciana]

Alunos de luciana
[fernando >>> 11, juliana >>> 14, 
giovanni >>> 13]
Alunos de belem
[fernando >>> 11, daniel >>> 12, 
priscilla >>> 15, giovanni >>> 13]


```

<blockquote style="border-left-color: red;">
<p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Fernando Gomes - fernandojnr@gmail.com</small></p></blockquote>

<br>
<div class="alert alert-info">
<blockquote style="border-left-color: blue;">
<p><span class="color" data-color="blue"></span><span> </span><small><i class="fa fa-user"></i> E.B. Cursos https://www.cursoseb.com.br/</small><br>
<span class="color" data-color="blue"></span><span> </span><small><i class="fa fa-user"></i> E.B. Cursos EAD https://edsonbelemtreinamento.com.br/ead/</small></p>
</blockquote>
</div>




