Programação Orientada a Objetos*

Slides:



Advertisements
Apresentações semelhantes
Programação Orientada a Objetos*
Advertisements

Programação Orientada a Objetos*
Prof. Thiago Pereira Rique
Orientação a Objetos: Encapsulamento e Classificação
Linguagem Java Renata Araujo
Programação Orientada a Objetos*
Programação Orientada a Objetos*
Programação Básica em Java
Expressões, controle de fluxo, wrappers e strings Profa
Disciplina: AAM Profa. Ana Watanabe 03/13 vol.2
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Wagner Santos C. de Jesus
Universidade Federal do Espírito Santo
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Paradigmas da Programação – Semestre 1 – Aula 3
Ling. C - Variáveis Uma variável não é mais do que o nome que nós damos a uma determinada posição de memória para conter um valor de um determinado tipo.
Classes e objetos Arrays e Sobrecarga
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Linguagem técnica de programação I Java – REVISÃO
O Portal do Estudante de Computação
JAVA: Conceitos Iniciais
Introdução a Computação e Cálculo Numérico
Programação Orientada a Objetos com Java
Aula prática 13 Orientação a Objetos – C++ Parte 1
JAVA Orientação a Objetos
Conceitos de Linguagem de Programação
Introdução a Java: Classes, métodos e variáveis Eduardo Figueiredo 24 de Março de 2010 POOAula 05.
Atributos, Encapsulamento e Interface em Java
PROGRAMAÇÃO ou LINGUAGEM C?
Programação I Aula 2 (Métodos)
Prof. Daniel Aula 03.  Criar Projeto  Criar Pacote  Criando classes  Meu primeiro programa  Compilar  Comentários  Variáveis.
Classes, Objetos, Atributos e Métodos JAVA
Operadores e Atribuições Capítulo 3
Introdução à Linguagem Java
Linguagem de Programação JAVA
Java Bytecode Software Básico Mitsuo Takaki.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
By Ducheno Kelly Centro de Formação São Domingos.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Wagner Santos C. de Jesus
Implementação Orientada a Objetos – Aula 03
Tipos de Dados Operadores
Programação Orientada a Objetos - Java
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Java Básico Instrutor: Davi Pires
Linguagens de Programação II
JAVA Sintaxe.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Conceitos Básicos e Manipulação de Objetos
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Introdução a Programação Orientada a Objetos
Programação Prof.: Bruno Rafael de Oliveira Rodrigues.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 2 Variáveis e Atribuições.
Introdução Sintaxe Básica da Linguagem JAVA
Profa. Maria Augusta Constante Puget
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista POO para Redes de Computadores.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Programação Orientada a Objetos*
Transcrição da apresentação:

Programação Orientada a Objetos* Criando Classes em Java Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br http://www.dcc.ic.uff.br/~isabel *Baseado no livro Introdução à Programação Orientada a Objetos usando JAVA – Rafael Santos – Editora Campus – Série SBC

O ambiente de programação JDK (Java Development Kit) http://java.sun.com http://java.sun.com/docs/books/tutorial Linux, Windows e outros Edição, Compilação e Execução de classes Editor de textos, Javac e Java (Jcreator: http://www.jcreator.com/, wordpad)

O ambiente de programação JDK (Java Development Kit) javac ( compilador ) java ( interpretador ) appletviewer ( visualizador de applets ) javadoc ( gerador de documentação ) jar ( programa de compactação ) javap ( disassembler ) ...

O processo de compilação/execução Javac Java A classe Java em arquivo com extensão .java A classe pré-compilada (bytecode), em arquivo com extensão .class interpretação do bytecode pela máquina virtual Java (JVM)

Classes em Java Nome de classes: Recomenda-se: Acentos e cedilha são desaconselhados (o compilador usa o nome das classes pra nomear arquivos) Números podem aparecer após letra $ e _ são considerados letra Maiúsculas  minúsculas Há palavras reservadas Recomenda-se: Iniciar nomes de classes com maiúsculas Usar maiúsculas para separar palavras ex: CadastroDeFuncionário Uma classe por arquivo Usar o mesmo nome para o arquivo (com extensão .java) e para a classe

Classes em Java Javadoc Maiúscula? /** * A classe Vazia não possui campos nem métodos, mas * mesmo assim pode ser usada para exemplificar as regras * sintáticas básicas de Java, podendo até mesmo ser * compilada. */ Class Vazia // esta é a declaração da classe! { /* se houvessem campos ou métodos, eles deveriam ser declarados aqui. */ } // fim da classe Vazia Vazia.java Javadoc Maiúscula?

Classes em Java ... f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia javac: invalid flag: Vazia Usage: javac <options> <source files> where possible options include: -g Generate all debugging info ... f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia.java Vazia.java:7: 'class' or 'interface' expected Class Vazia // esta Ú a declaraþÒo da classe! ^ 1 error f:\AULAS\POO>java Vazia Exception in thread "main" java.lang.NoSuchMethodError: main f:\AULAS\POO>

Campos de classes em Java Tipos Nativos: Nome do tipo Valores do tipo boolean (true, false) byte [-128,127] short (dois bytes) [-32768,32767] int (quatro bytes) [-2147483648,2147483647] long (oito bytes) char (dois bytes, Unicode [0,65535],operados como inteiros) 'a','b',... float (ponto flutuante, 4bytes) double (ponto flutuante, 8bytes)

Campos de classes em Java Tipos Nativos: Nome do tipo Operações do tipo boolean &&, ||, ! byte short int +,- (unário e binário), long *,/, char % (resto ), float <,>,<=,>=,==,!= double

Campos de classes em Java Literais .... .... quando atribuídas para variáveis dos tipos de tamanhos específicos são automaticamente convertidas, desde que estejam no intervalo esperado short umAno; umAno = 32767; umAno = 32768; Literal inteira 32767 convertida para tipo short. Erro de compilação: valor fora do intervalo. C:\>javac testedata.java testedata.java:6: possible loss of precision found : int required: short umDia = 22; umMês = 13; umAno = 32768; ^ 1 error

Campos de classes em Java Literais .... .... quando passadas como argumentos devem ser explicitamente convertidas (operação cast) n.inicializaData(umDia,umMês,32767); n.inicializaData(umDia,umMês, (short) 32767); Erro de compilação: Literal inteira 32767 onde é esperado tipo short C:\>javac testedata.java testedata.java:7: inicializaData(byte,byte,short) in Data cannot be applied to (byte,byte,int) n.inicializaData(umDia,umMês,32767); ^ 1 error

Campos de classes em Java /** A classe DataSemMetodos contém somente alguns campos * que exemplificam as declarações de campos e tipos de dados em * Java. */ class DataSemMetodos { byte dia,mês; short ano; // o ano completo (quatro dígitos) /* Se houvessem métodos para esta classe, eles seriam declarados aqui dentro. */ } // fim da classe DataSemMetodos dataSemMetodos.java

Campos de classes em Java Nomes de campos de classes: Acentos e cedilha podem ser usados sem restrição Números podem aparecer após letra _ e $ são considerados letra Maiúsculas  minúsculas Há palavras reservadas É possível declarar vários campos com o mesmo tipo (ou classe) separando seus nomes por vírgulas Recomenda-se: Iniciar nomes de campos de classes com minúsculas Usar maiúsculas para separar palavras ex: nomeDoAluno

Métodos em Java Nomes de métodos: Recomenda-se: Mesmas regras que nomes de campos Recomenda-se: Iniciar nomes de métodos com minúsculas Usar maiúsculas para separar palavras ex: mostraCampos, acende, inicializa Forma geral da declaração: modificador-de acesso tipo-ou-classe-de retorno nome-de-método ( lista-de-argumentos )

Métodos em Java lista de parâmetros tipo (classe) de retorno /** Este método chama o método dataÉVálida para verificar se os * argumentos são correspondentes a uma data válida: se forem, * inicializa os campos, caso contrário zera todos os três campos. */ void inicializaDataSimples(byte d,byte m,short a) { if (dataÉVálida(d,m,a)) dia = d; mês = m; ano = a; } else dia = 0; mês = 0; ano = 0; } // fim do método inicializaDataSimples DataSimples.java lista de parâmetros tipo (classe) de retorno sem vírgula no final do método

Métodos em Java objeto passado como parâmetro /** Este método recebe uma instância da própria classe DataSimples como * argumento e verifica se a data representada pela classe e pela instância * passada é a mesma. A comparação é feita campo a campo. */ boolean éIgual(DataSimples outraDataSimples) { if ((dia == outraDataSimples.dia) && (mês == outraDataSimples.mês) && (ano == outraDataSimples.ano)) return true; else return false; } // fim do método éIgual DataSimples.java objeto passado como parâmetro acesso aos campos do objeto método com retorno deve conter a palavra return no corpo

Escopo Regras de Escopo: Determinam a visibilidade dos nomes campos da classe são visíveis em toda classe desconsidera-se ordem e localização variáveis e instâncias declaradas dentro de métodos são visíveis no próprio método considera-se ordem e localização argumentos de métodos são visíveis no próprio método

Escopo /** A classe Triangulo representa os três lados de um triângulo qualquer. */ class Triangulo { float lado1; boolean éEquilátero() { .... } float calculaPerímetro() float lado2,lado3; } // fim da classe Triangulo triangulo.java lado2,lado3 são visíveis em toda classe, inclusive no corpo de qualquer método com declaração precedente à declaração de lado2,lado3 .

Escopo boolean éEquilátero() { boolean igualdade12,resultado; igualdade12 = (lado1 == lado2); boolean igualdade23; igualdade23 = (lado2 == lado3); if (igualdade12 && igualdade23) resultado = true; else resultado = false; return resultado; } // fim do método éEquilátero triangulo.java igualdade12, resultado e igualdade23 só são visíveis neste método o uso de cada nome local ao método só pode ocorrer após a declaração do nome

Modificadores de Acesso Encapsulamento: Para assegurar o uso correto, recomenda-se que os usuários de uma classe não tenham acesso aos campos da classe ou aos métodos que não implementam serviços oferecidos pela classe modificador private: impede a manipulação pelo usuário da classe; campos de classes, métodos que não implementam serviços modificador public: permite a manipulação pelo usuário da classe; métodos que implementam serviços Outros modificadores: protected, ausente

Modificadores de Acesso /** A classe Data contém campos e métodos que permitem a manipulação de datas. */ class Data { private byte dia,mês; private short ano; public void inicializaData(byte d,byte m,short a) { ... } // fim do método inicializaData public byte retornaDia() return dia; } // fim do método retornaDia ... Data.java campos privados: a classe deve implementar métodos (públicos) para modificá-los

Modificadores de Acesso ... public boolean éIgual(Data outraData) { if ((dia == outraData.dia) && (mês == outraData.mês) && (ano == outraData.ano)) return true; else return false; } // fim do método éIgual .... } // fim da classe Data Data.java Outra instância da mesma classe: seus campos e métodos (mesmo os privados) podem ser manipulados diretamente.