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

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 Nome do CD Cantor ou

Embed Size (px)

Citation preview

Page 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 Nome do CD Cantor ou

Exercício de fixaçãoExercício de fixação Crie uma classe para refletir os dados de um Crie uma classe para refletir os dados de um

CD. A classe deve guardar as seguintes CD. A classe deve guardar as seguintes informações:informações: Nome do CDNome do CD Cantor ou conjuntoCantor ou conjunto GravadoraGravadora Tempo de duraçãoTempo de duração FaixasFaixas PreçoPreço

Page 2: 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 Nome do CD Cantor ou

Exercício (continuação)Exercício (continuação)

Deve-se criar métodos para:Deve-se criar métodos para: Exibir os dados de um CD (nome, cantor e tempo de Exibir os dados de um CD (nome, cantor e tempo de

gravação)gravação) Exibir as faixas do CDExibir as faixas do CD Reajustar o valor do CD (recebe um percentual de Reajustar o valor do CD (recebe um percentual de

aumento como parâmetro)aumento como parâmetro)

Page 3: 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 Nome do CD Cantor ou

WrappersWrappers São classes empacotadoras, existe uma para cada São classes empacotadoras, existe uma para cada

tipo básico. Elas fornecem um conjunto rico de tipo básico. Elas fornecem um conjunto rico de métodos para realizar várias tarefas.métodos para realizar várias tarefas.

Tipo primitivo => classe correspondenteTipo primitivo => classe correspondenteboolean => Booleanboolean => Booleanchar => Characterchar => Characterint => Integerint => Integerlong => Longlong => Longfloat => Floatfloat => Floatdouble => Doubledouble => Double

Page 4: 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 Nome do CD Cantor ou

Ex. de métodos da Classe IntegerEx. de métodos da Classe Integer

Converter String para inteiro:Converter String para inteiro: int valor = Integer.ParseInt(“112”);int valor = Integer.ParseInt(“112”);

Converter Inteiro para String:Converter Inteiro para String: String num = Integer.toString(21);String num = Integer.toString(21);

Consulte a documentação para saber demais Consulte a documentação para saber demais funcionalidades desta classe bem como sobre funcionalidades desta classe bem como sobre as outras classes.as outras classes.

Page 5: 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 Nome do CD Cantor ou

Ex. de métodos da Classe DoubleEx. de métodos da Classe Double

Converter String para double:Converter String para double: double resp = Double.parseDouble(“3.51”);double resp = Double.parseDouble(“3.51”);

Converter Double para StringConverter Double para String String num = Double.toString(resp);String num = Double.toString(resp);

Consulte a documentação para saber demais Consulte a documentação para saber demais funcionalidades desta classe bem como funcionalidades desta classe bem como sobre as outras classes.sobre as outras classes.

Page 6: 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 Nome do CD Cantor ou

Entrada e saída com caixinhas Entrada e saída com caixinhas pré-definidaspré-definidas

Entrada e saída de dados podem ser feitas com Entrada e saída de dados podem ser feitas com janelinhas pré-definidas definidas no pacote janelinhas pré-definidas definidas no pacote javax.swing.JOptionPane que deve ser importado.javax.swing.JOptionPane que deve ser importado.

Somente exibição de texto Somente exibição de texto JOptionPane.showMessageDialog(null, “Mensagem”);JOptionPane.showMessageDialog(null, “Mensagem”);

Entrada de DadosEntrada de Dados entrada = JOptionPane.showInputDialog(“Mensagem”);entrada = JOptionPane.showInputDialog(“Mensagem”); Onde entrada é uma variável String;Onde entrada é uma variável String; Caso deseja ler inteiros use o seguinte método da classe Caso deseja ler inteiros use o seguinte método da classe

empacotadora Integer: Integer.parseInt();empacotadora Integer: Integer.parseInt();• Ex: num = Integer.parseInt(JOptionPane.showInputDialog(“Msg”));Ex: num = Integer.parseInt(JOptionPane.showInputDialog(“Msg”));

Page 7: 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 Nome do CD Cantor ou

Alguns métodos da classe StringAlguns métodos da classe String Considere as seguintes variáveis String:Considere as seguintes variáveis String:

String s1 = “Aracaju é a capital”;String s1 = “Aracaju é a capital”;

String s2 = “Itabaiana tem UFS”;String s2 = “Itabaiana tem UFS”;

String s3 = “Itabaiana está quente”;String s3 = “Itabaiana está quente”;

Lembrar que o primeira letra de uma string se encontra na Lembrar que o primeira letra de uma string se encontra na posição 0.posição 0.

Podem ser usados os seguintes métodos de instânciaPodem ser usados os seguintes métodos de instâncias2.equals(s3) // retorna false (true ou false)s2.equals(s3) // retorna false (true ou false)

s2.equalsIgnoreCase(s3) // retorna true ou false entretanto ignora diferença s2.equalsIgnoreCase(s3) // retorna true ou false entretanto ignora diferença entre maiúsculas e minúsculas na comparaçãoentre maiúsculas e minúsculas na comparação

s2.compareTo(s3); // Retorna 0 se as strings forem iguais, um número 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 negativo se a string que invoca for menor que a string comparada e um número positivo em caso contrárionúmero positivo em caso contrário

Page 8: 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 Nome do CD Cantor ou

Classe StringClasse String s2.toLowerCase(); //retorna a string em letras minúsculas;s2.toLowerCase(); //retorna a string em letras minúsculas;

s2.startsWith(“Itab”); // retorna true se a string começar com a sequência de 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 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 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);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 s1.endsWith(“pital”); // retorna true se a string terminar com a sequência de letras especificadas, caso contrário retorna false.letras especificadas, caso contrário retorna false.

s2.regionMatches(0, s3, 0, 8); // Compara igualdade entre regiões de duas 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 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 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 índice inicial da segunda string, e o quarto é a quantidade de letras que se deve comparar. Retorna true somente se as partes comparadas forem deve comparar. Retorna true somente se as partes comparadas forem lexicamente iguais. Há uma segunda versão deste método com 5 lexicamente iguais. Há uma segunda versão deste método com 5 argumentos, nesta versão quando o primeiro argumento é true o método 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 ignora a diferença entre maiúsculas e minúsculas na comparação os demais argumentos permanecem iguais. demais argumentos permanecem iguais.

Ex: s2.regionMatches(true, 0, s3, 0, 8);Ex: s2.regionMatches(true, 0, s3, 0, 8);

Page 9: 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 Nome do CD Cantor ou

Classe StringClasse String

Considere as seguintes variáveis: int i; char c;Considere as seguintes variáveis: int i; char c; i = s2.indexOf(‘t’); //Retorna o índice da primeira ocorrência do i = s2.indexOf(‘t’); //Retorna o índice da primeira ocorrência do

caractere especificado, caso não o encontre retorna -1. Há outra caractere especificado, caso não o encontre retorna -1. Há outra versão de indexOf que aceita dois argumentos, o caractere e o versão de indexOf que aceita dois argumentos, o caractere e o índice inicial em que a pesquisa deve começar.índice inicial em que a pesquisa deve começar.

i = s2.lastIndexOf(‘a’); // Retorna o índice da última ocorrência de i = s2.lastIndexOf(‘a’); // Retorna o índice da última ocorrência de um caractere em uma string, caso não encontre retorna -1. Há um caractere em uma string, caso não encontre retorna -1. Há uma segunda versão de lastIndexOf que aceita dois uma segunda versão de lastIndexOf que aceita dois argumentos, o caractere e o índice inicial em que a pesquisa argumentos, o caractere e o índice inicial em que a pesquisa deve começar de trás para frente.deve começar de trás para frente.

c = s2.charAt(1); // Retorna o caractere da posição especificada.c = s2.charAt(1); // Retorna o caractere da posição especificada. s3 = s1.substring(3);// Retorna o substring a partir da posição s3 = s1.substring(3);// Retorna o substring a partir da posição

especificada. Há uma segunda versão de substring que aceita especificada. Há uma segunda versão de substring que aceita dois argumentos onde o primeiro argumento identifica o índice dois argumentos onde o primeiro argumento identifica o índice inicial na string original de onde os caracteres serão copiados, o inicial na string original de onde os caracteres serão copiados, o segundo argumento representa o índice do último caractere que segundo argumento representa o índice do último caractere que será copiado mais um (ou seja o índice do primeiro caractere a será copiado mais um (ou seja o índice do primeiro caractere a não ser copiado).não ser copiado).

Page 10: 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 Nome do CD Cantor ou

Alguns métodos da classe CharacterAlguns métodos da classe Character

Considere a seguinte variável: char c;Considere a seguinte variável: char c; Character.isLetter(c) // Retorna true se for uma Character.isLetter(c) // Retorna true se for uma

letra e false se for número.letra e false se for número. Character.isWhiteSpace(c) // Retorna true se for Character.isWhiteSpace(c) // Retorna true se for

um espaço em branco e false se não for.um espaço em branco e false se não for. c = Character.toLowerCase(c); // Passa para c = Character.toLowerCase(c); // Passa para

minúsculo. Pode se usar combinado com minúsculo. Pode se usar combinado com charAt, ex: charAt, ex:

c = Character.toLowerCase(s1.charAt(0)); c = Character.toLowerCase(s1.charAt(0));

Page 11: 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 Nome do CD Cantor ou

Algumas classes úteisAlgumas classes úteis Classe MathClasse Math

abs(x) – Valor absoluto de x;abs(x) – Valor absoluto de x; ceil(x) – arredonda x para o menor inteiro não menor que 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;floor(x) – arredonda x para o maior inteiro não maior que x; cos(x) – cosseno trigonométrico de x (x em radianos);cos(x) – cosseno trigonométrico de x (x em radianos); sin(x) – seno 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);tan(x) – tangente trigonométrica de x (x em radianos); log(x) – logaritmo natural de x;log(x) – logaritmo natural de x; max(x,y) – valor máximo de x e y;max(x,y) – valor máximo de x e y; min(x,y) – valor mínimo de x e y;min(x,y) – valor mínimo de x e y; pow(x,y) – x elevado a potência de y;pow(x,y) – x elevado a potência de y; sqrt(x) – raiz quadrada de x;sqrt(x) – raiz quadrada de x;

Obs: Não é necessário importar a classe math pois ela Obs: Não é necessário importar a classe math pois ela faz parte do pacote java.lang que é implicitamente faz parte do pacote java.lang que é implicitamente importado pelo compilador.importado pelo compilador.

Page 12: 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 Nome do CD Cantor ou

ExercíciosExercícios

1)Crie uma classe para armazenar uma string. A 1)Crie uma classe para armazenar uma string. A classe deverá ter métodos para calcular o total classe deverá ter métodos para calcular o total de vogais, de consoantes e de espaços e de de vogais, de consoantes e de espaços e de espaços em branco. Crie também um programa espaços em branco. Crie também um programa que leia uma string e chame estes métodos.que leia uma string e chame estes métodos.

2)Crie uma classe que receba um valor inteiro 2)Crie uma classe que receba um valor inteiro entre 0 e 100 e retorne este valor por extenso. entre 0 e 100 e retorne este valor por extenso. Ex: recebendo 25 retorne vinte e cinco. Faça um Ex: recebendo 25 retorne vinte e cinco. Faça um programa que exemplifique o uso desta classe.programa que exemplifique o uso desta classe.

Page 13: 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 Nome do CD Cantor ou

Fixando o conceito de Fixando o conceito de referênciareferência

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

e p2?e p2?

Page 14: 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 Nome do CD Cantor ou
Page 15: 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 Nome do CD Cantor ou

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

Page 16: 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 Nome do CD Cantor ou

Variáveis de instância - Métodos get e setVariáveis de instância - Métodos get e set Variáveis de instância, private, só podem ser Variáveis de instância, private, só podem ser

manipuladas por métodos da própria classe. As manipuladas por métodos da própria classe. As classes costumam fornecer métodos public para classes costumam fornecer métodos public para permitir aos clientes da classe acessar ou configurar permitir aos clientes da classe acessar ou configurar atributos da classe.atributos da classe.

Não é obrigatório que os nomes destes métodos Não é obrigatório que os nomes destes métodos comecem com comecem com get get ou ou setset mas isto é altamente mas isto é altamente recomendado em Java e requerido por alguns recomendado em Java e requerido por alguns módulos de softwares especiais chamados módulos de softwares especiais chamados Javabeans.Javabeans.

Dividir e conquistarDividir e conquistar A experiência mostrou que a melhor maneira de A experiência mostrou que a melhor maneira de

desenvolver e manter um programa grande é desenvolver e manter um programa grande é construí-lo a partir de pequenos e simples módulos. A construí-lo a partir de pequenos e simples módulos. A esta técnica chama-se dividir e conquistar.esta técnica chama-se dividir e conquistar.

Page 17: 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 Nome do CD Cantor ou

HerançaHerança

Forma de reutilização de softwareForma de reutilização de software Encapsular estrutura e comportamento em um Encapsular estrutura e comportamento em um

tipo não é um conceito exclusivo da orientação tipo não é um conceito exclusivo da orientação a objetos, pois já era usado na programação de a objetos, pois já era usado na programação de tipos abstratos. O que torna a orientação a tipos abstratos. O que torna a orientação a objetos única é o conceito de herança;objetos única é o conceito de herança;

Este conceito permite que características Este conceito permite que características comuns sejam agrupadas em uma classe base, comuns sejam agrupadas em uma classe base, chamada superclasse, e que a partir dela outras chamada superclasse, e que a partir dela outras classes possam ser especificadas. classes possam ser especificadas.

Page 18: 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 Nome do CD Cantor ou

HerançaHerança Sendo uma linguagem orientada a objetos Java Sendo uma linguagem orientada a objetos Java

oferece mecanismos para definir classes oferece mecanismos para definir classes derivadas a partir de classes existentes;derivadas a partir de classes existentes;

As classes derivadas absorvem atributos e As classes derivadas absorvem atributos e comportamentos das classes herdadas e comportamentos das classes herdadas e incluem os seus própriosincluem os seus próprios Sobrescrevem métodos podendo reescrever os Sobrescrevem métodos podendo reescrever os

métodos herdadosmétodos herdados A subclasse herda de uma superclasse que A subclasse herda de uma superclasse que

pode ser pode ser Superclasse direta, caso a herança seja feita Superclasse direta, caso a herança seja feita

explicitamente.explicitamente. Superclasse indireta, caso a subclasse herde de dois Superclasse indireta, caso a subclasse herde de dois

níveis ou mais acima.níveis ou mais acima.

Page 19: 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 Nome do CD Cantor ou

Exemplos de herançaExemplos de herança Funcionário pode herdar de pessoa:Funcionário pode herdar de pessoa:

Pode-se dizer que um funcionário é uma pessoaPode-se dizer que um funcionário é uma pessoa Não se pode dizer que uma pessoa é um funcionárioNão se pode dizer que uma pessoa é um funcionário

Pessoa => Superclasse, Funcionário => Pessoa => Superclasse, Funcionário => SubclasseSubclasse

Apesar da nomeclatura, subclasse tem mais Apesar da nomeclatura, subclasse tem mais características do que a superclassecaracterísticas do que a superclasse

Toda subclasse Toda subclasse é um é um objeto da sua superclasse objeto da sua superclasse mas não vice-versamas não vice-versa

Com herança pode-se criar uma estrutura Com herança pode-se criar uma estrutura hierárquica estilo uma árvorehierárquica estilo uma árvore

Page 20: 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 Nome do CD Cantor ou

Para se implementar herança usa-se a palavra Para se implementar herança usa-se a palavra extendsextendsclass funcionario extends pessoaclass funcionario extends pessoa{{......}}

Na verdade herança é sempre utilizada em Java, Na verdade herança é sempre utilizada em Java, mesmo quando não explicitamente, quando uma classe mesmo quando não explicitamente, quando uma classe é criada não há nenhuma referência a sua superclasse, é criada não há nenhuma referência a sua superclasse, mas implicitamente a classe criada é derivada mas implicitamente a classe criada é derivada diretamente da classe object.diretamente da classe object.

Durante a construção de um objeto de uma classe Durante a construção de um objeto de uma classe derivada o construtor de sua superclasse é executado derivada o construtor de sua superclasse é executado (implicitamente ou explicitamente) antes de executar o (implicitamente ou explicitamente) antes de executar o corpo de seu construtor.corpo de seu construtor.

Page 21: 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 Nome do CD Cantor ou

Vejamos as proteções que podemos usar em Vejamos as proteções que podemos usar em uma superclasse:uma superclasse: Public: torna seu objeto de ação disponivel em Public: torna seu objeto de ação disponivel em

qualquer classe;qualquer classe; Private: torna seu objeto de ação disponivel apenas Private: torna seu objeto de ação disponivel apenas

na própria classe;na própria classe; Protected: torna seu objeto de ação acessível aos Protected: torna seu objeto de ação acessível aos

métodos da própria classe bem como aos métodos métodos da própria classe bem como aos métodos de qualquer subclasse desta. É uma proteção de qualquer subclasse desta. É uma proteção intermediária entre a public e a private.intermediária entre a public e a private.

Em uma subclasse os métodos podem se referir Em uma subclasse os métodos podem se referir a membros public ou protected de uma a membros public ou protected de uma superclasse pelo nome.superclasse pelo nome.

Page 22: 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 Nome do CD Cantor ou

Sobrescrevendo métodos:Sobrescrevendo métodos: Métodos de uma superclasse podem ser redefinidos Métodos de uma superclasse podem ser redefinidos

em uma subclasse. Quando o método for em uma subclasse. Quando o método for referenciado pela subclasse a versão redefinida será referenciado pela subclasse a versão redefinida será automaticamente utilizada.automaticamente utilizada.

Caso seja necessário é possível acessar o método da Caso seja necessário é possível acessar o método da superclasse, basta usar a referência completa:superclasse, basta usar a referência completa:

super.nomeDoMetodo(...);super.nomeDoMetodo(...); Para invocar o construtor da superclasse Para invocar o construtor da superclasse

explicitamente dentro da subclasse ele tem que ser o explicitamente dentro da subclasse ele tem que ser o primeiro comando do construtor da subclasse:primeiro comando do construtor da subclasse:

• super( ); super( );

Page 23: 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 Nome do CD Cantor ou

ExemploExemplo

Imagine que os professores de uma Imagine que os professores de uma universidade se dividem em horistas e regime universidade se dividem em horistas e regime integral. Professores de regime integral recebem integral. Professores de regime integral recebem um salario fixo por mês que equivale a 40 horas um salario fixo por mês que equivale a 40 horas mensais. Professores horistas recebem um mensais. Professores horistas recebem um salário estipulado por hora.salário estipulado por hora.

O cadastro de professores armazena: nome, O cadastro de professores armazena: nome, idade, matrícula e informação de salário.idade, matrícula e informação de salário.

Como poderia ser uma modelagem de classes Como poderia ser uma modelagem de classes para este exemplo?para este exemplo?

Page 24: 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 Nome do CD Cantor ou

Classe RegimeInteg:Classe RegimeInteg:

String nome, mat;String nome, mat;

int idade;int idade;

double salario;double salario;

Classe Horista:Classe Horista:

String nome, mat;String nome, mat;

int idade, horas;int idade, horas;

double sal_hora;double sal_hora;

RegimeInteg(string,string,int, double );RegimeInteg(string,string,int, double );

String retornaNome()String retornaNome()

String retornaMat()String retornaMat()

int retornaIdade()int retornaIdade()

double retornaSal()double retornaSal()

Horista (string,string,int, int,double);Horista (string,string,int, int,double);

String retornaNome()String retornaNome()

String retornaMat()String retornaMat()

int retornaIdade()int retornaIdade()

double retornaSal()double retornaSal()

int retornaHoras()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

Page 25: 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 Nome do CD Cantor ou

Poderíamos criar uma Poderíamos criar uma classe professor que classe professor que tivesse o que de comum tivesse o que de comum temos entre as duas temos entre as duas classes anteriormente classes anteriormente especificadas.especificadas.

A partir dela podemos A partir dela podemos criar duas novas classes criar duas novas classes que irão representar os que irão representar os professores horistas e de professores horistas e de regime integral, estas regime integral, estas classes irão “herdar” de classes irão “herdar” de professor.professor.

Classe Professor:Classe Professor:

String nome, mat;String nome, mat;

int idade;int idade;

Professor (string,string,int);Professor (string,string,int);

String retornaNome()String retornaNome()

String retornaMat()String retornaMat()

int retornaIdade()int retornaIdade()

double retornaSal()double retornaSal()

Page 26: 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 Nome do CD Cantor ou
Page 27: 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 Nome do CD Cantor ou

public abstract class Professorpublic abstract class Professor{{

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

public String retornaNome(){return nome;}public String retornaNome(){return nome;} public String retornaMat(){return mat;} public String retornaMat(){return mat;} public int retornaIdade(){return idade;} public int retornaIdade(){return idade;} } }

Page 28: 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 Nome do CD Cantor ou

public class ProfRegime extends Professorpublic class ProfRegime extends Professor{{

protected double sal;protected double sal;

public ProfRegime(String n, String m, int i, double valSal)public ProfRegime(String n, String m, int i, double valSal){{

super(n,m,i);super(n,m,i); if (valSal > 0) sal = valSal;if (valSal > 0) sal = valSal;

}}

public double retornaSal()public double retornaSal() {{ return sal; return sal; } } }}

Page 29: 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 Nome do CD Cantor ou

public class Horista extends Professorpublic class Horista extends Professor{{

// instance variables - replace the example below with your own// instance variables - replace the example below with your ownprivate double valHora;private double valHora;private int q_horas;private int q_horas;private double sal;private double sal;

public Horista(String n, String m,int i,int qh, int vh)public Horista(String n, String m,int i,int qh, int vh){{

super(n,m,i);super(n,m,i); if (qh > 0) valHora = vh;if (qh > 0) valHora = vh; if (vh > 0) q_horas = qh;if (vh > 0) q_horas = qh;

}}

public double retornaSal()public double retornaSal() {{ sal = valHora * q_horas;sal = valHora * q_horas; return sal;return sal; } } }}

Page 30: 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 Nome do CD Cantor ou

ExercicioExercicio Construa uma hierarquia de classes para Construa uma hierarquia de classes para

ponto, circulo e cilindro:ponto, circulo e cilindro: Classe ponto:Classe ponto:

• Variaveis protected a, b;Variaveis protected a, b;• Metodos: setPonto, geta, getb;Metodos: setPonto, geta, getb;

Classe circulo (herda de ponto):Classe circulo (herda de ponto):• Variavel: protected raio;Variavel: protected raio;• Metodos: setRaio, getRaio, area;Metodos: setRaio, getRaio, area;

Classe cilindro (herda de circulo):Classe cilindro (herda de circulo):• Variavel: protected alt;Variavel: protected alt;• Metodos: setAlt, getAlt, area (superficie), volume;Metodos: setAlt, getAlt, area (superficie), volume;