Para cada questão do enunciado defina a(s) classes e - Dei-Isep

Propaganda
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
ficha nº4
2.
a)
Classes da aplicação:





Bolo: contém a definição para o bolo;
Confeitaria: contém a definição da confeitaria;
Fabrica: contém o conjunto de confeitarias e bolos que produz para todas as
confeitarias;
FabricaApp: classe responsável por arrancar a aplicação;
Leitura: classe auxiliar com métodos de leitura de Strings, reais, inteiros,etc.
b)
import java.io.*;
public class Bolo
{
private String designacao;
private float preco;
public Bolo()
{
designacao="";
preco=0.0f;
}
public Bolo(String d,float pr)
{
designacao=d;
preco=pr;
}
public static Bolo criarBolo() throws IOException
{
System.out.println("Insercao de dados para um bolo");
String d=Leitura.lerString("Designacao :");
float p=Leitura.lerReal("Preco :");
return new Bolo(d,p);
}
public String getDesignacao()
{
return designacao;
}
public float getPreco()
{
return preco;
}
}
página
1
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
ficha nº4
import java.io.*;
public class Confeitaria
{
private String nome;
private String endereco;
private int [] qtVendida;
public Confeitaria()
{
nome="";
endereco="";
qtVendida=new int[10];
}
public Confeitaria(String n,String e,int qt)
{
nome=n;
endereco=e;
qtVendida=new int[qt];
}
public static Confeitaria criarConfeitaria(int qt) throws
IOException
{
System.out.println("Insercao de dados para a nova confeitaria");
String n=Leitura.lerString("Nome
:");
String e=Leitura.lerString("Endereco :");
return new Confeitaria(n,e,qt);
}
public String getNome()
{
return nome;
}
public int getVendas(int indiceBolo)
{
return qtVendida[indiceBolo];
}
public void setVendas(int indiceBolo,int qtd)
{
qtVendida[indiceBolo]+= qtd;
}
public void aumentarConfeitaria()
{
qtVendida = aumentarArray(qtVendida,1);
}
static int [] aumentarArray(int [] b, int incremento)
{
int [] c = new int [b.length+incremento];
System.arraycopy(b, 0, c, 0, b.length);
return c;
}
}
página
2
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
ficha nº4
import java.io.*;
public class Fabrica
{
private Confeitaria [] vConfeitarias;
private Bolo [] vBolos;
private int qtBolos;
private int qtConf;
public Fabrica() throws IOException
{
//Criar bolos
qtBolos=10;
vBolos = new Bolo[qtBolos];
for(int i=0;i<qtBolos;i++)
vBolos[i] = Bolo.criarBolo();
//Criar confeitarias
qtConf=4;
vConfeitarias = new Confeitaria[qtConf];
for(int i=0;i<qtConf;i++)
vConfeitarias[i] = Confeitaria.criarConfeitaria(qtBolos);
}
// INSERIR BOLOS
public void inserirBolo() throws IOException
{
// Aumentar ao vector de bolos
vBolos = aumentarBolo(vBolos,1);
vBolos[qtBolos++]=Bolo.criarBolo();
// Aumentar o tamanho a cada vector de confeitarias
for(int i=0;i<qtConf;i++)
vConfeitarias[i].aumentarConfeitaria();
}
public void inserirConf() throws IOException
{
// Aumentar ao vector de confeitarias
vConfeitarias = aumentarConfeitaria(vConfeitarias,1);
vConfeitarias[qtConf++]=Confeitaria.criarConfeitaria(qtBolos);
}
página
3
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
ficha nº4
// VISUALIZAÇÃO DAS VENDAS PARA TODAS AS CONFEITARIAS
public void visualizarVendas()
{
System.out.println("\nVisualização das vendas de todas as
confeitarias");
for(int i=0;i<qtConf;i++)
{
System.out.print("\nConfeitaria "+vConfeitarias[i].getNome());
for(int j=0;j<qtBolos;j++)
System.out.print(" "+vConfeitarias[i].getVendas(j));
System.out.println();
}
}
// VISUALIZAÇÃO DO TOTAL DE VENDAS
public void visualizarVendasTotais() throws IOException
{
System.out.println("\nVisualização das vendas para um bolo");
for(int i=0;i<qtBolos;i++)
System.out.println("Bolo "+(i+1)+"
"+vBolos[i].getDesignacao());
int x = Leitura.lerInteiro("Qual o numero do bolo? ");
float soma=0f;
float valor;
valor= vBolos[x-1].getPreco();
for(int i=0;i<qtConf;i++)
soma = soma + vConfeitarias[i].getVendas(x-1)*valor;
System.out.println("\n Para o bolo "+x+" total de vendas: "+soma);
}
// INSERIR UMA VENDA DE BOLOS
public void inserirVenda() throws IOException
{
System.out.println("\nInsercao de vendas");
for(int i=0;i<qtConf;i++)
System.out.println("Confeitaria "+(i+1)+"
"+vConfeitarias[i].getNome());
int confX = Leitura.lerInteiro("Qual o numero da confeitaria? ");
for(int i=0;i<qtBolos;i++)
System.out.println("Bolo "+(i+1)+"
"+vBolos[i].getDesignacao());
int boloX = Leitura.lerInteiro("Qual o numero do bolo? ");
int qtd = Leitura.lerInteiro("Qual a quantidade ? ");
vConfeitarias[confX-1].setVendas(boloX-1,qtd);
}
página
4
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
ficha nº4
static Bolo [] aumentarBolo(Bolo [] b, int inc)
{
Bolo [] c = new Bolo[b.length+inc];
System.arraycopy(b,0,c,0,b.length);
return c;
}
static Confeitaria [] aumentarConfeitaria(Confeitaria [] b, int inc)
{
Confeitaria [] c = new Confeitaria[b.length+inc];
System.arraycopy(b,0,c,0,b.length);
return c;
}
}
import java.io.*;
public class FabricaApp
{
public static void main (String args[]) throws IOException
{
System.out.println("Aplicacao fabrico de bolos");
Fabrica f1=new Fabrica();
f1.visualizarVendas();
f1.inserirVenda();
f1.inserirBolo();
f1.visualizarVendas();
f1.visualizarVendasTotais();
}
}
página
5
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
ficha nº4
c)
As classes Bolo e Confeitaria mantêm-se inalteradas.
import java.io.*;
import java.util.*;
public class Fabrica
{
private Vector vConfeitarias;
private Vector vBolos;
private int qtBolos;
private int qtConf;
public Fabrica() throws IOException
{
//Criar bolos
qtBolos=2;
vBolos = new Vector(qtBolos);
for(int i=0;i<qtBolos;i++)
vBolos.addElement(Bolo.criarBolo());
//Criar confeitarias
qtConf=3;
vConfeitarias = new Vector(qtConf);
for(int i=0;i<qtConf;i++)
vConfeitarias.addElement(Confeitaria.criarConfeitaria(qtBolos));
}
// INSERIR BOLOS
public void inserirBolo() throws IOException
{
vBolos.addElement(Bolo.criarBolo());
qtBolos++;
// Aumentar o tamanho a cada vector de confeitarias
for(int i=0;i<qtConf;i++)
{
Confeitaria c = (Confeitaria)(vConfeitarias.elementAt(i));
c.aumentarConfeitaria();
}
}
public void inserirConf() throws IOException
{
// Aumentar ao vector de confeitarias
vConfeitarias.addElement(Confeitaria.criarConfeitaria(qtBolos));
qtConf++;
}
página
6
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
ficha nº4
// VISUALIZAÇÃO DAS VENDAS PARA TODAS AS CONFEITARIAS
public void visualizarVendas()
{
System.out.println("\nVisualização das vendas de todas as
confeitarias");
for(int i=0;i<qtConf;i++)
{
Confeitaria c = (Confeitaria)vConfeitarias.elementAt(i);
System.out.print("\nConfeitaria "+c.getNome());
for(int j=0;j<qtBolos;j++)
System.out.print(" "+c.getVendas(j));
System.out.println();
}
}
// VISUALIZAÇÃO DO TOTAL DE VENDAS
public void visualizarVendasTotais() throws IOException
{
System.out.println("\nVisualização das vendas para um bolo");
for(int i=0;i<qtBolos;i++)
{
Bolo b=(Bolo)vBolos.elementAt(i);
System.out.println("Bolo "+(i+1)+" "+b.getDesignacao());
}
int x = Leitura.lerInteiro("Qual o numero do bolo? ");
float soma=0f;
float valor;
Bolo b = (Bolo)vBolos.elementAt(x-1);
valor= b.getPreco();
for(int i=0;i<qtConf;i++)
{
Confeitaria c = (Confeitaria)vConfeitarias.elementAt(i);
soma = soma + c.getVendas(x-1)*valor;
}
System.out.println("\n Para o bolo "+x+" total de vendas:
"+soma);
}
// INSERIR UMA VENDA DE BOLOS
public void inserirVenda() throws IOException
{
System.out.println("\nInsercao de vendas");
for(int i=0;i<qtConf;i++)
{
Confeitaria c = (Confeitaria)vConfeitarias.elementAt(i);
System.out.println("Confeitaria "+(i+1)+" "+c.getNome());
}
int confX = Leitura.lerInteiro("Qual o numero da confeitaria? ");
for(int i=0;i<qtBolos;i++)
{
Bolo b = (Bolo)vBolos.elementAt(i);
página
7
Instituto Superior de Engenharia do Porto
Linguagens e Programação II – 2003/04 (1S)
Proposta de Resolução
System.out.println("Bolo "+(i+1)+"
ficha nº4
"+b.getDesignacao());
}
int boloX = Leitura.lerInteiro("Qual o numero do bolo? ");
int qtd = Leitura.lerInteiro("Qual a quantidade ? ");
Confeitaria c = (Confeitaria)vConfeitarias.elementAt(confX-1);
c.setVendas(boloX-1,qtd);
}
}
página
8
Download