Objetos se relacionam entre si através de operações (métodos);
Tipos de Relacionamentos:
Associação Simples
- Utilizada para relacionar duas classes cujos objetos podem se comunicar;
- Semanticamente representam que as classes "conhecem uma a outra", "estão conectadas com", "para cada X existe um Y“;
- Deve-se identificar o papel das classes na associação;
- Exemplo de código fonte em Java
public class Funcionario {
// Atributos do
funcionario
private String nome;
private String cpf;
// Papeis (atributos) do
relacionamento
// Cardinalidade 1
private
Funcionario gerente;
// Cardinalidade *
private
List<Funcionario> subordinados = new ArrayList<Funcionario>(0);
// Método
Construtor
public Funcionario()
{
}
// Métodos set e
get
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
}
Agregação x Composição
- Estas duas formas de relacionamento geralmente confunde as pessoas, o que as difere é o seguinte: Um objeto contem uma lista de outros objetos, se estes outros objetos podem "existir" sem a existência do objeto que os contém, isto é uma agregação; Na composição um objeto também possui uma lista de outros objetos porém um objeto não pode "existir" se o outro for "excluído".
- Representação por diagrama UML:

- Exemplo de código fonte em Java
AGREGAÇÃO
Classe Atleta
public class Atleta {
//propriedades
private String nome;
private int idade;
private String posicao;
//metodo construtor
public Atleta() {
}
//metodos get e set
//código
}
Classe Time
public class Time {
//propriedades
private String nomeTime;
private String tecnico;
//O objeto time possui uma lista de atleta
private List<Atleta> atleta = new ArrayList<>(0);
//metodo construtor
public Time() {
}
//metodos get e set
//código
//metodos de usuario
public void addAtleta(Atleta atleta){
this.atleta.add(atleta);
}
public String listaAtleta(){
String atl = "";
List<Atleta> atls = new ArrayList<>(0);
atls = this.getAtleta();
for (int i=0; i < atls.size(); i++) {
atl += atls.get(i).getNome() + atls.get(i).getIdade()
+ atls.get(i).getPosicao();
}
return atl;
}
COMPOSIÇÃO
Classe Pedido
public class Pedido {
//propriedades
private int numero;
private String nomeCliente;
//pedido possui uma lista de item pedido
private List<ItemPedido> itempedido = new ArrayList<>(0);
//metodo construtor
public Pedido() {
}
//metodos get e set
//código
//metodos de usuario
public void addItemPedido(ItemPedido itempedido){
this.itempedido.add(itempedido);
}
public String listaItem(){
String itp = "";
List<ItemPedido> itps = new ArrayList<>(0);
itps = this.getItempedido();
for (int i=0; i < itps.size(); i++) {
itp += itps.get(i).getCodigo() + itps.get(i).getDescricao()
+ itps.get(i).getFabricante();
}
return itp;
}
}
Classe ItemPedido
public class ItemPedido {
//propriedades
private int codigo;
private String descricao;
private String fabricante;
//metodo construtor
public ItemPedido() {
}
//metodos get e set
//codigo
}
public class Atleta {
//propriedades
private String nome;
private int idade;
private String posicao;
//metodo construtor
public Atleta() {
}
//metodos get e set
//código
}
Classe Time
public class Time {
//propriedades
private String nomeTime;
private String tecnico;
//O objeto time possui uma lista de atleta
private List<Atleta> atleta = new ArrayList<>(0);
//metodo construtor
public Time() {
}
//metodos get e set
//código
//metodos de usuario
public void addAtleta(Atleta atleta){
this.atleta.add(atleta);
}
public String listaAtleta(){
String atl = "";
List<Atleta> atls = new ArrayList<>(0);
atls = this.getAtleta();
for (int i=0; i < atls.size(); i++) {
atl += atls.get(i).getNome() + atls.get(i).getIdade()
+ atls.get(i).getPosicao();
}
return atl;
}
COMPOSIÇÃO
Classe Pedido
public class Pedido {
//propriedades
private int numero;
private String nomeCliente;
//pedido possui uma lista de item pedido
private List<ItemPedido> itempedido = new ArrayList<>(0);
//metodo construtor
public Pedido() {
}
//metodos get e set
//código
//metodos de usuario
public void addItemPedido(ItemPedido itempedido){
this.itempedido.add(itempedido);
}
public String listaItem(){
String itp = "";
List<ItemPedido> itps = new ArrayList<>(0);
itps = this.getItempedido();
for (int i=0; i < itps.size(); i++) {
itp += itps.get(i).getCodigo() + itps.get(i).getDescricao()
+ itps.get(i).getFabricante();
}
return itp;
}
}
Classe ItemPedido
public class ItemPedido {
//propriedades
private int codigo;
private String descricao;
private String fabricante;
//metodo construtor
public ItemPedido() {
}
//metodos get e set
//codigo
}
Herança
É um principio da orientação a objeto que permite o compartilhamento de atributos e métodos entre classes. Tem como objetivo o reaproveitamento de código comum. Na herança existe a Superclasse (classe pai) que possui os atributos ou métodos comuns entre as classes, e a classe que herda (classe filho) possui os atributos ou métodos herdados da classe pai e mais os atributos específicos dela (isto se possuir).
- Representação por diagrama UML:
- Exemplo de código fonte em Java:
Classe Pessoa
public class Pessoa {
//atributos
private String nome;
//construtor
public Pessoa() {
}
//metodos get e set
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
//metodo do usuario
public void escreverNome(){
System.out.println(this.getNome());
}
}
Classe Fisica
//utiliza-se extends para herdar da classe pessoa
public class Fisica extends Pessoa{
//atributos
public String cpf;
//construtor
public Fisica() {
}
//metodos get e set
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
//método do usuario
public boolean validarCpf(){
if (this.getCpf().length() == 11){
return true;
} else {
return false;
}
}
}
Classe Juridica
//utiliza-se extends para herdar da classe pessoa
public class Juridica extends Pessoa{
//atributos
private String cnpj;
//construtor
public Juridica() {
}
//metodos get e set
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
//metodo do usuario
public boolean validarCnpj(){
if (this.getCnpj().length() == 14){
return true;
} else {
return false;
}
}
}
Dependência
A dependência é um tipo de relacionamento entre classes onde se há mudança em uma especificação do elemento de uma classe esta altera a especificação do elemento dependente que está na outra classe.
public class Moeda {
public Moeda(double umValor, String umNome) {
}
public double getValor() {
}
}
public class CaixaRegistradora {
public CaixaRegistradora() {
}
public void entrePagamento (int qtdMoeda, Moeda tipoMoeda) {
}
}
public Moeda(double umValor, String umNome) {
}
public double getValor() {
}
}
public class CaixaRegistradora {
public CaixaRegistradora() {
}
public void entrePagamento (int qtdMoeda, Moeda tipoMoeda) {
}
}



Nenhum comentário:
Postar um comentário