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) • • [email protected] 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 Arquivo.java javac Arquivo.class (bytecode) JVM – Java Virtual Machine Execução interpretada Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Java é Simples •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 Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Java é Orientada a Objetos 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 Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Java é Portável •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 Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Java é Distribuída •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. Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Java é Robusta •Ausência de ponteiros •Fortemente tipada •Coleta de lixo automática (garbage collection) •Exceções tipadas •Variáveis (member variables) são inicializadas automaticamente Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Java é Concorrente •Facilidade em criar aplicações com concorrência •Métodos sincronizados •Monitores (construções essenciais para a concorrência) Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Java possui Segurança •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 Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Plataformas e versões de Java J2ME Micro Edition Palms Celulares Dispositivos inteligentes J2SE J2EE Standard Edition Aplicações convencionais Aplicações Web Enterprise Edition Aplicações Distribuídas Aplicações Transacionais Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto A plataforma Java •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 Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Definindo uma classe Public class NomedaClasse { •Primeira parte: Campos; •Segunda parte: Construtores; •Terceira parte: Métodos; } Essa ordem não é obrigatória Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Campos 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 } Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Tipos Primitivos boolean char byte short int long float double true ou false caractere (16 bits Unicode) inteiro (8 bits) inteiro (16 bits) inteiro (32 bits) inteiro (64 bits) ponto flutuante (32 bits) ponto flutuante (64 bits) Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Construtores 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 } Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Construtores – Exemplo – Classe Pessoa Public class Pessoa { private String nome; private int idade; private String sexo; Métodos omitidos Public Pessoa(){ nome = “Não informado”; idade = -1; sexo = “Não informado”; } } Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Construtores – Exemplo – Classe Pessoa ... Public Pessoa(String aNome, int aIdade, String aSexo){ nome = aNome; idade = aIdade; sexo = aSexo; } } Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Métodos 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. Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Assinatura dos Métodos Visibilidade tipoDeRetorno NomeMetodo(parametros){ } Exemplo de métodos de acesso para classe pessoa: Public String getNome(){ return nome; } Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Métodos de acesso Public String getNome(){ return nome; } Public String getIdade(){ return idade; } Public String getSexo(){ return Sexo; } Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Métodos de Modificadores public void setNome(String aNome){ nome = aNome; } public void setIdade(int aIdade){ idade = aIdade; } public void setSexo(String aSexo){ sexo = aSexo; } Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Tempo de vida de um variável O tempo de vida de uma variável descreve quanto tempo a variável continuará a existir antes de ser destruída. Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Exercício – Máquinas de vender bilhetes 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. Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Exercício – Máquinas de vender bilhetes 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. Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto Dúvidas