Exemplo de Relacionamentos TEM-UM, USA-UM

Oi.

Alguém poderia me dar um exemplo de código (o mais simples possível) utilizando os relacionamentos TEM-UM (agregação e composição) e USA-UM?

Exemplo de um relacionamento É-UM:

class Shape {}
class Circle extends Shape {}

Não consigo visualizar a diferença dos dois tipos de TEM-UM.

Obrigado.

USA-UM???

TEM UM -> Todo parte
É UM -> Herança

Para os relacionamentos Todo-parte (TEM UM), existem três tipos de associações:
Composição - tipo mais forme de associação. Quando o objeto mais externo da composição é destruido, os objetos que são suas partes tbm são destruidos.
Carro tem quatro Pneus que são só dele e de mais nenhum carro. Se o carro é destruido, os pneus tbm são.

[code]public class Pneu {}

public class Carro {
private Pneu pneu1;
private Pneu pneu2;
private Pneu pneu3;
private Pneu pneu4;
}[/code]

Agregação - é um tipo de associação de “força” intermediária. O relacionamento entre as classes ainda tem alguma semântica, mas os componentes de um objeto podem ser compartilhados com outros objetos. No exemplo, várias televisões podem ser ligadas na mesma tomada. Se uma televisão é destruida, a tomada continua lá.

[code]public class Tomada {}

public class Televisao {
private Tomada tomada;
}[/code]

Note que a semântica tanto na composição quanto da agregação está relacionada a como você vai desenvover. Mesmo que seu diagrama fale que um pneu é de um e só um carro, você pode colocar a mesma instância de pneu em mais de um carro entendeu? Então se é composição, você tem que gerenciar isso no código.

Associação simples - Uma classe utiliza objetos de outra classe.

Herança (É UM) é herdar, ser um, estar na mesma hierarquia. Se uma classe herda de outra, quer dizer que a primeira classe é do tipo da segunda.
Maçã é uma Fruta no código abaixo.

[code]public class Fruta {}

public class Maca extends Fruta {}[/code]
[]´s

1 curtida

O É-UM é usado em relação à herança.
Ex:

public class Animal{
//qualquer codigo
}

class Cachorro extends Animal{
//qualquer codigo
}

class Gato extends Animal{
//qualquer codigo
}

class Puddle extends Cachorro{
//qualquer codigo
}
 

Cachorro é um animal…gato é um Animal…puddle é um cachorro…puddle é um animal…

Já TEM-UM é sobre as caractéristicas (variáveis de instância de referência).

Ex:

  public class Casa {  
  private Porta porta;  
  }  

Essa relação (usa-um) é uma relação de dependência.

Carro usa PostoGasolina.

Mas isso no código seria como? algo do tipo:

class Carro { public void abastecer(PostoGasolina posto) { this.combustivel = posto.getGasolina(); } } ?

No mais, foi bastante esclarecedor, obrigado.

Essa relação (usa-um) é uma relação de dependência.

Carro usa PostoGasolina.

Mas isso no código seria como? algo do tipo:

class Carro { public void abastecer(PostoGasolina posto) { this.combustivel = posto.getGasolina(); } } ?

No mais, foi bastante esclarecedor, obrigado.[/quote]

Nunca vi essa relação USA-UM