Baixe o app para aproveitar ainda mais
Prévia do material em texto
© ELFS Universidade Estadual Paulista Campus de Guaratinguetá PROGRAMAÇÃO DE COMPUTADORES II Prof. Edson Luiz França Senne Departamento de Matemática elfsenne@feg.unesp.br http://www.feg.unesp.br/~elfsenne/cursos/FEG/PC2/ login: senne.cursos senha: safari76 2015 © ELFS 2 • Existem duas formas importantes de programação de computadores: • A programação estruturada (PE) • A programação orientada a objetos (POO) • Programação estruturada: • Construir programas usando as 3 estruturas de controle (sequência, seleção e repetição). • Foi o que se estudou em PC-I, usando a linguagem C. • Programação orientada a objetos: • Preocupa-se com os dados e com as operações que podem ser executadas sobre estes dados que o programa irá tratar. • Classe: uma estrutura de dados e suas operações associadas. • Programa: composto de uma ou mais classes. • Em PC-II, vamos construir programas usando a linguagem Java. 1. Introdução à Programação Java © ELFS 3 • Exemplo: um programa para tratar com retângulos • Qual é a estrutura de dados necessária para representar retângulos? • Quais são as operações que se deseja realizar com retângulos? 1. Introdução à Programação Java public class Retangulo { private int base; private int altura; public Retangulo(int b, int a) { base = b; altura = a; } public int area() { return base*altura; } } A classe Retangulo define a estrutura de dados necessária e as operações possíveis de serem realizadas. Retangulo.java © ELFS 4 • Continuando... • O programa é composto pelas classes Retangulo e TrataRet. • Vantagem da POO: • Tudo sobre retângulos está confinado na classe Retangulo. • A classe TrataRet é apenas usuária da classe Retangulo. 1. Introdução à Programação Java public class TrataRet { public static void main(String[] args) { Retangulo r = new Retangulo(3,4); Retangulo q = new Retangulo(2,8); int ar = r.area(); int aq = q.area(); System.out.printf("Area de r = %d\n",ar); System.out.printf("Area de q = %d\n",aq); System.out.printf("Soma das areas = %d\n",ar+aq); } } TrataRet.java © ELFS 5 • Uma operação importante da classe que define a estrutura de dados e suas operações é a criação de objetos desta classe. 1. Introdução à Programação Java public class Retangulo { private int base; private int altura; public Retangulo(int b, int a) { base = b; altura = a; } public int area() { return base*altura; } } O procedimento Retangulo() implementa a operação de criação de objetos da classe. Este procedimento é denominado construtor. Em que consiste a criação de um objeto da classe Retangulo? Armazenar nos campos base e altura, os valores recebidos como parâmetros (b e a). Todas as demais operações da classe devem usar os valores dos campos. © ELFS 6 • As classes usuárias criam quantos objetos forem necessários: • A saída deste programa será: 1. Introdução à Programação Java public class TrataRet { public static void main(String[] args) { Retangulo r = new Retangulo(3,4); Retangulo q = new Retangulo(2,8); int ar = r.area(); int aq = q.area(); System.out.printf("Area de r = %d\n",ar); System.out.printf("Area de q = %d\n",aq); System.out.printf("Soma das areas = %d\n",ar+aq); } } Area de r = 12 Area de q = 16 Soma das areas = 28 © ELFS 7 • Programa Java: um conjunto de uma ou mais classes. • Para escrever as classes de um programa utilizamos recursos já disponíveis em classes primitivas (Java API). System.out.printf("Area de r = %d\n",ar); • Uma das classes do programa (ou a única) deve conter o procedimento public static void main(String[] args) Esta é a classe principal. • No exemplo: Programa = {Retangulo, TrataRet} TrataRet é a classe principal. • Cada classe deve ser escrita em um arquivo separado. O nome do arquivo deve ser exatamente igual ao nome da classe, acrescentando- se a extensão .java (Retangulo.java, TrataRet.java) • Os nomes (ou identificadores) podem conter letras, dígitos decimais, sublinhados (_) e símbolos de cifrão ($), mas não podem iniciar com dígito e não podem conter espaços. Java faz distinção entre letras maiúsculas e minúsculas. 1. Introdução à Programação Java Quando se executa um programa, a execução começa pela classe principal. © ELFS 8 • Cada classe define: § Uma estrutura de dados: constituída por um conjunto de campos que caracterizam um particular tipo de dado. § Operações possíveis: um conjunto de procedimentos (denominados métodos) que implementam as operações possíveis sobre os dados armazenados nos campos. • Notação gráfica para representar uma classe: 1. Introdução à Programação Java Campos que compõem a estrutura de dados da classe Métodos que estabelecem o comportamento computacional da classe Nome da classe − int base − int altura + Retangulo(int, int) + int area() Retangulo Notar que, em geral, os campos são privados (indicado pelo sinal −) e os métodos são públicos (indicado pelo sinal +). Exemplo: © ELFS 9 • Cada objeto é um exemplar específico de uma classe. Retangulo r = new Retangulo(3,4); Retangulo q = new Retangulo(2,8); • O que os objetos r e q têm em comum? • Ambos contêm os campos base e altura; • Ambos têm o mesmo comportamento computacional, estabelecido pelos métodos Retangulo() e area(). • O que diferencia os objetos de uma classe é o seu estado, determinado pelos valores dos campos. • O estado de um objeto pode ser alterado somente por métodos da própria classe, pois os campos são privados. 1. Introdução à Programação Java Retangulo r: base = 3 altura = 4 Retangulo q: base = 2 altura = 8 © ELFS 10 • Exemplo: • Qual a vantagem disso? O estado dos objetos é controlado. q.base = -3; 1. Introdução à Programação Java public class TrataRet { public static void main(String[] args) { Retangulo r = new Retangulo(3,4); Retangulo q = new Retangulo(2,8); int ar = r.area(); q.base = 5; q.altura = 6; int aq = q.area(); System.out.printf("Area de r = %d\n",ar); System.out.printf("Area de q = %d\n",aq); System.out.printf("Soma das areas = %d\n",ar+aq); } } Isso não é permitido, pois os campos base e altura são privados (somente os métodos da classe Retangulo podem alterar seus valores). Se o campo fosse público, isso seria possível, pois base armazena um valor do tipo int. Mas, isso faria algum sentido? © ELFS 11 Exercício: • O método converter() deve considerar o valor do campo seg e mostrar uma mensagem da forma: xxxx segundos = xx horas, xx minutos e xx segundos • Criar a classe executável ExeTempo, usuária da classe Tempo. • A classe ExeTempo deverá criar 2 objetos da classe Tempo, com parâmetros: 8500 e 1234. Cada um desses objetos deve chamar o método converter(). Qual será a saída esperada deste programa? 8500 segundos = 2 horas, 21minutos e 40 segundos 1234 segundos = 0 horas, 20 minutos e 34 segundos 1. Introdução à Programação Java − int seg + Tempo(int) + void converter() Tempo Tempo(int) é o método construtor: armazena o valor de seu parâmetro no campo da classe. © ELFS 12 1. Introdução à Programação Java Tempo.java ExeTempo.java © ELFS 13 Convenção de nomes em um programa Java • Nome de Classe: Escrito com a primeira letra em maiúscula. Se o nome for composto de váriaspalavras, a primeira letra de cada palavra deve ser maiúscula (Exemplos: Retangulo, TrataRet, Tempo, ExeTempo). • Nome de Campo ou de Método: Deve começar com uma palavra escrita em minúsculas. Se contiver outras palavras, a primeira letra de cada palavra deve ser maiúscula (Exemplos: base, altura, area, converter). Java API • Um dos pontos fortes da linguagem Java é seu conjunto de classes primitivas: a Java API (Applications Programming Interface). • A Java API está organizada em pastas (denominadas pacotes) e precisa ser constantemente consultada para que se conheça os campos e os métodos de cada uma destas classes primitivas. 1. Introdução à Programação Java Construtores têm o mesmo nome da classe. Nomes de métodos são sempre seguidos por parênteses. Por exemplo: area(), converter(), Tempo(). © ELFS 14 1. Introdução à Programação Java Uma das classes da Java API: Math • Faz parte do pacote java.lang (incluído em todo programa Java). • Constantes: • Alguns métodos: Método Retorna Math.abs(x) valor absoluto de x Math.cos(x) cosseno trigonométrico de x (x em radianos) Math.exp(x) exponencial de x (ou seja, ex) Math.log(x) logaritmo natural de x (base e) Math.pow(x, y) x elevado à potência y (isto é, xy) Math.random() número aleatório maior ou igual a 0 e menor do que 1 Math.round(x) valor de x arredondado para o inteiro mais próximo Math.sqrt(x) raiz quadrada de x Constante Retorna Math.PI 3.14159265358979323846 Math.E 2.71828182845904523536 © ELFS 15 • A compilação de um programa Java gera instruções em uma linguagem intermediária (conhecida como bytecode), em vez de instruções em linguagem de máquina como ocorre para outras linguagens (C, por exemplo). • Os programas Java não são executados diretamente pelo hardware de um computador (como os programas escritos em C). • Os programas Java são executados pela Máquina Virtual Java (JVM - Java Virtual Machine), um programa conhecido como interpretador. A JVM é um programa construído especialmente para reconhecer as instruções em bytecode. • A JVM dá portabilidade ao código do programa, ou seja, o mesmo programa Java pode ser executado em diferentes máquinas sob diferentes sistemas operacionais, pois existem implementações da JVM para cada plataforma computacional (Linux, Solaris, Windows, MacOS, etc). 1. Introdução à Programação Java
Compartilhar