Linguagem de Programação I Orientação a Objetos em Java Roteiro Introdução Classes e Objetos Declaração de Classes e Instanciação de um Objeto de uma Classe Declarando métodos com parâmetros Atributos, métodos get e set Tipos primitivos e tipo referência Inicializando objetos com construtores 2 Introdução Programação Orientada a Objetos • Tudo é visto como objeto • Na programação imperativa: • Estrutura de dados + funções = programa • Em POO: • • Estrutura de dados + funções = objeto objeto + objeto + ... + objeto = programa 3 Objetos O que são objetos em linguagens OO? 4 Objetos O que são objetos em linguagens OO? • Objetos representam entidades do mundo real: • • • • satélite, empregado, número, conta bancária, etc. • Objetos podem ser simples ou complexos 5 Objetos O que são objetos em linguagens OO? Objetos são compostos de • atributos • dados que definem o estado do objeto • métodos • procedimentos que alteram o estado do objeto Exemplo de objeto: • carro 6 Objeto “carro” Para construir o objeto “carro”, teremos de abstrair seus atributos e funções: • um carro pode ter os seguintes recursos ou atributos: • cor, velocidade, combustível, tamanho, modelo • um carro pode: • andar, parar, virar à esquerda, virar à direita 7 POO em Java Como descrever os objetos no mundo computacional? • Temos de mapear os objetos reais em objetos computacionais e escrever programas que dão vida a estes objetos em um sistema computacional. 8 POO em Java Objetos (computacionais) são caracterizados por atributos e métodos: • atributos são as propriedades de um objeto. • métodos são as ações que um objeto pode realizar • • a execução de um método muda os valores dos atributos do objeto responsável pela execução neste caso dizemos que o objeto mudou de estado Objetos são modelados através de classes 9 Classes Como podemos definir as Classes? 10 Classes Classes são agrupamentos de objetos (computacionais) que têm propriedades em comum e podem realizar as mesmas ações. • este agrupamento e classificação deve refletir o • agrupamento natural dos objetos reais. classes introduzem a noção de tipos em linguagens orientadas a objetos: • Organiza informações; 11 Classes em Java Java oferece recursos linguísticos para especificar (descrever) classes: class Nome_da_Classe { atributos métodos } o corpo de uma classe é delimitado pelos símbolos { e }, e corresponde à descrição dos atributos e métodos da classe 12 Classes em Java class Carro{ String cor, modelo; double velocidade = 0.0; String placa; void acelerar(double fator){ velocidade = velocidade * fator; } void parar(){ acelerar(0.0); } } atributos métodos 13 Classes em Java class Pessoa { private String Nome, Sobrenome; private int AnoNasc; private boolean solteiro = true; int seculo_de_nascimento( ) { return ... (AnoNasc / 100) + 1 ...; } int idade(int ano_corrente) { return ... ano_corrente - AnoNasc ...; } ... } 14 Declarando métodos com parâmetros TipoDeRetorno nomeDoMetodo (Parâmetros) { Corpo } 15 Atributos, métodos get e set private String nome; void setNome(Sring n) { nome = n; } String getNome() { return nome; } 16 Tipos primitivos e tipo referência Tipos primitivos • boolean • byte • char • short • int • long • float • double 17 Tipos primitivos e tipo referência Tipo não primitivo ou tipo referência • As classes que especificam os tipos dos objetos 18 Inicializando objetos com construtores Cliente(){ nome = ""; endereco = ""; rg = -1; } Cliente(String n, String e, int r){ nome = n; endereco = e; rg = r; } 19 Exercício Criar um classe empregado com os atributos nome, endereço, cpf e salário. Esta classe deve conter um método para visualizar os dados do empregado. Os dados devem ser acessados e modificados com métodos get e set. Exemplo do get e set para nome: void setNome(Sring n) { nome = n; } String getNome() { return nome; } 20 Exercício Crie uma classe chamada Empregado com capacidade de gerar objetos contendo informações sobre nome (tipo String), endereço (tipo String) e o salário mensal (double) de um empregado. Sua classe deve conter um construtor para inicializar todas as informações do empregado. Forneça métodos set e get para cada atributo. Se o salário mensal não for positivo então grave o valor 0,0. Escreva uma aplicação de teste chamada de EmpregadoTeste avaliando as capacidades da classe Empregado. Crie dois objetos empregado e mostre o salário anual de cada um deles. Depois, dê um aumento de 10% no salário e mostre novamente o salário anual de cada um. 21 Construtor Empregado(Sring n, Sting e, double s) { nome = n; endereco = e; salario = s; } 22