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); + } + } +}