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;
    }
}

Conceito 9 - Visibilidade

Há três graus de visibilidade que podemos usar com membros de uma classe
As palavras chaves usadas são: "public", "private", "protected".

A visibilidade public:
Quem tem acesso à classe tem acesso também a qualquer membro com visibilidade public
O alvo aqui é o programador cliente que usa suas classes
É raro ter atributos públicos mas é comum ter métodos públicos.

A visibilidade private:
O membro private não é acessível fora da classe
A intenção aqui é permitir que apenas você que escreve a classe possa usar esse membro.

A visibilidade protected
O membro protected é acessível à classe e a suas subclasses
A intenção é dar acesso ao programadores que estenderão sua classe.

Exemplo de Visibilidade no diagrama de classe:


Exemplo de código fonte:
public class Usuario;   // Visibilidade public

private String Nome;    // Visibilidade private

protected String Cliente;   // Visibilidade protected


Conceito 8 - Abstração x Representação

Abstração: o que você enxerga no objeto e como você compreende o objeto, ou seja, visão do mundo real/natural .

Representação: realizada através da descrição da classe.

Conceito 7 - Troca de mensagens

A troca de mensagens ocorre através da chamada aos métodos de um objeto por outro objeto.

Exemplo de código fonte:
public class Relatorio {
    ...
    public void imprimirTitulo(String titulo){
        formulario.Imprimir(posicaoX, posicaoY, Alinhamento.CENTRAL, titulo);
    }
    ...
}

No exemplo acima o Objeto Relatorio passa uma mensagem para o objeto formulário utilizando a função imprimir. Sempre que você chama um método de um objeto você está passando uma mensagem.

Conceito 6 - Escopo de Variável

A parte de código que "enxerga" uma determinada variável é chamada o escopo da variável. Podemos definir uma variável em global ou local.

Assim, o escopo de uma variável global é a classe inteira, e o escopo de uma variável local é o método, ou bloco contido dentro do método, ao qual ela pertence.

As variáveis declaradas fora de qualquer método (usualmente no cabeçalho da classe) e são acessíveis por qualquer método da classe são chamadas globais. Muitas vezes, variáveis auxiliares são declaradas dentro de um determinado método, ou até dentro de um bloco menor. Tais variáveis são chamadas locais. Elas existem somente durante a execução daquele método ou bloco.

Exemplo de código fonte:
class NomeDaClasse
{
   TipoDaVariahvel variahvel1; // variável global
   ...
   TipoDeRetorno nomeDoMehtodo()
   {
     TipoDaVariahvel variahvel2; // variável local, definida neste método
     for( int i = 0; i < 10; i++ )
     {
       ... // a variável i é local, definida só dentro deste bloco
     }
   }
}

Conceito 5 - Estado

O estado de um objeto é representado pelas variáveis definidas na própria classe.
Concreto: que existe fisicamente.
Abstrato: é um conceito.

Conceito 4 - Objeto

Objetos são instâncias de classes, que determinam qual informação um objeto contém e como ele pode manipulá-la. É uma entidade capaz de reter um estado (informação) e que oferece uma série de informações (comportamento) ou para examinar ou para afetar este estado. É através deles que praticamente todo o processamento ocorre em sistemas implementados com linguagens de programação orientada a objetos.

Exemplo de código fonte:
public class ExemploObjeto {
    public static void main (String[] args) {
        //cria o objeto estagiario
        Estagiario e = new Estagiario();
       
        e.setNome ("Carlos");   //usando método herdado
        System.out.println(e);   //chamando método local
 }  }

Conceito 3 - Métodos

Os métodos são procedimentos ou funções que realizam as ações próprias do objeto. Assim, os métodos são as ações que o objeto pode realizar. Tudo o que o objeto faz é através de seus métodos, pois é através dos seus métodos que um objeto se manifesta, através deles que o objeto interage com os outros objetos.  
Método Construtor:

Construtores são métodos especiais chamados pelo sistema no momento da criação de um objeto. Eles não possuem valor de retorno, porque você não pode chamar um construtor para um objeto, você só usa o construtor no momento da inicialização do objeto. Construtores representam uma oportunidade de inicializar seus dados de forma organizada.
Métodos Get e Set:

Get: Nomeamos um método assessor com get toda vez que este método for verificar algum campo ou atributo de uma classe.
Como este método irá verificar um valor, ele sempre terá um retorno como String, int, float, etc. Mas não terá nenhum argumento.
Set: Nomeamos um método assessor com set toda vez que este método for modificar algum campo ou atributo de uma classe, ou seja, se não criarmos um método assessor set para algum atributo, isso quer dizer que este atributo não deve ser modificado.
Portanto, como o valor de um atributo da classe será modificado, não é necessário que este método retorne nenhum valor, por isso, os métodos setters são void. Porém, obrigatoriamente, eles tem que receber um argumento que será o novo valor do campo.
Métodos do usuário:

Onde é adicionado nas listas criadas, onde é implementado o programa, criados pelo usuário.
Método sobrescrito:

Qualquer classe que herda um método de uma superclasse tem a oportunidade de sobrescrever o método (exceto métodos marcados como final). O benefício de sobrepor é a capacidade de definir um comportamento que é específico para um tipo de subclasse particular.
Exemplo de código fonte:
public class Pessoa extends ser_vivo{
// Atributos/Propriedades
    private String nome;
// Método Construtor    public Pessoa() {
    }
// Métodos Set e Get    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
// Métodos Usuário (e Sobrescrito se a classe ser_vivo possuir o mesmo método)    public void escreverNome(){
        System.out.println(this.getNome());
    }

Conceito 2 - Propiedades

Propriedades de uma classe também conhecido como atributos, descrevem um intervalo de valores que as instâncias da classe podem apresentar.
Um atributo é uma variável que pertence a um objeto.Os dados de um objeto são armazenados nos seus atributos.

Exemplo de Propriedade (Atributo) no Diagrama de Classe:


Exemplo de código: 

public class Pessoa {

// Atributos/Propriedades
  private String nome;

// Construtor da classe
public Cliente() {
}
// Métodos
// …
}


quarta-feira, 26 de junho de 2013

Conceito 1 - Classes

Classes são os blocos de construção mais importantes de qualquer sistema Orientado à Objetos.

Uma Classe é uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica.

Toda Classe possui:
Nome - a diferencie das outras classes.
Atributos – propriedades que descrevem um intervalo de
valores que as instâncias da classe podem apresentar.
Abstraem os tipos de dados ou estados que os objetos de uma classe
podem abranger.
Operações (métodos) – implementam serviços que podem
ser solicitados por algum objeto da classe para modificar o
comportamento.
Abstraem algo que pode ser feito com um objeto.
Algumas vezes, a chamada a uma operação de um objeto altera os
atributos ou o estado do mesmo.

Representação de Classe no diagrama:


Exemplo de código fonte:

public class Cliente {
// Atributos
// …
// Construtor da classe
public Cliente() {
}
// Métodos
// …
}

Boas Vindas

Olá Pessoal, esse blog tem o objetivo de exibir alguns dos conceitos de Programação Orientada a Objetos, como trabalho da disciplina de Programação Orientada a Objetos I do 3° Período do curso de Sistemas de Informação do Instituto Federal Catarinense - Campus Camboriú.

Att.
Douglas Cachos Zagoto