Você está na página 1de 10

UNOPAR - CURSO SUPERIOR DE TECNOLOGIA EM DEVOPS

CLÁUDIA SPARVOLI JOBIM FERREIRA

PROJETO INTEGRADO III

RIO GRANDE - RS
maio/2023
UNOPAR - CURSO SUPERIOR DE TECNOLOGIA EM DEVOPS
CLÁUDIA SPARVOLI JOBIM FERREIRA

PROJETO INTEGRADO III

Projeto apresentado no intuito de possibilitar a


aprendizagem interdisciplinar dos conteúdos
desenvolvidos nas disciplinas do 2º. Semestre do
curso de Tecnologia em DEVOPS.

RIO GRANDE - RS
maio/2023
SUMÁRIO

1. ATIVIDADES...........................................................................................04
1.1. Tarefa
1.........................................................................................04
1.2. Tarefa
2.........................................................................................05
1.3. Tarefa
3.........................................................................................06
1.4. Tarefa
4.........................................................................................07
1.5. Tarefa
5.........................................................................................08
2. REFERÊNCIAS.......................................................................................10
1. ATIVIDADES
1.1. Tarefa 1

Orientação a objetos é um paradigma aplicado na programação que


consiste na interação entre diversas unidades chamadas de objetos.
Explique os conceitos de herança e polimorfismo dando exemplos de
utilização na linguagem Python.

A orientação a objetos é uma ferramenta que vai viabilizar a


construção de soluções interessantes e únicas criando assim programas
elegantes, eficientes e fáceis de serem compreendidos.

Herança e Polimorfismo são duas características próprias da


programação orientada a objetos, elas entregam ao desenvolvedor a
capacidade de reaproveitar classes de modo elegante e eficiente tornando a
programação orientada a objetos tão interessante.

A herança é uma característica do paradigma de orientação a


objetos em que o seu efeito imediato é tornar possível a reutilização de
classes. Ou seja, será possível criar uma nova classe que estende outra já
definida pelo programador e assim será possível aproveitar todo o potencial e
utilidade do conceito herança. Na herança o objeto filho herda características e
comportamentos do objeto mãe possibilitando uma relação entre uma classe
mãe e uma classe filha, ficando a segunda uma extensão da primeira.

Um exemplo na linguagem podemos na área de produtos do


banco definir quais clientes podem ter acesso a uma conta especial, o qual vai
atender clientes que possui uma renda acima de R$10,000,00 (dez mil reais
mensais). Na visão do banco, quem possuir renda cima deste valor, poderá
usufruir de isenção da mensalidade, determinado durante a abertura da conta.
Assim o objeto do mundo real Conta Especial será mapeado para uma classe
Conta Especial que herdará todo o código de Conta. Ouro exemplo é que todo
o Gerente de um Banco é um funcionário dentro de um banco, pois este é uma
extensão. Se alguém precisar falar com um Funcionário do banco, pode falar
com um gerente, pois o Gerente é um funcionário.

O polimorfismo significa “muitas formas” e é exatamente essa


definição que caracteriza com exatidão esse pilar da orientação a objetos. Por
meio do polimorfismo, um objeto pode ser referenciado de várias formas, o que
confere flexibilidade ao desenvolvimento da solução.

Um exemplo de polimorfismo também utilizando a entidade Banco


é um argumento do tipo Funcionário, mas podemos passar um gerente para o
método “recebe” um Funcionário como argumento. Ou seja, o polimorfismo é
essa capacidade que um objeto tem de poder ser referenciado de várias
formas, ele não fica se modificando, transformando o que muda é a maneira
como nos referimos a este objeto.

1.2. Tarefa 2

Você trabalha em uma grande empresa e é o responsável por garantir que


todos os desenvolvedores de todas as equipes desta empresa, sigam o
mesmo padrão de desenvolvimento utilizando as melhores práticas de
desenvolvimento. Descreva a ferramenta SonarQube.

A SonarQube é uma ferramenta de análise de código responsável


por detectar problemas que podem ocorrer no código, ela vai realizar diversas
análises durante o processo de compilação da aplicação, garantindo assim
mais qualidade do código fonte em desenvolvimento.

Esta ferramenta pode detectar, por exemplo: trechos de código


fonte que possam vir a gerar “bugs”, problemas com “code smells”, segurança,
também previne a repetição de instrumentos desnecessários já que detecta a
duplicidade de linhas de comando.
Esta ferramenta possui algumas versões como: Developer,
Enterprise, Data Center, Community. Além de pssui uma versão em nuvem
chamada SonarCloud que pode ser utilizada 14 dias para testes

1.3. Tarefa 3

O diagrama de classes da UML é um diagrama estrutural, que tem como


objetivo principal ilustrar graficamente a estrutura do software, em níveis
mais e menos abrangentes. Além disso, o diagrama de classes mostra
como se dá a interligação entre os componentes da estrutura do sistema.
Para compreender o diagrama de classes, é preciso entender os
relacionamentos entre as classes que poderão ser representadas no
diagrama de classes e objetos. Sabendo disso, explique os
relacionamentos listados a seguir:
- Encapsulamento
- Herança
- Agregação
- Composição

No diagrama de classes e objetos tudo acontece com o


relacionamento entre as classes.

Encapsulamento é quando fazemos a transformação de um


procedimento que apresenta muitas regras de negócio ou rotinas complexas
em um método. Com o encapsulamento é possível orientar e esconder as
funcionalidades de um código dentro de pequenas unidades, e sempre que for
preciso modificar alguma coisa dentro no sistema essas modificações sejam
feitas de forma mais detalhada, cirúrgica, sem que a funcionalidade esteja
espalhada por diversas partes do sistema. A forma como classes e objetos
conversam um com o outro, deve sempre estar isolada da forma como
executam o que se propuseram fazer, por isso a importância do
encapsulamento. Ou seja, a agregação de dados e códigos se tornam uma
unidade indivisível pelas demais partes do sistema.
A Herança ou hereditariedade é a relação em que se herda todos os
atributos até mesmo os específicos e os métodos da classe primária. Ou seja
como se fosse o processo de um secundário ou subclasse. Ficando assim
representado pelas dependências e hierarquias. Representada pelo símbolo de
uma seta fechada e com uma linha contínua, sendo que o lado em que a seta
aponta é a classe que está sendo herdada.

A Agregação são os relacionamentos estruturais entre instancias


que identificam que objetos de uma classe estão ligados a objetos de outra
classe. A classe agregada usa outra classe para “existir”, mas pode viver sem
ela. Representada por um “diamante” vazado na ponta.

A Composição bem diferente da agregação está relacionada a


contenção. Ou seja, um objeto contém outros objetos. Esses elementos
contidos dependem sempre do outro elemento para existir. Representada por
um “diamante” hachurado na ponta.

1.4. Tarefa 4

Construa um código simples utilizando a linguagem Java que receba um


número informado pelo usuário. Você poderá utilizar a biblioteca Scanner
para isso. O número informado refere-se ao percentual de aumento do
salário desse usuário. Por exemplo, se ele obteve aumento de 7%, o
usuário deverá digitar 7, e assim por diante. Depois, o software deverá
informar o valor do salário, que pode ser definido em um salário mínimo
federal e, em seguida, o valor já reajustado com os 7% a mais incluso.

import java.util.Scanner;

public class AumentoSalarial {

public static void main(String[] args) {

float salarioEstadual = 1302.00;

//Lê a partir da linha de comando

Scanner entrada= new Scanner(System.in);


//Converte string para float

float aumento = Float.parseFloat(entrada);

float salarioReajustado = salarioEstadual + salarioEstadual * (aumento/100));

System.out.println("O salario estadual é: " + salarioEstadual);

System.out.println("O salario reajustado é: " + salarioReajustado);

Tarefa 5

Explique as diferenças entre os tipos de junção utilizadas em bancos de


dados relacionais: INNER JOIN, RIGHT JOIN e LEFT JOIN. Dê exemplos.

Com a cláusula INNER JOIN é possível permitir que dados de várias


tabelas sejam combinados com a base na relação existente entre elas. Assim,
os dados de uma tabela são usados para selecionar os dados que pertencem a
outra tabela.

A título de exemplo, utilizaremos o descrito abaixo para ilustrar os


comandos necessários para as diferentes junções.

Em um banco de dados de determinada empresa existem duas


tabelas que se relacionam a primeira tabela possui os campos: código do
funcionário, nome do funcionário e código do cargo que o funcionário ocupa na
empresa. Já a segunda tabela possui os campos código do cargo e a descrição
do cargo.

Com a utilização do comando INNER JOIN podemos fazer a junção


entre as tabelas para obtermos os dados relacionados das duas tabelas,
retornando todos os cargos ocupados pelos funcionários bem como todos os
funcionários que desempenham algum cargo.
SELECT <select_list> FROM Tabela A INNER JOIN Tabela B ON A.Key =
B.Key
SELECT A.nome, A.cod_cargo, B.descrição FROM funcionario A INNER JOIN
cargo B ON A.cod_cargo = B.cod_cargo;
SELECT A.nome, A.cod_cargo, B.descrição
FROM funcionario A INNER JOIN cargo B
ON A.cod_cargo = B.cod_cargo;

Com a cláusula RIGHT JOIN podemos retornar todos os dados


encontrados na tabela à direita, mas caso não existam dados associados entre
as tabelas à esquerda e à direita, serão retornados valores nulos. Utilizando-se
do mesmo exemplo anterior poderíamos resultar nos seguintes comandos:

SELECT <select_list> FROM Tabela A RIGHT JOIN Tabela B ON A.Key =


B.Key
SELECT A.nome,A.cod_cargo,B.descrição FROM funcionario A RIGHT JOIN
cargo B ON A.cod_cargo = B.cod_cargo;

Já a cláusula LEFT JOIN como o próprio nome já sugere, é


utilizada quando queremos retornar apenas os registros da tabela da esquerda
e os registros que tenham correspondência a tabela da direita. Utilizando-se do
mesmo exemplo anterior poderíamos resultar nos seguintes comandos:

SELECT <select_list> FROM Tabela A LEFT JOIN Tabela B ON A.Key = B.Key


SELECT A.nome, A.cod_cargo, B.descrição FROM funcionario A LEFT JOIN
cargo B ON A.cod_cargo = B.cod_cargo;
2. REFERÊNCIAS

NETO, Roque Maitino. https://biblioteca-virtual-cms-serverless-prd.s3.us-


east-1.amazonaws.com/ebook/616-programacao-orientada-a-objetos.pdf

SEPE, Adriano e NETO, Roque Maitino. https://biblioteca-virtual-cms-


serverless-prd.s3.us-east-1.amazonaws.com/ebook/1006-programacao-
orientada-a-objetos-unopar.pdf

WERLICH, Claudia. Modelagem de Dados – Londrina: Editora e Distribuidora


Educacional S.A., 2018.

Disponível em: https://www.lucidchart.com/pages/pt/o-que-e-diagrama-


entidade-relacionamento

Disponível em: https://pt.wikipedia.org/wiki/Wikip%C3%A9dia:P%C3%A1gina_


principal

https://www.alura.com.br/artigos/join-e-seus-tipos?gclid=CjwKCAjwg-
GjBhBnEiwAMUvNW_9xx-
LvN5CkCCkgL2eRCmGFdFKYl9gBRndiu18ODVvim7taJupqyxoCaCMQAvD_B
wE

Você também pode gostar