diff --git a/empresaSoftware/.gitignore b/empresaSoftware/.gitignore
new file mode 100644
index 0000000..1a3879a
--- /dev/null
+++ b/empresaSoftware/.gitignore
@@ -0,0 +1,30 @@
+### IntelliJ IDEA ###
+.idea/
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/empresaSoftware/.idea/.gitignore b/empresaSoftware/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/empresaSoftware/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/empresaSoftware/.idea/misc.xml b/empresaSoftware/.idea/misc.xml
new file mode 100644
index 0000000..6f29fee
--- /dev/null
+++ b/empresaSoftware/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/empresaSoftware/.idea/modules.xml b/empresaSoftware/.idea/modules.xml
new file mode 100644
index 0000000..5bcdc51
--- /dev/null
+++ b/empresaSoftware/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/empresaSoftware/.idea/uiDesigner.xml b/empresaSoftware/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/empresaSoftware/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/empresaSoftware/.idea/vcs.xml b/empresaSoftware/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/empresaSoftware/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/empresaSoftware/empresaSoftware.iml b/empresaSoftware/empresaSoftware.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/empresaSoftware/empresaSoftware.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/empresaSoftware/src/application/Main.java b/empresaSoftware/src/application/Main.java
new file mode 100644
index 0000000..7d9a956
--- /dev/null
+++ b/empresaSoftware/src/application/Main.java
@@ -0,0 +1,35 @@
+package application;
+
+import entities.*;
+import utils.OrganogramaFuncionarios;
+
+public class Main {
+ public static void main(String[] args) {
+ OrganogramaFuncionarios organogramaGeral = new OrganogramaFuncionarios();
+
+ FuncionarioQA func1 = new FuncionarioQA("José","000.000.000-01");
+ FuncionarioCLevel func2 = new FuncionarioCLevel("João","000.000.000-02");
+ FuncionarioDados func3 = new FuncionarioDados("José","000.000.000-03");
+ FuncionarioDesign func4 = new FuncionarioDesign("Maria","000.000.000-04");
+ FuncionarioDevOps func5 = new FuncionarioDevOps("Larissa","000.000.000-05");
+ FuncionarioEngSoft func6 = new FuncionarioEngSoft("Cecília","000.000.000-06");
+ FuncionarioGerente func7 = new FuncionarioGerente("Agatha","000.000.000-07");
+ FuncionarioVP func8 = new FuncionarioVP("Christian","000.000.000-08");
+
+ System.out.println("ADICIONANDO FUNCIONÁRIOS AO ORGANOGRAMA GERAL");
+ organogramaGeral.adicionarFuncionario(func1);
+ organogramaGeral.adicionarFuncionario(func2);
+ organogramaGeral.adicionarFuncionario(func3);
+ organogramaGeral.adicionarFuncionario(func4);
+ organogramaGeral.adicionarFuncionario(func5);
+ organogramaGeral.adicionarFuncionario(func6);
+ organogramaGeral.adicionarFuncionario(func7);
+ organogramaGeral.adicionarFuncionario(func8);
+
+ System.out.println("MOSTRANDO ORGANOGRAMA GERAL");
+ organogramaGeral.mostrarTodosFuncionarios();
+
+ System.out.println("REMOVENDO UM FUNCIONÁRIO DO ORGANOGRAMA GERAL");
+ organogramaGeral.removerFuncionario(func6.getCpfFuncionario());
+ }
+}
\ No newline at end of file
diff --git a/empresaSoftware/src/entities/FuncionarioCLevel.java b/empresaSoftware/src/entities/FuncionarioCLevel.java
new file mode 100644
index 0000000..d602276
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioCLevel.java
@@ -0,0 +1,28 @@
+package entities;
+
+import utils.FuncionarioBase;
+
+public class FuncionarioCLevel extends FuncionarioBase {
+ public FuncionarioCLevel(String nomeCLevel, String cpfCLevel){
+ super(nomeCLevel, cpfCLevel);
+ this.cargoFuncionario = "C-Level";
+ this.salarioFuncionario = 20000;
+ }
+ public FuncionarioCLevel(String nomeCLevel, String cpfCLevel, String enderecoCLevel){
+ super(nomeCLevel, cpfCLevel, enderecoCLevel);
+ this.cargoFuncionario = "C-Level";
+ this.salarioFuncionario = 20000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Chefiando o setor");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+
+ public void demitir(){
+ System.out.println("Você está demitido!");
+ }
+}
diff --git a/empresaSoftware/src/entities/FuncionarioDados.java b/empresaSoftware/src/entities/FuncionarioDados.java
new file mode 100644
index 0000000..574a254
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioDados.java
@@ -0,0 +1,24 @@
+package entities;
+
+import utils.FuncionarioBase;
+
+public class FuncionarioDados extends FuncionarioBase {
+ public FuncionarioDados(String nomeDados, String cpfDados){
+ super(nomeDados, cpfDados);
+ this.cargoFuncionario = "Analista de dados";
+ this.salarioFuncionario = 11000;
+ }
+ public FuncionarioDados(String nomeDados, String cpfDados, String enderecoDados){
+ super(nomeDados, cpfDados, enderecoDados);
+ this.cargoFuncionario = "Analista de dados";
+ this.salarioFuncionario = 11000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Analisando os dados");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+}
diff --git a/empresaSoftware/src/entities/FuncionarioDesign.java b/empresaSoftware/src/entities/FuncionarioDesign.java
new file mode 100644
index 0000000..ccf2120
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioDesign.java
@@ -0,0 +1,24 @@
+package entities;
+
+import utils.FuncionarioBase;
+
+public class FuncionarioDesign extends FuncionarioBase {
+ public FuncionarioDesign(String nomeDesign, String cpfDesign){
+ super(nomeDesign, cpfDesign);
+ this.cargoFuncionario = "Designer";
+ this.salarioFuncionario = 10000;
+ }
+ public FuncionarioDesign(String nomeDesign, String cpfDesign, String enderecoDesign){
+ super(nomeDesign, cpfDesign, enderecoDesign);
+ this.cargoFuncionario = "Designer";
+ this.salarioFuncionario = 10000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Fazendo o layout do projeto");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+}
diff --git a/empresaSoftware/src/entities/FuncionarioDevOps.java b/empresaSoftware/src/entities/FuncionarioDevOps.java
new file mode 100644
index 0000000..ec393d6
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioDevOps.java
@@ -0,0 +1,24 @@
+package entities;
+
+import utils.FuncionarioBase;
+
+public class FuncionarioDevOps extends FuncionarioBase {
+ public FuncionarioDevOps(String nomeDevOps, String cpfDevOps){
+ super(nomeDevOps, cpfDevOps);
+ this.cargoFuncionario = "DevOps";
+ this.salarioFuncionario = 12000;
+ }
+ public FuncionarioDevOps(String nomeDevOps, String cpfDevOps, String enderecoDevOps){
+ super(nomeDevOps, cpfDevOps, enderecoDevOps);
+ this.cargoFuncionario = "DevOps";
+ this.salarioFuncionario = 12000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Fazendo o deploy");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+}
diff --git a/empresaSoftware/src/entities/FuncionarioEngSoft.java b/empresaSoftware/src/entities/FuncionarioEngSoft.java
new file mode 100644
index 0000000..390e80b
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioEngSoft.java
@@ -0,0 +1,25 @@
+package entities;
+
+import utils.FuncionarioBase;
+import utils.OrganogramaFuncionarios;
+
+public class FuncionarioEngSoft extends FuncionarioBase {
+ public FuncionarioEngSoft(String nomeEngSoft, String cpfEngSoft){
+ super(nomeEngSoft, cpfEngSoft);
+ this.cargoFuncionario = "Engenheiro de software";
+ this.salarioFuncionario = 12000;
+ }
+ public FuncionarioEngSoft(String nomeEngSoft, String cpfEngSoft, String enderecoEngSoft){
+ super(nomeEngSoft, cpfEngSoft, enderecoEngSoft);
+ this.cargoFuncionario = "Engenheiro de software";
+ this.salarioFuncionario = 12000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Fazendo o software");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+}
diff --git a/empresaSoftware/src/entities/FuncionarioGerente.java b/empresaSoftware/src/entities/FuncionarioGerente.java
new file mode 100644
index 0000000..077cd36
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioGerente.java
@@ -0,0 +1,24 @@
+package entities;
+
+import utils.FuncionarioBase;
+
+public class FuncionarioGerente extends FuncionarioBase {
+ public FuncionarioGerente(String nomeGerente, String cpfGerente){
+ super(nomeGerente, cpfGerente);
+ this.cargoFuncionario = "Gerente";
+ this.salarioFuncionario = 15000;
+ }
+ public FuncionarioGerente(String nomeGerente, String cpfGerente, String enderecoGerente){
+ super(nomeGerente, cpfGerente, enderecoGerente);
+ this.cargoFuncionario = "Gerente";
+ this.salarioFuncionario = 15000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Gerenciando o setor");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+}
diff --git a/empresaSoftware/src/entities/FuncionarioQA.java b/empresaSoftware/src/entities/FuncionarioQA.java
new file mode 100644
index 0000000..134d299
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioQA.java
@@ -0,0 +1,25 @@
+package entities;
+
+import utils.FuncionarioBase;
+
+public class FuncionarioQA extends FuncionarioBase {
+
+ public FuncionarioQA(String nomeQA, String cpfQA){
+ super(nomeQA, cpfQA);
+ this.cargoFuncionario = "QA";
+ this.salarioFuncionario = 11000;
+ }
+ public FuncionarioQA(String nomeQA, String cpfQA, String enderecoQA){
+ super(nomeQA, cpfQA, enderecoQA);
+ this.cargoFuncionario = "QA";
+ this.salarioFuncionario = 11000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Testando os critérios de qualidade do projeto");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+}
diff --git a/empresaSoftware/src/entities/FuncionarioVP.java b/empresaSoftware/src/entities/FuncionarioVP.java
new file mode 100644
index 0000000..4c76acd
--- /dev/null
+++ b/empresaSoftware/src/entities/FuncionarioVP.java
@@ -0,0 +1,24 @@
+package entities;
+
+import utils.FuncionarioBase;
+
+public class FuncionarioVP extends FuncionarioBase {
+ public FuncionarioVP(String nomeVP, String cpfVP){
+ super(nomeVP, cpfVP);
+ this.cargoFuncionario = "VP";
+ this.salarioFuncionario = 17000;
+ }
+ public FuncionarioVP(String nomeVP, String cpfVP, String enderecoVP){
+ super(nomeVP, cpfVP, enderecoVP);
+ this.cargoFuncionario = "VP";
+ this.salarioFuncionario = 17000;
+ }
+
+ @Override
+ public void trabalhar(){
+ System.out.println("Chefiando o setor provisoriamente");
+ System.out.println(".");
+ System.out.println(".");
+ System.out.println(".");
+ }
+}
diff --git a/empresaSoftware/src/utils/ArvoreBinariaFromScratch.java b/empresaSoftware/src/utils/ArvoreBinariaFromScratch.java
new file mode 100644
index 0000000..9e4bd3b
--- /dev/null
+++ b/empresaSoftware/src/utils/ArvoreBinariaFromScratch.java
@@ -0,0 +1,100 @@
+package utils;
+
+public class ArvoreBinariaFromScratch {
+ private NodeFuncionario root;
+ public ArvoreBinariaFromScratch(){
+ root = null;
+ }
+
+ private NodeFuncionario inserirRecursivo(NodeFuncionario nodeFuncionario, FuncionarioBase funcionario){
+ if(nodeFuncionario == null){
+ return new NodeFuncionario(funcionario);
+ }
+ if(funcionario.getNomeFuncionario().compareTo(nodeFuncionario.funcionario.getNomeFuncionario()) < 0){
+ nodeFuncionario.leftChild = inserirRecursivo(nodeFuncionario.leftChild, funcionario);
+ }
+ else if (funcionario.getNomeFuncionario().compareTo(nodeFuncionario.funcionario.getNomeFuncionario()) > 0){
+ nodeFuncionario.rightChild = inserirRecursivo(nodeFuncionario.rightChild, funcionario);
+ }
+
+ return nodeFuncionario;
+ }
+
+ private void inserirNodeFuncionario(FuncionarioBase funcionario){
+ root = inserirRecursivo(root, funcionario);
+ }
+
+ private FuncionarioBase buscarRecursivo(NodeFuncionario nodeFuncionario, String nomeFuncionario){
+ if (nodeFuncionario == null || nodeFuncionario.funcionario.getNomeFuncionario().equals(nomeFuncionario)){
+ return nodeFuncionario == null ? null : nodeFuncionario.funcionario;
+ }
+ if (nomeFuncionario.compareTo(nodeFuncionario.funcionario.getNomeFuncionario()) < 0){
+ return buscarRecursivo(nodeFuncionario.leftChild, nomeFuncionario);
+ }
+ else if (nomeFuncionario.compareTo(nodeFuncionario.funcionario.getNomeFuncionario()) > 0){
+ return buscarRecursivo(nodeFuncionario.rightChild, nomeFuncionario);
+ }
+
+ return null;
+ }
+
+ public FuncionarioBase buscarFuncionario(String nomeFuncionario){
+ return buscarRecursivo(root, nomeFuncionario);
+ }
+
+ private NodeFuncionario removerRecursivo(NodeFuncionario nodeFuncionario, String nomeFuncionario){
+ if (nodeFuncionario == null){
+ return null;
+ }
+ if (nomeFuncionario.compareTo(nodeFuncionario.funcionario.getNomeFuncionario()) < 0){
+ nodeFuncionario.leftChild = removerRecursivo(nodeFuncionario.leftChild, nomeFuncionario);
+ }
+ else if (nomeFuncionario.compareTo(nodeFuncionario.funcionario.getNomeFuncionario()) > 0){
+ nodeFuncionario.rightChild = removerRecursivo(nodeFuncionario.rightChild, nomeFuncionario);
+ }
+ else {
+ if (nodeFuncionario.leftChild == null){
+ return nodeFuncionario.rightChild;
+ }
+ else if(nodeFuncionario.rightChild == null){
+ return nodeFuncionario.leftChild;
+ }
+
+ nodeFuncionario.funcionario = achaMenorFuncionario(nodeFuncionario.rightChild);
+ nodeFuncionario.rightChild = removerRecursivo(nodeFuncionario.rightChild, nodeFuncionario.funcionario.getNomeFuncionario());
+ }
+
+ return nodeFuncionario;
+ }
+
+ public void removerFuncionario(String nomeFuncionario){
+ root = removerRecursivo(root, nomeFuncionario);
+ }
+
+ private FuncionarioBase achaMenorFuncionario(NodeFuncionario nodeFuncionario){
+ FuncionarioBase menorFuncionario = nodeFuncionario.funcionario;
+
+ while (nodeFuncionario.leftChild != null) {
+ menorFuncionario = nodeFuncionario.leftChild.funcionario;
+ nodeFuncionario = nodeFuncionario.leftChild;
+
+ }
+
+ return menorFuncionario;
+ }
+
+ public void mostrarDadosOrdenados(){
+ mostrarDadosOrdenadosRecursivo(root);
+ }
+
+ private void mostrarDadosOrdenadosRecursivo(NodeFuncionario nodeFuncionario){
+ if (nodeFuncionario != null){
+ mostrarDadosOrdenadosRecursivo(nodeFuncionario.leftChild);
+ mostrarDadosOrdenadosRecursivo(nodeFuncionario.rightChild);
+ System.out.println(nodeFuncionario.funcionario.getNomeFuncionario() + " - " + nodeFuncionario.funcionario.getCargoFuncionario());
+ }
+ else {
+ System.out.println("Árvore vazia");
+ }
+ }
+}
diff --git a/empresaSoftware/src/utils/FuncionarioBase.java b/empresaSoftware/src/utils/FuncionarioBase.java
new file mode 100644
index 0000000..776f79f
--- /dev/null
+++ b/empresaSoftware/src/utils/FuncionarioBase.java
@@ -0,0 +1,76 @@
+package utils;
+
+public abstract class FuncionarioBase implements InterfaceFuncionario{
+ // atributos
+ protected String nomeFuncionario;
+ protected String cpfFuncionario;
+ protected String enderecoFuncionario = "";
+ protected String cargoFuncionario;
+ protected double salarioFuncionario = 0;
+
+ // construtor
+ public FuncionarioBase(String nomeFuncionario, String cpfFuncionario, String enderecoFuncionario){
+ this.nomeFuncionario = nomeFuncionario;
+ this.cpfFuncionario = cpfFuncionario;
+ this.enderecoFuncionario = enderecoFuncionario;
+ }
+
+ public FuncionarioBase(String nomeFuncionario, String cpfFuncionario){
+ this.nomeFuncionario = nomeFuncionario;
+ this.cpfFuncionario = cpfFuncionario;
+ }
+
+ // métodos
+ @Override
+ public String getNomeFuncionario() {
+ return nomeFuncionario;
+ }
+ @Override
+ public void setNomeFuncionario(String nomeFuncionario) {
+ this.nomeFuncionario = nomeFuncionario;
+ }
+ @Override
+ public String getEnderecoFuncionario(){
+ return enderecoFuncionario;
+ }
+ @Override
+ public void setEnderecoFuncionario(String enderecoFuncionario){
+ this.nomeFuncionario = nomeFuncionario;
+ }
+ @Override
+ public String getCargoFuncionario() {
+ return cargoFuncionario;
+ }
+ @Override
+ public void setCargoFuncionario(String cargoFuncionario) {
+ this.cargoFuncionario = cargoFuncionario;
+ }
+ @Override
+ public double getSalarioFuncionario() {
+ return salarioFuncionario;
+ }
+ @Override
+ public void setSalarioFuncionario(double salarioFuncionario) {
+ this.salarioFuncionario = salarioFuncionario;
+ }
+ @Override
+ public String getCpfFuncionario() {
+ return cpfFuncionario;
+ }
+ @Override
+ public void setCpfFuncionario(String cpfFuncionario) {
+ this.cpfFuncionario = cpfFuncionario;
+ }
+
+ public void adicionaEndereco(String endereco){
+ setEnderecoFuncionario(endereco);
+ System.out.println("Endereço cadastrado");
+ }
+
+ public void atualizarSalario(double novoSalario){
+ setSalarioFuncionario(novoSalario);
+ System.out.println("Salário atualizado");
+ }
+
+ public abstract void trabalhar();
+}
diff --git a/empresaSoftware/src/utils/InterfaceFuncionario.java b/empresaSoftware/src/utils/InterfaceFuncionario.java
new file mode 100644
index 0000000..b35ccb6
--- /dev/null
+++ b/empresaSoftware/src/utils/InterfaceFuncionario.java
@@ -0,0 +1,14 @@
+package utils;
+
+public interface InterfaceFuncionario {
+ String getNomeFuncionario();
+ void setNomeFuncionario(String nomeFuncionario);
+ String getCpfFuncionario();
+ void setCpfFuncionario(String cpfFuncionario);
+ String getEnderecoFuncionario();
+ void setEnderecoFuncionario(String enderecoFuncionario);
+ String getCargoFuncionario();
+ void setCargoFuncionario(String cargoFuncionario);
+ double getSalarioFuncionario();
+ void setSalarioFuncionario(double salarioFuncionario);
+}
diff --git a/empresaSoftware/src/utils/NodeFuncionario.java b/empresaSoftware/src/utils/NodeFuncionario.java
new file mode 100644
index 0000000..a35c76e
--- /dev/null
+++ b/empresaSoftware/src/utils/NodeFuncionario.java
@@ -0,0 +1,13 @@
+package utils;
+
+public class NodeFuncionario{
+ FuncionarioBase funcionario;
+ NodeFuncionario leftChild;
+ NodeFuncionario rightChild;
+
+ public NodeFuncionario(FuncionarioBase funcionario){
+ this.funcionario = funcionario;
+ leftChild = null;
+ rightChild = null;
+ }
+}
diff --git a/empresaSoftware/src/utils/OrganogramaFuncionarios.java b/empresaSoftware/src/utils/OrganogramaFuncionarios.java
new file mode 100644
index 0000000..6b438f6
--- /dev/null
+++ b/empresaSoftware/src/utils/OrganogramaFuncionarios.java
@@ -0,0 +1,51 @@
+package utils;
+
+import java.util.TreeSet;
+
+public class OrganogramaFuncionarios {
+ private TreeSet arvoreFuncionarios;
+
+ public OrganogramaFuncionarios(){
+ arvoreFuncionarios = new TreeSet((funcionario1,funcionario2) -> funcionario1.getCpfFuncionario().compareTo(funcionario2.getCpfFuncionario()));
+ System.out.println("Organograma criado");
+ }
+
+ public void adicionarFuncionario(FuncionarioBase funcionario){
+ arvoreFuncionarios.add(funcionario);
+ System.out.printf("Funcionário de CPF %s adicionado ao organograma\n", funcionario.getCpfFuncionario());
+ }
+
+ public FuncionarioBase buscarFuncionario(String cpfFuncionario){
+ for (FuncionarioBase funcionario : arvoreFuncionarios){
+ if (funcionario.getCpfFuncionario().equals(cpfFuncionario)){
+ return funcionario;
+ }
+ }
+ System.out.printf("CPF %s não foi encontrado no organograma\n", cpfFuncionario);
+ return null;
+ }
+
+ public void removerFuncionario(String cpfFuncionario){
+ FuncionarioBase funcionarioDesligado = buscarFuncionario(cpfFuncionario);
+ if(funcionarioDesligado != null){
+ arvoreFuncionarios.remove(funcionarioDesligado);
+ System.out.printf("Funcionário de CPF %s removido do organograma\n", cpfFuncionario);
+ }
+ }
+
+ public void mostrarTodosFuncionarios(){
+ System.out.println("Lista de funcionários cadastrados:");
+ for (FuncionarioBase funcionario : arvoreFuncionarios){
+ System.out.printf("Nome: %s (%s) - %s - R$ %.2f\n", funcionario.getNomeFuncionario(), funcionario.getCpfFuncionario(), funcionario.getCargoFuncionario(), funcionario.getSalarioFuncionario());
+ }
+ }
+
+ public void atualizarFuncionario(String cpfFuncionario, String nomeFuncionario, String enderecoFuncionario, String cargoFuncionario){
+ FuncionarioBase funcionarioAtualizado = buscarFuncionario(cpfFuncionario);
+ if (funcionarioAtualizado != null){
+ funcionarioAtualizado.setNomeFuncionario(nomeFuncionario);
+ funcionarioAtualizado.setEnderecoFuncionario(enderecoFuncionario);
+ System.out.printf("Nome e endereço do funcionário de CPF %s atualizado\n", cpfFuncionario);
+ }
+ }
+}