Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mycompany.centrocomercial;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.List;
- /**
- *
- * @author UndefinedGadget
- */
- public class Main {
- public static void main(String[] args) {
- //ArrayList que permite guardar as lojas do centro comercial;
- List<Loja> listaLojas = new ArrayList();
- //CentroComercial - Nome e ArrayList
- CentroComercial centroComercial = new CentroComercial("NorteShopping", listaLojas);
- //Lojas Próprias - Área, Nome e Custo de Segurança
- centroComercial.addLoja(new Propria(120, "Levis", 700));
- centroComercial.addLoja(new Propria(130, "QuickSilver", 675));
- centroComercial.addLoja(new Propria(80, "Zara", 500));
- //Lojas Externas - Área, Nome, Custo de Segurança, Número de Funcionários e Receitas
- centroComercial.addLoja(new Externa(135, "Supreme", 720, 12, 350000, 10));
- centroComercial.addLoja(new Externa(118, "Gucci", 900, 9, 420000, 7));
- //Restaurante - Área, Nome, Número de Funcionários, Número de Mesas e Custo de Manutenção
- centroComercial.addLoja(new Restaurante(60, "Pizza Hut", 7, 20, 4000));
- centroComercial.addLoja(new Restaurante(75, "Burguer King", 11, 35, 6100));
- centroComercial.addLoja(new Restaurante(90, "McDonald's", 10, 50, 7000));
- centroComercial.addLoja(new Restaurante(55, "H3", 6, 30, 3700));
- //Quiosque - Área, Nome e Número de Funcionários
- centroComercial.addLoja(new Quiosque(25, "Papelaria", 3));
- centroComercial.addLoja(new Quiosque(30, "Tabacaria", 4));
- centroComercial.addLoja(new Quiosque(40, "Reprografia", 5));
- //Imprime toString das lojas armazenadas no ArrayList
- //for (int i = 0; i < listaLojas.size(); i++) {
- // System.out.println(listaLojas.get(i));
- //}
- //Imprime o nome do Centro Comercial
- System.out.printf("%n### Nome do Centro Comercial ###%n");
- System.out.println(centroComercial.getNomeCC());
- //Imprime o número de lojas do Centro Comercial
- System.out.printf("%n### Número de lojas do Centro Comercial ###%n");
- System.out.println(centroComercial.getNumLojas());
- //Imprime o total de receitas (rendas + segurança) do centro comercial
- System.out.printf("%n### Total de receitas (rendas + segurança) do Centro Comercial ###%n");
- System.out.printf("%.2f€%n", centroComercial.totalReceitasCC());
- //Imprime o total das rendas das Lojas Comuns do centro comercial
- System.out.printf("%n### Total das rendas das Lojas Comuns do Centro Comercial ###%n");
- double percRendaComum = centroComercial.totalRendaLojasComuns() / (centroComercial.totalRendaLojasAncora() + centroComercial.totalRendaLojasComuns()) * 100;
- System.out.printf("%.2f€(%.1f%%)%n", centroComercial.totalRendaLojasComuns(), percRendaComum);
- //Imprime o total do custo de segurança das Lojas Âncoras do centro comercial
- System.out.printf("%n### Total do custo de segurança das Lojas Âncoras do Centro Comercial ###%n");
- double percCustoSeguranca = centroComercial.totalCustoSegurancaLojasAncoras() / (centroComercial.totalCustoSegurancaLojasAncoras() + centroComercial.totalCustoSegurancaLojasComuns()) * 100;
- System.out.printf("%.2f€(%.1f%%)%n", centroComercial.totalCustoSegurancaLojasAncoras(), percCustoSeguranca);
- //Ordena a renda das lojas (crescente)
- Comparator<Loja> ordemCrecentedeRenda = new Comparator<Loja>() {
- @Override
- public int compare(Loja L1, Loja L2) {
- double renda1 = L1.calcularRenda();
- double renda2 = L2.calcularRenda();
- if (renda1 < renda2) {
- return -1;
- } else if (renda1 > renda2) {
- return 1;
- } else {
- return 0;
- }
- }
- };
- //Imprime o nome da loja e respetiva renda em ordem crescente
- System.out.printf("%n### Lojas por ordem crescente das rendas ###%n");
- List<Loja> contentor2 = centroComercial.getListaLojas();
- Collections.sort(contentor2, ordemCrecentedeRenda);
- listarForEach(contentor2);
- //Imprime o nome da loja e respetiva renda em ordem decrescente
- System.out.printf("%n### Lojas por ordem decrescente das rendas ###%n");
- Collections.sort(contentor2, Collections.reverseOrder(ordemCrecentedeRenda));
- listarForEach(contentor2);
- Comparator<Loja> ordenacaoTipo = new Comparator<Loja>() {
- @Override
- public int compare(Loja loja1, Loja loja2) {
- return Comparator.comparing(Loja::getTipoLoja)
- .thenComparing(Loja::getNome)
- .compare(loja1, loja2);
- }
- };
- System.out.printf("%n### Lojas por Ordem Alfabetica de Tipos de Loja ###%n");
- Collections.sort(contentor2, ordenacaoTipo);
- for (int i = 0; i < contentor2.size(); i++) {
- System.out.printf("\t%s - %s - %.2f \n", contentor2.get(i).getTipoLoja(),contentor2.get(i).getNome(),contentor2.get(i).calcularRenda());
- }
- }
- private static void listarForEach(List<Loja> loja) {
- for (Loja l : loja) {
- if(l.getNome().length() < 5)
- System.out.printf("\t%s - \t\t%.2f\n", l.getNome(), l.calcularRenda());
- else
- System.out.printf("\t%s - \t%.2f\n", l.getNome(), l.calcularRenda());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement