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.

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Paulo Marques Hernâni Pedroso
Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Herança, Polimorfismo e Classes Abstratas em Java
H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique
Prof. Thiago Pereira Rique
Java: Pacotes e Modificadores de Visibilidade
Java: Pacotes e Modificadores de Visibilidade
Generalização, Especialização e Conceitos
Iniciação ao Java – Márcio F. Campos
Polimorfismo e Classes Abstratas Profa
Herança Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel e Júlio Machado) Packages (bibliotecas de classes) Atributos.
Linguagem de Programação II
Wagner Santos C. de Jesus
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
Herança e Polimorfismo
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
Linguagem de Programação JAVA
CRIANDO OBJETOS EM JAVA
Curso de extensão em Desenvolvimento Web
Programação Orientada a Objetos com Java
JAVA Orientação a Objetos
Programação I Aula 2 (Métodos)
Introdução a aplicativos Java
Classes, Objetos, Atributos e Métodos JAVA
Os métodos equals() e hashCode()
Professora Lucélia Oliveira
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
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;
Professora: Lucélia Alves de Oliveira
Aula Prática 1 Monitoria IP/CC (~if669). Verificação Dinâmica de Tipos Métodos de superclasses e subclasses: Uso de métodos de subclasses quando se é.
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.
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Java Kickstart, day 2 Semelhanças com linguagem C.
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Aula Prática 4 Monitoria IP/CC (~if669).
Aula Prática 3 Funções Monitoria Introdução à Programação.
Funções Matemáticas e de String
Classes Abstratas e Interface
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 -
Módulo 9 Strings , Coleções e I/O
Introdução à Linguagem JavaScript
Programação I Aula 4 (Expressões Booleanas e Expressões de Seleção) Prof. Gilberto Irajá Müller Última atualização 17/3/2009.
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,
Herança Modelagem e Programação Orientada a 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.
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Herança.
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
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.
Transcrição da apresentaçã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 Cantor ou conjunto Gravadora Tempo de duração Faixas Preço

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)

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

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.

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.

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”));

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

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);

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).

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));

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.

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.

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?

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

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.

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.

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.

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

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.

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.

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( );

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?

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

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

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;}

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;

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;

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;