sábado, 29 de junho de 2013

Interface

Definição: Uma interface é uma classe que contém apenas métodos abstratos. Como no conceito de Herança uma classe não pode herdar de duas outras classes, ou seja, uma classe não pode ter mais de uma superclasse, então é utilizado a interface, porque uma classe pode implementar zero ou várias interfaces.


Representação por diagrama UML:














Exemplo de código fonte em Java:

Inteface
public interface Telefone {
    public void numeroDiscado(int numero);
    public boolean chamadaEmProgresso();  

}

Classe que implementa a Interface
public class TelefoneCelular implements Telefone{
    @Override
    public void numeroDiscado(int numero){
      //aqui vai codigo
    }
 
    @Override
    public boolean chamadaEmProgresso(){
        //return  true ou false;
    }
}



Relacionamentos

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;

  • Representação por diagrama UML:
          







  • 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    

                     }            
                                   

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.


  • Representação por diagrama UML:




  • Exemplo de código fonte em Java:
          public class Moeda {
                 public Moeda(double umValor, String umNome) {
                 }

                  public double getValor() {
                  }
          }


          public class CaixaRegistradora {
                   public CaixaRegistradora() {
                   }

                   public void entrePagamento (int qtdMoeda, Moeda tipoMoeda) {
                   }
          }

   

sexta-feira, 28 de junho de 2013

Objeto


  • Definição: Um objeto é a abstração de uma entidade do mundo real.

  • Estado do Objeto: é o seu comportamento.

  • Exemplo:
          Objeto resultante da abstração de um aluno de uma disciplina – UmAluno

            •Atributos: 
               - nome (José)
               - matrícula (2399382-9)
               - nota parcial (8.0)
               - nota final (9.0)

            •Serviços (comportamento):
               - estudar
               - assistir aula
               - realizar prova

Escopo de Variável


É o tipo de variável: local, global ou variável de parâmetro.


  • Variável global: É uma variável que pode ser acessada de qualquer lugar do programa.

  • Variável local: É uma variável que só pode ser usada em um determinado local do programa por exemplo dentro de um método.

  • Variáveis de Parâmetro: São variáveis utilizadas dentro de uma função, e seus valores são atribuídos no momento da chamada da função.

Exemplo:

 public class Funcionario {
      //variavel global 
        String nome;
 
      public static void main(String[] args) {
               //variavel local
                 double salario;

            //chamada da função descontoSalario passando por parametro
            //a variavel salario para a variavel de parametro sl 
            this.descontoSalario(salario);

            //função - variavel de parametro sl
            public double descontoSalario(double sl){
                  return sl - ((sl*10)/100);            
            }    

      }    

 }

               

quinta-feira, 27 de junho de 2013

Encapsulamento

Acontece quando os atributos de uma classe não podem ser utilizados de qualquer lugar do programa. Então, para a manipulação destes atributos são utilizados os métodos Get e Set.

Exemplo de código fonte em Java:

public class Exemplo{
    //propriedade (atributo) 
    private String atributo1;

    //metodos Get e Set 
    public String getAtributo1 ( ) {
         return atributo1;
    }    

    public void setAtributo1 (String at1) {
         this.atributo1 = at1;
    }

}

Visibilidade


Visibilidade de Métodos
  • private: só pode ser usado (visto) dentro da classe
  •  public: pode ser usado (visto) em qualquer classe
  •  protected: pode ser usado (visto) nas classes do mesmo projeto

Representação por diagrama UML:









Exemplo de código fonte em Java:

public class Exemplo{
     private String alt1;

     public void metodo2 ( ) {
     }

     private void metodo1 ( ) {
     }

     protected void metodo3 ( ) {
     }

}


Abstração x Representação

  • Abstração: o que você vê no objeto e como você entende o objeto (visão do mundo real).

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

Abstração:
  - propriedades (CPU, entrada de CD, entrada do pendrive).

  - objeto que tem alguma ação (botão que liga e reset)

Representação: 
    telefone ( DDD, nº telefone)

  - loja de roupa: o telefone é só uma característica do cliente
  - companhia de telefone: o telefone tem uma importância maior
    (através do nº de telefone você chega ao nome da pessoa). 

Troca de Mensagens

É a maneira pela qual os objetos se comunicam.  Um objeto só executará determinado serviço se receber uma solicitação – que pode ser encaminhada por outro objeto. 

Exemplo:

Um programa encaminha uma mensagem ao objeto umaPessoa, solicitando que este modifique o valor de sua idade umaPessoa.recebaValorIdade(25);


quarta-feira, 26 de junho de 2013

Métodos


Operações que permitem consultar ou alterar os valores dos atributos de um objeto.
São também utilizados para possibilitar interações entre os objetos de uma aplicação
As tarefas que um objeto pode realizar são definidas pelos seus métodos.

Método Construtor


  •       Definição: cria espaço na memória.

  •       Exemplo de código fonte em Java:
                public class Funcionario {
                     //propriedades     
                       private String nome;
                       private int idade; 

                     //metodo construtor
                       public Funcionario(){
                           this.nome = "";
                           this.idade = 0;          
                       }
                 }


Métodos Set e Get


  • Set - Serve para atribuir um valor a uma propriedade.

  • Get - Pega o valor da propriedade e retorna.

  • Exemplo de código fonte em Java:
            public class Funcionario {
                     //propriedades     
                       private String nome;
                       private int idade; 

                     //metodo construtor
                       public Funcionario(){
                           this.nome = "";
                           this.idade = 0; 
                       }

                    //metodos get e set
                       public String getNome() {
                              return nome;
                       }

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

                       public int getIdade() {
                              return idade;
                       }

                       public void setIdade(int idade) {
                              this.idade = idade;
                       }      
                       
            }


Métodos de Usuário


É um método criado para efetuar uma tarefa claramente definida e específica.
  • Exemplo:
           public class Funcionario {
          
                  public static void main(String[] args) {
            
                        double salario = 1000;
           
                        this.descontoSalario(salario);

                        //metodo de usuario
                          public double descontoSalario(double sl){
                                  return sl - ((sl*10)/100);             
                          }     
                  }     

           }

Métodos Sobrescritos 


Uma classe que herda um método de outra (Super classe), pode sobrescrever o método desta.

Representação por diagrama UML:







Exemplo de código fonte em Java:

public class Pessoa{
            public void Nome(){
                 System.out.println("Nome da Pessoa");              
            }     
}


public class Funcionario extends Pessoa{  

          //método sobrescrito de Pessoa
            public void Nome(){
                 System.out.println("José");              
            }     
}


Propriedades (atributos)


Definição: Representam informações sobre um objeto, características.
                   Recomenda-se que as propriedades sejam definidas como privadas.


Representação por diagrama UML:


Representação de código fonte em Java: 


public class Funcionario {
      //propriedades     
        private String nome;
        private int idade; 

}

Classe


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


Representação por diagrama UML:








Exemplo de código fonte em Java:

   public class Funcionario {
          public static void main(String [] args) {
                 System.out.println("Funcionario");
          }
   }