Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de...

29

Transcript of Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de...

Page 1: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos
Page 2: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Programação Orientada a Objetos

Engenharia da Computação

Professor: Rosalvo Ferreira de Oliveira Neto

Page 3: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Dados Pessoais

Rosalvo Ferreira de Oliveira Neto

• MSc. em ciência da computação (UFPE)

[email protected]

• www.univasf.edu.br/~rosalvo.oliveira

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto 3

Page 4: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Tópicos

•Introdução a JAVA

•Campos

•Construtores

•Parâmetros

•Métodos (métodos de acesso, modificadores)

•Atribuição e instrução condicional

•Exemplos

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Page 5: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Compilação-Interpretação

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Arquivo.java

javac

Arquivo.class (bytecode)

JVM – Java Virtual Machine

Execução interpretada

Page 6: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Java é Simples

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

•Sintaxe familiar a vários programadores (baseada em C e C++)

•A linguagem é mais "limpa"

•Elimina várias redundâncias de C++

•Não é necessário destruir objetos

•Simples para muitas aplicações, desde que se conheça algumas APIs

Page 7: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Java é Orientada a Objetos

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Totalmente orientada a objetos

•Objetos e classes

•Encapsulamento de dados e operações

•Herança e Subtipos

•Polimorfismo

•Criação e remoção dinâmica de objetos

•Exceções

Page 8: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Java é Portável

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

•Redução de custos com migração, instalação, treinamento, etc.

•Algumas vezes ainda é necessário depurar programas antes de migrar para outra plataforma

•Java tem se tornado cada vez mais portável: aplicações desenvolvidas e testadas uma única vez têm rodado em dezenas de plataformas sem alteração

Page 9: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Java é Distribuída

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

•Objetos distribuídos com RMI, CORBA e EJB

•Oferece suporte de alto nível para acesso à Internet/Web (pacote java.net)

•Suporte para acesso a arquivos remotos, banco de dados, etc.

Page 10: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Java é Robusta

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

•Ausência de ponteiros

•Fortemente tipada

•Coleta de lixo automática (garbage collection)

•Exceções tipadas

•Variáveis (member variables) são inicializadas automaticamente

Page 11: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Java é Concorrente

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

•Facilidade em criar aplicações com concorrência

•Métodos sincronizados

•Monitores (construções essenciais para a concorrência)

Page 12: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Java possui Segurança

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

•Preservação dos limites do array

•Checksum dos bytecodes antes da execução

•Restrições de segurança na JVM

•Restrições de execução na Internet

Page 13: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Plataformas e versões de Java

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

J2ME

J2SE

J2EE

Micro Edition

Standard Edition

Enterprise Edition

Palms

Celulares

Dispositivos inteligentes

Aplicações convencionais

Aplicações Web

Aplicações Distribuídas

Aplicações Transacionais

Page 14: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

A plataforma Java

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

•Java Virtual Machine (JVM)

•Componente da plataforma Java que assegura a independência das aplicações entre diferentes plataformas

•É uma espécie de tradutor existente nos dispositivos para traduzir comandos da linguagem Java para a linguagem da máquina nativa.

•Plataformas compatíveis com Java

•Implementam o tradutor da linguagem Java para sua linguagem de máquina

Page 15: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Definindo uma classe

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Public class NomedaClasse {

•Primeira parte: Campos;

•Segunda parte: Construtores;

•Terceira parte: Métodos;

}

Essa ordem não é obrigatória

Page 16: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Campos

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Os campos armazenam dados para o uso de cada objeto.

Também são conhecidos como variáveis de instância.

Public class NomedaClasse {

private int nomeVariavel_1;

private int nomeVariavel_2;

Construtores e métodos omitidos

}

Page 17: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Tipos Primitivos

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

boolean true ou false

char caractere (16 bits Unicode)

byte inteiro (8 bits)

short inteiro (16 bits)

int inteiro (32 bits)

long inteiro (64 bits)

float ponto flutuante (32 bits)

double ponto flutuante (64 bits)

Page 18: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Construtores

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Os construtores permitem que cada objeto seja configurado adequadamente quando ele é criado pela primeira vez.

Public class NomedaClasse {

Public NomedaClasse(){

}

Campos e métodos omitidos

}

Page 19: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Construtores – Exemplo – Classe Pessoa

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Public class Pessoa {

private String nome;

private int idade;

private String sexo;

Public Pessoa(){

nome = “Não informado”;

idade = -1;

sexo = “Não informado”;

}

}

Métodos omitidos

Page 20: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Construtores – Exemplo – Classe Pessoa

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

...

Public Pessoa(String aNome, int aIdade, String aSexo){

nome = aNome;

idade = aIdade;

sexo = aSexo;

}

}

Page 21: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Métodos

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Os métodos implementam o comportamento dos objetos.

Os métodos consistem em duas partes: um cabeçalho e um corpo.

•Métodos de acesso: Retornam informações sobre o estado de um objeto.

•Métodos modificadores: Alteram o estado de um objeto.

Page 22: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Assinatura dos Métodos

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Visibilidade tipoDeRetorno NomeMetodo(parametros){

}

Exemplo de métodos de acesso para classe pessoa:

Public String getNome(){

return nome;

}

Page 23: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Métodos de acesso

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Public String getNome(){

return nome;

}

Public String getIdade(){

return idade;

}

Public String getSexo(){

return Sexo;

}

Page 24: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Métodos de Modificadores

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

public void setNome(String aNome){

nome = aNome;

}

public void setIdade(int aIdade){

idade = aIdade;

}

public void setSexo(String aSexo){

sexo = aSexo;

}

Page 25: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Tempo de vida de um variável

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

O tempo de vida de uma variável descreve quanto tempo a variável continuará a existir antes de ser destruída.

Page 26: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Exercício – Máquinas de vender bilhetes

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Nossas máquinas de vender bilhetes trabalham com os clientes “inserindo” dinheiro nelas e depois solicitando que o bilhete seja impresso. As máquinas mantêm uma soma total da quantia que coletam durante toda a operação.

O nome da classe deve ser TicketMachine, deve ter como atributos: price, balance e total.

Page 27: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Exercício – Máquinas de vender bilhetes

Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto

Melhorar a classe de máquinas de vender bilhetes com controles para verificação se o valor inserido é maior que zero. Retorna o saldo do cliente caso ele tenha pago mais dinheiro que o preço do bilhete.

Page 28: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos

Dúvidas

Page 29: Programação Orientada a Objetosrosalvo.oliveira/Disciplinas/2012_1/...Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Os campos