-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
…etos
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
<h1> Mentoria: Abstraindo situações do mundo real com Orientação a | ||
Objetos </h1> | ||
|
||
<h2 align="center"> ⚠️ <a href="https://docs.google.com/presentation/d/1fjYpumCvVVNZQgwf-FeCvUR2ADNLnnCD/edit?usp=sharing&ouid=107351545544725249935&rtpof=true&sd=true"> SLIDES DA MENTORIA </a> ⚠️ </h2> | ||
|
||
O objetivo principal é colocar em prática umas das principais ferramentas da OO: <strong>ABSTRAÇÃO, ENCAPSULAMENTO, HERANÇA, COMPOSIÇÃO E POLIMORFISMO</strong> através de um projeto Java. </p> | ||
|
||
|
||
<h2>🛑 Pré-Requisitos</h2> | ||
|
||
<p> | ||
✅ Conhecer a sintaxe da Java<br> | ||
✅ Java JDK 8+<br> | ||
✅ IDE para desenvolvimento Java (usarei IntelliJ)<br> | ||
</p> | ||
|
||
<h2> 🎯 Desafio</h2> | ||
|
||
<p>Modelar as entidades de uma aplicação de <strong>Gerenciamento de Colaboradores</strong> de uma loja.<br> | ||
Dentre as outras funcionalidades (as quais você não precisará implementar), esse sistema terá a funcionalidade de calcular a bonificação dos colaboradores dessa loja seguindo as seguintes regras:</p> | ||
|
||
<ul> | ||
<li>Vendedor é um Funcionário CLT e tem o benefício de bonificação.</li> | ||
<li>Operador de Caixa é um funcionário CLT, mas não tem o benefício da bonificação.</li> | ||
<li>Gerente é um Funcionário PJ e tem o benefício da bonificação.</li> | ||
</ul> | ||
|
||
<h3>Colaboradores</h3> | ||
<ol> | ||
<li>Vendedor:</li> nome, documento, salario, valor da bonificação e endereço. | ||
<li>Operador de Caixa:</li> nnome, documento, salario e endereço. | ||
<li>Gerente:</li> nome, documento, horas trabalhadas, valorHora, endereço e valor da bonificação. | ||
</ol> | ||
|
||
|
||
---- | ||
|
||
<h2> 📚 Paradigma de Programação Orientado a Objetos (POO) </h2> | ||
|
||
<p align="center"> | ||
<img src="https://materiais.imd.ufrn.br/materialV2/assets/imagens/programacao-orientada-a-objetos/prog_orient_a_obj_01_f04_l.jpg" width="600" height="400" alt="pilares-POO"> | ||
</p> | ||
|
||
<p> | ||
A visão de Orientação a Objetos (OO) é aquela de um mundo de objetos que interagem.<br> | ||
Este paradigma é um modelo de análise, projeto e programação baseado na aproximação entre o mundo real e o mundo virtual, através da criação e interação entre classes, atributos, métodos, objetos, entre outros.<br> | ||
A observação do mundo real compõe o princípio da ABSTRAÇÃO, sendo considerada a base da Orientação a Objetos.<br> | ||
São 4 os pilares principais do POO: ENCAPSULAMENTO, HERANÇA, COMPOSIÇÃO E POLIMORFISMO. | ||
</p> | ||
|
||
<h3>🔺 ENCAPSULAMENTO:</h3> | ||
<p>Encapsular significa esconder a implementação dos objetos. O encapsulamento favorece principalmente dois aspectos de um sistema: a manutenção e a evolução.</p> | ||
|
||
<h3>🔺 HERANÇA:</h3> | ||
<p>Permite que objetos sejam referenciados como pai e filhos, em que os objetos filhos herdam todas as características do objeto pai, mas o objeto pai nada herda do filho. Isso reduz a duplicação de código-fonte.</p> | ||
|
||
<h3> 🔺 COMPOSIÇÃO:</h3> | ||
<p>Busca representar as relações que os objetos devem ter, baseando-se nas relações que existem na vida real. Isso faz com que os objetos sejam reaproveitados, evitando duplicidade e mantendo a simplicidade.</p> | ||
|
||
<h3> 🔺 POLIMORFISMO:</h3> | ||
<p>Com o polimorfismo, podemos transformar objetos diferentes em objetos que conseguem trocar mensagem por meio da generalização de suas características.</p> | ||
|
||
<h2 align="center"> ‼️ CONCEITOS FUNDAMENTAIS POO ‼️ </h2> | ||
|
||
<h3>🔻 DOMÍNIO:</h3> | ||
Domínio da aplicação, também conhecida como camada de negócio ou de objetos de negócio, é aquela onde estão localizadas as classes que fazem parte do domínio do problema, ou seja, classes correspondentes a objetos que fazem parte da descrição do problema. | ||
|
||
<h3>🔻 CLASSE: </h3> | ||
Um elemento do código que tem a função de representar objetos do mundo real. Dentro dela é comum declararmos atributos e métodos, que representam, respectivamente, as características e comportamentos desse objeto. | ||
|
||
<h3>🔻 ATRIBUTO: </h3> | ||
Atributos são, basicamente, a estrutura de dados que vai representar a classe. Os atributos também são conhecidos como VARIÁVEL DE CLASSE, e podem ser divididos em dois tipos básicos: atributos de instância e de classe. | ||
|
||
<h3>🔻 VARIÁVEL: </h3> | ||
Uma “região de memória (do computador) previamente identificada cuja finalidade é armazenar os dados ou informações de um programa por um determinado espaço de tempo”. | ||
|
||
<h3>🔻 MÉTODO: </h3> | ||
Os métodos representam os estados e ações dos objetos e classes. | ||
|
||
<h3>🔻 OBJETO: </h3> | ||
Em POO, objeto é um "molde" de uma determinada classe, que passa a existir a partir de uma instância da classe. A classe define o comportamento do objeto, usando atributos (propriedades) e métodos (ações). | ||
Objeto em ciência da computação, é uma referência a um local da memória que possui um valor. Um objeto pode ser uma variável, função, ou estrutura de dados. | ||
|
||
<h3>🔻 INSTÂNCIA: </h3> | ||
Uma instância de uma classe é um novo objeto criado dessa classe, com o operador new. Instanciar uma classe é criar um novo objeto do mesmo tipo dessa classe. Uma classe somente poderá ser utilizada após ser instanciada. | ||
|
||
------------ | ||
<h2 align="center">📝 <a href="https://github.com/cami-la/projeto_classes_poo_youtube">Exercícios de Fixação</a></h2> | ||
|
||
<h2> 🤝 Contribuindo </h2> | ||
|
||
<p> | ||
Este repositório foi criado para fins de estudo, então contribua com ele.<br> | ||
Se te ajudei de alguma forma, ficarei feliz em saber. E caso você conheça alguém que se identidique com o conteúdo, não deixe de compatilhar.<br> | ||
<br> | ||
Se possível:<br> | ||
⭐️ Star o projeto<br> | ||
🐛 Encontrar e relatar issues<br> | ||
</p> | ||
|
||
------------ | ||
|
||
Disponibilizado com ♥ por [cami-la](https://www.linkedin.com/in/cami-la/ "cami-la"). | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<module type="JAVA_MODULE" version="4"> | ||
<component name="NewModuleRootManager" inherit-compiler-output="true"> | ||
<exclude-output /> | ||
<content url="file://$MODULE_DIR$"> | ||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> | ||
</content> | ||
<orderEntry type="inheritedJdk" /> | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
</component> | ||
</module> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package me.dio; | ||
|
||
import me.dio.models.Endereco; | ||
import me.dio.models.Gerente; | ||
import me.dio.models.OperadorDeCaixa; | ||
import me.dio.models.Vendedor; | ||
|
||
public class Main { | ||
|
||
public static void main(String[] args) { | ||
/*Endereco endereco = new Endereco(); | ||
endereco.setRua("Endereço para essa rua"); | ||
System.out.println(endereco.getRua());*/ | ||
|
||
Endereco endereco = | ||
new Endereco("Rua funcionário", | ||
"Complemento endereço funcionário", "bairro funcionário"); | ||
System.out.println(endereco); | ||
System.out.println("-----"); | ||
|
||
Vendedor vendedor = new Vendedor(); | ||
vendedor.setNome("Camila Vendedora"); | ||
vendedor.setDocumento("123.456.789-00"); | ||
vendedor.setValorSalario(1000d); | ||
vendedor.setEndereco(endereco); | ||
vendedor.calculaBonificacao(2d); | ||
System.out.println(vendedor); | ||
System.out.println("-----"); | ||
|
||
OperadorDeCaixa operadorCaixa = | ||
new OperadorDeCaixa("Camila Op Caixa", "789.456.123-00", 2000d, endereco); | ||
System.out.println(operadorCaixa); | ||
System.out.println("-----"); | ||
|
||
Gerente gerente = new Gerente(); | ||
gerente.setNome("Camila Gerente"); | ||
gerente.setDocumento("456.123.789-00"); | ||
gerente.setEndereco(endereco); | ||
gerente.setHorasTrabalhadas(20); | ||
gerente.setValorHora(100d); | ||
|
||
gerente.calculaRemuneracao(); | ||
gerente.calculaBonificacao(3.0); | ||
|
||
System.out.println(gerente); | ||
|
||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package me.dio.models; | ||
|
||
public interface CalculaBonificacao { | ||
void calculaBonificacao(Double porcentagemBonificacao); | ||
} |