<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>