Mentoria: Abstraindo situações do mundo real com Orientação a Objetos

Overview

Mentoria: Abstraindo situações do mundo real com Orientação a Objetos

⚠️ SLIDES DA MENTORIA ⚠️

O objetivo principal é colocar em prática umas das principais ferramentas da OO: ABSTRAÇÃO, ENCAPSULAMENTO, HERANÇA, COMPOSIÇÃO E POLIMORFISMO através de um projeto Java.

🛑 Pré-Requisitos

Conhecer a sintaxe da Java
Java JDK 8+
IDE para desenvolvimento Java (usarei IntelliJ)

🎯 Desafio

Modelar as entidades de uma aplicação de Gerenciamento de Colaboradores de uma loja.
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:

  • Vendedor é um Funcionário CLT e tem o benefício de bonificação.
  • Operador de Caixa é um funcionário CLT, mas não tem o benefício da bonificação.
  • Gerente é um Funcionário PJ e tem o benefício da bonificação.

Colaboradores

  1. Vendedor:
  2. nome, documento, salario, valor da bonificação e endereço.
  3. Operador de Caixa:
  4. nnome, documento, salario e endereço.
  5. Gerente:
  6. nome, documento, horas trabalhadas, valorHora, endereço e valor da bonificação.

📚 Paradigma de Programação Orientado a Objetos (POO)

pilares-POO

A visão de Orientação a Objetos (OO) é aquela de um mundo de objetos que interagem.
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.
A observação do mundo real compõe o princípio da ABSTRAÇÃO, sendo considerada a base da Orientação a Objetos.
São 4 os pilares principais do POO: ENCAPSULAMENTO, HERANÇA, COMPOSIÇÃO E POLIMORFISMO.

🔺 ENCAPSULAMENTO:

Encapsular significa esconder a implementação dos objetos. O encapsulamento favorece principalmente dois aspectos de um sistema: a manutenção e a evolução.

🔺 HERANÇA:

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.

🔺 COMPOSIÇÃO:

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.

🔺 POLIMORFISMO:

Com o polimorfismo, podemos transformar objetos diferentes em objetos que conseguem trocar mensagem por meio da generalização de suas características.

‼️ CONCEITOS FUNDAMENTAIS POO ‼️

🔻 DOMÍNIO:

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.

🔻 CLASSE:

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.

🔻 ATRIBUTO:

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.

🔻 VARIÁVEL:

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

🔻 MÉTODO:

Os métodos representam os estados e ações dos objetos e classes.

🔻 OBJETO:

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.

🔻 INSTÂNCIA:

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.

📝 Exercícios de Fixação

🤝 Contribuindo

Este repositório foi criado para fins de estudo, então contribua com ele.
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.

Se possível:
⭐️ Star o projeto
🐛 Encontrar e relatar issues


Disponibilizado com por cami-la.

You might also like...

Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022.

Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022.

Programacion-05-Ejercicios-2021-2022 Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2

Dec 27, 2022

Programación - 04 Programación Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022.

Programación - 04 Programación Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022.

Programacion-04-Ejercicios-2021-2022 Programación - 04 Programación Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022

Dec 27, 2022

Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Curso 2021-2022

Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Curso 2021-2022

Programación - 05 Programación Avanzada Orientada a Objetos Tema 05 Programación Avanzada Orientada a Objetos. 1DAM. Curso 2021/2022. Contenidos Heren

Dec 27, 2022

Matéria 3 - Programação Orientada a Objetos

Matéria 3 - Programação Orientada a Objetos

Matéria | Java | Nosso Grupo ♡ Matéria 3 - Programação Orientada a Objetos (Java) Nessa matéria aprendemos como funciona o Banco de Dados! Professora:

Apr 21, 2022

Trabajo práctico de la materia Programación Orientada a Objetos. Grupo 1, equipo 8. Aplicación de gestión de restaurantes desarrollada en Java. UNAL sede Medellín, semestre 2022-1.

i-Lunch Materia: Programación Orientada a Objetos Profesor: Jaime Alberto Guzman Luna Institución: Universidad Nacional de Colombia sede Medellín Seme

Nov 12, 2022

Apache Druid: a high performance real-time analytics database.

Apache Druid: a high performance real-time analytics database.

Website | Documentation | Developer Mailing List | User Mailing List | Slack | Twitter | Download Apache Druid Druid is a high performance real-time a

Jan 1, 2023

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2 is a realization of the lambda architecture built on Apache Spark and Apache Kafka, but with specialization for real-time large scale machine l

Dec 28, 2022

Now redundant weka mirror. Visit https://github.com/Waikato/weka-trunk for the real deal

weka (mirror) Computing and Mathematical Sciences at the University of Waikato now has an official github organization including a read-only git mirro

Dec 16, 2022

A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.

A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.

ChartFx ChartFx is a scientific charting library developed at GSI for FAIR with focus on performance optimised real-time data visualisation at 25 Hz u

Jan 2, 2023

CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time.

CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time.

About CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time. CrateDB offers the

Jan 2, 2023

A fork of Cliff Click's High Scale Library. Improved with bug fixes and a real build system.

High Scale Lib This is Boundary's fork of Cliff Click's high scale lib. We will be maintaining this fork with bug fixes, improvements and versioned bu

Jan 2, 2023

Apache Druid: a high performance real-time analytics database.

Apache Druid: a high performance real-time analytics database.

Website | Documentation | Developer Mailing List | User Mailing List | Slack | Twitter | Download Apache Druid Druid is a high performance real-time a

Jan 2, 2023

Chaos engineering tool for simulating real-world distributed system failures

Chaos engineering tool for simulating real-world distributed system failures

Proxy for simulating real-world distributed system failures to improve resilience in your applications. Introduction Muxy is a proxy that mucks with y

Dec 25, 2022

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2 is a realization of the lambda architecture built on Apache Spark and Apache Kafka, but with specialization for real-time large scale machine l

Mar 12, 2021

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2 is a realization of the lambda architecture built on Apache Spark and Apache Kafka, but with specialization for real-time large scale machine l

Dec 28, 2022

Apache Druid: a high performance real-time analytics database.

Apache Druid: a high performance real-time analytics database.

Website | Documentation | Developer Mailing List | User Mailing List | Slack | Twitter | Download Apache Druid Druid is a high performance real-time a

Jan 9, 2023

:elephant: Elasticsearch real-time search and analytics natively integrated with Hadoop

Elasticsearch Hadoop Elasticsearch real-time search and analytics natively integrated with Hadoop. Supports Map/Reduce, Apache Hive, Apache Pig, Apach

Dec 22, 2022
Owner
Camila Cavalcante
Camila Cavalcante
This is a basic Java project focused on applying object-oriented design in a real world application

Email-Administration-System-in-Java This is a basic Java project focused on applying object-oriented design in a real world application. Email Adminis

Muhammad Asad 5 Feb 4, 2022
GFT START #2 Java - Mentoria #1: Aprendendo Orientação a Objetos

GFT START #2 Java - Aprendendo Orientação a Objetos 21/06/2021 - Mentoria #1: Aprendendo Orientação a Objetos Domínio: Bootcamps são eventos fantástic

Venilton FalvoJr 23 Aug 6, 2022
Lab "Criando um Banco Digital com Java e Orientação a Objetos".

Criando um Banco Digital com Java e Orientação a Objetos 02/08/2021 - Mentoria #1: Tire Suas Dúvidas Sobre Orientação a Objetos Desafio: Considerando

Venilton FalvoJr 111 Dec 6, 2022
Projeto criado para teste de uso de arquitetura hexagonal. Usando testes integrados e relatório de cobertura de testes. Banco MongoDB com objetos dentro de objetos.

NotasBackEndJavaHexagonal Projeto criado para teste de uso de arquitetura hexagonal. Usando testes integrados e relatório de cobertura de testes. Banc

null 5 Jan 27, 2022
Crud sobre el mundo del cine, y listado de películas que un usuario puede tener en su casa.

FilmHome ?? ??️ Crud sobre el mundo del cine, y listado para gestionar las películas que un usuario puede tener como colección en su casa. ??️ VIDEO Y

Adrian Egea Hermoso 5 May 16, 2022
CODE ANYWHERE – MENTORIA #4 | Projetos Ágeis com Scrum

Scrum CODE ANYWHERE – MENTORIA #4 | Projetos Ágeis com Scrum! Avanade DIO - Code Anywhere Mentoria #1 | Pensando Orientado a Objetos na prática Mentor

Code Anywhere - DIO & AVANADE 20 Sep 12, 2021
Dio-api-1 - Repositório com os artefatos da mentoria de API

dio-api-1 Repositório com os artefatos da mentoria de API Reference Documentation For further reference, please consider the following sections: Offic

Ricardo Lucas Chagas 5 Feb 25, 2022
Sistema para gerência de objetos pessoais emprestados a terceiros

?? Sobre o desafio Olá! Este é um desafio SpringBoot + JPA + PostgresSQL para gerenciar seus pertences emprestados! O objetivo é construir uma API par

Samuel Almeida 23 Dec 30, 2022
Programação Orientada a Objetos (POO) em Java - Contexto no sistema bancário

Criando um Banco Digital com Java e Orientação a Objetos 02/08/2021 - Mentoria #1: Tire Suas Dúvidas Sobre Orientação a Objetos Desafio: Considerando

null 2 Dec 17, 2022
Programación - 04 Programación Orientada a Objetos. 1DAM. Curso 2021-2022

Programación - 04 Programación Orientada a Objetos Tema 04 Programación Orientada a Objetos. 1DAM. Curso 2021/2022. Contenidos Programación Orientada

José Luis González Sánchez 9 Dec 27, 2022