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

Post on 07-Aug-2020

0 views 0 download

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

Programação Orientada a Objetos

Engenharia da Computação

Professor: Rosalvo Ferreira de Oliveira Neto

Dados Pessoais

Rosalvo Ferreira de Oliveira Neto

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

• rosalvo.oliveira@univasf.edu.br

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

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

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

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

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

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

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

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.

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

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)

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

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

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

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

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

}

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)

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

}

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

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;

}

}

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.

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;

}

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;

}

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;

}

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.

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.

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.

Dúvidas