Escolar Documentos
Profissional Documentos
Cultura Documentos
Professor:
Anselmo Montenegro www.ic.uff.br/~anselmo
Contedo:
- Conceitos de orientao a objetos em Java
(1/33)
Para isso lhe damos nomes, e de acordo com suas caractersticas lhes classificamos em grupos, ou seja, classes. Instituto de Computao - UFF
(2/33)
Conceitos:
(3/33)
Aluno
Nome Matrcula Nota Mdia
Classe
(4/33)
estado: nome, cor, raa comportamento: latir, correr Bicicletas estado: marcha atual, velocidade atual comportamento: trocar marcha, aplicar freios
(5/33)
Identificar o estado e o comportamento de objetos do mundo real o primeiro passo para comear a pensar em programao OO.
Quais os possveis estados que esse objeto pode estar? Quais os possveis comportamentos que ele pode executar?
(6/33)
Atributos: determinam o estado do objeto; Mtodos: semelhantes a procedimentos em linguagens convencionais, so utilizados para manipular os atributos.
Instituto de Computao - UFF
7
(7/33)
As classes provem a estrutura para a construo de objetos - estes so ditos instncias das classes
Classe Aluno
atributos
Nome Matrcula Nota Mdia setNome(nome) getNome() ...
Instncias
Joo 193.31.098-7 7,6 Maria 195.31.022-5 8,7
8
mtodos
(8/33)
So instncias da classe. Sob o ponto de vista da programao orientada a objetos, um objeto no muito diferente de uma varivel normal.
entre si
Instituto de Computao - UFF
9
(9/33)
Objetos de software so conceitualmente similares a objetos do mundo real: eles consistem do estado e o comportamento relacionado. Um objeto armazena seu estado em campos (variveis) e expe seu comportamento atravs de mtodos (funes). Encapsulamento: princpio de projeto pelo qual cada componente de um programa deve agregar toda a informao relevante para sua manipulao como uma unidade (uma cpsula). Ocultao da Informao: princpio pelo qual cada componente deve manter oculta sob sua guarda uma deciso de projeto nica. Para a utilizao desse componente, apenas o mnimo necessrio para sua operao deve ser revelado (tornado pblico)
10
(10/33)
Bicicleta
campos (atributos) mtodos
mudarMarcha() mudarVelocidade() ... Marcha atual Velocidade atual
Instncias
Bibicleta A 3 20 km/h Bibicleta B 7 35 km/h
11
(11/33)
Mtodos operam no estado interno de um objeto e servem como mecanismo de comunicao entre objetos.
Bibicleta B 7 35 km/h
12
CLASSE
Documento
Autor DataDeChegada
Atributos
Imprimir Editar
Funes
OB1: Documento
OB2: Documento
13
14
15
Para instanciarmos um novo objeto devemos utilizar o operador new, conforme modelo abaixo:
NomeDaClasse nomeDoObjeto = new NomeDaClasse(); Lampada lamp1 = new Lampada(); Lampada lamp2 = new Lampada();
Um objeto uma instncia de uma classe. Ele contm um estado (valores de seus atributos) e expe o seu comportamento atravs de mtodos (funes).
Ex. Bicicleta: ESTADO valores dos atributos velocidade e marcha; COMPORTAMENTO exposto pelos mtodos mudarMarcha, aumentarVelocidade e aplicarFreios.
17
Com o encapsulamento um objeto determina a permisso que outros objetos tero para acessar seus atributos (estado). 18 Instituto de Computao - UFF
19
Permite a uma classe herdar o estado (atributos) e o comportamento (mtodos) de outra classe. Herana : entre diferentes classes podem existir diversas semelhanas, ou seja, duas ou mais classes podero compartilhar os mesmos atributos e/ou os mesmos mtodos
P n o m
e s e d e
s o
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i d a
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
r o
f e s
s o
A c u r s o
l u
n o
f o
r m
a d
o e in t e r e s s e
r e a
c r
21
22
23
24
Instncias de Aluno
Joo 25 Sistemas de Informao Maria 20 Sistemas de Informao
25
26
nome; idade;
void definirNome(String valor) { nome = valor; } String retornarNome() { return nome; } void definirIdade(int valor) { idade = valor; } int retornarIdade() { return idade; }
class Aluno extends Pessoa { String curso; void definirCurso(String valor) { curso = valor; } String retornarCurso() { return curso; } }
27
28
29
30
public abstract class Empregado { public Empregado (String nome, double salario) { this.numero = ++contador; this.nome = nome; this.salario = salario; } public abstract void aumentaSalario(double percentual); } public class Vendedor extends Empregado{ public void aumentaSalario (double percentualDeAumento) { percComissao = percComissao * (1+percentualDeAumento/100);} } public class Gerente extends Empregado { public void aumentaSalario(double percentual) { double novoSalario = getSalario() * (1+2 * percentual/100); setSalario(novoSalario); } }
31
public interface Ordenavel { public int comparar(Ordenavel b); } public class Empregado implements Ordenavel { ... public int comparar(Ordenavel b) { Empregado e = (Empregado)b; if (salario < e.salario) return -1; if (salario > e.salario) return 1; return 0; } ... } public class Ordenacao { public static void ordena(Ordenavel[] a) { ... if (a[i].comparar(a[i+]) > ) ...} }
32
33
Obj. A
Obj. B
Instituto de Computao - UFF
34
A1 A2
A1 chama A2
Obj. A
Classe B A1 A2
Obj. B
Instituto de Computao - UFF
Determinam se atributos e mtodos podero ser acessados por outras classes public (pblico) private (privado) protected (protegido) modificador no explcito (package-private Instituto de Computao - UFF
36
Uma classe pode ser: public acessado por qualquer outra classe.
37
Atributos e mtodos podem ser: public acessados por qualquer outra classe. nenhum modificador (package-private) acessados somente dentro do seu pacote private acessados somente dentro de suas prprias classes. protected acessados somente dentro do seus pacotes e por suas subclasses.
38
modificador public
pacote
subclasse
todos
Sim Sim No No
Sim No No No
39
protected
nenhum
private
modificador public
pacote
subclasse
todos
Sim Sim No No
Sim No No No
40
protected
nenhum
private
modificador
Gamma Sim No No No
41
Contrutores (1/4)
Contrutores (2/4)
Devem ter o mesmo nome da classe que inicializam.
No tem retorno. Se no declarado nenhum construtor, a linguagem prov um construtor padro sem argumentos que no faz nada. Instituto de Computao - UFF
43
Contrutores (3/4)
Pacotes
Variveis Construtores
Classe
private String mensagem = ; public AloMundo () { Date data = new Date(); mensagem = "Al, Mundo + data.toString() ; } public void mostrarMensagem () { System.out.println( mensagem ); } }
Mtodos
44
Contrutores (4/4)
public class Pessoa { private String nome; private int idade;
public static void main (String[] args) { Pessoa p1 = new Pessoa(); p1.definirNome(Joo); p1.definirIdade(25); void definirNome(String valor) { System.out.println( p1.retornarNome() + nome = valor; + p1.retornarIdade()); }
String retornarNome() { return nome; } void definirIdade(int valor) { idade = valor; } int retornarIdade() { return idade; }
+ }
45
Exerccios (1/6)
Exerccio1: Escreva um programa que implemente as classes abaixo conforme o diagrama de classes em UML
46
Exerccios (2/6)
Exerccio2: Implemente uma interface Comparvel que deve ser implementada pelas classes definidas anteriormente
47
Exerccios (3/6)
Exerccio3: Implemente um as classes Frota e TerrenoIrregular conforme explicitado no diagrama UML abaixo;
48
Exerccios (4/6)
Exerccio4: Implemente uma classe Ordenador com um mtodo ordenar capaz de efetuar a ordenao, pelo mtodo da bolha de arrays de Comparavel.
49
Exerccios (5/6)
Exerccio5: Implemente uma classe TerrenoReticulado que herda de Terreno e tem como caracterstica o fato de suas cotas estarem dispostas regularmente na forma de uma matriz m x n.
50
Exerccios (6/6)
Exerccio5 (continuao): Implemente um mtodo para calcular o pico mais alto do terreno. O pico mais alto o ponto (i,j) tal que altura(i,j) seja maior que a altura de qualquer ponto (k,l) na vizinhaa 8 de (i,j).
51