quinta-feira, 27 de junho de 2013

Conceito 16 - Interface

É uma classe sem nenhuma implementação.
Contem apenas atributos static final.
Todas as operações são abstratas.
Os métodos têm apenas a sua assinatura.
O relacionamento de realização indica as classes que implementam a interface.
Equivale a generalização.
É uma alternativa para a herança múltipla em Java.

Exemplo de Interface no diagrama de classe.

Exemplo de código fonte:
public interface Autenticavel{
public booleanautentica(int senha);
}
public class Gerenteimplements Autenticavel{
publicGerente () {
}
public boolean autentica (int senha) {
}
}
public class Clienteimplements Autenticavel{
publicCliente () {
}
public boolean autentica (int senha) {
}
}


Conceito 15 - Dependência

A Dependência deixa explícito que uma mudança na especificação
de um elemento pode alterar a especificação do elemento
dependente.
Os objetos de uma classe esporadicamente usam serviços dos objetos de
outra classe.

Exemplo de Dependência no diagrama de classe:

Exemplo de código fonte:
public class Moeda{
publicMoeda(double umValor, String umNome) {
}
public double getValor() {
}
}
public class CaixaRegistradora {
publicCaixaRegistradora() {
}
public void entrePagamento (intqtdMoeda, 
MoedatipoMoeda) {
}
}

Conceito 14 - Herança

A herança é um relacionamento pelo qual uma classe, chamada de sub-classe, herda todos comportamentos e estados possíveis de outra classe, chamada de super-classe ou classe base. É permitido que a sub-classe estenda os comportamentos e estados possíveis da super-classe (por isso este relacionamento também é chamado de extensão). Essa extensão ocorre adicionando novos membros a sub-classe, como novos métodos e atributos.
É também possível que a sub-classe altere os comportamentos e estados possíveis da super-classe. Neste caso, a sub-classe sobrescreve membros da super-classe, tipicamente métodos.

Exemplo de Herança no diagrama de classe:

Exemplo de código fonte:
public class Veiculo{
private String chassi;
private String placa;
...
publicVeiculo() {
}
}
public class VeiculoDeCarga extends Veiculo {
private doublecargaMaxima;
publicVeiculoDeCarga () {
}
}
public class VeiculoDePasseio extends Veiculo{
private doublequantidadeDePassageiros;
publicVeiculoDePasseio() {
}
}

Conceito 13 - Composição

Tipo de relacionamento com características todo-parte, onde existe um alto grau de coesão entre o todo e as partes, com total grau de dependência entre eles (todo e as partes). Desta forma, se o todo não existir, as partes também não existirão.
Um exemplo de composição é a mão:
Uma mão é composta por dedos. Os dedos compõem a mão.
Não há lógica em existir um dedo sem mão, porém pode-se ter uma mão sem um ou mais dedos.

Exemplo de Composição no diagrama de classe:

Exemplo de código fonte:
ublic class Peca{
private intcodigoPeca;
publicPeca() {
}
}
public class Motor{
private intidMotor;
private ArrayList<Peca> pecas;
publicMotor() {
pecas = new ArrayList<Pecas>();
}
public voidadd(PecaumaPeca) {
pecas.add(umaPeca);
}
}

Conceito 12 - Agregação

Representa que um tipo de objeto é composto, pelo menos em parte, de outro objeto em uma relação todo/parte.
O objeto parte é um atributo do objeto todo.
O ciclo de vida do objeto parte é limitado ao ciclo de vida do objeto todo.
Porém, a parte vive sem o todo e o todo existe sem as partes (relação todo-parte fraca).
A agregação indica que uma das classes do relacionamento é uma parte ou está contida em outra classe.
Semanticamente representa: "consiste em", "contém", "é parte de".

Exemplo de Agregação no diagrama de classe:


Exemplo de código fonte:
public class Navio{
private String nomeNavio;
publicNavio() {
}
}
public class Marina{
private String nomeMarina;
privateArrayList<Navio> navios;
publicMarina() {
navios = newArrayList<Navio>();
}
public voidadd(NavioumNavio) {
navios.add(umNavio);
}
}

Conceito 11 - 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 Associação simples no diagrama de classes:


Exemplo de código fonte:
public class Funcionario {
private Funcionario gerente;
private List<Funcionario> subordinadoss =
new ArrayList<Funcionario>(0);
// Demais atributos
// …
// Construtor
public Funcionario() {
}

Conceito 10 - Encapsulamento

O encapsulamento de dados com o código que os manipula em classes é a principal vantagem da Orientação a Objeto.
No sentido de não quebrar a encapsulação, é muito importante que os membros de uma classe (atributos e métodos) sejam visíveis apenas onde estritamente necessário.
A lei é: "Não posso quebrar o que não posso acessar"
Por isso, é comum usarmos "private" como especificador de controle de acesso para atributos de uma classe.
Já que é frequente querermos que métodos de uma classe sejam chamados por objetos de outras classes, não é raro usarmos "public" como especificador de controle de acesso para métodos de uma classe
Especificadores de controle de acesso controlam a visibilidade de membros de uma classe
São aplicados a atributos e métodos.

Exemplo de código fonte:
public class Pessoa {
    private String nome;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}