Prévia do material em texto
1
UNOPAR–ANHANGUERA–ES
PORTIFÓLIO–RELATÓRIO DE AULA PRÁTICA
NOME DA DISCIPLINA: PROJETO INTEGRADO
INOVAÇÃO.
CARIACICA/ES 2025
2
ALUNO:
IGOR BARBOSA DOS SANTOS
PORTFÓLIO–RELATÓRIODEAULAPRÁTICA
NOME DA DISCIPLINA: PROJETO INTEGRADO
INOVAÇÃO
Trabalho apresentado ao Curso (Desenvolvedor Mobile)
da UNOPAR –Anhanguera,para a disciplina Projeto
Integrado Inovação.
Orientador(a): Joice Siqueira Lima Romanini
CARIACICA/ES 2025
3
Sumário
1. INTRODUÇÃO............................................
2. DESENVOLVIMENTO...............................................
3. RESULTADO......................................................
4.CONCLUSÃO................................................................
4
Introdução.
A atividade proposta de Projeto Integrado Inovação, busca simular uma demanda que acontece em
uma loja de calçados chamada “Passo Certo”, onde há alguns passos a serem seguidos para o
aprimoramento dos serviços e da gestão dos produtos. Passo a passo será descrito em tarefas e a
finalidades de cada uma delas na prática nesta atividade.
5
Desenvolvimento.
-Passo 1:
-Nesse passo a tarefa é criar o diagrama de classes que represente este sistema (O sistema deve
permitir o cadastro, alteração, exclusão e consulta de sapatos, identificados por código, marca,
tamanho e valor. Os clientes, que possuem informações como código, nome, endereço, telefone,
CPF e CEP, poderão realizar pedidos. Já os fornecedores, identificados por código, nome,
endereço, telefone e CNPJ, serão responsáveis por abastecer a loja com produtos).
-simular um cenário em que um cliente realiza um pedido, o vendedor processa a remessa, e um
pedido ao fornecedor é registrado para reposição de estoque.
6
Para demonstrar a aplicação prática das classes modeladas no sistema da loja Passo Certo, foi
realizada uma simulação baseada em um cenário realista, que representa o fluxo completo de um
pedido, desde a solicitação do cliente até a reposição de estoque com o fornecedor.
Em um dia típico de funcionamento, a cliente Maria acessa a loja interessada em dois modelos de
sapato: um da Nike, tamanho 42, e outro da Adidas, tamanho 40. Após fazer sua escolha, ela
conclui o pedido com sucesso. O sistema automaticamente calcula o valor total da compra,
aplicando descontos apropriados, e registra o pagamento. Logo em seguida, o pedido entra em fase
de remessa, sendo processado por um dos vendedores da loja.
O vendedor João, ao autenticar-se no sistema com sua senha, acompanha o status do pedido e
identifica que os modelos solicitados por Maria estão em baixa no estoque. Para evitar
desabastecimento, ele realiza um novo pedido ao fornecedor. O fornecedor escolhido,
Distribuidora XYZ, recebe o pedido de reposição contendo os mesmos modelos adquiridos por
Maria. O sistema calcula o valor total desse novo pedido e processa a remessa dos produtos ao
centro de distribuição da loja.
Com essa simulação, é possível observar o funcionamento coordenado entre cliente, vendedor e
fornecedor dentro do sistema proposto. Cada interação é representada por classes específicas, com
métodos que refletem ações reais de um ambiente de vendas. Assim, a loja Passo Certo consegue
manter o atendimento eficiente, atualizar seu estoque e oferecer uma experiência satisfatória ao
cliente.
-Passo 2
Neste passo o objetivo é criar a tela inicial da ferramenta Android Studio, criando um novo projeto
no Empty Activity, editando os comando no activity_main.xml, MainActivity.java e
ResumoActivity.java. Nas imagens a seguir mostra como foi feito respectivamente:
7
8
Códigos:
- Layout da Tela Inicial (activity_main.xml)
-Lógica na MainActivity.java (SharedPreferences + Navegação)
// MainActivity.java
package com.example.passocertoapp;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
EditText etNome;
10
Button btnSalvar, btnProximo;
TextView tvBoasVindas;
SharedPreferences sharedPreferences;
public static final String PREFS_NAME = "PrefsApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etNome = findViewById(R.id.etNome);
btnSalvar = findViewById(R.id.btnSalvar);
btnProximo = findViewById(R.id.btnProximo);
tvBoasVindas = findViewById(R.id.tvBoasVindas);
sharedPreferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
String nomeSalvo = sharedPreferences.getString("nome_vendedor", null);
if (nomeSalvo != null) {
tvBoasVindas.setText("Bem-vindo de volta, " + nomeSalvo + "!");
}
btnSalvar.setOnClickListener(v -> {
String nome = etNome.getText().toString();
if (!nome.isEmpty()) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("nome_vendedor", nome);
editor.apply();
tvBoasVindas.setText("Bem-vindo, " + nome + "!");
Toast.makeText(this, "Nome salvo!", Toast.LENGTH_SHORT).show();
}
});
btnProximo.setOnClickListener(v -> {
Intent intent = new Intent(MainActivity.this, ResumoActivity.class);
startActivity(intent);
});
}
}
11
-Segunda Tela (ResumoActivity.java)
// ResumoActivity.java
package com.example.passocertoapp;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;public class ResumoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
textView.setText("Bem-vindo à tela de resumo!");
textView.setTextSize(20f);
setContentView(textView);
}
}
-Adicionar a ResumoActivity no AndroidManifest.xml
12
- Passo 3
Nas imagens abaixo, foi ultilizado a ferramenta Android Studio para criar, repectivamente, uma
estrutura de projeto Java com as Classes; Definir as Classes do Sistema (sapatos, cliente, fornecedor,
vendedor, pedido, pedido cliente, pedido fornecedor) ; Implementar os Atributos e Métodos; Simular o
Cenário.
13
14
15
16
Códigos:
Sapato
package com.passocerto;
public class Sapato {
private int codigo;
private String marca;
private int tamanho;
private double valor;
public Sapato(int codigo, String marca, int tamanho, double valor) {
this.codigo = codigo;
this.marca = marca;
this.tamanho = tamanho;
this.valor = valor;
}
public double getValor() {
return valor;
}
public String toString() {
return marca + " - Tam: " + tamanho + " - R$" + valor;
}
}
Cliente
package com.passocerto;
public class Cliente {
private int codigo;
private String nome;
private String endereco;
private String telefone;
private String cpf;
private String cep;
public Cliente(int codigo, String nome, String endereco, String telefone, String cpf, String cep) {
this.codigo = codigo;
this.nome = nome;
this.endereco = endereco;
this.telefone = telefone;
this.cpf = cpf;
this.cep = cep;
}
17
public String getNome() {
return nome;
}
}
Fornecedor
package com.passocerto;
public class Fornecedor {
private int codigo;
private String nome;
private String endereco;
private String telefone;
private String cnpj;
public Fornecedor(int codigo, String nome, String endereco, String telefone, String cnpj) {
this.codigo = codigo;
this.nome = nome;
this.endereco = endereco;
this.telefone = telefone;
this.cnpj = cnpj;
}
public String getNome() {
return nome;
}
}
Vendedor
package com.passocerto;
public class Vendedor {
private int codigo;
private String nome;
private String senha;
public Vendedor(int codigo, String nome, String senha) {
this.codigo = codigo;
this.nome = nome;
this.senha = senha;
}
18
public String getNome() {
return nome;
}
public void processarRemessa(PedidoCliente pedido) {
System.out.println("Remessa processada para o cliente: " + pedido.getCliente().getNome());
}
}
Pedido
package com.passocerto;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public abstract class Pedido {
protected int codigo;
protected Date data;
protected List sapatos = new ArrayList();
public Pedido(int codigo, Date data) {
this.codigo = codigo;
this.data = data;
}
public void adicionarSapato(Sapato sapato) {
sapatos.add(sapato);
}
public double calcularValorTotal() {
double total = 0;
for (Sapato s : sapatos) {
total += s.getValor();
}
return total;
}
}
19
PedidoCliente
package com.passocerto;
import java.util.Date;
public class PedidoCliente extends Pedido {
private Cliente cliente;
private Date dataRemessa;
public PedidoCliente(int codigo, Date data, Cliente cliente, Date dataRemessa) {
super(codigo, data);
this.cliente = cliente;
this.dataRemessa = dataRemessa;
}
public Cliente getCliente() {
return cliente;
}
public void registrarPagamento() {
System.out.println("Pagamento registrado para " + cliente.getNome());
}
}
PedidoFornecedor
package com.passocerto;
import java.util.Date;
public class PedidoFornecedor extends Pedido {
private Fornecedor fornecedor;
private Date dataRecebimento;
public PedidoFornecedor(int codigo, Date data, Fornecedor fornecedor, Date dataRecebimento) {
super(codigo, data);
this.fornecedor = fornecedor;
this.dataRecebimento = dataRecebimento;
}
public void confirmarRecebimento() {
System.out.println("Pedido recebido do fornecedor: " + fornecedor.getNome());
}
}
20
Main Para Simulação
package com.passocerto;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// Cadastro de entidades
Cliente cliente = new Cliente(1, "João", "Rua A", "99999-9999", "123.456.789-00", "12345-678");
Fornecedor fornecedor = new Fornecedor(1, "Fornecedor X", "Rua F", "88888-8888",
"12.345.678/0001-99");
Vendedor vendedor = new Vendedor(1, "Maria", "senha123");
Sapato sapato = new Sapato(1, "Nike", 42, 299.90);
// Pedido Cliente
PedidoCliente pedidoCliente = new PedidoCliente(1, new Date(), cliente, new Date());
pedidoCliente.adicionarSapato(sapato);
System.out.println("Valor total do pedido do cliente: R$" + pedidoCliente.calcularValorTotal());
pedidoCliente.registrarPagamento();
vendedor.processarRemessa(pedidoCliente);
// Pedido Fornecedor
PedidoFornecedor pedidoFornecedor = new PedidoFornecedor(2, new Date(), fornecedor, new
Date());
pedidoFornecedor.adicionarSapato(sapato);
System.out.println("Valor total do pedido ao fornecedor: R$" +
pedidoFornecedor.calcularValorTotal());
pedidoFornecedor.confirmarRecebimento();
}
}
21
Passo 4
Criar um Diagrama Entidade-Relacionamento (ER) com base nas seguintes classes/sistemas: Sapato,
Pedido, Vendedor, Cliente, PedidoCliente, PedidoFornecedor, Fornecedor.
Entidade Relacionamento Tipo Cardinalidade
Pedido - Cliente
Um pedido é feito por um único
cliente
1:N
Um cliente → muitos
pedidos
Pedido - Sapato
Um pedido pode conter vários
sapatos
N:N (via
PedidoSapato)
Pedido ↔ Sapato
Pedido - Vendedor
Um vendedor pode gerenciar vários
pedidos
1:N
Vendedor → muitos
pedidos
Fornecedor - Sapato
Um fornecedor fornece vários
sapatos
1:N
Fornecedor → muitos
sapatos
PedidoFornecedor -
Fornecedor
Cada pedidoFornecedor tem um
fornecedor
1:1 ou 1:N
Fornecedor → muitos
pedidos
PedidoCliente - Cliente Cada pedidoCliente tem um cliente 1:1 ou 1:N
Cliente → muitos
pedidos
Reresentação do Diagrama ER descrito:
CLIENTE (IDCliente, Nome, Endereço, Telefone, CPF, CEP)
|
|------ SAPATO
(IDSapato, Nome, Marca, Tamanho, Cor, Preço, IDFornecedor)
|
|--- VENDEDOR (IDVendedor, Nome, Contato)
|
|--- FORNECEDOR (IDFornecedor, Nome, Endereço, Telefone, CNPJ)
22
23
Passo 5
Criação do Banco de Dados (DDL - SQL)
Neste passo, vamos gerar os comandos SQL (DDL) para criar as tabelas no banco de dados
relacional com base no Diagrama Entidade-Relacionamento(ER) que você já viu no Passo 4.
-- Tabela CLIENTE
CREATE TABLE Cliente (
IDCliente INT PRIMARY KEY AUTO_INCREMENT,
Nome VARCHAR(100),
Endereco VARCHAR(150),
Telefone VARCHAR(20),
CPF VARCHAR(14),
CEP VARCHAR(10)
);
-- Tabela FORNECEDOR
CREATE TABLE Fornecedor (
IDFornecedor INT PRIMARY KEY AUTO_INCREMENT,
Nome VARCHAR(100),
Endereco VARCHAR(150),
Telefone VARCHAR(20),
CNPJ VARCHAR(18)
);
-- Tabela VENDEDOR
CREATE TABLE Vendedor (
IDVendedor INT PRIMARY KEY AUTO_INCREMENT,
Nome VARCHAR(100),
Contato VARCHAR(50)
);
-- Tabela SAPATO
CREATE TABLE Sapato (
IDSapato INT PRIMARY KEY AUTO_INCREMENT,
Nome VARCHAR(100),
Marca VARCHAR(50),
Tamanho INT,
Cor VARCHAR(30),
Preco DECIMAL(10,2),
IDFornecedor INT,
FOREIGN KEY (IDFornecedor) REFERENCES Fornecedor(IDFornecedor)
);
-- Tabela PEDIDO
CREATE TABLE Pedido (
IDPedido INT PRIMARY KEY AUTO_INCREMENT,
Data DATE,
Status VARCHAR(30),
Quantidade INT,
24
Tipo VARCHAR(20),
IDVendedor INT,
IDCliente INT,
IDFornecedor INT,
FOREIGN KEY (IDVendedor) REFERENCES Vendedor(IDVendedor),
FOREIGN KEY (IDCliente) REFERENCES Cliente(IDCliente),
FOREIGN KEY (IDFornecedor) REFERENCES Fornecedor(IDFornecedor)
);
-- Tabela PEDIDO_SAPATO (associativa entre Pedido e Sapato)
CREATE TABLE Pedido_Sapato (
IDPedido INT,
IDSapato INT,
Quantidade INT,
ValorUnitario DECIMAL(10,2),
PRIMARY KEY (IDPedido, IDSapato),
FOREIGN KEY (IDPedido) REFERENCES Pedido(IDPedido),
FOREIGN KEY (IDSapato) REFERENCES Sapato(IDSapato)
);
25
Referências
-ABNT NBR ISO/IEC 12207:2009 – ENGENHARIA DE SOFTWARE – PROCESSOS DO CICLO DE VIDA DE
SOFTWARE. RIO DE JANEIRO: ABNT, 2009.
- ABNT NBR ISO/IEC 9126 – 1:2005 – ENGENHARIA DE SOFTWARE – QUALIDADE DE PRODUTO –
PARTE 1: Modelo de qualidade. Rio de Janeiro, ABNt,2005.
- ABNT NBR ISO/IEC 25010:2011 – SISTEMAS E SOFTWARE DE ENGENHARIA – REQUISITOS DE QUALIDADE
E AVALIAÇÃO DE SISTEMAS E SOFTWARE (AQUARE) – MODELO DE QUALIDADE E PRODUTO. Rio de
Janeiro: ABNT, 2011.
-ABNT NBR 6023:2018 – INFORMAÇÃO E DOCUMENTAÇÃO – REFERÊNCIA – ELABORAÇÃO. Rio de
Janeiro: ABNT, 2018.
26
ALUNO:
IGOR BARBOSA DOS SANTOS
Introdução.
A atividade proposta de Projeto Integrado Inovação, busca simular uma demanda que acontece em uma loja de calçados chamada “Passo Certo”, onde há alguns passos a serem seguidos para o aprimoramento dos serviços e da gestão dos produtos. Passo a passo ...
Desenvolvimento.
-Passo 1:
-Nesse passo a tarefa é criar o diagrama de classes que represente este sistema (O sistema deve permitir o cadastro, alteração, exclusão e consulta de sapatos, identificados por código, marca, tamanho e valor. Os clientes, que possuem informações como...
-simular um cenário em que um cliente realiza um pedido, o vendedor processa a remessa, e um pedido ao fornecedor é registrado para reposição de estoque.
-Passo 2
Códigos:
- Layout da Tela Inicial (activity_main.xml)
(1)
(2)
(3)
-Lógica na MainActivity.java (SharedPreferences + Navegação)
// MainActivity.java
package com.example.passocertoapp;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
EditText etNome;
Button btnSalvar, btnProximo;
TextView tvBoasVindas;
SharedPreferences sharedPreferences;
public static final String PREFS_NAME = "PrefsApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etNome = findViewById(R.id.etNome);
btnSalvar = findViewById(R.id.btnSalvar);
btnProximo = findViewById(R.id.btnProximo);
tvBoasVindas = findViewById(R.id.tvBoasVindas);
sharedPreferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
String nomeSalvo = sharedPreferences.getString("nome_vendedor", null);
if (nomeSalvo != null) {
tvBoasVindas.setText("Bem-vindo de volta, " + nomeSalvo + "!");
}
btnSalvar.setOnClickListener(v -> {
String nome = etNome.getText().toString();
if (!nome.isEmpty()) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("nome_vendedor", nome);
editor.apply();
tvBoasVindas.setText("Bem-vindo, " + nome + "!");
Toast.makeText(this, "Nome salvo!", Toast.LENGTH_SHORT).show();
} (1)
});
btnProximo.setOnClickListener(v -> {
Intent intent = new Intent(MainActivity.this, ResumoActivity.class);
startActivity(intent);
}); (1)
} (2)
} (3)
-Segunda Tela (ResumoActivity.java)
// ResumoActivity.java
package com.example.passocertoapp; (1)
import android.os.Bundle; (1)
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity; (1)
public class ResumoActivity extends AppCompatActivity {
@Override (1)
protected void onCreate(Bundle savedInstanceState) { (1)
super.onCreate(savedInstanceState); (1)
TextView textView = new TextView(this);
textView.setText("Bem-vindo à tela de resumo!");
textView.setTextSize(20f);
setContentView(textView);
} (4)
} (5)
-Adicionar a ResumoActivity no AndroidManifest.xml
Referências