Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias

Slides:



Advertisements
Apresentações semelhantes
Programação orientada a objetos
Advertisements

Paulo Marques Hernâni Pedroso
Prof. Thiago Pereira Rique
Orientação a Objetos: Encapsulamento e Classificação
Programação Básica em Java
Polimorfismo e Acoplamento Dinâmico
Wagner Santos C. de Jesus
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em 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
Programação Orientada a Objetos com Java
Programação I Aula 2 (Métodos)
OPERADORESOPERADORES SCJP – Otimize-TI. Operadores Java Resultado: Maioria das operações é um booleano ou numérico. Não podem ser sobrecarregados (Existem.
Linguagem de Programação JAVA
Classes, Objetos, Atributos e Métodos JAVA
Operadores e Atribuições Capítulo 3
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;
Wagner Santos C. de Jesus
Programação Orientada a Objetos - Java
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
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.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Linguagem I Strings.
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)
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.
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.
Introdução Sintaxe Básica da Linguagem JAVA
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Arrays e Matrizes na Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
1 Programação – JAVA Unidade - 4 Arrays e Strings Prof. Aparecido V. de Freitas Mestre e Doutorando em Engenharia da Computação pela EPUSP.
Introdução POO Thiago Medeiros Sistemas de Informação Definição: Sistemas de Informação é uma combinação de pessoas, dados, processos, redes de.
4 Aula – Introdução ao PHP Márcio Ferreira da Silva.
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
1 Introdução aos Padrões de Projetos (na prática) Créditos: Lúbia Vinhas Hazel Carvalho Crato Adaptações: Prof. Nécio de Lima Veras.
Java Básico Lab Ruddá Beltrão | Cristian Costa.
INE5408 Estruturas de Dados Passagem por Referência.
IFRN Técnico em Informática para Internet Desenvolvimento de Algoritmos Prof. Gilbert Azevedo.
Lógica de Programação Curso Técnico em Informática – Escola Olímpio Professor Marcelo Josué Telles
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Jean Carlo Mendes
Laboratório de Computação Aula 05 – Array Prof. Fábio Dias
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
CONSTRUINDO CLASSES Dilvan Moreira (baseado no livro Big Java)
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Revisão de Conceitos Thiago Medeiros Barros. Algoritmos Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem.
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ PAE: Pedro Shiguihara Professor: Dilvan Moreira.
PROGRAMANDO SEM POO EM JAVA Dilvan Moreira (baseado no livro Big Java)
VARIÁVEIS EM JAVA Dilvan Moreira (baseado no livro Big Java)
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Aula 5 - Métodos. Desenvolvimento de Programas A melhor forma de construir programas grandes é dividi-los em programas menores que executam tarefas específicas.
Transcrição da apresentação:

Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias

Explicar o que é programação orientada a objetos e alguns de seus conceitos Diferenciar entre classes e objetos Diferenciar atributo e métodos de objeto de atributos e métodos de classe Explicar o que são métodos, como invocá-los e como enviar argumentos Identificar o escopo de um atributo Realizar conversões de tipos de dados primitivos e de objetos Comparar objetos e determinar as classes dos objetos Objetivos

POO ou Programação Orientada a Objeto Diz respeito a objetos como o elemento básico dos seus programas Objetos são caracterizados pelas suas propriedades e comportamentos Introdução à POO

Método de ocultar os elementos de uma classe de sua implementação Colocar uma proteção ao redor das propriedades e métodos dos objetos Encapsulamento

Pode ser pensada como um gabarito, um protótipo ou uma planta de um objeto É a estrutura fundamental em programação orientada a objetos Membros de classes: Propriedades (atributos) Métodos Classes

Composto por um conjunto de atributos (propriedades) que são as variáveis que descrevem as características essenciais do objeto e, consiste num conjunto de métodos (comportamentos) que descrevem como um objeto se comporta É a instância de uma classe Objetos

Classes e Objetos

Classes fornecem o benefício da reusabilidade Programadores podem utilizar a mesma classe diversas vezes para criar os objetos Classes e Objetos

Atributos de Objeto Métodos de Objeto Atributos de Classe (atributos estáticos) Métodos de Classe (métodos estáticas) Conteúdo da Classe

Para criar um objeto, ou uma instância de uma classe, utilizamos o operador new Para criar um objeto da classe String, escreve-se o seguinte código: String str2 = new String("Hello world!") ou String str = "Hello world!"; Instância de Classe

Operador new Aloca memória para um objeto e retorna uma referência Ao criar um objeto, invoca-se o construtor da classe Método construtor Método onde são colocadas todas as inicializações Possui o mesmo nome da classe Instância de Classe

É uma parte separada do código que pode ser chamada pelo programa principal Pode ou não retornar valor Pode aceitar tantos argumentos quantos forem necessários Após o fim da execução de um método, o fluxo de controle é retornado a quem o chamou Métodos

Decomposição – É a chave para a solução de problemas A criação de métodos resolve uma parte específica do problema Separar o problema em partes menores e manuseáveis Porque usar Métodos?

Para ilustrar como chamar métodos, vamos usar a classe String como exemplo Pode-se usar a documentação das APIs Java para conhecer os métodos disponíveis na classe String nomeDoObjeto.nomeDoMetodo(argumentos); Chamando Atributos

Vamos pegar dois métodos encontrados na classe String como exemplo:

String str1 = "Hello"; char x = str1.charAt(0); String str2 = "hello"; boolean result = str1.equalsIgnoreCase(str2); Chamando Atributos

Envio de Argumentos Envio por valor – o método faz uma cópia do valor do argumento passado para o método Envio por referência – o método faz uma cópia da referência do argumento passado

Envio por valor public class TestePassagemPorValor { public static void main(String args[]){ int i = 10; System.out.println(i); //Chama o método teste e passa como argumento teste(i); System.out.println(i); } public static void teste(int j){ j = 33;//Muda o valor do parametro j }

Envio por Referência public class TestePassagemPorReferencia { public static void main(String[] args){ int idades[] = {10, 11, 12}; for(int i = 0; i < idades.length; i++){ System.out.println(idades[i]); } //Chama o método teste e passa idades como argumento teste(idades); for(int i = 0; i < idades.length; i++){ System.out.println(idades[i]); } public static void teste(int[] arr){ for(int i = 0; i < arr.length; i++){ arr[i] = i + 50; }

Envio por Referência

Chamando Métodos Estáticos Métodos que podem ser invocados sem que um objeto tenha sido instanciado pela classe (sem invocar a palavra chave new) Pertencem à classe como um todo e não a uma instância (ou objeto) específica da classe São diferenciados dos métodos de instância pela declaração da palavra chave static na definição do método NomeClasse.nomeMetodoEstatico(argumentos);

Chamando Métodos Estáticos int i = Integer.parseInt("10"); String hexEquivalent = Integer.toHexString(i); System.out.println(hexEquivalent);

Escopo de um Atributo Determina onde o atributo é acessível na classe Determina o tempo de vida de um atributo ou quanto tempo o atributo pode existir na memória É determinado pelo local onde o atributo é declarado na classe Para simplificar, pensemos no escopo como sendo algo existente entre as chaves {...}. A chave à direita é chamada de chave de saída do bloco (outer) e a chave à esquerda é chamada chave de entrada do bloco (inner) Quando declarado dentro de um bloco, seu escopo inicia com a sua declaração e vai até a chave de saída do bloco

Exemplo 1

Exemplo 2

Escopo de um Atributo O identificador deve ser único no escopo Isto significa que a seguinte declaração: { int test = 10; int test = 20; } O compilador irá gerar um erro pois você deverá ter um nome único para o atributo dentro do bloco

Escopo de um Atributo Pode-se ter atributos definidos com o mesmo nome, desde que não sejam declarados no mesmo bloco public class TesteBloco { int valor = 10; public void teste() { System.out.print(valor); int valor = 20; System.out.print(valor); } public static void main(String[] args) { TesteBloco testeBloco = new TesteBloco(); testeBloco.teste(); }

Casting de Tipos Casting de objetos

Casting de Tipos Primitivos Casting permite a conversão de um tipo para outro É usual entre os tipos numéricos Tipos lógicos não aceitam casting Casting pode ser implícito ou explícito

Casting Implícito Armazenar um atributo de tipo menor em um de tipo maior: int numInt = 10; double numDouble = numInt;//cast implícito Pela execução de fórmulas: byte numInt1 = 1; short numInt2 = 2; int numDouble = numInt1 + numInt2;//resulta em int

Casting Explícito Converter um atributo cujo tipo tem um comprimento maior para um de comprimento menor, é necessário um cast explícito (tipoDado)valor

Exemplos de Casting Explícito Para realizar um casting de um valor do tipo int para char char valChar = 'A'; System.out.print((int)valChar); //explícito

Exemplos de Casting Explícito double valDouble = 10.12; //converte valDouble para o tipo int int valInt = (int)valDouble; double x = 10.2; int y = 2; //faz o cast do resultado da operação para int int result = (int)(x/y);

Casting de Objetos Em instâncias de classes a operação de casting também pode ser usada para fazer a conversão para instâncias de outras classes: A classe de origem e a classe de destino devem ser da mesma família, relacionadas por herança; uma classe deve ser subclasse da outra Analogamente à conversão de valores primitivos para um tipo maior, alguns objetos não podem ser convertidos implicitamente (NomeClasse)objeto

Exemplo de Casting de Objetos Employee emp = new Employee(); VicePresident veep = new VicePresident(); emp = veep; // cast não é necessário de baixo para cima veep = (VicePresident)emp; //necessita do cast explícito

Convertendo Tipos Primitivos para Objetos e vice-versa Não se pode fazer, sob qualquer circunstância, casting de um objeto para um tipo de dado primitivo ou vice-versa Como alternativa, o pacote java.lang inclui classes que fazem a correspondência para cada tipo primitivo: Float, Boolean, Byte, dentre outros Chamamos estas classes de Wrapper Class

Wrapper Class Possuem o mesmo nome dos tipos primitivos, exceto pelo fato que o nome dessas classe começam com letra maiúscula (Short ao invés de short, Double ao invés de double, etc) Duas possuem nomes que diferem do correspondente tipo de dados: Character é usado para variáveis char e Integer para variáveis int Usando as classes que correspondem a cada um dos tipos primitivos, é possível criar objetos que armazenam o mesmo tipo de valor

Convertendo Tipos Primitivos para Objetos e vice-versa Criar uma instância de uma classe Integer com o valor 7801 (primitivo para Objeto) Integer dataCount = new Integer(7801); Converter um objeto Integer para um tipo de dado primitivo int. O resultado é o valor 7801 int newCount = dataCount.intValue(); Converter String para um tipo numérico, digamos int (objeto para primitivo) String numero = "65000"; int num = Integer.parseInt(numero);

Comparando Objetos Operadores de comparação de valores trabalham com tipos primitivos e não com objetos A exceção são os operadores: == (igualdade) e != (diferente) Quando aplicados a objetos, estes operadores verificam se dois objetos possuem ou não a mesma referência

Comparando Objetos public class ComparandoObjetos { public static void main(String[] args) { String str1, str2; str1 = "Será que são iguais?"; str2 = str1; System.out.println("String1: " + str1); System.out.println("String2: " + str2); System.out.println("Mesmo Objeto? " + (str1 == str2)); str2 = new String(str1); System.out.println("String1: " + str1); System.out.println("String2: " + str2); System.out.println("Mesmo Objetos? " + (str1 == str2)); System.out.println("Mesmo Valor? " + str1.equals(str2)); }

Determinando a classe de um objeto É possível descobrir a qual classe pertence um objeto Suponhamos o seguinte objeto: QualquerClasse obj = new QualquerClasse();

Método getClass() getClass() retorna a classe do objeto (onde Class é a classe em si) que possui um método chamado getName() getName() retorna o nome da classe String name = key.getClass().getName();

Operador instanceof O instanceof tem dois operadores: a referência para o objeto à esquerda e o nome da classe à direita A expressão retorna um lógico cujo valor depende se o objeto é uma instância da classe declarada ou qualquer uma de suas subclasses String ex1 = "Texas"; System.out.println(ex1 instanceof String);

Exercícios 1. Procure pelo método que verifica se uma String termina com um determinado sufixo. Por exemplo, se a String dada é "Hello", o método deve retornar true se o sufixo informado é "lo", e false se o sufixo for "alp". 2. Procure pelo método que determina a representação do caractere para um dígito e base específicos. Por exemplo, se o dígito informado é 15 e a base é 16, o método retornará o caractere 'F', uma vez que 'F' é a representação hexadecimal para o número 15 em base 10. Dica: Todos os métodos estão no package java.lang.

Exercícios 3. Procure por um método que retorna a parte inteira de um valor double. Por exemplo, se a entrada for 3.13, o método deve retornar o valor Procure por um método que determina se um certo caractere é um dígito. Por exemplo, se a entrada for '3', retornará o valor true. 5. Procure por um método que interrompe a execução da Java Virtual Machine corrente. Dica: Todos os métodos estão no package java.lang.