Introdução à Programação Orientada a Objetos

                Prof. Adriano Teixeira de Souza
   Foco nos dados (objetos) do sistema, não nas
    funções

   Estruturação do programa é baseada nos
    dados, não nas funções

   As funções mudam mais do que os dados
   Dois conceitos estão associados a objetos:
    eles possuem estados, expressos em
    variáveis/atributos, e comportamentos, que
    expressam funcionalidades/métodos.

   Logo, uma possível definição de objetos pode
    ser: Um objeto é um artefato de software que
    é composto por um conjunto de variáveis e
    os respectivos métodos.



                 Iniciação ao Java – Márcio F. Campos
creditar
    Creditar




Saldo    Número

875,32   21.342-7




    debitar
creditar(20)


    Creditar
   creditar                            Creditar
                                      creditar




Saldo    Número                    Saldo    Número

875,32   21.342-7                  895,32   21.342-7




    debitar                            debitar
   Objetos
         comportamento + características
         métodos + atributos
         estado encapsulado
   Quando nos referenciamos a conceitos, e não
    a objetos, estamos tratando de classes.

   Uma definição para classe é: uma classe é
    uma referência, um conceito que estabelece
    quais os métodos e quais as variáveis são
    comuns a todos os objetos desta classe.
   Classes
       agrupamento de objetos do mesmo tipo



                         Telefone
          Fixo
       Gradiente   Philips          Celular
                                      Iphone 4s
public class NomeDaClasse {
     CorpoDaClasse
 }



O corpo de uma classe pode conter
  • atributos
  • métodos
  • construtores (inicializadores)
  • outras classes...
public class <nome> {
  public static void main (String[] args) {
        <declarações>
        <comandos>
  }
}

 Onde, main: método por onde se inicia a execução
       public: parâmetro de acesso
       static: indica que main se aplica à classe
       void: indica que main não retorna um valor
public class LeImprime {
    /** Lê e imprime um string */
    public static void main(String[] args) {
        String nome;
        nome = Util.readStr();
        System.out.println(nome);
    }
}
public class Livro {
    private int anoDePublicacao;
    private int numeroDePaginas;
    private String titulo;
    ...
}

   cada atributo tem um tipo específico que
    caracteriza as propriedades dos objetos da
    classe

   int e String denotam os tipos cujos
    elementos são inteiros e strings
   Primitivos               Referência
    ◦   char                  ◦ classes (String,
    ◦   int                     Object, Livro,
    ◦   boolean                 Conta, etc.)
    ◦   double                ◦ interfaces
    ◦   ...                   ◦ arrays


Os elementos de um tipo primitivo são valores,
enquanto os elementos de um tipo referência
são (referências para) objetos!
   Não é um tipo primitivo e sim uma classe

   Literais: “” “a” “POLI n UPE n”

   Operadores: + (concatenação)

ex.: “maio ” + “ de ” + 99 = “maio de 99”
    Note a conversão de inteiro para string
    Há uma conversão implícita para todos os
    tipos primitivos
   Comparação (igualdade) de dois strings a e b
     String a ...
     String b ...
     a.equals(b) ou b.equals(a)

   Tamanho de um string a
     a.length()
public class Livro {
       private int anoDePublicacao;
       ...
   }


A palavra reservada private indica que os
atributos só podem ser acessados (isto é,
lidos ou modificados) pelas operações da
classe correspondente
   Java não obriga o uso de private, mas vários
    autores consideram isto uma pré-condição
    para programação orientada a objetos

   Grande impacto em extensibilidade

   Usem private!
public class Pessoa {
         private int anoDeNascimento;
         private String nome, sobrenome;
         private boolean casado = false;
       ...
     }

   vários atributos de um mesmo tipo podem
    ser declarados conjuntamente

   podemos especificar que um atributo deve
    ser inicializado com um valor específico
public class Conta {
    private String   numero;
    private double   saldo;

    public void creditar(double valor) {
        saldo = saldo + valor;
    }
    ...
}

Um método é uma operação que realiza ações
 e modifica os valores dos atributos do objeto
       responsável pela sua execução
parâmetros
public class Conta {          do método
    ...

      public void debitar(double valor) {
         saldo = saldo - valor;
      }
}

        tipo de
                              corpo do
        retorno                método


    Por quê o método debitar não tem como
          Parâmetro o número da conta?
   O tipo do valor a ser retornado pelo método
   Nome do método
   Lista, possivelmente vazia, indicando o tipo e
    o nome dos argumentos a serem recebidos
    pelo método

        Usa-se void para indicar que o método
       não retorna nenhum valor, apenas altera
         os valores dos atributos de um objeto
public class Conta {
    private String numero;
    private double saldo;

    public String getNumero() {
        return numero;
    }
    public double getSaldo() {
        return saldo;
    }
    ...
}

Os métodos que retornam valores como
resultado usam o comando return
   Comandos que determinam as ações do
    método

   Estes comandos podem
    ◦ realizar simples atualizações dos atributos de um
      objeto

    ◦ retornar valores

    ◦ executar ações mais complexas como se comunicar
      com outros objetos
   Os objetos se comunicam para realizar
    tarefas
   A comunicação é feita através da troca de
    mensagens ou chamada de métodos
   Cada mensagem é uma requisição para que
    um objeto execute uma operação específica
            conta.creditar(45.30)

       variável contendo
        referência para        nome do
             objeto          método a ser
                              executado
concatenação de
public class Conta {
  private String   numero;       String e conversão
  private double   saldo;             de tipos

    public void imprimirSaldo() {
      System.out.println("Conta: " +
         numero + " Saldo: R$" + saldo);
    }
    ...
}
A tela do computador é representada em Java por
   um objeto especial, armazenado na variável
                  System.out
   Faça um programa que:
    ◦ Leia um vetor “turma” de 5 alunos
    ◦ Cada registro/Objeto de aluno deve ter o número
      de matrícula do aluno e suas notas de quatro
      bimestres.

    ◦ Imprima a lista de matrícula e notas de cada aluno

    ◦ E finalmente calcule a média das quatro notas e
      imprima a matricula e a média calcula para cada
      aluno.



                            Prof. Adriano Teixeira de Souza
   Escreva um programa para cadastrar 10
    produtos de uma empresa. As informações
    necessárias são: código, nome do produto,
    quantidade e preço. Deve ser usada uma
    estrutura para a construção deste cadastro. O
    programa deverá apresentar um menu de
    opções semelhante ao apresentado abaixo:

   Escolha sua opção:
    ◦ 1 – Cadastrar produto
    ◦ 2 – Listar todos
    ◦ 4 – Sair


                              Prof. Adriano Teixeira de Souza

Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)

  • 1.
    Introdução à ProgramaçãoOrientada a Objetos Prof. Adriano Teixeira de Souza
  • 2.
    Foco nos dados (objetos) do sistema, não nas funções  Estruturação do programa é baseada nos dados, não nas funções  As funções mudam mais do que os dados
  • 3.
    Dois conceitos estão associados a objetos: eles possuem estados, expressos em variáveis/atributos, e comportamentos, que expressam funcionalidades/métodos.  Logo, uma possível definição de objetos pode ser: Um objeto é um artefato de software que é composto por um conjunto de variáveis e os respectivos métodos. Iniciação ao Java – Márcio F. Campos
  • 4.
    creditar Creditar Saldo Número 875,32 21.342-7 debitar
  • 5.
    creditar(20) Creditar creditar Creditar creditar Saldo Número Saldo Número 875,32 21.342-7 895,32 21.342-7 debitar debitar
  • 6.
    Objetos comportamento + características métodos + atributos estado encapsulado
  • 7.
    Quando nos referenciamos a conceitos, e não a objetos, estamos tratando de classes.  Uma definição para classe é: uma classe é uma referência, um conceito que estabelece quais os métodos e quais as variáveis são comuns a todos os objetos desta classe.
  • 8.
    Classes agrupamento de objetos do mesmo tipo Telefone Fixo Gradiente Philips Celular Iphone 4s
  • 9.
    public class NomeDaClasse{ CorpoDaClasse } O corpo de uma classe pode conter • atributos • métodos • construtores (inicializadores) • outras classes...
  • 10.
    public class <nome>{ public static void main (String[] args) { <declarações> <comandos> } } Onde, main: método por onde se inicia a execução public: parâmetro de acesso static: indica que main se aplica à classe void: indica que main não retorna um valor
  • 11.
    public class LeImprime{ /** Lê e imprime um string */ public static void main(String[] args) { String nome; nome = Util.readStr(); System.out.println(nome); } }
  • 12.
    public class Livro{ private int anoDePublicacao; private int numeroDePaginas; private String titulo; ... }  cada atributo tem um tipo específico que caracteriza as propriedades dos objetos da classe  int e String denotam os tipos cujos elementos são inteiros e strings
  • 13.
    Primitivos  Referência ◦ char ◦ classes (String, ◦ int Object, Livro, ◦ boolean Conta, etc.) ◦ double ◦ interfaces ◦ ... ◦ arrays Os elementos de um tipo primitivo são valores, enquanto os elementos de um tipo referência são (referências para) objetos!
  • 14.
    Não é um tipo primitivo e sim uma classe  Literais: “” “a” “POLI n UPE n”  Operadores: + (concatenação) ex.: “maio ” + “ de ” + 99 = “maio de 99” Note a conversão de inteiro para string Há uma conversão implícita para todos os tipos primitivos
  • 15.
    Comparação (igualdade) de dois strings a e b String a ... String b ... a.equals(b) ou b.equals(a)  Tamanho de um string a a.length()
  • 16.
    public class Livro{ private int anoDePublicacao; ... } A palavra reservada private indica que os atributos só podem ser acessados (isto é, lidos ou modificados) pelas operações da classe correspondente
  • 17.
    Java não obriga o uso de private, mas vários autores consideram isto uma pré-condição para programação orientada a objetos  Grande impacto em extensibilidade  Usem private!
  • 18.
    public class Pessoa{ private int anoDeNascimento; private String nome, sobrenome; private boolean casado = false; ... }  vários atributos de um mesmo tipo podem ser declarados conjuntamente  podemos especificar que um atributo deve ser inicializado com um valor específico
  • 19.
    public class Conta{ private String numero; private double saldo; public void creditar(double valor) { saldo = saldo + valor; } ... } Um método é uma operação que realiza ações e modifica os valores dos atributos do objeto responsável pela sua execução
  • 20.
    parâmetros public class Conta{ do método ... public void debitar(double valor) { saldo = saldo - valor; } } tipo de corpo do retorno método Por quê o método debitar não tem como Parâmetro o número da conta?
  • 21.
    O tipo do valor a ser retornado pelo método  Nome do método  Lista, possivelmente vazia, indicando o tipo e o nome dos argumentos a serem recebidos pelo método Usa-se void para indicar que o método não retorna nenhum valor, apenas altera os valores dos atributos de um objeto
  • 22.
    public class Conta{ private String numero; private double saldo; public String getNumero() { return numero; } public double getSaldo() { return saldo; } ... } Os métodos que retornam valores como resultado usam o comando return
  • 23.
    Comandos que determinam as ações do método  Estes comandos podem ◦ realizar simples atualizações dos atributos de um objeto ◦ retornar valores ◦ executar ações mais complexas como se comunicar com outros objetos
  • 24.
    Os objetos se comunicam para realizar tarefas  A comunicação é feita através da troca de mensagens ou chamada de métodos  Cada mensagem é uma requisição para que um objeto execute uma operação específica conta.creditar(45.30) variável contendo referência para nome do objeto método a ser executado
  • 25.
    concatenação de public classConta { private String numero; String e conversão private double saldo; de tipos public void imprimirSaldo() { System.out.println("Conta: " + numero + " Saldo: R$" + saldo); } ... } A tela do computador é representada em Java por um objeto especial, armazenado na variável System.out
  • 26.
    Faça um programa que: ◦ Leia um vetor “turma” de 5 alunos ◦ Cada registro/Objeto de aluno deve ter o número de matrícula do aluno e suas notas de quatro bimestres. ◦ Imprima a lista de matrícula e notas de cada aluno ◦ E finalmente calcule a média das quatro notas e imprima a matricula e a média calcula para cada aluno. Prof. Adriano Teixeira de Souza
  • 27.
    Escreva um programa para cadastrar 10 produtos de uma empresa. As informações necessárias são: código, nome do produto, quantidade e preço. Deve ser usada uma estrutura para a construção deste cadastro. O programa deverá apresentar um menu de opções semelhante ao apresentado abaixo:  Escolha sua opção: ◦ 1 – Cadastrar produto ◦ 2 – Listar todos ◦ 4 – Sair Prof. Adriano Teixeira de Souza