A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Exercício de fixação Crie uma classe para refletir os dados de um CD. A classe deve guardar as seguintes informações: Nome do CD Cantor ou conjunto Gravadora.

Apresentações semelhantes


Apresentação em tema: "Exercício de fixação Crie uma classe para refletir os dados de um CD. A classe deve guardar as seguintes informações: Nome do CD Cantor ou conjunto Gravadora."— Transcrição da apresentação:

1 Exercício de fixação Crie uma classe para refletir os dados de um CD. A classe deve guardar as seguintes informações: Nome do CD Cantor ou conjunto Gravadora Tempo de duração Faixas Preço

2 Exercício (continuação)
Deve-se criar métodos para: Exibir os dados de um CD (nome, cantor e tempo de gravação) Exibir as faixas do CD Reajustar o valor do CD (recebe um percentual de aumento como parâmetro)

3 Wrappers São classes empacotadoras, existe uma para cada tipo básico. Elas fornecem um conjunto rico de métodos para realizar várias tarefas. Tipo primitivo => classe correspondente boolean => Boolean char => Character int => Integer long => Long float => Float double => Double

4 Ex. de métodos da Classe Integer
Converter String para inteiro: int valor = Integer.ParseInt(“112”); Converter Inteiro para String: String num = Integer.toString(21); Consulte a documentação para saber demais funcionalidades desta classe bem como sobre as outras classes.

5 Ex. de métodos da Classe Double
Converter String para double: double resp = Double.parseDouble(“3.51”); Converter Double para String String num = Double.toString(resp); Consulte a documentação para saber demais funcionalidades desta classe bem como sobre as outras classes.

6 Entrada e saída com caixinhas pré-definidas
Entrada e saída de dados podem ser feitas com janelinhas pré-definidas definidas no pacote javax.swing.JOptionPane que deve ser importado. Somente exibição de texto JOptionPane.showMessageDialog(null, “Mensagem”); Entrada de Dados entrada = JOptionPane.showInputDialog(“Mensagem”); Onde entrada é uma variável String; Caso deseja ler inteiros use o seguinte método da classe empacotadora Integer: Integer.parseInt(); Ex: num = Integer.parseInt(JOptionPane.showInputDialog(“Msg”));

7 Alguns métodos da classe String
Considere as seguintes variáveis String: String s1 = “Aracaju é a capital”; String s2 = “Itabaiana tem UFS”; String s3 = “Itabaiana está quente”; Lembrar que o primeira letra de uma string se encontra na posição 0. Podem ser usados os seguintes métodos de instância s2.equals(s3) // retorna false (true ou false) s2.equalsIgnoreCase(s3) // retorna true ou false entretanto ignora diferença entre maiúsculas e minúsculas na comparação s2.compareTo(s3); // Retorna 0 se as strings forem iguais, um número negativo se a string que invoca for menor que a string comparada e um número positivo em caso contrário

8 Classe String s2.toLowerCase(); //retorna a string em letras minúsculas; s2.startsWith(“Itab”); // retorna true se a string começar com a sequência de letras especificadas caso contrário retorna false. Há uma segunda versão deste método que aceita dois argumentos, sendo o segundo um inteiro que especifica onde deve iniciar a comparação. Ex: s2.startsWith(“aba”,3); s1.endsWith(“pital”); // retorna true se a string terminar com a sequência de letras especificadas, caso contrário retorna false. s2.regionMatches(0, s3, 0, 8); // Compara igualdade entre regiões de duas strings, o primeiro argumento é o índice inicial da string que invoca o método, o segundo argumento é a string a ser comparada, o terceiro é o índice inicial da segunda string, e o quarto é a quantidade de letras que se deve comparar. Retorna true somente se as partes comparadas forem lexicamente iguais. Há uma segunda versão deste método com 5 argumentos, nesta versão quando o primeiro argumento é true o método ignora a diferença entre maiúsculas e minúsculas na comparação os demais argumentos permanecem iguais. Ex: s2.regionMatches(true, 0, s3, 0, 8);

9 Classe String Considere as seguintes variáveis: int i; char c;
i = s2.indexOf(‘t’); //Retorna o índice da primeira ocorrência do caractere especificado, caso não o encontre retorna -1. Há outra versão de indexOf que aceita dois argumentos, o caractere e o índice inicial em que a pesquisa deve começar. i = s2.lastIndexOf(‘a’); // Retorna o índice da última ocorrência de um caractere em uma string, caso não encontre retorna -1. Há uma segunda versão de lastIndexOf que aceita dois argumentos, o caractere e o índice inicial em que a pesquisa deve começar de trás para frente. c = s2.charAt(1); // Retorna o caractere da posição especificada. s3 = s1.substring(3);// Retorna o substring a partir da posição especificada. Há uma segunda versão de substring que aceita dois argumentos onde o primeiro argumento identifica o índice inicial na string original de onde os caracteres serão copiados, o segundo argumento representa o índice do último caractere que será copiado mais um (ou seja o índice do primeiro caractere a não ser copiado).

10 Alguns métodos da classe Character
Considere a seguinte variável: char c; Character.isLetter(c) // Retorna true se for uma letra e false se for número. Character.isWhiteSpace(c) // Retorna true se for um espaço em branco e false se não for. c = Character.toLowerCase(c); // Passa para minúsculo. Pode se usar combinado com charAt, ex: c = Character.toLowerCase(s1.charAt(0));

11 Algumas classes úteis Classe Math
abs(x) – Valor absoluto de x; ceil(x) – arredonda x para o menor inteiro não menor que x; floor(x) – arredonda x para o maior inteiro não maior que x; cos(x) – cosseno trigonométrico de x (x em radianos); sin(x) – seno trigonométrico de x (x em radianos); tan(x) – tangente trigonométrica de x (x em radianos); log(x) – logaritmo natural de x; max(x,y) – valor máximo de x e y; min(x,y) – valor mínimo de x e y; pow(x,y) – x elevado a potência de y; sqrt(x) – raiz quadrada de x; Obs: Não é necessário importar a classe math pois ela faz parte do pacote java.lang que é implicitamente importado pelo compilador.

12 Exercícios 1)Crie uma classe para armazenar uma string. A classe deverá ter métodos para calcular o total de vogais, de consoantes e de espaços e de espaços em branco. Crie também um programa que leia uma string e chame estes métodos. 2)Crie uma classe que receba um valor inteiro entre 0 e 100 e retorne este valor por extenso. Ex: recebendo 25 retorne vinte e cinco. Faça um programa que exemplifique o uso desta classe.

13 Fixando o conceito de referência
Considere o seguinte trecho de programa: public static void main(String args[]) { Pessoa p1, p2, p3; p1 = new Pessoa(“Fulano”, “Rua bbb “, 23); p2 = new Pessoa(“Cicrano”, “Rua ccc”, 24); } O que realmente acontece com as variáveis p1 e p2?

14

15 Com o seguinte código efetivamente irá acontecer o quê?

16 Variáveis de instância - Métodos get e set
Variáveis de instância, private, só podem ser manipuladas por métodos da própria classe. As classes costumam fornecer métodos public para permitir aos clientes da classe acessar ou configurar atributos da classe. Não é obrigatório que os nomes destes métodos comecem com get ou set mas isto é altamente recomendado em Java e requerido por alguns módulos de softwares especiais chamados Javabeans. Dividir e conquistar A experiência mostrou que a melhor maneira de desenvolver e manter um programa grande é construí-lo a partir de pequenos e simples módulos. A esta técnica chama-se dividir e conquistar.

17 Herança Forma de reutilização de software
Encapsular estrutura e comportamento em um tipo não é um conceito exclusivo da orientação a objetos, pois já era usado na programação de tipos abstratos. O que torna a orientação a objetos única é o conceito de herança; Este conceito permite que características comuns sejam agrupadas em uma classe base, chamada superclasse, e que a partir dela outras classes possam ser especificadas.

18 Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes derivadas absorvem atributos e comportamentos das classes herdadas e incluem os seus próprios Sobrescrevem métodos podendo reescrever os métodos herdados A subclasse herda de uma superclasse que pode ser Superclasse direta, caso a herança seja feita explicitamente. Superclasse indireta, caso a subclasse herde de dois níveis ou mais acima.

19 Funcionário pode herdar de pessoa:
Exemplos de herança Funcionário pode herdar de pessoa: Pode-se dizer que um funcionário é uma pessoa Não se pode dizer que uma pessoa é um funcionário Pessoa => Superclasse, Funcionário => Subclasse Apesar da nomeclatura, subclasse tem mais características do que a superclasse Toda subclasse é um objeto da sua superclasse mas não vice-versa Com herança pode-se criar uma estrutura hierárquica estilo uma árvore

20 Para se implementar herança usa-se a palavra extends
class funcionario extends pessoa { ... } Na verdade herança é sempre utilizada em Java, mesmo quando não explicitamente, quando uma classe é criada não há nenhuma referência a sua superclasse, mas implicitamente a classe criada é derivada diretamente da classe object. Durante a construção de um objeto de uma classe derivada o construtor de sua superclasse é executado (implicitamente ou explicitamente) antes de executar o corpo de seu construtor.

21 Vejamos as proteções que podemos usar em uma superclasse:
Public: torna seu objeto de ação disponivel em qualquer classe; Private: torna seu objeto de ação disponivel apenas na própria classe; Protected: torna seu objeto de ação acessível aos métodos da própria classe bem como aos métodos de qualquer subclasse desta. É uma proteção intermediária entre a public e a private. Em uma subclasse os métodos podem se referir a membros public ou protected de uma superclasse pelo nome.

22 Sobrescrevendo métodos:
Métodos de uma superclasse podem ser redefinidos em uma subclasse. Quando o método for referenciado pela subclasse a versão redefinida será automaticamente utilizada. Caso seja necessário é possível acessar o método da superclasse, basta usar a referência completa: super.nomeDoMetodo(...); Para invocar o construtor da superclasse explicitamente dentro da subclasse ele tem que ser o primeiro comando do construtor da subclasse: super( );

23 Exemplo Imagine que os professores de uma universidade se dividem em horistas e regime integral. Professores de regime integral recebem um salario fixo por mês que equivale a 40 horas mensais. Professores horistas recebem um salário estipulado por hora. O cadastro de professores armazena: nome, idade, matrícula e informação de salário. Como poderia ser uma modelagem de classes para este exemplo?

24 As classes tem alguns atributos e métodos iguais
Classe RegimeInteg: String nome, mat; int idade; double salario; Classe Horista: int idade, horas; double sal_hora; RegimeInteg(string,string,int, double ); String retornaNome() String retornaMat() int retornaIdade() double retornaSal() Horista (string,string,int, int,double); int retornaHoras() As classes tem alguns atributos e métodos iguais Se precisarmos alterar alguma coisa que esteja representado nas duas classes teremos que alterar nas duas, pois o código está redundante. Ex: alterar matrícula de string para inteiro. Uma forma de resolver isto seria através do mecanismo de herança

25 Poderíamos criar uma classe professor que tivesse o que de comum temos entre as duas classes anteriormente especificadas. A partir dela podemos criar duas novas classes que irão representar os professores horistas e de regime integral, estas classes irão “herdar” de professor. Classe Professor: String nome, mat; int idade; Professor (string,string,int); String retornaNome() String retornaMat() int retornaIdade() double retornaSal()

26

27 public abstract class Professor
{ // instance variables - replace the example below with your own protected String nome; protected int idade; protected String mat; public Professor(String n, String m, int i) nome = n; mat = m; idade = i; } public String retornaNome(){return nome;} public String retornaMat(){return mat;} public int retornaIdade(){return idade;}

28 public class ProfRegime extends Professor
{ protected double sal; public ProfRegime(String n, String m, int i, double valSal) super(n,m,i); if (valSal > 0) sal = valSal; } public double retornaSal() return sal;

29 public class Horista extends Professor
{ // instance variables - replace the example below with your own private double valHora; private int q_horas; private double sal; public Horista(String n, String m,int i,int qh, int vh) super(n,m,i); if (qh > 0) valHora = vh; if (vh > 0) q_horas = qh; } public double retornaSal() sal = valHora * q_horas; return sal;

30 Exercicio Construa uma hierarquia de classes para ponto, circulo e cilindro: Classe ponto: Variaveis protected a, b; Metodos: setPonto, geta, getb; Classe circulo (herda de ponto): Variavel: protected raio; Metodos: setRaio, getRaio, area; Classe cilindro (herda de circulo): Variavel: protected alt; Metodos: setAlt, getAlt, area (superficie), volume;


Carregar ppt "Exercício de fixação Crie uma classe para refletir os dados de um CD. A classe deve guardar as seguintes informações: Nome do CD Cantor ou conjunto Gravadora."

Apresentações semelhantes


Anúncios Google