diff --git a/2ano/2semestre/as/aula03/ASis-Lab03a Classes - part 1.pdf b/2ano/2semestre/as/aula03/ASis-Lab03a Classes - part 1.pdf new file mode 100644 index 0000000..8ef8505 Binary files /dev/null and b/2ano/2semestre/as/aula03/ASis-Lab03a Classes - part 1.pdf differ diff --git a/2ano/2semestre/as/aula03/ASis-Lab03b Classes - part 2.pdf b/2ano/2semestre/as/aula03/ASis-Lab03b Classes - part 2.pdf new file mode 100644 index 0000000..4e87507 Binary files /dev/null and b/2ano/2semestre/as/aula03/ASis-Lab03b Classes - part 2.pdf differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/AS Suporte - JAVA to UML.pdf b/2ano/2semestre/as/aula03/Lab03b-support/AS Suporte - JAVA to UML.pdf new file mode 100644 index 0000000..2f17a63 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/AS Suporte - JAVA to UML.pdf differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/README.md b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/README.md new file mode 100644 index 0000000..1113461 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/README.md @@ -0,0 +1,13 @@ +## Getting Started + +Sample JAVA project for MAS demonstrating an object-oriented implementation +Can be opened with Visual Studio Code. + +Run `DemoClass` to start the program. + +## Folder Structure + +The workspace contains: +- `src`: the folder with the source code + The compiled output files will be generated in the `bin` folder by default. + diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/DemoClass.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/DemoClass.class new file mode 100644 index 0000000..3c40227 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/DemoClass.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Alimento.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Alimento.class new file mode 100644 index 0000000..86f03d0 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Alimento.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Carne.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Carne.class new file mode 100644 index 0000000..c076f8e Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Carne.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Cereal.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Cereal.class new file mode 100644 index 0000000..f59cdd1 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Cereal.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Cliente.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Cliente.class new file mode 100644 index 0000000..70131fc Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Cliente.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Ementa.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Ementa.class new file mode 100644 index 0000000..24b6b65 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Ementa.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Legume.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Legume.class new file mode 100644 index 0000000..f922882 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Legume.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/OvoLacto.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/OvoLacto.class new file mode 100644 index 0000000..5673826 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/OvoLacto.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Pedido.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Pedido.class new file mode 100644 index 0000000..aa3df79 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Pedido.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Peixe.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Peixe.class new file mode 100644 index 0000000..e1a1e44 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Peixe.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Prato.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Prato.class new file mode 100644 index 0000000..a8bb81d Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/Prato.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoDieta.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoDieta.class new file mode 100644 index 0000000..ecf5ae4 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoDieta.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoOvolactovegetariano.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoOvolactovegetariano.class new file mode 100644 index 0000000..bba88ed Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoOvolactovegetariano.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoVegetariano.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoVegetariano.class new file mode 100644 index 0000000..dd67be0 Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/PratoVegetariano.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/TipoPeixe.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/TipoPeixe.class new file mode 100644 index 0000000..79a55ab Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/TipoPeixe.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/VariedadeCarne.class b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/VariedadeCarne.class new file mode 100644 index 0000000..91c4d3b Binary files /dev/null and b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/bin/ementas/VariedadeCarne.class differ diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/DemoClass.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/DemoClass.java new file mode 100644 index 0000000..0a298d9 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/DemoClass.java @@ -0,0 +1,128 @@ +import ementas.*; + +import java.time.LocalDateTime; +import java.util.Random; + +/** + * entry point da aplicação + * o código principal está na subpasta ementas + */ +public class DemoClass { + + static final Random randomizer = new Random(); + + public static void main(String[] args) { + + System.out.println("\n\nA preparar os dados aleatórios..."); + Ementa ementadeHoje = gerarEmentaAleatoria("Menu Primavera", "Loja 1"); + + System.out.println("\n\nEmenta para hoje:" + ementadeHoje); + + // criar um pedido de exemplo + Cliente cliente = new Cliente("Joao Pinto", "PT120200200"); + Pedido pedido = new Pedido(cliente, LocalDateTime.now()); + + // adiciona um prato à sorte, da ementa do dia + Prato opcao = ementadeHoje.listarPrato(sortearUmPrato()); + pedido.adicionarPrato(opcao); + + // adiciona outro prato à sorte, da ementa do dia + opcao = ementadeHoje.listarPrato(sortearUmPrato()); + pedido.adicionarPrato(opcao); + + System.out.println("\n\n__Pedido gerado__"); + System.out.println("Pedido: " + pedido); + Double precoTotal = pedido.calcularTotal(); + System.out.println("Preço do Pedido: " + precoTotal); + Double calorias = pedido.calcularCalorias(); + System.out.println("Calorias do Pedido: " + calorias); + } + + + /* + * retorna uma ordem na ementa (e.g. 3º opção da ementa) + */ + private static int sortearUmPrato() { + return (randomizer.nextInt(Ementa.NR_PRATOS_NA_EMENTA)); + } + + + /* + * Gera uma ementa, com a designação fornecida em parâmetro, e acrescenta + * alguns pratos aleatoriamente. + */ + private static Ementa gerarEmentaAleatoria(String designacao, String local) { + Ementa ementa = new Ementa(designacao, local, LocalDateTime.now()); + + for (int nrOpcaoPrato = 0; nrOpcaoPrato < Ementa.NR_PRATOS_NA_EMENTA; nrOpcaoPrato++) { + + Prato prato = gerarPratoAleatorio(nrOpcaoPrato + 1); + System.out.println("A gerar .. " + prato); + + // Adiciona 2 ingredientes a cada prato + int nrIngrediente = 1; + do { + Alimento aux = escolherUmAlimentoAleatorio(); + + if (prato.adicionarIngrediente(aux)) { + System.out.println("\tIngrediente " + nrIngrediente + " adicionado: " + aux); + nrIngrediente++; + } else + System.out.println("\tERRO: ingrediente sorteado nao é adequado " + nrIngrediente + ": " + aux); + + } while (nrIngrediente < 3); + + ementa.addPrato(prato); + } + return ementa; + } + + /* + * Gera uma ocorrencia de Alimento, com dados aleatorios + */ + public static Alimento escolherUmAlimentoAleatorio() { + + Alimento resultado; + switch (randomizer.nextInt(4)) { + case 0: + resultado = new Carne(VariedadeCarne.FRANGO, 22.3, 345.3, 300); + break; + case 1: + resultado = new Peixe(TipoPeixe.CONGELADO, 31.3, 25.3, 200); + break; + case 2: + resultado = new Legume("Couve Flor", 21.3, 22.4, 150); + break; + default: + resultado = new Cereal("Milho", 19.3, 32.4, 110); + break; + } + return resultado; + } + + /* + * Gera uma ocorrencia de Prato, com dados aleatorios + */ + public static Prato gerarPratoAleatorio(int i) { + Prato resultado; + switch (randomizer.nextInt(3)) { + case 0: + resultado = new Prato("Combinado n." + i, 100.0); + break; + case 1: + resultado = new PratoVegetariano("Vegetariano n." + i, 120.0); + break; + default: + resultado = new PratoDieta("Dieta n." + i, 200, 90.8); + break; + } + return resultado; + } + + + public static Alimento randAlimento() { + throw new UnsupportedOperationException(); + } + + +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Alimento.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Alimento.java new file mode 100644 index 0000000..97b1a72 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Alimento.java @@ -0,0 +1,46 @@ +package ementas; + +public class Alimento { + private double proteinas; + private double calorias; + private double peso; + + + public Alimento(double proteinas, double calorias, double peso) { + super(); + this.proteinas = proteinas; + this.calorias = calorias; + this.peso = peso; + } + + public double getProteinas() { + return proteinas; + } + + public void setProteinas(double proteinas) { + this.proteinas = proteinas; + } + + public double getCalorias() { + return calorias; + } + + public void setCalorias(double calorias) { + this.calorias = calorias; + } + + public double getPeso() { + return peso; + } + + public void setPeso(double peso) { + this.peso = peso; + } + + @Override + public String toString() { + return "Alimento [proteinas=" + proteinas + ", calorias=" + calorias + ", peso=" + peso + "]"; + } + + +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Carne.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Carne.java new file mode 100644 index 0000000..4372756 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Carne.java @@ -0,0 +1,24 @@ +package ementas; + +public class Carne extends Alimento { + private VariedadeCarne variedade; + + public Carne(VariedadeCarne variedade, double proteinas, double calorias, double peso) { + super(proteinas, calorias, peso); + this.variedade = variedade; + } + + public VariedadeCarne getVariedade() { + return variedade; + } + + public void setVariedade(VariedadeCarne variedade) { + this.variedade = variedade; + } + + @Override + public String toString() { + return "Carne [variedade=" + variedade + "; " + super.toString() + "]"; + } + +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Cereal.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Cereal.java new file mode 100644 index 0000000..795b8e1 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Cereal.java @@ -0,0 +1,23 @@ +package ementas; + +public class Cereal extends Alimento { + private String nome; + + public Cereal(String nome, double proteinas, double calorias, double peso) { + super(proteinas, calorias, peso); + this.nome = nome; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + @Override + public String toString() { + return "Cereal [nome=" + nome + "; " + super.toString() + "]"; + } +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Cliente.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Cliente.java new file mode 100644 index 0000000..d031c97 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Cliente.java @@ -0,0 +1,36 @@ +package ementas; + +/** + * cliente que coloca novas encomendas/pedidos + */ +public class Cliente { + + private String nome; + private String nif; + + public Cliente(String nome, String nif) { + this.setNome(nome); + this.setNif(nif); + } + + @Override + public String toString() { + return "Cliente = " + getNome() + ", " + getNif(); + } + + public java.lang.String getNome() { + return this.nome; + } + + public void setNome(java.lang.String value) { + this.nome = value; + } + + public String getNif() { + return nif; + } + + public void setNif(String nif) { + this.nif = nif; + } +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Ementa.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Ementa.java new file mode 100644 index 0000000..25858ce --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Ementa.java @@ -0,0 +1,80 @@ +package ementas; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +public class Ementa { + + public static final int NR_PRATOS_NA_EMENTA = 4; + + private String nome; + private String local; + private final List pratos; + + private final LocalDateTime dia; + + public Ementa(String nome, String local, LocalDateTime dia) { + this.nome = nome; + this.local = local; + this.dia = dia; + this.pratos = new ArrayList(); // inicia uma lista vazia + } + + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public String getLocal() { + return local; + } + + public void setLocal(String local) { + this.local = local; + } + + @Override + public String toString() { + + StringBuilder builder = new StringBuilder(); + + builder.append("Ementa [nome=" + nome + ", local=" + local + ", dia " + DateTimeFormatter.ISO_LOCAL_DATE.format(dia) + "]\n"); + for (Prato prato : pratos) { + builder.append("\t"); + builder.append(prato.getNome()); + builder.append("\t"); + builder.append(prato.getPreco()); + builder.append("\n"); + } + builder.append("]"); + return builder.toString(); + + } + + public double getTotalEmenta() { + double sum = 0; + for (Prato prato : pratos) { + sum += prato.getPreco(); + } + return sum; + } + + public void addPrato(Prato prato) { + pratos.add(prato); + } + + public Prato listarPrato(int ordem) { + return pratos.get(ordem); + } + + public void listarPratos() { + // ainda não foi implementado + throw new UnsupportedOperationException(); + } +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Legume.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Legume.java new file mode 100644 index 0000000..57eb26a --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Legume.java @@ -0,0 +1,23 @@ +package ementas; + +public class Legume extends Alimento { + private String nome; + + public Legume(String nome, double proteinas, double calorias, double peso) { + super(proteinas, calorias, peso); + this.nome = nome; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + @Override + public String toString() { + return "Legume [nome=" + nome + "; " + super.toString() + "]"; + } +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/OvoLacto.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/OvoLacto.java new file mode 100644 index 0000000..e226245 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/OvoLacto.java @@ -0,0 +1,9 @@ +package ementas; + +public class OvoLacto extends Alimento { + + public OvoLacto(double proteinas, double calorias, double peso) { + super(proteinas, calorias, peso); + } + +} \ No newline at end of file diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Pedido.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Pedido.java new file mode 100644 index 0000000..72130d9 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Pedido.java @@ -0,0 +1,71 @@ +package ementas; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + + +/** + * representa um pedido de um cliente + */ +public class Pedido { + private final Cliente cliente; + private final List opcoes; + private LocalDateTime hora; + + public Pedido(Cliente cliente, LocalDateTime hora) { + this.cliente = cliente; + this.hora = hora; + opcoes = new ArrayList<>(); + } + + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + + builder.append(cliente); + builder.append("\n"); + for (Prato prato : opcoes) { + builder.append("\t prato: "); + builder.append(prato); + builder.append("\n"); + } + builder.append("datahora="); + builder.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(hora)); + builder.append("]"); + + return builder.toString(); + } + + public double calcularTotal() { + double parcial; + double total = 0; + for (Prato prato : opcoes) { + parcial = prato.getPreco(); + total = total + parcial; + } + return total; + } + + public double calcularCalorias() { + double parcial; + double total = 0; + for (Prato prato : opcoes) { + parcial = prato.totalCalorias(); + total = total + parcial; + } + return total; + } + + public void setHora(java.time.LocalDateTime value) { + this.hora = value; + } + + public void adicionarPrato(Prato pratoEscolhido) { + opcoes.add(pratoEscolhido); + + } + +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Peixe.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Peixe.java new file mode 100644 index 0000000..73e7f03 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Peixe.java @@ -0,0 +1,24 @@ +package ementas; + +public class Peixe extends Alimento { + private TipoPeixe tipo; + + public Peixe(TipoPeixe tipo, double proteinas, double calorias, double peso) { + super(proteinas, calorias, peso); + this.tipo = tipo; + } + + public TipoPeixe getTipo() { + return tipo; + } + + public void setTipo(TipoPeixe tipo) { + this.tipo = tipo; + } + + @Override + public String toString() { + return "Peixe [tipo=" + tipo + "; " + super.toString() + "]"; + } + +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Prato.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Prato.java new file mode 100644 index 0000000..04c2d14 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/Prato.java @@ -0,0 +1,81 @@ +package ementas; + +import java.util.ArrayList; +import java.util.List; + +public class Prato { + + private final String nome; + private final List listaAlimentos; + private final int contagemIngredientes; + + private final double preco; + + public Prato(String nome, double preco) { + this.nome = nome; + this.preco = preco; + listaAlimentos = new ArrayList<>(); + contagemIngredientes = 0; + } + + public String getNome() { + return nome; + } + + + @Override + public String toString() { + return "Prato [nome=" + nome + "," + contagemIngredientes + " ingredientes, preco " + preco + "]"; + } + + public boolean adicionarIngrediente(Alimento alimento) { + listaAlimentos.add(alimento); + return true; + } + + public String alimentosInfo() { + String msg = ""; + + for (Alimento alimento : listaAlimentos) { + msg = msg.concat(alimento.toString()); + } + return msg; + } + + + public double totalPeso() { + double p = 0; + for (Alimento alimento : listaAlimentos) { + p = p + alimento.getPeso(); + } + return p; + } + + + public double totalCalorias() { + Double parcial; + double calorias = 0.0; + + for (Alimento alim : listaAlimentos) { + parcial = alim.getCalorias(); + calorias = calorias + parcial; + } + return calorias; + } + + + public double totalProteinas() { + double parcial; + double proteinas = 0; + for (Alimento alim : listaAlimentos) { + parcial = alim.getCalorias(); + proteinas = proteinas + parcial; + } + return proteinas; + } + + public double getPreco() { + return this.preco; + } + +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoDieta.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoDieta.java new file mode 100644 index 0000000..eea616f --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoDieta.java @@ -0,0 +1,17 @@ +package ementas; + +public class PratoDieta extends Prato { + private final double limiteCalorias; + + public PratoDieta(String nome, double preco, double limiteCalorias) { + super(nome, preco); + this.limiteCalorias = limiteCalorias; + } + + @Override + public boolean adicionarIngrediente(Alimento alim) { + if (totalCalorias() + alim.getCalorias() <= limiteCalorias) + return super.adicionarIngrediente(alim); + return false; + } +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoOvolactovegetariano.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoOvolactovegetariano.java new file mode 100644 index 0000000..7333cd8 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoOvolactovegetariano.java @@ -0,0 +1,17 @@ +package ementas; + +public class PratoOvolactovegetariano extends Prato { + + public PratoOvolactovegetariano(String nomePrato, double preco) { + super(nomePrato, preco); + + } + + @Override + public boolean adicionarIngrediente(Alimento a) { + if (a instanceof Cereal || a instanceof Legume || a instanceof OvoLacto) + return super.adicionarIngrediente(a); + return false; + } + +} \ No newline at end of file diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoVegetariano.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoVegetariano.java new file mode 100644 index 0000000..3e95afb --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/PratoVegetariano.java @@ -0,0 +1,15 @@ +package ementas; + +public class PratoVegetariano extends Prato { + + public PratoVegetariano(String nome, double preco) { + super(nome, preco); + } + + @Override + public boolean adicionarIngrediente(Alimento a) { + if (a instanceof Cereal || a instanceof Legume) + return super.adicionarIngrediente(a); + return false; + } +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/TipoPeixe.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/TipoPeixe.java new file mode 100644 index 0000000..d3663a5 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/TipoPeixe.java @@ -0,0 +1,6 @@ +package ementas; + +public enum TipoPeixe { + CONGELADO, + FRESCO +} diff --git a/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/VariedadeCarne.java b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/VariedadeCarne.java new file mode 100644 index 0000000..d998ca1 --- /dev/null +++ b/2ano/2semestre/as/aula03/Lab03b-support/DemoEmentas/src/ementas/VariedadeCarne.java @@ -0,0 +1,9 @@ +package ementas; + +public enum VariedadeCarne { + VACA, + PORCO, + PERU, + FRANGO, + OUTRA +} diff --git a/2ano/2semestre/as/aula03/aula03.md b/2ano/2semestre/as/aula03/aula03.md new file mode 100644 index 0000000..bec4918 --- /dev/null +++ b/2ano/2semestre/as/aula03/aula03.md @@ -0,0 +1,10 @@ +# Ex 3.1 + +a) V +b) V +c) F +d) F +e) F +f) F +g) F +h) V \ No newline at end of file diff --git a/2ano/2semestre/as/aula03/ex3.5.jpg b/2ano/2semestre/as/aula03/ex3.5.jpg new file mode 100644 index 0000000..0296a94 Binary files /dev/null and b/2ano/2semestre/as/aula03/ex3.5.jpg differ diff --git a/2ano/2semestre/as/aula03/lab3-ex3.5.vpp b/2ano/2semestre/as/aula03/lab3-ex3.5.vpp new file mode 100644 index 0000000..5c430e9 Binary files /dev/null and b/2ano/2semestre/as/aula03/lab3-ex3.5.vpp differ diff --git a/2ano/2semestre/as/aula03/lab3-ex3.5.vpp.bak_000f b/2ano/2semestre/as/aula03/lab3-ex3.5.vpp.bak_000f new file mode 100644 index 0000000..5510f89 Binary files /dev/null and b/2ano/2semestre/as/aula03/lab3-ex3.5.vpp.bak_000f differ diff --git a/2ano/2semestre/as/aula03/lab3-ex3.5.vpp.bak_001d b/2ano/2semestre/as/aula03/lab3-ex3.5.vpp.bak_001d new file mode 100644 index 0000000..bcf6604 Binary files /dev/null and b/2ano/2semestre/as/aula03/lab3-ex3.5.vpp.bak_001d differ diff --git a/2ano/2semestre/as/aula04/ASis-Lab04 behavior.pdf b/2ano/2semestre/as/aula04/ASis-Lab04 behavior.pdf new file mode 100644 index 0000000..4138931 Binary files /dev/null and b/2ano/2semestre/as/aula04/ASis-Lab04 behavior.pdf differ diff --git a/2ano/2semestre/as/aula04/aula04.adoc b/2ano/2semestre/as/aula04/aula04.adoc new file mode 100644 index 0000000..58f7b9f --- /dev/null +++ b/2ano/2semestre/as/aula04/aula04.adoc @@ -0,0 +1,10 @@ += Aula 04 + +== Ex 4.1 + +A intereção começa com o utilizador clica em efetuar o pagamento com o ApplePay. Depois disto, a aplicação IOS faz um pedido de pagamento ao _PassKit View Controller_. Esta entidade pede a aprovação de pagamento bem como os endereços de faturação e entrega ao utilizador e aguarda a confirmação de autorização. + +O _PassKit View Controller_ procede então ao processamento da informação do pagamento e ao envio do _Apple Token_ para o Servidor da Apple. Ao receber o token, o servidor encripta-o com o ID de comerciante e envia-o para a aplicação IOS, passando pelo _PassKit View Controller_. + +Ao receber o token encriptado, a aplicação IOS envia-o para o serviço de pagamento do comerciante. Este serviço processa o pedido e desencripta o token. De seguida, efetua o pedido de pagamento à _Gateway de Pagamento_ e aguarda a resposta. Ao receber a resposta, o serviço processa a resposta e envia-a para a aplicação IOS, terminando a interação. + diff --git a/2ano/2semestre/as/aula04/aula04.vpp b/2ano/2semestre/as/aula04/aula04.vpp new file mode 100644 index 0000000..6e77342 Binary files /dev/null and b/2ano/2semestre/as/aula04/aula04.vpp differ diff --git a/2ano/2semestre/as/aula04/aula04.vpp.bak_000f b/2ano/2semestre/as/aula04/aula04.vpp.bak_000f new file mode 100644 index 0000000..be95d52 Binary files /dev/null and b/2ano/2semestre/as/aula04/aula04.vpp.bak_000f differ diff --git a/2ano/2semestre/as/aula04/aula04.vpp.bak_001d b/2ano/2semestre/as/aula04/aula04.vpp.bak_001d new file mode 100644 index 0000000..6539bd7 Binary files /dev/null and b/2ano/2semestre/as/aula04/aula04.vpp.bak_001d differ diff --git a/2ano/2semestre/as/aula04/aula04.vpp.bak_002d b/2ano/2semestre/as/aula04/aula04.vpp.bak_002d new file mode 100644 index 0000000..deddac6 Binary files /dev/null and b/2ano/2semestre/as/aula04/aula04.vpp.bak_002d differ diff --git a/2ano/2semestre/as/aula04/ex4.1.pdf b/2ano/2semestre/as/aula04/ex4.1.pdf new file mode 100644 index 0000000..6af7b4b --- /dev/null +++ b/2ano/2semestre/as/aula04/ex4.1.pdf @@ -0,0 +1,770 @@ +%PDF-1.4 +% +1 0 obj +<< /Title (Aula 04) +/Creator (Asciidoctor PDF 2.3.14, based on Prawn 2.4.0) +/Producer (Asciidoctor PDF 2.3.14, based on Prawn 2.4.0) +/ModDate (D:20240311152503+00'00') +/CreationDate (D:20240311152804+00'00') +>> +endobj +2 0 obj +<< /Type /Catalog +/Pages 3 0 R +/Names 10 0 R +/Outlines 14 0 R +/PageLabels 17 0 R +/PageMode /UseOutlines +/OpenAction [7 0 R /FitH 841.89] +/ViewerPreferences << /DisplayDocTitle true +>> +>> +endobj +3 0 obj +<< /Type /Pages +/Count 1 +/Kids [7 0 R] +>> +endobj +4 0 obj +<< /Length 2 +>> +stream +q + +endstream +endobj +5 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 4 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +>> +>> +endobj +6 0 obj +<< /Length 5174 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +247.33926 777.054 Td +/F2.0 27 Tf +[<41> 20.01953 <756c61203034>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 730.074 Td +/F2.0 22 Tf +<457820342e31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.46504 Tw + +BT +48.24 700.886 Td +/F1.0 10.5 Tf +[<4120696e746572658d8b6f20636f6d658d6120636f6d206f207574696c697a61646f7220636c69636120656d2065666574756172206f20706167616d656e746f20636f6d206f204170706c655061> 20.01953 <79> 89.84375 <2e204465706f697320646973746f2c2061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.00057 Tw + +BT +48.24 685.106 Td +/F1.0 10.5 Tf +<61706c6963618d8b6f20494f532066617a20756d2070656469646f20646520706167616d656e746f20616f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.00057 Tw + +BT +304.48357 685.106 Td +/F3.0 10.5 Tf +<506173734b6974205669657720436f6e74726f6c6c6572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.00057 Tw + +BT +426.82471 685.106 Td +/F1.0 10.5 Tf +<2e204573746120656e74696461646520706564652061> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.59975 Tw + +BT +48.24 669.326 Td +/F1.0 10.5 Tf +[<6170726f76618d8b6f20646520706167616d656e746f2062656d20636f6d6f206f7320656e646572658d6f73206465206661747572> 20.01953 <618d8b6f206520656e747265676120616f207574696c697a61646f72206520616775617264612061>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 653.546 Td +/F1.0 10.5 Tf +<636f6e6669726d618d8b6f206465206175746f72697a618d8b6f2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.13782 Tw + +BT +48.24 625.766 Td +/F1.0 10.5 Tf +<4f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.13782 Tw + +BT +58.88832 625.766 Td +/F3.0 10.5 Tf +<506173734b6974205669657720436f6e74726f6c6c6572> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.13782 Tw + +BT +175.50396 625.766 Td +/F1.0 10.5 Tf +<2070726f6365646520656e748b6f20616f2070726f63657373616d656e746f20646120696e666f726d618d8b6f20646f20706167616d656e746f206520616f20656e76696f> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.40678 Tw + +BT +48.24 609.986 Td +/F1.0 10.5 Tf +<646f20> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.40678 Tw + +BT +64.86128 609.986 Td +/F3.0 10.5 Tf +[<4170706c652054> 29.78516 <6f6b> 20.01953 <656e>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.40678 Tw + +BT +126.23561 609.986 Td +/F1.0 10.5 Tf +[<20706172> 20.01953 <61206f205365727669646f72206461204170706c652e2041> 20.01953 <6f2072656365626572206f20746f6b> 20.01953 <656e2c206f207365727669646f7220656e6372697074612d6f20636f6d206f204944206465>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 594.206 Td +/F1.0 10.5 Tf +[<636f6d65726369616e7465206520656e7669612d6f20706172> 20.01953 <6120612061706c6963618d8b6f20494f532c2070617373616e646f2070656c6f20>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +341.89329 594.206 Td +/F3.0 10.5 Tf +<506173734b6974205669657720436f6e74726f6c6c6572> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +458.23329 594.206 Td +/F1.0 10.5 Tf +<2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +4.65062 Tw + +BT +48.24 566.426 Td +/F1.0 10.5 Tf +[<41> 20.01953 <6f2072656365626572206f20746f6b> 20.01953 <656e20656e637269707461646f2c20612061706c6963618d8b6f20494f5320656e7669612d6f20706172> 20.01953 <61206f2073657276698d6f20646520706167616d656e746f20646f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.90495 Tw + +BT +48.24 550.646 Td +/F1.0 10.5 Tf +[<636f6d65726369616e74652e20457374652073657276698d6f2070726f6365737361206f2070656469646f206520646573656e637269707461206f20746f6b> 20.01953 <656e2e20446520736567756964612c20656665747561206f2070656469646f206465>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.10206 Tw + +BT +48.24 534.866 Td +/F1.0 10.5 Tf +<706167616d656e746f208820> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.10206 Tw + +BT +115.72812 534.866 Td +/F3.0 10.5 Tf +[<476174657761> 20.01953 <7920646520506167616d656e746f>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.10206 Tw + +BT +230.48704 534.866 Td +/F1.0 10.5 Tf +[<20652061677561726461206120726573706f7374612e2041> 20.01953 <6f2072656365626572206120726573706f7374612c206f2073657276698d6f2070726f6365737361>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 519.086 Td +/F1.0 10.5 Tf +[<6120726573706f737461206520656e7669612d6120706172> 20.01953 <6120612061706c6963618d8b6f20494f532c207465726d696e616e646f206120696e746572> 20.01953 <618d8b6f2e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.263 Td +/F1.0 9 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +7 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 6 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 8 0 R +/F1.0 12 0 R +/F3.0 13 0 R +>> +/XObject << /Stamp1 19 0 R +>> +>> +>> +endobj +8 0 obj +<< /Type /Font +/BaseFont /c69e49+NotoSerif-Bold +/Subtype /TrueType +/FontDescriptor 22 0 R +/FirstChar 32 +/LastChar 255 +/Widths 24 0 R +/ToUnicode 23 0 R +>> +endobj +9 0 obj +[7 0 R /XYZ 0 758.37 null] +endobj +10 0 obj +<< /Type /Names +/Dests 11 0 R +>> +endobj +11 0 obj +<< /Names [(__anchor-top) 18 0 R (_ex_4_1) 9 0 R] +>> +endobj +12 0 obj +<< /Type /Font +/BaseFont /521ac8+NotoSerif +/Subtype /TrueType +/FontDescriptor 26 0 R +/FirstChar 32 +/LastChar 255 +/Widths 28 0 R +/ToUnicode 27 0 R +>> +endobj +13 0 obj +<< /Type /Font +/BaseFont /a201a1+NotoSerif-Italic +/Subtype /TrueType +/FontDescriptor 30 0 R +/FirstChar 32 +/LastChar 255 +/Widths 32 0 R +/ToUnicode 31 0 R +>> +endobj +14 0 obj +<< /Type /Outlines +/Count 2 +/First 15 0 R +/Last 16 0 R +>> +endobj +15 0 obj +<< /Title +/Parent 14 0 R +/Count 0 +/Next 16 0 R +/Dest [7 0 R /XYZ 0 841.89 null] +>> +endobj +16 0 obj +<< /Title +/Parent 14 0 R +/Count 0 +/Prev 15 0 R +/Dest [7 0 R /XYZ 0 758.37 null] +>> +endobj +17 0 obj +<< /Nums [0 << /P (1) +>>] +>> +endobj +18 0 obj +[7 0 R /XYZ 0 841.89 null] +endobj +19 0 obj +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 165 +>> +stream +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +/DeviceRGB CS +0.86667 0.86667 0.86667 SCN +0.25 w +48.24 30.0 m +547.04 30.0 l +S +Q +Q + +endstream +endobj +20 0 obj +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 165 +>> +stream +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +/DeviceRGB CS +0.86667 0.86667 0.86667 SCN +0.25 w +48.24 30.0 m +547.04 30.0 l +S +Q +Q + +endstream +endobj +21 0 obj +<< /Length1 7840 +/Length 4650 +/Filter [/FlateDecode] +>> +stream +x8mp[Uv羧/Ē?XW~$۲qlٖ;cI2 ْme INimYX0ShlYm3M@0v ;nYضЙ0a0[=ىawt=s}z(!0ᶵ}u߹{R`\ ՝hXy`Ƿ|n|@жq DsDP^C.":$\mF|B4P :в j=hGt) {x K)@Ng @z3/h4 ř+S>Poj@9A HT^{~JmGzuv߁9_y:AV 6˰bb?PƠ;#K, )<:8q1VU߇AROC cc1%v ۽}V%t7M  W.qO؁ё.o_ޞ=-6vTc6U;rstZZ% +]puYU'X.)4vIJ&J:$B$*r3NO8|7UuفٌU2 P<|l! +8j^4ε4jny R|4 Ut;[YuC!i4Q@rr qfHr4Bj+ 4凤PO]ra(9Ƈw%KnbVǦtIduAO#}t};%P4OØtzX@:x%2#Q^O]a֕5tQ!,ŨFC*0-uv +SI8RivȈ +hf +(c hZ呦l=>DTjZmF0%8ydKz\(jrɐ_Jls9gJu+iVqL:{W۩~'3\6=XJBs)` ᩜ>Yvф_)1chf, y|cni_t̩j]|ƬlOYW>(QЀ:4؋0`q8`/#lJcr#u÷Uٴa(1eiMǨcd@f8彂e(Qنݒ,LdM[+:r{tM:i̝f% `8Fǘؐ;1AAh(-}FaȘgҌUw@-)IR^p,H1RβH#Hlq +K8np&3^9CNe!C6&׽SuQ~v]xo tbO* +"f= +Kq52]堛|!:k9] &kF"/uC~8 dp@9mS8TUr\ cݸ|n_g [Y{5Ջk;#;k|n9C ;"z_z8%*fLˁ+]/|YsK޻$..x}Iy<ӱ=-Ꟍ=yI|@z_p@pB@] 8yϞ_;0yyOGN ;N:-Tx+3&*c`4_o^lsMΉ9~-,@ ] Rۋj܀ +wO7DQtXLǧW/=+N[f/`{K;L}V^_Ћ18/ Pa'5BέzMMcWN#Z7ȚdǷJGΜ]cr>cr=%aj d_$$7$d2Ir/J2!d5ÛS*+Ԅ^Nawj)!*źJaaY}IVy$ .ݯzx_v}x&l6j΍dr_H= ;9kOKH~XK}I8r h)X˙?U %5oiN +Qm։]pMxF8~vՏUׅ^xQx=`fFO&7Ww'AFgBl{:/bsy/./'U_Z; +d>&?ŒimBiI XG,}R>hW#Y ~\WGz4W"T%BG{QAcH]RVbE_?}x{<ꉮICHwH^0=zAx;?{sqMR⋤c=ϳ?3n3dƽ_3),Y}b?]}&Zlr YtG^%wJjtNj +?#ڟ\VJ>b B{)iS jY:N(cFF`h C̤ZB;lDh&E?4Z"=RI\oo]?:|ȅR]Nј\WK`PU͞-{ZVEV4tVkKwUAǀ5}K͏kl:!߰/eWiy ۅ1 #^I5Q%ٖmٲCdK9&_nѐ.D,:z*+rlqEKYQmWkM6ZR[VVj+Ѽ]mF+hS/WWHQf ЫT*pkO$" )Fba:4ktt* 'CX*FDdn0;K|48YzS2p"-VkKlgwIp˖|$I4`5_ '#KFT.DRB % +PغJ{lǏ[3l,jl(Ž*\_CgC-;6:L#$\^ +4уt"^ + +4ӛii; EDdfwCQ2Dkt]Cܣfzx32SSQNLѡqgtba:0cf`8 ~('4h|1R=uN -5kTĈYe9f-8|_9v++|[ X =L +endstream +endobj +22 0 obj +<< /Type /FontDescriptor +/FontName /c69e49+NotoSerif-Bold +/FontFile2 21 0 R +/FontBBox [-555 -250 1306 1058] +/Flags 6 +/StemV 0 +/ItalicAngle 0 +/Ascent 1068 +/Descent -292 +/CapHeight 1462 +/XHeight 1098 +>> +endobj +23 0 obj +<< /Length 270 +/Filter [/FlateDecode] +>> +stream +x]n E|bD^"TM7YL"dq/Aޚ[prȵ* O0+#Q@jۖw,1Lؙ>o7,`#Xq/z˸d; +&gu|xAy;t +V?JYֵZw WǤX[`gaDB@,I-ZyŠBHZ]/5uRkI(jhRCs%diMOMMox+W +endstream +endobj +24 0 obj +[259 600 600 600 600 600 600 600 600 600 600 600 600 600 293 600 559 559 600 600 559 600 600 600 600 600 600 600 600 600 600 600 600 752 600 600 600 652 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 599 600 600 600 600 600 600 600 600 600 600 352 600 600 600 600 600 600 600 600 666 600 600 645 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +25 0 obj +<< /Length1 11624 +/Length 7272 +/Filter [/FlateDecode] +>> +stream +xz T[ו9^=<H+.BS yJBĖ@aH8vljdOx2L+g'kN2n58Yt6ubiՕst1q5W{g}>/!Bi(b\}(t!< RĜKgC ,s@tL}TٶɅ=!B}ɪ$2B$=)N"9X˿pN ߸b"}#9lh?gPs0:BH_#Ni:BbpOtJ~|F8}S̞9"w))eirĠW>>~ZxDBHrN ǏRS 57c4?aEpaMQG! ?xn+ dBx EhB}M'ܻD14؛h?sh?)y o!RCKvC^O;Q>wP+L*0Z->}3~`zs[=l@hp6cJ0 fDNZ5VtE-Bvj2*Ge$?C\Go~/J:gJVW֎ BXрj]Y{:hTbgۇzYQFOA-vZ1b@VK:~ =:<Wlfh7%*7)9(Y =ޕ( +N?zti/ ^V23Q˃W]>*)X +)ʊ2i>RC%v;NLX4CFm l~1F˕fAf4|QU +m$n9gX-GakENiwF(D#aWՠQ1m,qxB:rQ(Qfze.oϰ3ӻMt:^@q:&3W7众QϨL'[RmQB܈ΠC#F%$ kR‚{Z;_ +ya!'L:5@ƀ*"TyFi>jxhDD0h|ĸ60!-'fݠnlD1"zWqA4("nۖ3i9C3fF$"tVao#Ն i+W&>9xنOmr1y_a]RH0NFIl@p ̀|3Ҕhlnڈ[r) 3p66V\Q8rf* + `%r#[!p3OӁKCn:[h'O $}n|F:L͢$ ` :KxzއA-|R7QHBDй + 9`1,;ۖZ+}?,;},fy/f]+|{[ [Go1gR/<ӟ.|I:~{M;pEO*\xqVqizg28,sg3cg=s̍3kg$gK}YPGùYk2nP +n|{ +_Y{drj{ad**{ w%-9p?=`Yۈ*c xw[2bΎ²,w|ڝmQ3p[aIwʍ;kLKlAF7?% +~k`"[uX6+OFui"]?:ziVF}=6BBQp9ሁ^8'l!pd #KKxwx7(#x`ЂG\,}Z` \|@hm !Ia Wല$yETvCO11eu7,OE<7I*z>Cy8 -a%lwԺW4mϣwЇuYd8: gX9k iZ6cpl +Cl(xXb)(_oG܃@<-4w7aP(irOjz !tLAWdJ0 h/:\~/AKR?e3!T,xy9~|]3Vym\+ɧ`J zԉ0c/~If|Vϳ*KiɣRF: =)XV-[.GN39ɓ4tE&4d"KAdh3t $[jfWϻǹO`lONȬZc5j O .*)ޱVzpzXj29HℑtE(˪UY੧hёO1h' fWA{B9O. \O|/g A#_>q /`{+ۿ:w㹑n;wsJĒ;}Pz'`l˖c߹i׹cw\Awyƀ6v=lG쒱.?<y9*'-wdkZԺ>. +ѰCyS5;:Xmd|=6{t2ҝSmmVyzו=lͽ;ks+{Kl6{=]&mtOX7<:uۍ҈XM`if`'q2^)Aws䁑?4tG~d9MSU$;wK_\SڽZƘ3ơk9[:1a[Q'j)r}LzՁ˰Q+7>٦²`if*"9\`oGCvjq슂Lf$ + FSk >.0ϦVtio3?#ʶ 񩮛C줰bOkC..l߾7gk!'CN\9qk4d|~_mG&mcz{MGxnϣBbkʖ>y񽇶mvWzZu< :&]-W Yy60EDoMXoBɈ=-i#S[1;eXVkvk?抹r&\uEIO]qB Nr.ʴK|UdW VCn(-5n]뿘8?߰av,tYwuoLZ{|qwB\| >][jɗv4 }@Z-U"źq1_TZ2.,LtoT~50ol56R k XFOO|dr_76UDSpcJ= ;YtPtڬT84VECZGں3M86Y-嬩yeWeM/o?7!Ʊ${}}HLweWs][c_67ɒH+Tgs-g)w3_0<ؙg<֝؋'>dp:*\)6fɒ=ɷYZUmaL| GpW/߿+*ۈT ̄#3K4|Q05\ķw W#]~ijsu9!ruη=]} +>8,0ZgfgTWO= /'f&g&YԒ +z\ @?BЁ< rhi_KȗCxbqf!6gfM)s{/Z@hFģjT +|5PP, +ׅUCz0 fԎͣa*ATk +-A}?Hv@> +endobj +27 0 obj +<< /Length 381 +/Filter [/FlateDecode] +>> +stream +x]n0E +.E Yf@0P$/@~D1%_ޛ  qrf΀S=_iZ}3d][;Om~K.4ξ\\^|_<WOeypƒ[|/+=cc}1y s}:ЍY]m=bk]הu]F wql-EkYEvK&$@%%%%DTYXPXdoބ z&M()TJ*$: +BGQ(t: +A{b_pifH)?Wmq$p8).(ߵg +endstream +endobj +28 0 obj +[259 500 500 500 500 500 500 500 500 500 500 500 250 310 250 500 500 559 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 705 500 500 727 623 500 500 500 367 500 500 500 500 500 742 604 500 500 543 500 500 500 500 500 500 500 500 500 500 500 500 500 562 613 492 613 535 369 538 500 319 500 584 310 944 645 577 613 500 471 451 352 634 579 500 500 564 511 500 500 500 500 500 500 500 500 500 500 500 500 500 562 500 500 562 500 492 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500] +endobj +29 0 obj +<< /Length1 9156 +/Length 5710 +/Filter [/FlateDecode] +>> +stream +x9 xչ>$nBf3$AX"Iv7$ui&I6$awDňy R G[RkZѪ6KZugf' ^{w;˜B h QGP!id#B]M˃`lD㙨!;N9dȎL0$$#D} ؄yQ(sXb1bo[",QDa#ty @F]X"'@%#q0OypSh4bp20}/:U> pS GEc1Kpӈi<} [P4/oa;:Ǩăećۻ/5nx'ޏ5!*?= gj +&.O);.ޒ1xn{b5DpqmTg2PǀDz3}c,FG.7_md5|B6| KWVTlO)J'D(/(v\&H%x).CB %oŖS;ƒNxw62xnsb|o붑T1/9٭#=*Z`(Gp0'9((Q)$(H BCC #`&CVrVAʵF_oͩhH쥩oyL Ң]Eǣ; ZmitCaZz*O5#YtnFh[l#VAo +:aQ9= {0Ho%r,Q&|k]/*adC$j>X]g=+Ղr [QuBO&z63_>CG!48:b_bN| X+2Rry@~F~@)(jd'dQbLq63o1Q%T6u%ED/ ZeBRׂ@p>?rN:nyzIaf %kC4莃F/4mX/5.{^1xg#R +yv VK +",a%Lge?!;0?I'e,y\2]RjnF_Nּ_fʯq8079>~>υbQ_t\V {nNI9%PU\`B@§y}ym/F'qE)5sUkuqaU{@v&ç/ΒjRNUCn_uƈ L uakp(nt97}ap6didq;(Ӓgu8,_1,389L9CL;%VGAJH1ʹb Epu)5{|N +;=m̩\ܖ1?uqkD8vfGG%Ko?TNS#T"zBAxdzM8O:T +m.1=Ӝ m_$X-OVb/Tx.I>ӿmXy.pj SvO0FYͻ=g?BݴXw蘠e2?F9EZ*HrD63W&/(* Kꓵ͵gxѼeypΠ~K\Kw6مey0>kdK݇G̾}s~XxYb)Kx9U\\ԏ.?8(57lGmstjioh#: .W>\4 Vctgd k,V-Gķdײ^L̜ Z&ΕD8VCZ%zfmj|FڰU}hg[N8}0}CÎpZܦp;"_|~A_ +P2+QcX-4T/=q$Ej6ElJSME0=Ww RJ?|MFof̪ZRyl.gB>>?ha't"4_^iX&X gd7sGԯQgN1+DW {ٗ2&Y7P.&΂2oZOl@MDE^E=W#_M O}7^. UZ|OlwE@|_>8dwb18U$oX&.{ O ٦)o2Tt^K/lBZ +xC>'z=Z6 z|1C.{-0썅P9ް6j`+mV[.{Z\^b5؆fdm6fa[Zk)xY??z$T6me1O.owz\=Š'0 G >7? B"_ HCv$AZC_qu"w0zCU"?| }|T#`~̊|pT~ +fZ 8awnDurn/Zk>gX»7{C)9AF/K'> jE77{&1f$Ī\cHW9X HvO$ +b8 hk僭~5^$Ѝw\ ІeE")$Ҟye\A!b7" "[s7Er @Q QXXe`UH/&%!616YT!#v +P 0zz,m + T*±5؅ZX!> +endobj +31 0 obj +<< /Length 327 +/Filter [/FlateDecode] +>> +stream +x]n0 yChR4u4B職Vϊ8u] ,l{XeXK G8(t7$ +۲E?KcD˚7{rxrg:~`Rt1ː^ d}=5[Y6cgK,!Al=UU1z=da*,KBG#fԄ#ذ!YS3քQ!*N(Eal9K(*,%t3Fs;cEShBsz\XSaͅҢnQ藺 +|y^?->DiNy +endstream +endobj +32 0 obj +[259 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 705 600 626 600 600 600 713 600 600 600 700 600 600 600 600 620 600 600 600 612 600 674 600 600 600 600 600 600 600 600 600 600 579 600 600 579 493 600 556 600 304 600 568 304 895 599 574 577 600 467 463 368 600 600 818 600 527 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +xref +0 33 +0000000000 65535 f +0000000015 00000 n +0000000241 00000 n +0000000443 00000 n +0000000500 00000 n +0000000551 00000 n +0000000823 00000 n +0000006049 00000 n +0000006401 00000 n +0000006570 00000 n +0000006612 00000 n +0000006661 00000 n +0000006730 00000 n +0000006895 00000 n +0000007067 00000 n +0000007141 00000 n +0000007275 00000 n +0000007405 00000 n +0000007450 00000 n +0000007493 00000 n +0000007766 00000 n +0000008039 00000 n +0000012779 00000 n +0000012996 00000 n +0000013341 00000 n +0000014255 00000 n +0000021618 00000 n +0000021830 00000 n +0000022286 00000 n +0000023200 00000 n +0000029000 00000 n +0000029222 00000 n +0000029624 00000 n +trailer +<< /Size 33 +/Root 2 0 R +/Info 1 0 R +>> +startxref +30538 +%%EOF diff --git a/2ano/2semestre/as/aula05/ASis-Lab05 architecture.pdf b/2ano/2semestre/as/aula05/ASis-Lab05 architecture.pdf new file mode 100644 index 0000000..649e01f Binary files /dev/null and b/2ano/2semestre/as/aula05/ASis-Lab05 architecture.pdf differ diff --git a/2ano/2semestre/as/aula05/aula05.adoc b/2ano/2semestre/as/aula05/aula05.adoc new file mode 100644 index 0000000..56c48f1 --- /dev/null +++ b/2ano/2semestre/as/aula05/aula05.adoc @@ -0,0 +1,24 @@ += Aula 05 + +== Ex 5.1 + +=== a) + + + +=== b) + +O componente Log4j é uma framework de logging, para Java, que permite ao programador controlar e efetuar o registo das logs da aplicação. Pode ser configurado para registar logs em ficheiros, consola, e outros meios, e permite a definição de níveis de log, para que apenas os logs de interesse sejam registados. Tem ainda a vantagem de ser uma framework open-source, e de ser bastante eficiente, o que a torna uma das frameworks de logging mais utilizadas em Java. + +Para incluir esta framework um projeto Gradle, é necessário adicionar a dependência correspondente ao ficheiro build.gradle. As coordenadas da dependência incluem o grupo (group), o nome do artefato (artifact), a versão e opcionalmente o tipo de embalagem (packaging). No caso do Log4j, a dependência a adicionar é a seguinte: + +[,java] +---- +dependencies { + implementation 'org.apache.logging.log4j:log4j-core:2.17.0' +} +---- + +- org.apache.logging.log4j é o grupo da biblioteca. +- log4j-core é o nome do artefato que contém a funcionalidade principal do Log4j. +- 2.17.0 é a versão específica do Log4j que você deseja incluir em seu projeto. diff --git a/2ano/2semestre/as/aula05/aula05.pdf b/2ano/2semestre/as/aula05/aula05.pdf new file mode 100644 index 0000000..8216fd4 --- /dev/null +++ b/2ano/2semestre/as/aula05/aula05.pdf @@ -0,0 +1,795 @@ +%PDF-1.4 +% +1 0 obj +<< /Title (Aula 05) +/Creator (Asciidoctor PDF 2.3.14, based on Prawn 2.4.0) +/Producer (Asciidoctor PDF 2.3.14, based on Prawn 2.4.0) +/ModDate (D:20240318152446+00'00') +/CreationDate (D:20240318152507+00'00') +>> +endobj +2 0 obj +<< /Type /Catalog +/Pages 3 0 R +/Names 10 0 R +/Outlines 16 0 R +/PageLabels 21 0 R +/PageMode /UseOutlines +/OpenAction [7 0 R /FitH 841.89] +/ViewerPreferences << /DisplayDocTitle true +>> +>> +endobj +3 0 obj +<< /Type /Pages +/Count 1 +/Kids [7 0 R] +>> +endobj +4 0 obj +<< /Length 2 +>> +stream +q + +endstream +endobj +5 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 4 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +>> +>> +endobj +6 0 obj +<< /Length 5879 +>> +stream +q +/DeviceRGB cs +0.2 0.2 0.2 scn +/DeviceRGB CS +0.2 0.2 0.2 SCN + +BT +247.33926 777.054 Td +/F2.0 27 Tf +[<41> 20.01953 <756c61203035>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 730.074 Td +/F2.0 22 Tf +<457820352e31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 688.826 Td +/F2.0 18 Tf +<6129> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 648.746 Td +/F2.0 18 Tf +<6229> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +3.57551 Tw + +BT +48.24 620.726 Td +/F1.0 10.5 Tf +[<4f20636f6d706f6e656e7465204c6f67346a208e20756d61206672> 20.01953 <616d65776f726b206465206c6f6767696e672c20706172> 20.01953 <61204a6176612c20717565207065726d69746520616f2070726f6772> 20.01953 <616d61646f72>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +2.19016 Tw + +BT +48.24 604.946 Td +/F1.0 10.5 Tf +[<636f6e74726f6c617220652065666574756172206f207265676973746f20646173206c6f67732064612061706c6963618d8b6f2e20506f64652073657220636f6e6669677572> 20.01953 <61646f20706172> 20.01953 <61207265676973746172206c6f677320656d>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.22329 Tw + +BT +48.24 589.166 Td +/F1.0 10.5 Tf +[<666963686569726f732c20636f6e736f6c612c2065206f7574726f73206d65696f732c2065207065726d697465206120646566696e698d8b6f206465206e9276656973206465206c6f672c20706172> 20.01953 <6120717565206170656e6173206f73206c6f6773206465>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +1.72842 Tw + +BT +48.24 573.386 Td +/F1.0 10.5 Tf +[<696e746572657373652073656a616d2072656769737461646f732e2054> 29.78516 <656d2061696e646120612076616e746167656d2064652073657220756d61206672> 20.01953 <616d65776f726b206f70656e2d736f757263652c206520646520736572>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 557.606 Td +/F1.0 10.5 Tf +[<62617374616e7465206566696369656e74652c206f20717565206120746f726e6120756d6120646173206672> 20.01953 <616d65776f726b73206465206c6f6767696e67206d616973207574696c697a6164617320656d204a6176612e>] TJ +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +6.48597 Tw + +BT +48.24 529.826 Td +/F1.0 10.5 Tf +[<506172> 20.01953 <6120696e636c7569722065737461206672> 20.01953 <616d65776f726b20756d2070726f6a65746f204772> 20.01953 <61646c652c208e206e65636573738772696f2061646963696f6e6172206120646570656e64906e636961>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.65938 Tw + +BT +48.24 514.046 Td +/F1.0 10.5 Tf +[<636f72726573706f6e64656e746520616f20666963686569726f206275696c642e6772> 20.01953 <61646c652e20417320636f6f7264656e6164617320646120646570656e64906e63696120696e636c75656d206f20677275706f202867726f7570292c>] TJ +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +0.85873 Tw + +BT +48.24 498.266 Td +/F1.0 10.5 Tf +<6f206e6f6d6520646f20617274656661746f20286172746966616374292c206120766572738b6f2065206f7063696f6e616c6d656e7465206f207469706f20646520656d62616c6167656d20287061636b6167696e67292e204e6f206361736f> Tj +ET + + +0.0 Tw +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +48.24 482.486 Td +/F1.0 10.5 Tf +<646f204c6f67346a2c206120646570656e64906e63696120612061646963696f6e6172208e20612073656775696e74653a> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.96078 0.96078 0.96078 scn +52.24 466.67 m +543.04 466.67 l +545.24914 466.67 547.04 464.87914 547.04 462.67 c +547.04 404.45 l +547.04 402.24086 545.24914 400.45 543.04 400.45 c +52.24 400.45 l +50.03086 400.45 48.24 402.24086 48.24 404.45 c +48.24 462.67 l +48.24 464.87914 50.03086 466.67 52.24 466.67 c +h +f +0.8 0.8 0.8 SCN +0.75 w +52.24 466.67 m +543.04 466.67 l +545.24914 466.67 547.04 464.87914 547.04 462.67 c +547.04 404.45 l +547.04 402.24086 545.24914 400.45 543.04 400.45 c +52.24 400.45 l +50.03086 400.45 48.24 402.24086 48.24 404.45 c +48.24 462.67 l +48.24 464.87914 50.03086 466.67 52.24 466.67 c +h +S +Q +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 443.845 Td +/F3.0 11 Tf +<646570656e64656e63696573207b> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 429.105 Td +/F3.0 11 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +59.24 414.365 Td +/F3.0 11 Tf +<7d> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 376.486 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc + +BT +66.24 376.486 Td +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 376.486 Td +/F1.0 10.5 Tf +<6f72672e6170616368652e6c6f6767696e672e6c6f67346a208e206f20677275706f206461206269626c696f746563612e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 354.706 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc + +BT +66.24 354.706 Td +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 354.706 Td +/F1.0 10.5 Tf +<6c6f67346a2d636f7265208e206f206e6f6d6520646f20617274656661746f2071756520636f6e748e6d20612066756e63696f6e616c6964616465207072696e636970616c20646f204c6f67346a2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +-0.5 Tc + +0.0 Tc + +-0.5 Tc +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +56.8805 332.926 Td +/F1.0 10.5 Tf + Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn + +0.0 Tc + +BT +66.24 332.926 Td +ET + +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +66.24 332.926 Td +/F1.0 10.5 Tf +<322e31372e30208e206120766572738b6f206573706563926669636120646f204c6f67346a2071756520766f639020646573656a6120696e636c75697220656d207365752070726f6a65746f2e> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +q +0.0 0.0 0.0 scn +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +/Stamp1 Do +0.2 0.2 0.2 scn +0.2 0.2 0.2 SCN + +BT +541.009 14.263 Td +/F1.0 9 Tf +<31> Tj +ET + +0.0 0.0 0.0 SCN +0.0 0.0 0.0 scn +Q +Q + +endstream +endobj +7 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 595.28 841.89] +/CropBox [0 0 595.28 841.89] +/BleedBox [0 0 595.28 841.89] +/TrimBox [0 0 595.28 841.89] +/ArtBox [0 0 595.28 841.89] +/Contents 6 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 8 0 R +/F1.0 14 0 R +/F3.0 15 0 R +>> +/XObject << /Stamp1 23 0 R +>> +>> +>> +endobj +8 0 obj +<< /Type /Font +/BaseFont /837146+NotoSerif-Bold +/Subtype /TrueType +/FontDescriptor 26 0 R +/FirstChar 32 +/LastChar 255 +/Widths 28 0 R +/ToUnicode 27 0 R +>> +endobj +9 0 obj +[7 0 R /XYZ 0 758.37 null] +endobj +10 0 obj +<< /Type /Names +/Dests 11 0 R +>> +endobj +11 0 obj +<< /Names [(__anchor-top) 22 0 R (_a) 12 0 R (_b) 13 0 R (_ex_5_1) 9 0 R] +>> +endobj +12 0 obj +[7 0 R /XYZ 0 712.85 null] +endobj +13 0 obj +[7 0 R /XYZ 0 672.77 null] +endobj +14 0 obj +<< /Type /Font +/BaseFont /0dd6a0+NotoSerif +/Subtype /TrueType +/FontDescriptor 30 0 R +/FirstChar 32 +/LastChar 255 +/Widths 32 0 R +/ToUnicode 31 0 R +>> +endobj +15 0 obj +<< /Type /Font +/BaseFont /282d77+mplus1mn-regular +/Subtype /TrueType +/FontDescriptor 34 0 R +/FirstChar 32 +/LastChar 255 +/Widths 36 0 R +/ToUnicode 35 0 R +>> +endobj +16 0 obj +<< /Type /Outlines +/Count 4 +/First 17 0 R +/Last 18 0 R +>> +endobj +17 0 obj +<< /Title +/Parent 16 0 R +/Count 0 +/Next 18 0 R +/Dest [7 0 R /XYZ 0 841.89 null] +>> +endobj +18 0 obj +<< /Title +/Parent 16 0 R +/Count 2 +/First 19 0 R +/Last 20 0 R +/Prev 17 0 R +/Dest [7 0 R /XYZ 0 758.37 null] +>> +endobj +19 0 obj +<< /Title +/Parent 18 0 R +/Count 0 +/Next 20 0 R +/Dest [7 0 R /XYZ 0 712.85 null] +>> +endobj +20 0 obj +<< /Title +/Parent 18 0 R +/Count 0 +/Prev 19 0 R +/Dest [7 0 R /XYZ 0 672.77 null] +>> +endobj +21 0 obj +<< /Nums [0 << /P (1) +>>] +>> +endobj +22 0 obj +[7 0 R /XYZ 0 841.89 null] +endobj +23 0 obj +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 165 +>> +stream +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +/DeviceRGB CS +0.86667 0.86667 0.86667 SCN +0.25 w +48.24 30.0 m +547.04 30.0 l +S +Q +Q + +endstream +endobj +24 0 obj +<< /Type /XObject +/Subtype /Form +/BBox [0 0 595.28 841.89] +/Length 165 +>> +stream +q +/DeviceRGB cs +0.0 0.0 0.0 scn +/DeviceRGB CS +0.0 0.0 0.0 SCN +1 w +0 J +0 j +[] 0 d +q +/DeviceRGB CS +0.86667 0.86667 0.86667 SCN +0.25 w +48.24 30.0 m +547.04 30.0 l +S +Q +Q + +endstream +endobj +25 0 obj +<< /Length1 8156 +/Length 4929 +/Filter [/FlateDecode] +>> +stream +x9 t[y^~J~?ۿ|zٖ؉-)v؎%9RȈdK,HrPw] +u5;NK)p5$l$=N׭Ơ]cui]^W \xqu֋7JB8pL휸}jn:W_iCJQի==sl>[BBP?~%-eV"S{gBH++#s\d rbBmsxx? Xp.P&ƊMvTw~-.k?W*B0M/S^{bPPf6_(ǃHJ~RL6}rWWU4?drnvDiT9Y7K~fWe[PC0_u~ț8jGk:l7F,;<ш׃#՗;otY^;:2gЮչc{G֦Fh*TJ 4ܜ R!F'j#?|"cH|Ll ִuCkH'4] +6\z>mD{,eH :h{iFD#vq8hJVf4JfY + W8ʡۊ|Gz6N5\X$a::IV O]Ԡ >; <"E޾xp翗BA 좞ZgږXh1<|o%F1һcѷ还ZFX\^CѨ.Vt_ou {o\@A׮yeF ȩNG?yъ&z8Agլr.sܔP P!gQ ;_\~:DK!hO:a1?tLW0嵐к^:,jIz@ P;vJ1}.h`K54Am|Y zRaHjba/'IK4mtgb_Vr*STqHyYRo_[P ڨ~Z'0%V8SģՉV/ +6%dMpMǼ~g) iN39Y3G6)jTiy/j@}0 Qi[u֢uipCl M&rz;ZWD4T,@ #ѼҬBQUDJTW&dAMkO u6YT CEj\ "<! dQ , +NO9;[{'+ !W߻wŊu<.3}}ޕ +AZ(%eJ~(̘7uv4ʴ:!Ժ:CiځQ5)d+JJTZm10~K,/+,ȌDuMg?ۥF"EeW+žёU&\v@>k :pKAwq+K*t\>We r}FNjk+4-%;Tg2U=wwQKQ50lɘIMh^@! \C EյM/uNӦ; ;-]u$gd}3q{[ΖjUkN{m~_;>*&nvvJ*͕y+d|N#ks}{2r%>WkFEKg69} lۺ1WGK~ܬGl4jYw)4Ueg +Jk״75Wa.ԏ+cyfqY_)D*,d;"Rj!Z jk3).n:5_՞~}U,48(4!4̣j%2F%XѬ+}s+A",Ȅ~&YJJI9x%8sg,6 ƨWI0<-#UeI_`%<,*t oeZ$8 u}FKpwLwvt> +endobj +27 0 obj +<< /Length 280 +/Filter [/FlateDecode] +>> +stream +x]n0E +/E3$RnX~cb˘ߙIJ]`s5K:efA:`נ@0Z'\jSM m0̲E%M> +stream +x{ t[յ9^}Iɖ|-dK_m+rb˖Il˱'$p 40I^Rjʃv:Ch;^Y}hM .b˳ϑ_k_\޻>g}nB bPWx_17BxC#Sc߄FUΌM=c@hAA%30>rlr~#d_݄l1op,hgOyF9ߝt8 @{fʱg9@ iǔ3G!Bai3nW,G<3Oi +>Dt1p4{{LQ'K>'w9Ce8RĠǖ.Ǘ?^%QNkr)Gn$ +@Ih 7'"7(ALDp8殮fdDdn }q6tA^s;˟pS@ϐ{ ur<>Aj3 ޻sH'!5s叹)$&Qĝ +2L3hy-$. () ##shiS{, xBaXH$0Pe@(F(Ţh2'&%*ҕ*SRgk*XKU)o_Fjd656jk*7Uu‚ܜluHDGEI%b2!ޗ=㲅BpA x@5C_Oi qը7 _[z3 OLa.6Rޜ0 +$b'tHpO 48ʧ3̼yɃCۅdX~R a1m^;G}C +'QޮPb@HP5TT:h =[A6o`#6>Z;铨pǂs(uC5o +1|ye +ґ:"z-!nb>- +Հ*p0'R‖P8P{2*o\€0v1H?AZֵ ̄Tjc45JeCwk_ +} d@V"nSLA"Fhr@@ЈYd4h!/^M!W%sţvni(,pI\2دBơKYgþB $iA8BCJWEe(Na4r bC8p\g8rƐͼ羁(,؇ZP{ 3H_jE _Gu%8]5 N&[u Q7!+27䉙2Ɓ2u/[}2]%kYǗ%\_ ݍS)TZ18ZȊ#&D<%cu{X{.g\}-%˘_<φE6{<4)l;5zj)=S"Г`'k'I|IxC?v 'ub\gBwͦdkJr[×_5>:Քҹuy{uV%x1Ԑ+}N8@lD0xzavf;5x4}xs@<ۀ<!~ f; א<hXpjx N;sDoR6(#LOAO!64a +/gOiGcaz څw[97D଺gj5:FgKdg˷ 9t9EЛN_ Տ!/%ځ3縿#cbX.7~-KLW3 [lf:w)e˻E@%Ch=@//p&ށ/E9ż-cwq-y}QhG! %zÒI33ҋaa3a/GW??"#lF|%r4s?(OC !NVũFْ%3 K_ sCq ($aJKkq)䲴ڤB_ p>N(U 8}&:9>!0e"U'.UdsKh47 M.]KC,P0!0"0ZpU{^%YZX[hBQjk31}''_I=e=ugo:yeK"*r5ʌ>S5QJ5E$uzm2#Fx@7 |UR\ˆJc}Z:[.c[ۤL1t5ǫz&nR˕j'O>xjY]l0T' c!TT 2 r G@Vv6ST%Q~f~-Ê8IJ#/Ru!.Z7;=>ZWi)'S;CD/+*ʌBJE'RQ(MnE}acc=Ut <(zM fJ\R96`%ld09ѬU3af?2G_?Ed(KoI{qĴ_'Iŕm"Q|~ +Xq8.+#ֳmpFP-8efeQ{(:)+2ȸh̖߷myi;*snq%e{h[dJ4$;q2X7߹eO "UZ֮~o~-Kdn+,O>kAO2[`t2Z/HI cMj2[*cQd*ZS}\S/ꄸ|Us=КLjdUR5Z~B[vFS쇁H SAM +!s،[,V&f-yN^=("g7&5 <}P 9Prs_|O[nS<;;{v`Ξsρv6:oXga`iBvaCrhpLݡW}inN5KNf|ѵW8^<<-Ɯa;` bxq?r Di2-: +krܡpxȲk?$BnɎG턜< +N E:b@D 4%g2<9H.#[) {s-j͋T6](S#Wl5v7=mG1' 2'Tս6]rdxOhORӳ3{ 䝇ڠv"K q21UZ+i!2n|3UQY˱$y83Ҥʎj3;U; +EĿ=ژo=ڨ? []Giz_2y޽̦M3NN}{ |k&{GrF'WW"[JL1>ټ9%UMY_vcBYo=u*RJJ+zuKuiBS@ rWViՇ) 9Z\C|Hb8ҤeNdYxޟ׽58Te];ʉ /Ҿ/,宬yvo- /{$%™b +aDtRҵ2av_MrUoGLW-٘3[6Gl9~v兞Jn/?8g{y~?%٩չdC>,CE`eWj(]mUd] xCFeJa:*$*+B3 r>:T$.41Uڴy"D@:+$t:XP}4^V^˵PTgпuf hȢHw/W&I˄B֣D*RY"6!SuCo \^fl*0RC;-5E11Uʘsգ-N/4=u ,+,;m+ŘeH۳Hٙc[aa2U@~|]ϐaᒈUb\z +^ݰLW#DwC*k _;ȥjȥəi?'u-.v,1?dP_ R[%!7jjR&i43qE&?@́d-_/a0'lH'St`}B QQJ9?%:Km<9)UeP!IN֐;k}.RѰ{ ㎹pJ f%SCU,%W:ax,M75T"~nge3W.uHחduE*&5fsn Wx44o*gԥ[G^PJlI+{|%`VI4Ro,6ѾOцjĦ 6 ynN CFsAKīAY.˯bk[JՅ Rҷim8RS#t6e9rky1$UJ}&2rV7sZ2f'D@zENa|bܲIik#|֭֙%P`CzY;N=ey|Tٶ#G7+Q/c3r59mTJy,%`ހ͂x$ClQc C}4Cɕc[2jV%y"'3#]**re~NOu*,Oиsbsc73YY1ܖ6\Qlc޶̚JŲIlڅ0>½&QA{@ғHRNNBۖyA{_s_xbu ;s>֜r昜csmiU 9OgaqZt.:г?r2Ax9_%ZA0 ` E(a1E ,ApŠ|6ALaEkJQdF@̑]ss&c$c0 ̢JV9$cAX ,A&6Sٟ0~ #P-;Gj <}QFظ/nؤo|/.kv˩t{|kvb567v{g`Ȕclbz/WiV!k3拴2YkH*ՄwY5ɻG׊r$&gblS&OL{A bg qwR{ct2{J7ح[=N <92"7|{{cEtqM{`ιikk5 )wgxg'@(|f}ڗ7.ﴴ^jiV_9v +x3˻̺<=OLLNS\_-+?hqLN9h1㚝ENj{kvk=7'pUC~Nx=ZĤ=;j@ȍfw(pA -RvJ EE;_ߖ)M2VD* 0O/ex4 pv rRxK@du.9 rnd!vPm(zX \]+~i=vR/m)mX]tu;q(bZ?#4A*oPO}f:~G MZD~,›!{ Vdc*hpN4v!4 +Xgefi$xT) ?dWl^3BWz+A#9C% y3) Y $Nwӱ+kpsTL;q=x@bTIxǠX#XG߿*PB@EIZ% B!sh5 l쀵 t>"[xՋcw7"j[EC +endstream +endobj +30 0 obj +<< /Type /FontDescriptor +/FontName /0dd6a0+NotoSerif +/FontFile2 29 0 R +/FontBBox [-518 -250 1246 1047] +/Flags 6 +/StemV 0 +/ItalicAngle 0 +/Ascent 1068 +/Descent -292 +/CapHeight 1462 +/XHeight 1098 +>> +endobj +31 0 obj +<< /Length 443 +/Filter [/FlateDecode] +>> +stream +x]ˎ@E|E/'7UXBƋ<'݅j>}oiw=|;}:oi g81m`n4)lگEϏf<.{m^>eE5EK|q/?|oڼ8]1ܯ_isExjweR?_؍㱰9w<31S93cKlhD˸g=*w&@O@%*'=<<<<<أ5 vkMXWPW#Б=qd0!6@! +:tNG0@RW83̄u@]PW*| +_WU*| +_Wi0knKICfؖf:PǐvAꪮQnaw6SO{ f{eE~M@ +endstream +endobj +32 0 obj +[259 500 500 500 500 500 500 500 346 346 500 500 250 310 250 500 559 559 559 500 559 500 500 559 500 500 286 500 500 500 500 500 500 705 500 500 500 500 500 713 500 500 356 500 623 500 763 742 604 500 500 500 612 500 500 500 500 500 500 500 500 500 500 500 500 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 613 471 451 352 634 579 861 500 500 511 500 500 500 500 500 500 500 500 500 500 500 500 562 500 500 500 562 500 492 535 500 535 500 319 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 361 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500] +endobj +33 0 obj +<< /Length1 5032 +/Length 3330 +/Filter [/FlateDecode] +>> +stream +xX P[יHƀ@2` + eo0aKص-KB$,NV;wC.C| Dh}Md܄ZAzJOu#avnAM +Gs“s:Sҥ_+]e< DnոmYYѭo~S|{*a`yZ$Rj{8K%=jNZP^Vq_xpu|uϞަR]D.`*j^Vj6TmzƱAWUkP*w ttoc_Gv3?Nn~dssSpEr3xFZ)JܶCg:_@,Df)j 6l?u; bfP@'T|\z'~ 67#76Sm:393^|%[̯OL汢jVΎeGfUx08;J>]^PS*ø~j^TU~P ibV6A'ή9n7Yim3YN=u2ii+Uȱ/mYqSvU3ɩŕ )],o"+)y+1Tj7 +H[_mp'}#Gb,e}%LmuksclUr5oؼR;א31~ f(6Y|Px!ĕݐ{|o6O;v /d¦ۿg7z 8t7;ڡ6Hz)^þܛ//$U6sn+f^o{UtTt ys4o3{:viwwW֧_ضoLTax n |8qԲwBϱxWsz&\-]rW[VopF8w\P~>3Ko߂ZlɌּݻ771FJW>4w-?y/RbO)1Zw[.5s _ia7nA54YQ L{{:4~(896^5 w;;F:GM"\TpwEjnlj{#|Mo?꽮,f Lۺ=4eVhBz +|΀Up,Rjr\&'bS2XӊE{t4C{ 1@I ZNN@8↎wHN+Ea)tȂoI-$ૺYHE%(9@]4:6qfh?uZxe?\Mq00ZD6FK; +CBfe9}FiL'D S&|FMʺ6>9Nwf};mzZ5p%祘+] IXItg?/=Ĥ 'J:۳%`#>hp[bw_zb bwǥ!eP:*4i (x~fvNwFPq|퇃inr=cVR IԷ g$ +endstream +endobj +34 0 obj +<< /Type /FontDescriptor +/FontName /282d77+mplus1mn-regular +/FontFile2 33 0 R +/FontBBox [0 -270 1000 1025] +/Flags 4 +/StemV 0 +/ItalicAngle 0 +/Ascent 860 +/Descent -140 +/CapHeight 860 +/XHeight 0 +>> +endobj +35 0 obj +<< /Length 347 +/Filter [/FlateDecode] +>> +stream +x]n </F,UŇn:TcC޾$J>x%;ϭWva.2%i(za "K4~e]#.k͓{z[tGc9ȯ2M# ńW3 ۶.e4@ľ%K:ϛzA;*WE?oE]> +startxref +30571 +%%EOF