Bertoti

đź“ť Diagrama de classes: Mercadinho_Do_Ze

UML drawio

package cupom_fiscal;

/** *

  • @author Erik */

class Cliente { private String nome; private String cpf; private String dataPedido; private String formPagamento;

public Cliente(String nome, String cpf, String dataPedido, String formPagamento) {
    this.nome = nome;
    this.cpf = cpf;
    this.dataPedido = dataPedido;
    this.formPagamento = formPagamento;
}

public String getNome() {
    return nome;
}

public String getCpf() {
    return cpf;
}

public String getDataPedido() {
    return dataPedido;
}
public String getFormPagamento() {
    return formPagamento;
}}

package cupom_fiscal;

import java.util.ArrayList; import java.util.List;

class CupomFiscal { private List itens; private Cliente cliente;

public CupomFiscal(Cliente cliente) {
    this.cliente = cliente;
    this.itens = new ArrayList<>();
}

public void adicionarItem(Item item) {
    itens.add(item);
}

public double calcularTotal() {
    double total = 0;
    for (Item item : itens) {
        total += item.calcularTotal();
    }
    return total;
}

public void imprimirCupom() {
    System.out.println("CUPOM FISCAL");
    System.out.printf("Cliente: %s\nCPF: %s\nData do Pedido: %s\nForma de Pagamento: %s\n", cliente.getNome(), cliente.getCpf(), cliente.getDataPedido(), cliente.getFormPagamento());
    System.out.println("ITEM CODIGO DESCRICAO QTD.UN.VL TOTAL");

    for (Item item : itens) {
        System.out.println(item.toString());
    }

    System.out.printf("\nTOTAL R$%.2f\n", calcularTotal());
}}

package cupom_fiscal;

class Item { private String codigo; private String descricao; private int quantidade; private String unidade; private double valor;

public Item(String codigo, String descricao, int quantidade, String unidade, double valor) {
    this.codigo = codigo;
    this.descricao = descricao;
    this.quantidade = quantidade;
    this.unidade = unidade;
    this.valor = valor;
}

public double calcularTotal() {
    return quantidade * valor;
}

public String toString() {
    return String.format("%s %s %sUN valor %.2f", codigo, descricao, quantidade + unidade, valor);
}}

package cupom_fiscal;

import javax.swing.JOptionPane; import java.text.SimpleDateFormat; import java.util.Date;

public class Main { public static void main(String[] args) { // Obter dados do cliente String nome = JOptionPane.showInputDialog("Digite o nome do cliente:"); String cpf = JOptionPane.showInputDialog("Digite o CPF do cliente (ou deixe em branco):"); String[] opcoesPagamento = {"Cartao", "Dinheiro"}; int escolhaPagamento = JOptionPane.showOptionDialog(null, "Escolha a forma de pagamento:", "Forma de Pagamento", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoesPagamento, opcoesPagamento[0]);

    String formaPagamento = opcoesPagamento[escolhaPagamento];

    // Obter data atualizada
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    String dataPedido = dateFormat.format(new Date());

    // Criar objeto Cliente
    Cliente cliente = new Cliente(nome, cpf, dataPedido, formaPagamento);

    // Criar itens e cupom fiscal
    Item item1 = new Item("001", "SHAMPOO", 1, "UN", 16.3);
    Item item2 = new Item("002", "SABONETE", 3, "UN", 1.5);

    CupomFiscal cupom = new CupomFiscal(cliente);
    cupom.adicionarItem(item1);
    cupom.adicionarItem(item2);

    // Imprimir cupom fiscal
    cupom.imprimirCupom();
}}

1° TEXTO:"We see three critical differences between programming and software engineering: time, scale, and the trade-offs at play. On a software engineering project, engineers need to be more concerned with the passage of time and the eventual need for change. In a software engineering organization, we need to be more concerned about scale and efficiency, both for the software we produce as well as for the organization that is producing it. Finally, as software engineers, we are asked to make more complex decisions with higher-stakes outcomes, often based on imprecise estimates of time and growth."

Resposta: Vemos três diferenças críticas entre programação e engenharia de software: tempo, escala e as compensações em jogo. Em um projeto de engenharia de software, os engenheiros precisam estar mais preocupados com a passagem do tempo e com a eventual necessidade de mudanças. Numa organização de engenharia de software, precisamos de estar mais preocupados com a escala e a eficiência, tanto para o software que produzimos como para a organização que o produz. Finalmente, como engenheiros de software, somos solicitados a tomar decisões mais complexas com resultados de maior risco, muitas vezes baseados em estimativas imprecisas de tempo e crescimento.

2° TEXTO:"Within Google, we sometimes say, “Software engineering is programming integrated over time.” Programming is certainly a significant part of software engineering: after all, programming is how you generate new software in the first place. If you accept this distinction, it also becomes clear that we might need to delineate between programming tasks (development) and software engineering tasks (development, modification, maintenance). The addition of time adds an important new dimension to programming. Cubes aren’t squares, distance isn’t velocity. Software engineering isn’t programming."

Resposta: Entendo que a engenharia de software é extremamente importante para o desenvolvimento de nossa tecnologia, pois como uma das principais forças técnicas somos responsáveis por mudanças e melhorias. O engenheiro tem um alto comprometimento com o projeto.