package oo; // padrão JavaBean // accessors and mutators // getters/setters // consulta/comando public class Cliente { private String nome; private String sobrenome; private int numero; // Relacionamentos // Composição é diferente de Agregação // Cliente TEM um Telefone! // Eh uma Composição: Cliente instancia e tem o próprio Telefone // Cliente não tem setter para Telefone // Se Cliente deixar de existir o telefone também deixará private Telefone telResidencial = new Telefone(); // Cliente TEM um Endereco! // Eh uma Agregação: Cliente recebe uma instância de Endereco // O Telefone existe independente do Cliente e pode ser agregado a outros Clientes private Endereco endereco; // Telefone não deve ter SETTER pois é uma composição // public void setTelResidencial(Telefone telRes) { // telResidencial = telRes; // } public Telefone getTelResidencial() { return telResidencial; } // Endereco tem GETTER e SETTER pois é agregado public Endereco getEndereco() { return this.endereco; } public void setEndereco(Endereco e) { this.endereco = e; } public void setNumero(int numero) { this.numero = numero; } public int getNumero() { return numero; } // mutator: "void setAlgo" public void setNome(String nome) { this.nome = nome; } // accessor: "Tipo getAlgo" public String getNome() { return nome; } public void setSobrenome(String sobrenome) { this.sobrenome = sobrenome; } public String getSobrenome() { return sobrenome; } }