Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma...

29
Classes, instâncias e métodos de acesso Revisão e Prática

Transcript of Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma...

Page 1: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Classes, instâncias e métodos de acesso

Revisão e Prática

Page 2: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Objetos, Métodos e Variáveis

n OBJETO é um pacote de software contendo dados e procedimentos (código) relacionados

n Os procedimentos são chamados MÉTODOSn Os dados dos objetos são chamados VARIÁVEIS

ou COMPONENTES DO ESTADO

POO - Bacalá 2

Page 3: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Classe

n Descrições de objetos com propriedades e comportamento comuns

n Abstração que n enfatiza o que é relevanten suprime o que não interessa

n Classes são fábricas de objetos

n Objetos são agrupados em classes

POO - Bacalá 3

Page 4: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Classes e Instâncias

n Classes - modelos que definem os métodos e as variáveis a serem incluídas em um tipo particular de objeto.

n Objetos que pertencem a uma classe são chamados de INSTÂNCIAS desta classe e contêm valores particulares para as suas variáveis.

n Variáveis de um objeto são chamadas de VARIÁVEIS DE INSTÂNCIA

POO - Bacalá 4

Page 5: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Representação de Classes

POO - Bacalá 5

Page 6: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Atributo

n Armazenam estado dos objetos n são coisas que um objeto “sabe”

n Propriedades de um objeton Variáveis de instância

POO - Bacalá 6

Page 7: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Operação

n Modela comportamento das classes

n São coisas que uma classe “faz”

n Serviços que os objetos oferecem a outros objetos

Cliente

criar()salvar()remover()alterar()

POO - Bacalá 7

Page 8: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Herança

n Criação de hierarquias de abstraçãon Permite ordenar hierarquias

relacionadas

POO - Bacalá 8

Page 9: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Herança

Permite a uma classe herdar o estado (atributos) e o comportamento (métodos) de outra classe.SuperclasseSubclasseAncestralDescendente

9

Pessoa------------------------------------------------

nome

idade

Professor------------------------------------------------------------------------------------

formação

área de interesse

Aluno-------------------------------------------------------------------

curso

cr

Page 10: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Herança

10

Page 11: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Herança

11

Page 12: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Herança

12

Page 13: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

13

João25Gestão da Informação

Instâncias de Aluno

Maria20Gestão da Informação

Page 14: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

14

// SuperClass.javapublic class SuperClass {

// Atributos e métodos}

// SubClass.javapublic class SubClass EXTENDS SuperClass {

// Atributos e métodos}

class Aluno extends Pessoa {...}

Page 15: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

15

class Pessoa {String nome;int idade;

void definirNome(String valor) {

nome = valor; }

String retornarNome() { return nome;

}

void definirIdade(int valor) { idade = valor; }

int retornarIdade() { return idade; }}

class Aluno extends Pessoa {String curso;

void definirCurso(String valor) { curso = valor; }

String retornarCurso() { return curso; }

}

Page 16: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

16

Aluno joao = new Aluno();joao.definirNome(“João”);joao.definirIdade(25);joao.definirCurso(“Sistemas deInformação”);

Aluno maria = new Aluno();maria.definirNome(“Maria”);maria.definirIdade(20);maria.definirCurso(“Sistemas deInformação”);

João

25

Sistemas de Informação

Maria

20

Sistemas de Informação

Page 17: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Herança e Polimorfismo

n Permitem que objetos sejam tratados de forma homogênea e segura um conjunto consistente de abstrações

POO - Bacalá 17

Page 18: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Saida de dados na console

n Use System.out.println(dados)

public class Teste { public static void main(String a[]){ float total = 5.5F;

System.out.print("O valor de total é "); System.out.println(total);

// mesmo que System.out.println("O valor de total é "+total);

}}

Page 19: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Literais de caracteres são expressos por meio de um único carater delimitado por apóstrofos. Alguns literais de caracteres úteis são apresentados abaixo:

\n nova linha

\t tabulação

\b retrocesso

\\ barra

\' apóstrofo

\" aspaspublic class Teste { public static void main(String a[]){ System.out.println("Clube de Futebol Mineiro: \n\"forte e vingador!\""); }}

Uso do println

Page 20: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Saída de dados com printf

Um novo recurso, introduzido em J2SE 5.0, é o método System.out. printf, capaz de formatar mais adequadamente uma saída em Java, em uma forma semelhante à função printf da linguagem C.

public class Teste { public static void main(String[] a) { String s = “Uberlândia Esporte"; System.out.printf(" Grandioso %s\n",s); }}

Grandioso Uberlândia Esporte

O primeiro argumento de printf é a string de formatação, composta de constantes string e caracteres de formatação. No exemplo acima, o delimitador % seguido de s indica que o método deve ter um outro argumento do tipo String.

Page 21: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Os caracteres de formatação podem também ser usados para compor uma String, usando o método String.format, conforme no exemplo a seguir:public class Main { public static void main(String[] args) { int a = 65; String s = String.format("char: %c integer: %d hexa: %h octal: %o",a,a,a,a); System.out.println(s); } }

Para o exemplo acima, onde é usado o mesmo argumento para a formatação, existem alternativas para a codificação:

String s = String.format("char: %c integer: %<d hexa: %<h octal: %<o",a);

String s = String.format("char: %1$c integer: %1$d hexa: %1$h octal: %1$o",a);

Page 22: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Entrada de dados com ScannerA leitura de dados de entrada em aplicativos através da janela de comando do sistema operacional era surpreendentemente complexa até a versão 1.4.2 do J2SE. Isto não era problema para aplicativos com recursos GUI, mas tornava-se desconfortável para estudantes interessados em escrever programas simples com o propósito de aprender Java.

J2SE 5.0 introduz a classe java.util.Scanner para a entrada de dados, inclusive através da entrada padrão, System.in.

O exemplo a seguir apresenta uma aplicação Java para a entrada de dois números pelo teclado e a saída da soma na janela de comando do sistema operacional.

É necessário criar uma instância da classe Scanner, passando como argumento o objeto padrão de entrada, System.in, que irá capturar as entradas de dados via o teclado. O método nextInt(), da instância da classe Scanner, lê o valor digitado e o armazena em uma variável do tipo int.

Page 23: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

import java.util.Scanner;public class Teste { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int num1; int num2; int soma; System.out.print("Entre com o primeiro número: "); num1 = entrada.nextInt(); System.out.print("Entre com o segundo número: "); num2 = entrada.nextInt(); soma = num1 + num2; System.out.printf("A soma é: %d", soma); } }

Um exemplo de saída do aplicativo acima:

Entre com o primeiro número: 34Entre com o segundo número: 23A soma é: 57

Page 24: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

O exemplo seguinte calcula o seno de um valor fornecido em tempo de execução:import java.util.Scanner;public class Teste { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); double angulo; double seno; System.out.print("Entre com o ângulo em graus: "); angulo = entrada.nextDouble(); seno = Math.sin(Math.toRadians(ângulo)); System.out.println("Seno: " + seno); } }

O método nextDouble(), da classe Scanner, captura um double da entrada padrão System.in e o armazerna em uma variável do tipo double.

A classe Math do pacote java.lang define a constante PI através de uma variável de classe. O método estático Math.sin(double)retorna o seno de um ângulo em radianos passado como argumento.

Page 25: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

import staticA versão J2SE 5.0 incorporou o recurso import static, que permite importar os métodos e atributos estáticos, permitindo utilizá-los sem o prefixo de classe.

O código anterior pode ser reescrito, a partir da versão 5.0, conforme abaixo:

import java.util.Scanner;import static java.lang.Math.*;public class Teste { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); double angulo; double seno; System.out.print("Entre com o ângulo em graus: "); angulo = entrada.nextDouble(); seno = sin(toRadians(ângulo)); System.out.println("Seno: " + seno); } }

Page 26: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Exercício 01

n Crie a classe Ponto que possui duas dimensões (int x, int y). n Crie os métodos get e set. n Faça o main para instanciar e testar a

classe.n Adicione o método distancia (int x, int y)

que calcula a distância do ponto às coordenadas (x,y). Teste!

n Sobrecarregue o com o método distancia(Ponto p). Teste!

Page 27: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Exercício 02

n Crie a classe Circulo.n Crie um construtor para inicializar a instância que

recebe como parâmetros o raio e o valor do centro, que é um ponto em duas dimensões. Utilize a classe Ponto.

n Adicione como atributos, também, um nome.

n Adicione como métodos:n Calcular diâmetron Calcular árean Calcular circunferêncian Acessar e modificar nome (não pode ser vazio)n Exibir os dados, utilizando o seguinte layout:

Page 28: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Ex03: Cadastro de nomesn Fazer uma classe Cadastro que contem

n um atributo array de Strings• Lembre-se de criar as variáveis de controle (cont e MAX)

n Métodos para manipular os Strings no array• void inserir (nome)• String buscar (posicao)• boolean existe (nome)• int posicao (nome)• void excluir (posicao)• void excluir (nome)

n Fazer o main para testar

Page 29: Classes, instâncias e métodos de acesso Revisão e Práticabacala/POO/revisao1.pdfn Fazer uma classe Cadastro que contem n um atributo array de Strings • Lembre-se de criar as

Ex04: Cadastro de Empregadosn Fazer as classes da Hierarquia abaixo, com os

respectivos métodos de acesso:

n Fazer uma classe Cadastro para armazenar Empregados independente do tipo

– Operações para inclusão, atualização e exclusão de empregados do cadastro