PADRÕES DE PROJETO DE SOFTWARE
|
|
- Giovana Lencastre Silva
- 6 Há anos
- Visualizações:
Transcrição
1 Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação PADRÕES DE PROJETO DE SOFTWARE SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre 2015
2 CLASSIFICAÇÃO Os padrões já eram utilizados há muito tempo; porém, não havia uma documentação formal sobre eles. Gamma et al. (1995) definiram 23 padrões que possuem aplicação em diversas áreas. Os padrões são classificados em três grupos Padrões de Estrutura (Structural Patterns) Padrões de Criação (Creational Patterns) Padrões de Comportamento (Behavioral Patterns)
3
4 PADRÕES DE COMPORTAMENTO São padrões associados aos algoritmos e às responsabilidades relacionadas a cada objeto. Por meio dos padrões de comportamento, podemos alterar a maneira como sistema comporta-se. É possível adicionarmos novas funcionalidades a um objeto existente, por meio da inclusão de novos objetos.
5 PADRÕES DE COMPORTAMENTO Chain of Responsibility (Cadeia de Responsabilidades) Command (Comando) Interpreter (Interpretador) Iterator Mediator (Mediador) Memento (Lembrança)
6 PADRÕES DE COMPORTAMENTO Observer (Observador) State (Estado) Strategy (Estratégia) Template Method (Método Template) Visitor (Visitante)
7 OBSERVER(OBSERVADOR) PROBLEMA Garantir a consistência da informação Garantir a consistência de uma representação gráfica complexa, com muitos componentes. Transformar um grande problema em diversos pequenos problemas.
8 OBSERVER (OBSERVADOR) SOLUÇÃO
9 OBSERVER (OBSERVADOR) EXEMPLO
10 OBSERVER (OBSERVADOR) EXEMPLO public class Entidade implements Serializable{ //lista contendo os objetos observadores protected ArrayList<Observer> listobs = new ArrayList<Observer>(); protected void notificar(){ for(observer o : listobs) o.atualizar(); public void addobservers(observer o){listobs.add(o); public interface Observer { public void atualizar();
11 OBSERVER (OBSERVADOR) EXEMPLO public class BeanJanela extends Entidade{ private boolean estadoa, estadob; public BeanJanela(){ //false representa a cor verde, true a amarela public boolean isestadoa(){return estadoa; public void setestadoa(boolean a){ estadoa = a; notificar(); //false = desabila true = habilita public boolean isestadob(){return estadob; public void setestadob(boolean b){ estadob = b; notificar();
12 OBSERVER (OBSERVADOR) EXEMPLO public class GuiJanelaObserverA extends JFrame implements Observer{ private JButton btnamarelo, btnverde; private CntrJanelaA cntl; private BeanJanela bean; public GuiJanelaObserverA() { cntl = new CntrJanelaA(this); initcomponents(); //cria a interface gráfica public void atualizar() { if(bean.isestadob()){ btnamarelo.setenabled(false); btnverde.setenabled(false); else{ btnamarelo.setenabled(true); btnverde.setenabled(true);
13 OBSERVER (OBSERVADOR) EXEMPLO public class GuiJanelaObserverB extends JFrame implements Observer{ private JButton btncor; private CntrJanelaB cntl; private BeanJanela bean; public GuiJanelaObserverB() { cntl = new CntrJanelaB(this); initcomponents(); //cria a interface gráfica public void atualizar() { if(bean.isestadoa()){ btncor.setforeground(color.yellow); btncor.settext("amarelo"); else{ btncor.setforeground(color.green); btncor.settext("verde");
14 OBSERVER (OBSERVADOR) EXEMPLO public class CntrJanelaA implements ActionListener{ private GuiJanelaObserverA janela; //controlador de GuiJanelaObserverA public CntrJanelaA(GuiJanelaObserverA observera) { janela = observera; public void actionperformed(actionevent e) { if(((jbutton)e.getsource()).gettext().equals("verde")){ janela.getbean().setestadoa(false); elseif(((jbutton)e.getsource()).gettext().equals("amarelo")){ janela.getbean().setestadoa(true);
15 OBSERVER (OBSERVADOR) EXEMPLO public class CntrJanelaB implements ActionListener { private GuiJanelaObserverB janela; //controlador de GuiJanelaObserverB public CntrJanelaB(GuiJanelaObserverB observerb){ janela = observerb; public void actionperformed(actionevent e){ if(janela.getbean().isestadob()){ janela.getbean().setestadob(false); else{ janela.getbean().setestadob(true);
16 OBSERVER (OBSERVADOR) EXEMPLO public class App { public static void main(string args[]){ GuiJanelaObserverA janobsa = new GuiJanelaObserverA(); GuiJanelaObserverB janobsb = new GuiJanelaObserverB(); BeanJanela entidade = new BeanJanela(); //adiciona a entidade aos observadores janobsa.setbean(entidade); janobsb.setbean(entidade); //adiciona os observadores a lista da entidade entidade.addobservers(janobsa); entidade.addobservers(janobsb);
17 OBSERVER (OBSERVADOR) EXEMPLO
18 OBSERVER (OBSERVADOR) EXEMPLO
19 OBSERVER (OBSERVADOR) EXEMPLO
20 OBSERVER CONSEQUÊNCIAS As informações inter-classes estão sempre consistentes Toda mudança de estado é automaticamente sinalizada aos observadores Um grande problema é dividido em diversos pequenos problemas Cada classe preocupa-se apenas com suas próprias informações.
21 MEDIATOR (MEDIADOR)- PROBLEMA Para a construção de sistemas de qualidade, tanto grandes quanto pequenos, um importante requisito é a organização do código. Separação do código, Modelo-Visão-Controle. Usado quando necessita-se prover ao sistema um fraco acoplamento.
22 MEDIATOR (MEDIADOR)- SOLUÇÃO
23 MEDIATOR (MEDIADOR)- EXEMPLO
24 MEDIATOR (MEDIADOR)- EXEMPLO public class Cliente { private String nome; private int idade; private boolean sexo;//false = femino, true = masculino private Long cpf; private Endereco endereco; public Cliente(){ public Endereco getendereco() {return endereco; public void setendereco(endereco end){endereco = end; public Long getcpf() {return cpf; public void setcpf(long cpf) {this.cpf = cpf; public boolean issexo() {return sexo; public void setsexo(boolean sexo) {this.sexo = sexo;
25 MEDIATOR (MEDIADOR)- EXEMPLO public class Endereco { private String rua, bairro, cidade; private int numero; public Endereco(){ public String getbairro() {return bairro; public void setbairro(string bairro) {this.bairro = bairro; public String getcidade() {return cidade; public void setcidade(string cidade) {this.cidade = cidade; public String getrua() {return rua; public void setrua(string rua) {this.rua = rua;
26 MEDIATOR (MEDIADOR)- EXEMPLO public class JanelaCadastro extends JFrame{ private Mediator med; public JanelaCadastro() { med = new MediatorJanelaCadastro(this); initcomponents(); //cria a interface gráfica registraoperacao(); public void registraoperacao() { btnsalvar.addactionlistener(new ActionListener(){ public void actionperformed(actionevent arg0) { med.salvar(); );
27 MEDIATOR (MEDIADOR)- EXEMPLO public class MediatorJanelaCadastro extends Mediator{ public JanelaCadastro janela; public MediatorJanelaCadastro(JanelaCadastro cadastro) { janela = cadastro; //sobrescrita do método de MEDIATOR public void salvar(){ Cliente cliente = new Cliente(); cliente.setnome(janela.gettxtnome().gettext()); cliente.setidade(integer.parseint (janela.gettxtidade().gettext())); cliente.setcpf(long.parselong(janela.gettxtcpf().gettext())); cliente.setsexo(janela.getradiofemino().isselected()?false:true); continuar...
28 MEDIATOR (MEDIADOR)- EXEMPLO public class MediatorJanelaCadastro extends Mediator{...continuando public void salvar(){ Endereco endereco = new Endereco(); endereco.setbairro(janela.gettxtbairro().gettext()); endereco.setcidade(janela.gettxtcidade().gettext()); endereco.setrua(janela.gettxtrua().gettext()); endereco.setnumero(integer.parseint ((janela.gettxtnum().gettext()))); //adiciona o endereço a pessoa cliente.setendereco(endereco); continua...
29 MEDIATOR (MEDIADOR)- EXEMPLO public class MediatorJanelaCadastro extends Mediator{...continuando //Mostra as entidades preenchidas janela.dispose(); JOptionPane.showMessageDialog(janela,"O endereço de +cliente.getnome()+ " é rua: "+ cliente.getendereco().getrua() +" número: "+cliente.getendereco().getnumero()); // PODERÍAMOS INCLUIR PERSISTÊNCIA A ESTE EXEMPLO. // A GUI CONTINUARIA A MESMA. // O MEDIADOR CUIDA DE TUDO.
30 MEDIATOR (MEDIADOR)- EXEMPLO public abstract class Mediator { //Exemplo de método a sobrescrever.em grandes //aplicações existem dezenas de métodos como este public void salvar(){ public class App { public static void main(string args[]){ new JanelaCadastro();
31 MEDIATOR (MEDIADOR)- EXEMPLO
32 MEDIATOR (MEDIADOR)- EXEMPLO
33 MEDIATOR & COMMAND
34 MEDIATOR (MEDIADOR) CONSEQUÊNCIAS É possível gerenciar eventos de uma classe por meio de outra classe. O objeto gerador do evento não precisa conhecer os objetos que ele influencia. É possível acrescentar novas funcionalidades a um evento sem ter de modificar o emissor do mesmo.
35 TEMPLATE METHOD - PROBLEMA Quando existe a necessidade de garantir que um determinado método forneça uma lógica segundo um modelo definido (Template). Criação de um esqueleto de implementação que varia quanto ao conteúdo das partes mas não do todo.
36 TEMPLATE METHOD - SOLUÇÃO
37 TEMPLATE METHOD- EXEMPLO
38 TEMPLATE METHOD- EXEMPLO public abstract class Confeito { //Método TEMPLATE, sempre FIXO public double gastoconfeito(){ return getquantidade() * getpreco(); public abstract double getquantidade(); public void setquantidade(double qtd) { public abstract double getpreco(); public void setpreco(double preco) {
39 TEMPLATE METHOD- EXEMPLO public class CoberturaBolo extends Confeito{ public CoberturaBolo(){; public double gastoconfeito(){return public double getquantidade() { return public double getpreco() { return 6.30;
40 TEMPLATE METHOD- EXEMPLO public class MassaBolo extends Confeito{ public MassaBolo(){; public double gastoconfeito(){return public double getquantidade() { return 2.0;//Bolo public double getpreco() { return 5.1;
41 TEMPLATE METHOD- EXEMPLO public class RecheioBolo extends Confeito { public RecheioBolo(){; public double gastoconfeito(){ return public double getquantidade() { return 2.5;//Muito public double getpreco() { return 4.3;
42 TEMPLATE METHOD- EXEMPLO public class Bolo extends Confeito{ private CoberturaBolo cobertura; private RecheioBolo recheio; private MassaBolo massa; private int quantidade; public public double getquantidade() { return quantidade;//numero de public double getpreco() { return recheio.gastoconfeito()+massa.gastoconfeito() +cobertura.gastoconfeito(); continua...
43 TEMPLATE METHOD- EXEMPLO public class Bolo extends Confeito{... continuando public void setquantidade(int qtd){quantidade = qtd; public CoberturaBolo getcobertura() {return cobertura; public void setcobertura(coberturabolo c) {cobertura = c; public MassaBolo getmassa() {return massa; public void setmassa(massabolo m) {massa = m; public RecheioBolo getrecheio() {return recheio; public void setrecheio(recheiobolo r) {recheio = r;
44 TEMPLATE METHOD- EXEMPLO public class App { public static void main(string args[]){ //cria as partes do bolo CoberturaBolo cobertura = new CoberturaBolo(); MassaBolo massa = new MassaBolo(); RecheioBolo recheio = new RecheioBolo(); //monta o bolo Bolo bolo = new Bolo(); bolo.setrecheio(recheio); bolo.setcobertura(cobertura); bolo.setmassa(massa); bolo.setquantidade(2); continua...
45 TEMPLATE METHOD- EXEMPLO public class App { public static void main(string args[]){... continuando System.out.println("O gasto com a massa é: " + massa.gastoconfeito()); System.out.println("O gasto com a cobertura é: " + cobertura.gastoconfeito()); System.out.println("O gasto com o recheio é: " + recheio.gastoconfeito()); System.out.println("O gasto com a bolo é: " + bolo.gastoconfeito());
46 TEMPLATE - CONSEQUÊNCIAS É possível controlar o quanto a subclasse pode variar a implementação. A implementação de uma ação pode variar (de acordo com quem a implementa)
47 STATE (ESTADO) - PROBLEMA Alguns objetos possuem comportamento fortemente relacionado ao estado em que se encontram Existe a necessidade de assegurar que a transição entre esses estados seja corretamente refletida em seu comportamento
48 STATE (ESTADO) - SOLUÇÃO
49 STATE (ESTADO) - EXEMPLO
50 STATE (ESTADO) - EXEMPLO public abstract class EstadoJogo { public abstract double calculavalorvenda(double valormercado); public class EstadoTitular extends EstadoJogo { public public double calculavalorvenda(double valormercado) { return valormercado;
51 STATE (ESTADO) - EXEMPLO public class EstadoBanco extends EstadoJogo { public public double calculavalorvenda(double valormercado) { return valormercado * 0.75;
52 STATE (ESTADO) - EXEMPLO public class EstadoLesionado extends EstadoJogo { public public double calculavalorvenda(double valormercado) { return valormercado * 0.5;
53 STATE (ESTADO) - EXEMPLO public class JogadorFutebol { private String nome; private int numero; private double valormercado; private EstadoJogo estadojogo; public JogadorFutebol(EstadoJogo est){ estadojogo = est; public JogadorFutebol(){ this(new EstadoTitular()); public double calculavalorvenda() { return estadojogo. calculavalorvenda(valormercado); continua...
54 STATE (ESTADO) - EXEMPLO public class JogadorFutebol {...continuando public String getnome() {return nome; public void setnome(string n) {nome = n; public int getnumero() {return numero; public void setnumero(int n) {numero = n; public double getvalormercado(){return valormercado; public void setvalormercado(double v) {valormercado = v; public EstadoJogo getestadojogo(){return estadojogo; public void setestadojogo(estadojogo est){estadojogo = est;
55 STATE (ESTADO) - EXEMPLO public class Main { public static void main(string[] args) { JogadorFutebol neymar = new JogadorFutebol(); neymar.setnome("neymar"); neymar.setnumero(11); neymar.setvalormercado( ); //De Euros DecimalFormat f = new DecimalFormat("0,000,000"); System.out.println("O preço de venda do jogador " + neymar.getnome() + " é: + f.format(neymar.calculavalorvenda()) + " de Euros"); continua...
56 STATE (ESTADO) - EXEMPLO public class Main {... continuando //Quem mandou ser marrento... neymar.setestadojogo(new EstadoBanco()); System.out.println("O preço de venda do jogador " + neymar.getnome() + " é: + f.format(neymar.calculavalorvenda()) + " de Euros"); //Alguém retribuiu um chapeuzinho... neymar.setestadojogo(new EstadoLesionado()); System.out.println("O preço de venda do jogador " + neymar.getnome() + " é: + f.format(neymar.calculavalorvenda()) + " de Euros"); System.out.println("O Santos deveria ter vendido antes.");
57 STATE (ESTADO) - CONSEQUÊNCIAS Viabiliza o encapsulanto de comportamentos específicos de cada estado de maneira clara e consistente A adição de novos estados é facilmente implementada, sem a necessidade de alterar diversos trechos de código na classe de contexto Aumenta a quantidade de classes implementadas. Contudo, evita a construção de grandes declarações condicionais. Tornando os comportamentos mais explicitos.
58 STRATEGY (ESTRATÉGIA) - PROBLEMA Existência de um grupo de classes relacionadas, que diferem apenas com relação a um conjunto definido de comportamentos Uma classe define muitos comportamentos e esses aparecem como múltiplas declarações condicionais
59 STRATEGY (ESTRATÉGIA) - SOLUÇÃO
60 STRATEGY - CONSEQUÊNCIAS Uma família de algoritmos ou comportamentos é definida em contextos de reúso. A herança pode auxiliar em funcionalidades comuns dos algoritmos implementados. Eliminação de grandes estruturas condicionais Algoritmos podem variar de forma independente de contexto, tornando mais fácil mudar, entender e estender comportamentos em sistemas.
61 PESQUISAR Chain of Responsibility (Cadeia de Respons.) Command (Comando) Interpreter (Interpretador) Iterator Memento ( Lembrança ) Visitor (Visitante)
62 EXERCÍCIO Você deseja sempre ter a mão o cálculo atualizado das taxas de seu carro. Desenvolva uma aplicação que calcula o valor do Seguro Obrigatório (5% do valor do carro) e também o IPVA (4% do valor do carro). IPVA e Seguro Obrigatório devem ser classes sempre atualizadas com relação às mudanças no valor de mercado de seu carro. Utilize um padrão de projeto para solucionar esse problema
63 EXERCÍCIO 2 Você deve projetar um programa para criar e manipular desenhos, denominado MyPaint. Tal programa deve ser capaz de trabalhar com figuras geométricas simples ou elaboradas. Quadrados (F1), triângulos (F3) e círculos (F4) são consideradas figuras geométricas simples. Figuras elaboradas são construídas pelo agrupamento de figuras geométricas simples e/ou outras figuras elaboradas. Um exemplo de figura elaborada é representado por F2, que é construído a partir de um triângulo, dois quadrados e um círculo.
64 EXERCÍCIO 2
65 EXERCÍCIO 2 Figuras possuem características de posicionamento, cor, altura, largura e área (em pixel²). Um quadrado é construído a partir de informações de posicionamento, e tamanho de seu lado. Triângulos são construídos com base nos valores x e y de seus três vértices. Já os círculos são construídos com base nas coordenadas x e y do centro e no tamanho do raio. As figuras elaboradas são criadas por construtores do tipo padrão (sem argumentos), seguido da adição das figuras mais simples, que a constituem.
66 EXERCÍCIO 2 Modele, utilizando a UML, uma estrutura que seja capaz de tratar de maneira uniforme as funcionalidades de mudança de cor, mudança de posicionamento e cálculo da área ocupada por uma figura, de modo que não haja diferença entre a invocação dessas funcionalidades entre figuras simples ou elaboradas. Para isso, utilize um padrão de projeto e notas UML, que indiquem as diferenças de comportamento entre os diferentes tipos de figuras.
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 11 Padrões GoF (Bridge e Decorator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisClasse Funcionario tem Endereco
Classe Funcionario tem Endereco Criar um projeto -> Criar uma classe Funcionario contendo 2 atributos (código, nome). public class Funcionario { private String nome; Criar uma classe Endereco contendo
Leia maisDATA ACCESS OBJECT (DAO)
Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação DATA ACCESS OBJECT (DAO) SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre 2015
Leia maisTópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico
Reuso de Software Aula 03 Tópicos da Aula POO e Padrões de Projetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 12 Março 2012 Programação orientada a objetos Reuso de
Leia maisPadrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.
Escopo Classe Objeto Finalidade Criação Estrutural Comportamental Factory Method Interperter Abstract Factory Builder Prototype Bridge Composite Facade Flyweight Proxy Chain of Responsibility Command Iterator
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 08 Padrões GoF (Observer e Builder) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisPadrões de Projeto de Software
Padrões de Projeto de Software Lista de Exercícios AV2-01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Qual o objetivo dos padrões Comportamentais, segundo o catálogo GOF? Questão 1 Resposta
Leia maisHerança e Propriedades
Herança e Propriedades 2013 O que veremos hoje? Herança e Propriedades Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Herança em POO Herança Herança
Leia maisOrientação a Objetos - Herança
Orientação a Objetos - Herança 1 Repetindo Código p Todo banco tem funcionário. A classe funcionario ficaria da seguinte forma; class Funcionario { String nome; String cpf; double salario; // métodos devem
Leia maisVítor E. Silva Souza vitorsouza@gmail.com
Curso - Padrões de Projeto Módulo 4: Padrões de Comportamento Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java:
Leia maisLinguagem de Programação. Diagrama de classes
Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG 2 Agenda Diagrama de classes Herança Associação Agregação Exercícios 3 Diagrama de classes Mostra um
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia maisLição 11 Herança, polimorfismo e interfaces
Lição 11 Herança, polimorfismo e interfaces 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Definir superclasses e subclasses Criar Override de métodos de superclasses Criar métodos e classes
Leia maisUniversidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação
UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Projeto
Leia maisJava para Desktop. Programação Orientada à Objetos 2 JSE
Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona
Leia maisProgramação Orientada a Objetos Relacionamentos entre classes
Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia composição generalização associação RELACIONAMENTO
Leia maisInterfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em
Leia maisConceitos Básicos da Programação OO
Conceitos Básicos da Programação OO Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Objetivos Aprender os
Leia maisLinguagem de Programação Orientada a Objeto Abstração - Encapsulamento
Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e
Leia maisRoteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos
Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans Roteiro Introdução Conceitos de Oientação a Objetos A Linguagem Java NetBeans (www.netbeans.org) Fernando Vieira Paulovich paulovic@icmc.usp.br
Leia maisProgramação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos
Leia maisProgramação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 07 Padrões GoF (Command e Template Method) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
Leia maisProgramação Orientada a Objetos Flávio de Oliveira Silva 144
HERANÇA Herança é a capacidade de uma subclasse de ter acesso as propriedades da superclasse(também chamada classe base) relacionada a esta subclasse. Dessa forma os atributos e métodos de uma classe são
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisOrientação a Objetos e Java
Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1. Torna o atributo visível a todas as classes do pacote onde foi declarado: a) public b) private c) protected d) package
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1.ado o seguinte código: class valiacao { Qual fragmento de código irá compilar? a) class Prova extends valiacao { b)
Leia maisO USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
O USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Revista UNILUS Ensino e Pesquisa v. 13, n. 30, jan./mar. 2016 ISSN 2318-2083 (eletrônico) Claudio Costa Matos Graduando no curso
Leia maisClasse Produto e Calculo de Produto
Classe Produto e Calculo de Produto Criar um projeto -> Criar um pacote chamado entity. Criar uma classe completa de Produto contendo os atributos (código, nome, preço, quantidade, tipo, ativo, desconto),
Leia maisAula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes
Aula 08 Estruturas de Condição Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Entrada de Dados; Estruturas de Controle: Estrutura de Sequência;
Leia maisProgramação Orientada a Objetos em Java
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Classes e Objetos, Construtores e Desconstrutores, Atributos e
Leia maisProgramação Orientada a Objetos em Java
Programação Orientada a Objetos em Java Conceitos: Classe, Variável de Instância ou Atributos, Métodos, Objeto, Variáveis Estáticas ou de Classe, Construtores, Construtores Sobrecarregados, Herança, Polimorfismo,
Leia maisProgramação Orientada a Objetos com Java. Prof. Júlio Machado
Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que
Leia maisProgramação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos
Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis
Leia maisProgramação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos
Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?
Leia maisThreads. O que é uma Thread? Paralelismo
Threads em Java 1 O que é uma Thread? Paralelismo Threads Multi- threading é o mecanismo de concorrência suportado explicitamente pela linguagem Java. Os mecanismos de gerenciamento e sincronização de
Leia mais4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisLinguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas
Leia maisLEIC-A / MEIC-A 2007/2008 (1º
1/11 LEIC-A / MEIC-A 2007/2008 (1º Semestre) Teste (versão A) 08 de Janeiro de 2008, 09:00 (120 minutos) Nome: Primeira Parte (5 valores) PERGUNTA RESPOSTA 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 Segunda
Leia maisPADRÕES DE PROJETO DE SOFTWARE
Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação PADRÕES DE PROJETO DE SOFTWARE SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 06 Padrões GoF (Factory Method e Abstract Factory) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method
Leia maisEncapsulamento de Dados
Encapsulamento de Dados Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam
Leia maisIntrodução à orientação a objetos. João Tito Almeida Vianna 18/05/2013
Introdução à orientação a objetos João Tito Almeida Vianna 18/05/2013 Roteiro Aula 1 Introdução: Programação estruturada x Orientação a objetos Orientação a objetos Classe e objeto Encapsulamento Herança
Leia maisAtributos e Métodos Estáticos
Atributos e Métodos Estáticos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Atributos Estáticos Atributos
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisHerança. Algoritmos e Programação II. Aula 5 Herança
Algoritmos e Programação II Aula 5 Herança *Adaptado do material do Prof. Júlio Machado Herança Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com
Leia maisFabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes
Árvores Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Setembro de 2011 Tópicos Introdução Árvores binárias Implementação em Java Ordens de percurso em árvores binárias Altura de uma
Leia maisExercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.
Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.x = x; this.y = y; public String tostring(){ return "(" + x + "," +
Leia maisDesenvolvimento Web TCC-00.226 Turma A-1
Desenvolvimento Web TCC-00.226 Turma A-1 Conteúdo Orientação a Objetos Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226
Leia maisProgramação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.
Orientação a Objetos Revisão Conceitos CLASSE CLASSIFICAÇÃO GENERALIZAÇÃO ESPECIALIZAÇÃO HERANÇA INTERFACES POLIMORFISMO SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO 9 CLASSE Classe é um agrupamento
Leia maisA classe JTextField
8.1.4. A classe JTextField É uma caixa para digitação do usuário que permite a inclusão de um texto de apenas uma única linha. Principais métodos setbounds(int x, int y, int Width, int Height) define as
Leia maisCriar um projeto ->. Criar no pacote entity as classes Aluno e Endereco. Na classe Aluno implementar a interface Comparable, criar os atributos (idaluno, nome, disciplina, nota1,nota2 e media, sendo transient),
Leia maisPadrão de projeto de software
Padrão de projeto de software Paulo Venancio Lopes e Daniel Sguillaro Nome Roupa Suja Se Lava Em Casa. Intenção Dar maior capacidade e flexibilidade ao conceito de entidade (no contexto de persitência
Leia maisProgramação com Objectos
Programação com Objectos PADRÕES DE DESENHO Classificaçã Objectivo Criação Estrutura Comportamento Introdução Alguns Padrões de Desenho Classe Factory Method Adapter Interpreter Template Method O que é
Leia maisUma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC
Uma Introdução aos Padrões de Projeto com Java Roberto Willrich INE-CTC-UFSC 1 Introdução aos Padrões de Projeto Programação Introdução Motivação, Definição, Características, Histórico Descrição de um
Leia maisHerança e Classes Abstratas. João Paulo Q. dos Santos
Herança e Classes Abstratas João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Herança; Sobrescrita(sobreposição) de métodos; Herança e construtores; Conceitos sobre classes abstratas;
Leia maisAULA 16 HERANÇA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes
AULA 16 HERANÇA Disciplina: Programação Orientada a Objetos Professora: Alba Lopes alba.lopes@ifrn.edu.br REPETIÇÃO DE CÓDIGO Tomemos como exemplo a classe Funcionario, que representa o funcionário de
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisAula 08 Relacionamento entre Objetos. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes
Aula 08 Relacionamento entre Objetos Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Antes de Iniciar... Vamos aprender um pouco de modelagem
Leia maisPolimorfismo. O que é polimorfismo?
O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus
Leia maisEngenharia de Software
Engenharia de Software Projeto e Implementação Padrões de Projeto Msc. Carlos Mar 04/2014 REVISÃO: ORIENTAÇÃO A OBJETOS Msc. Carlos Mar - Abr/2014 Conceitos Fundamentais Classe Objeto Atributos Métodos
Leia maisMsC. João Maria MsC. Liviane Melo
Disciplina: Programação Orientada à Objetos AULA 02 Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC. Liviane Melo 2 Tipo Tamanho Alcance
Leia maisProjeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario
Projeto de sistemas em Java Algoritmos e Programação I Aula 25 Profa. Márcia Cristina Moraes mmoraes@inf.pucrs.br Profa. Sílvia M. W. Moraes silvia@inf.pucrs.br Agora que já estamos manipulando com mais
Leia maisComo vimos anteriormente, subclasses podem redefinir (sobrepor) um método de sua superclasse.
Métodos e Classes Abstratas Como vimos anteriormente, subclasses podem redefinir (sobrepor) um método de sua superclasse. Para indicar que um método de uma classe deve necessariamente ser redefinido em
Leia maisProgramação Estruturada e Orientada a Objetos. Objetos e Métodos
Programação Estruturada e Orientada a Objetos Objetos e Métodos 2013 O que veremos hoje? Objetos e Métodos Transparências baseadas no material do Prof. Jailton Carlos Objetivos Aprender a criar construtores;
Leia maisIntrodução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.
Introdução Atributos, métodos e encapsulamento joao@ecomp.uefs.br Atributos Ipos de acesso: private, public, protected e default Encapsulamento Métodos Construtores Criando objetos Departamento de Ciências
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Faculdade de Computação Aula Revisão Marcelo Zanchetta do Nascimento Material elaborado pela Profa. Ana Carolina Lorena - UNIFESP Desenvolvimento de Software ANÁLISE IMPLEMENTAÇÃO
Leia maisDesenvolvimento OO com Java Modificadores de acesso e atributos de classe
Desenvolvimento OO com Java Modificadores de acesso e atributos de classe Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade
Leia maisEncapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos
Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;
Leia maisAlgoritmos I Aula 13 Linguagem de Programação Java
Algoritmos I Aula 13 Linguagem de Programação Java Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação IDE Eclipse IDE (Integrated development environment) Criar um projeto
Leia maisImplementação de Classe e Auto-Relacionamento em Java
UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Implementação de Classe e Auto-Relacionamento em Java 1)Introdução Um modelo de Diagrama de Classes representa a estrutura definida
Leia maisIntrodução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for
Leia maisUniversidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação
UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Operação
Leia maisDesvendando o Hibernate
Passos Iniciais Desvendando o Hibernate 1. Repetir os passos do tutorial "CRUD com Hibernate" 2. Adicionar o driver JDBC do banco Esquematizando Fontes dos Arquivos WEB-INF\classes\hibernate.cfg.xml
Leia maisINF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores
Leia maisNotas de Aula 04: Herança e polimorfismo.
Notas de Aula 04: Herança e polimorfismo. Objetivos da aula: Introduzir o conceito de Heranças Criar uma hierarquia de classes Rever o uso de modificadores de acesso. Apresentar o conceito de polimorfismo
Leia maisAvançando em Java com
Avançando em Java com Polimorfismo (Interfaces) Prof.: Hugo Barros Interfaces Como já foi dito, java não permite que uma classe herde recurso de mais de uma classe. Herança múltiplipa é um recurso muito
Leia maisHerança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos
e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança
Leia maisPara entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:
Introdução a Orientação a Objetos com Java Autor: Professor Victor Augusto Zago Menegusso. Orientação a Objetos É um paradigma de programação que define a estrutura de um programa baseado nos conceitos
Leia maisPOO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo
Prof. Vicente Paulo de Camargo UML - INTRODUÇÃO UML = Unified Modeling Language = linguagem de modelagem de sistemas Permite especificar, visualizar e documentar modelos de software orientados a objetos
Leia maisJAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS
JAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS LABORATÓRIO 2 PROF. EMILIO PARMEGIANI Neste laboratório trabalharemos com conceitos de orientação a objetos, através da criação de classes, propriedades,
Leia maisFerramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes
Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes Antônio Francisco do Prado Daniel Lucrédio e-mail: prado@dc.ufscar.br Resumo Este artigo apresenta a ferramenta CASE
Leia maisLista de Exercícios I. 01. Desenvolva um programa em Java que receba três valores numéricos inteiros e mostre a soma desses três números.
Lista de Exercícios I 01. Desenvolva um programa em Java que receba três valores numéricos inteiros e mostre a soma desses três números. public class Questao001 { public static void main(string[] args)
Leia maisParadigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20
PPROG Paradigmas da Programação Tipos Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 Sumário Interesse Definição Implementação Declaração Valor de um Tipo Enumerado Variável de Tipo Enumerado Métodos Automáticos
Leia maisAULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes
AULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes alba.lopes@ifrn.edu.br CONCEITOS FUNDAMENTAS Na computação, temos um problema a ser
Leia maisEvento.java. package dominio;
Evento.java package dominio; import java.util.date; import java.util.set; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.generationtype;
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisClasses e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão
e Objetos em Java Algoritmos e Programação I Aula 9 Profa. Márcia Cristina Moraes mmoraes@inf.pucrs.br Profa. Sílvia M. W. Moraes silvia@inf.pucrs.br Prof. Marcelo H. Yamaguti yamaguti@inf.pucrs.br Prof.
Leia maisProgramação Orientada a Objetos (DPADF 0063)
Programação Orientada a Objetos (DPADF 0063) Aula 5 Herança Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno
Leia maisProva de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)
Prova de Java 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) O programa consiste em uma aplicação que simula o comportamento de dois
Leia maisClasses e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto
Leia maisProjetando Classes e Relacionamento (Herança) em Modelo de Classes
Projetando Classes e Relacionamento (Herança) em Modelo de Classes A UML (Unifed Modeling Language) consiste de um número de elementos gráficos combinados para formar diagramas. Pelo fato de ser uma linguagem,
Leia maisUnidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces
Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces 0 Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces Classes Abstratas À medida que você sobe na hierarquia de herança,
Leia maisObjetivo: Aplicar a técnica de encapsulamento no sistema de gestão acadêmica
Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 03 Objetivo: Aplicar a técnica de encapsulamento no sistema de gestão
Leia maisOrientação a Objetos Básica
Orientação a Objetos Básica Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/ 1 Objetivos
Leia maisProgramação Orientada a Objetos em Java
Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a
Leia maisAlgoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa:
Algoritmos Algoritmos Leandro Tonietto Unisinos ltonietto@unisinos.br http://www.inf.unisinos.br/~ltonietto/inf/pg1/algoritmosi_java.pdf Mar-2008 Possuem sintaxe flexível e são mais úteis para descrição
Leia mais