introdução à programação oo usando java - desenvolvido pela profa. luciana porcher nedel e...
TRANSCRIPT
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Introdução à Programação OO Usando JavaProfa. Isabel Harb Manssour(Material adaptado das aulas dos Profs.: Luciana Nedel e Júlio Machado)
Revisão de ConceitosConvenção de NomesTipos de Dados e OperadoresClasses e ObjetosSobrecarga de MétodosExercícios
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Abstração Capturar as informações essenciais das entidades/objetos
Projeto de um sistema OO Identificar as abstrações/entidades Identificar os serviços de cada uma Identificar os relacionamentos entre essas entidades
Encapsulamento Esconder como as coisas funcionam (data hiding) por trás
de uma interface externa
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Exemplos de abstração Caneta Carro Funcionário Aluno
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Classe
“Modelo” que descreve uma abstração e a partir do qual podemos criar objetos de um dado tipo
Uma classe é um tipo definido pelo usuário
Associa dados e operaçõesAtributos (ou variáveis): elementos que diferenciam objetos
de uma mesma classe Métodos (ou funções): operações realizáveis sobre a
classe (operam sobre os atributos)
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Construtor
É executado automaticamente cada vez que um novo objeto é criado (método de inicialização)
O nome do método construtor é o mesmo da classe
O método construtor não possui tipo de retorno
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Objeto = instância de uma classe Depois de criado, conterá todas as variáveis incluídas
na definição da sua classe Os atributos (ou variáveis) determinam o estado de um
objeto Os métodos (ou funções) determinam o comportamento
de um objeto Resumindo: um objeto consiste em um conjunto de
estruturas de dados e de rotinas que agem sobre essas estruturas
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Mensagem: Requisição para um objeto executar uma de suas operações
(chamada a um método) Trocas de informações entre objetos
Exemplo Classe Ponto
getX
getY
deslocaXY
imprimeXY
Interfacex=2y=4
getX
getY
deslocaXY
imprimeXY
x=2y=4
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Exemplo Classe TestaPonto e classe Ponto
getX
getY
desloca(x,y)
imprime(x,y)
Ponto(x,y)
Cria ponto(2,4)
Desloca ponto: 1,1
Imprime o ponto
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
PontoDouble xDouble y
Ponto(double x1, double y1)double getX()double getY()void desloca(double x1, double y1)void imprime()
Propriedades
Interface
OBJETOS
P1
2.04.0
Ponto(double x1, double y1)double getX()double getY()void desloca(double x1, double y1)void imprime()
P2
7.35.9
Ponto(double x1, double y1)double getX()double getY()void desloca(double x1, double y1)void imprime()
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Convenção de Nomes
Classes:Substantivos que começam com uma letra maiúsculaExemplo: Pessoa, Lampada
ArquivosMesmo nome da classe com extensão .javaExemplo: Pessoa.java, Lampada.java
MétodosVerbos que começam com uma letra minúsculaExemplo: getNome(), setNome(), ligaLampada()
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Convenção de Nomes
AtributosSubstantivos que começam com uma letra minúsculaExemplo: nome, ligada
Variáveis locais e parâmetrosPequenas e escritas em letras minúsculasExemplo:i, j, k,n
ConstantesLetras maiúsculas separadas por _MAX_SALARIO, MIN_VALOR, DEFAULT_COLOR
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Tipos de Dados e Operadores
Tipos de dados primitivos inteiros: byte (8), short (16), int (32), long (64)
1, 50009993333 reais: float (32), double (64)
3.0F, 4.02E23, 3.0 caractere: char (16)
‘a’, ‘\n’ booleano: boolean (8)
true, false
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Tipos de Dados e Operadores
Variáveisint valor1, valor2=123;double taxa, percentual;
Constantesfinal double PI = 3.1415;
Operadoresaritméticos: +, -, *, /, % (resto da divisão)relacionais: >, >=, <, <= igualdade: ==, !=lógicos: &&, & (and), ||, | (or), ^ (xor), ! (not)atribuição: =, +=, -=, *=, /=, %=incremento, decremento: ++, --
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Tipos de Dados e Operadores
String É uma classe e não tipo primitivo String nome = "Maria"; Concatenação: +
String nomeCompleto = nome + " " + "Pereira";
Java converte outros tipos para stringsint idade = 25;String nomeIdade = nome + " " + idade;
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Definições de classes incluem (geralmente): palavra-chave class modificador de acesso (garante encapsulamento) atributos de instância atributos de classe métodos de instância métodos de classe construtores
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Modificadores de acesso Permitem definir o encapsulamento de atributos e
métodos Três modificadores principais:
private: visível apenas na classe atualpublic: visível para qualquer classe externaprotected: em breve...
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Recomendações
A menos que hajam razões fortes,Os atributos de uma classe devem ser definidos como private
(encapsulamento) Os métodos que são chamados de fora da classe devem ser public
(interface de acesso)
Métodos que devem ser usados somente dentro da própria classe, devem ser especificados como private
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Exemplo: classe Professor
Atributos estão encapsulados!!! Apenas os métodos da própria classe professor
podem acessar os atributos
class Professor {
private String nome;
private int matricula;
private int cargaHoraria;
...
} // fim da classe
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos ...
public String getNome(){
return(nome);
}
public int getMatricula(){
return(matricula);
}
public int getChsemanal(){
return(cargaHoraria);
}
public float getChmensal(){
return(cargaHoraria * (float)4.5);
}
} // fim da classe
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Instanciação Um objeto depois de criado, conterá todos os atributos e
métodos descritos em sua classe. Para informar os valores dos atributos quando o objeto é
instanciado, se utiliza um método especial: construtor ...
Professor(String n,int mat,int chor){
nome = n;
matricula = mat;
cargaHoraria = chor;
}
...
} // fim da classe
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Para instanciar (ou criar) um novo objeto em Java se utiliza o operador new Exemplo: Professor prof1;
prof1 = new Professor("Maria",234,8);
prof1 NULL
prof1
nome: Mariamatricula: 234cargaHoraria: 8
Professor(String,int,int)String getNome( )int getMatricula( )int getChsemanal( )int getChmensal( )
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Para “matar” novo objeto em Java se utiliza null Exemplo:Professor prof1;
prof1 = new Professor("Maria",234,8);
...
Prof1 = null; // garbage collection
prof1 NULL
prof1
nome: Mariamatricula: 234cargaHoraria: 8
Professor(String,int,int)String getNome( )int getMatricula( )int getChsemanal( )int getChmensal( )
prof1 NULL
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Quando o operador new é usado é “alocada” memória
Quando um objeto não é mais necessário, devolve-se o(s) recurso(s) para o sistema
Java realiza a coleta de lixo automática da memória
Quando um objeto não é mais utilizado, ele é marcado para coleta de lixo
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Atributos
Atributos de instância: Cada objeto da classe possui uma cópia de cada atributo
de instância
Atributos de classe (static): A classe possui apenas uma cópia do atributo,
compartilhando-o entre todos os objetos
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Exemplo:
public class Esfera{ // atributos da classe static double PI = 3.14;
// atributos de instância double x, y, z; double raio;}
bolinhax, y, z = (0, 0, 0)raio = 10
bolãox, y, z = (0, 5, -10)raio = 50
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Métodos definidos em uma classe permitem a manipulação dos atributos da classe em questão
Métodos
Métodos de instância
Métodos de classe (static)Podem ser executados mesmo que nenhum objeto tenha
sido instanciadoExemplo: main()
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
class Esfera { static final double PI = 3.14;
// atributos de instância double x, y, z; double raio;
// método de instância public double volume ( ) { return 4.0/3.0*PI*raio*raio*raio; } // método de classe public static double getPI ( ) { return PI; }}
Indica uma constante
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Classes e Objetos
Execução de um programa em Java Um programa é composto de várias classes e objetos Para indicar por onde o programa começa a executar
existe um método especial que o interpretador assume como o início do programa: mainpublic static void main (String args[ ])
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Sobrecarga de Métodos
Java permite a definição de diversos métodos de uma mesma classe, com o mesmo nome, contanto que o conjunto de parâmetros seja diferente
Assim, por exemplo, é possível ter múltiplos construtores
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Sobrecarga de Métodos
Exemplo: classe Esferaclass Esfera { …
// construtores da classe public Esfera (double oraio, double a, double b, double c) {
raio = oraio;x = a;y = b;z = c;
} public Esfera () { // Cria uma esfera unitária raio = 1.0;
x = 0.0;y = 0.0;z = 0.0;
}…
…
Esfera bola = new Esfera();
Esfera bolinha = new Esfera(10.0, 2.0, 2.0, 2.0);
…
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exercícios
1) É possível adicionar o construtor abaixo à classe Esfera?
Esfera (double diametro, double a, double b, double c){
raio = diametro/2.0; x = a;
y = b; z = c;}
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exercícios
2) Considerando a classe Ponto exemplificada anteriormente, defina uma classe Reta (Reta.java) com as seguintes características: Armazene um segmento de reta 2D (definido por 2 objetos da
classe Ponto); Permita a criação de um objeto Reta a partir de dois pontos; Permita a criação de um objeto Reta a partir de dois pares de
coordenadas double; Calcule o comprimento do segmento de reta;
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exercícios
3) Defina a classe TestaGeom para testar as classes Ponto e Reta implementadas nos exercícios anteriores. Esta classe deve: instanciar 2 objetos Ponto instanciar um objeto Reta visualizar no monitor a posição dos pontos criados e o
comprimento da reta
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exercícios
4) Escreva uma classe Contador, que apresente métodos para informar o valor inicial, incrementar, decrementar e exibir o valor atual na tela. Exemplifique a utilização desta classe criando uma nova classe que crie dois ou mais contadores e use os métodos definidos. Por exemplo, crie 3 contadores e chame alguns
métodos para incrementar/decrementar o contador. No final, exiba o valor de cada contador.
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Respostas dos exercícios
1) Não!!! Pois os construtores possuem os mesmos parâmetros!!
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Respostas dos exercícios
2)class Reta{ Ponto p1; // Inicio da reta Ponto p2; // Fim da reta
// Cria um segmento de reta a partir de dois pontos Reta (Ponto p1, Ponto p2) { this.p1 = p1; this.p2 = p2; }
Observe o uso do “this”
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Respostas dos exercícios
// Cria um segmento de reta a partir de dois pares de // coordenadas Reta (double x1, double y1, double x2, double y2) { p1 = new Ponto(x1, y1); p2 = new Ponto(x2, y2); }
// Calcula o comprimento do segmento de reta
double comprimento ( ) {
double x = p1.getX()-p2.getX();
double y = p1.getY()-p2.getY();
return Math.sqrt(x*x+y*y); }}
ATENÇÃOObserve a diferença entre os dois construtores. No primeiro, são utilizados objetos Ponto já existentes enquanto que no segundo dois objetos Ponto novos são criados para definir um objeto Reta.
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Respostas dos exercícios
3)class TestaGeom{ public static void main (String[] args) { Ponto ini = new Ponto(0.0, 1.0); Ponto fim = new Ponto(5.0, 6.0); Reta linha1 = new Reta(ini, fim); Reta linha2 = new Reta(0.0, 3.0, 3.0, 0.0);
ini.mostra(); fim.mostra(); System.out.println("Comprimento da linha1 = " + linha1.comprimento()); }}
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Respostas dos exercíciospublic class Contador {
private int cont; public Contador() { cont = 0; }
public Contador(int c) { cont = c; } public void incrementa( ) {
cont++; } public void incrementa(int x) { cont += x; } public void decrementa( ) { cont--; } public int get( ) { return cont; } public void exibe( ) { System.out.println("Contador = " + cont ); } }
4)
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Respostas dos exercícios4)public class TestaContador{
public static void main(String[] args){
Contador c1, c2, c3;c1 = new Contador();c2 = new Contador(4);c3 = new Contador(10);c1.incrementa();c2.decrementa();c3.incrementa();c3.incrementa(4);System.out.println("Valores dos contadores c1, c2 e c3:");c1.exibe();c2.exibe();c3.exibe();
}}