Skip to content

Commit

Permalink
Aprendido Sobre Polimorfismo de Objetos JS
Browse files Browse the repository at this point in the history
  • Loading branch information
AsrielDreemurrGM committed Oct 9, 2024
1 parent 7182a05 commit b4c9678
Showing 1 changed file with 54 additions and 6 deletions.
60 changes: 54 additions & 6 deletions src/scripts/funcionario.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ function divisoria(texto) {
}

// Estudo Sobre Herança de Objetos;
// Herança: A capacidade de uma Função Construtora chamar outra Função Construtora e,
// Assim, Herdar seus atributos;
// Função Construtora;
function Pessoa(nome) {
this.nome = nome;
Expand All @@ -21,6 +23,7 @@ function Pessoa(nome) {
function Funcionario(nome, cargo, salario) {
this.cargo = cargo;
// this.salario = salario;
// Encapsulamento: Capacidade de fazer variáveis ficaram públicas ou privadas, além de realizar verificações;
// O Encapsulamento envolve tornar variáveis privadas, impedindo sua modificação ou acesso se não necessário;
// Para tornar uma variável privada, não podemos usar o "this", precisamos
// declarar a variável, e por convenção, é utilizado o "_" antes do nome da mesma
Expand All @@ -42,23 +45,68 @@ function Funcionario(nome, cargo, salario) {
}
}

// Para fazer uma Herança no JS é necessário chamar a Função
// Construtora logo depois dos atributos da classe que irá Herda-lá;
// Polimorfismo: A capacidade de fazer a mesma tarefa de formas diferentes;
this.aumento = function() {
// Desejamos dar um aumento de somente 7 porcento ao cargo de estagiario;
// Se não tivessemos o Polimorfismo, teriamso que fazer isto da maneira abaixo;
// if (cargo === estagiario) {aumento de 7%};
const novoSalario = _salario * 1.1;
_salario = novoSalario;
}

// Para fazer uma Herança no JS é necessário chamar a Função Construtora
// logo depois dos atributos da classe que irá Herda-lá;

Pessoa.call(this, nome);
}

const pessoa1 = new Pessoa("Maria");
// Como temos o Polimorfismo, podemos fazer esta tarefa através de uma nova Classe
// Esta funçao Herda de Funcionario;
function Estagiario(nome) {
Funcionario.call(this, nome, "Estagiário", 2000);

this.aumento = function() {
const novoSalario = this.getSalario() * 1.07;
this.setSalario(novoSalario);
}
}
// O Polimorfismo é isto, a capacidade de executar a mesma tarefa (aumento) de forams diferentes;
// Polimorfismo: Ter vários métodos para a mesma finalidade, mas com uma implementação/jeito diferente de fazer isto;
function Gerente(nome) {
Funcionario.call(this, nome, "Gerente", 10000);

this.aumento = function() {
const novoSalario = this.getSalario() * 1.15;
this.setSalario(novoSalario);
}
}

// const pessoa1 = new Pessoa("Maria");
const funcionario1 = new Funcionario("Maria", "Dev Front-End", 5000);
const funcionario2 = new Estagiario("Pedro");
const funcionario3 = new Gerente("Paula");

divisoria("Saudação do Funcionário");
funcionario1.dizOi();
funcionario2.dizOi();
funcionario3.dizOi();
divisoria("Cargo do Funcionário");
funcionario1.dizCargo();
funcionario2.dizCargo();
funcionario3.dizCargo();
divisoria("Salário do Funcionário");
console.log(funcionario1.getSalario());
console.log(funcionario2.getSalario());
console.log(funcionario3.getSalario());
divisoria("Novo Salário do Funcionário");

funcionario1.setSalario(7000);
funcionario1.setSalario('mil'); // Tentando mudar o valor para String para testar a validação
console.log(funcionario1.getSalario());
// funcionario1.setSalario(7000);
// funcionario1.setSalario('mil'); // Tentando mudar o valor para String para testar a validação
// console.log(funcionario1.getSalario());

funcionario1.aumento();
console.log(funcionario1.getSalario());
funcionario2.aumento();
console.log(funcionario2.getSalario());
funcionario3.aumento();
console.log(funcionario3.getSalario());

0 comments on commit b4c9678

Please sign in to comment.