Escolar Documentos
Profissional Documentos
Cultura Documentos
Professor:
Lus Augusto Machado Moretto. Msc http://malacma.appspot.com
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. 2 Instituto de Computao - UFF
(2/33)
Conceitos:
Ligao Dinmica.
(3/33)
Aluno
Nome Matrcula Nota Mdia
Classe
(4/33)
(5/33)
Identificar o estado e o comportamento de objetos do mundo real o primeiro passo para comear a pensar em programao OO.
(6/33)
(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
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
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
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
Documento
CLASSE
Autor DataDeChegada
Atributos
Imprimir Editar
Funes
OB1: Documento
OB2: Documento
13
Qualificador_de_acesso class Nome_Da_Classe { // atributos da classe // mtodos da classe } // Class Lampada public class Lampada { // Atributos boolean acesa; // Mtodos public void ligar() { acesa = true; } public void desligar() { acesa = false; } }
14
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
20
Pessoa
------------------------------------------------
nome idade
Professor
------------------------------------------------------------------------------------
Aluno
-------------------------------------------------------------------
curso cr
21
22
23
24
Instncias de Aluno
Joo 25 Sistemas de Informao
25
nome; idade;
void definirNome(String valor) { nome = valor; } String retornarNome() { return nome; } void definirIdade(int valor) { idade = valor; } int retornarIdade() { return idade; } }
27
class Aluno extends Pessoa { String curso; void definirCurso(String valor) { curso = valor; } String retornarCurso() { return curso; }
Aluno joao = new Aluno(); joao.definirNome(Joo); joao.definirIdade(25); joao.definirCurso(Sistemas de Informao); Aluno maria = new Aluno(); maria.definirNome(Maria); maria.definirIdade(20); maria.definirCurso(Sistemas de Informao);
28
29
public abstract class Empregado { public Empregado (String nome, double salario) { this.numero = ++contador; this.nome = nome; this.salario = salario; }
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
A1
A2 Classe B A1
Obj. A
A2
34
Obj. B
Instituto de Computao - UFF
A1 A2
A1 chama A2
Obj. A
Classe B
A1
A2
35
Obj. B
Instituto de Computao - UFF
public (pblico)
private (privado) protected (protegido) modificador no explcito (package-private
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 Sim Sim
Sim
Sim Sim No
Sim
Sim No No
Sim
No No No
protected
nenhum
private
39
modificador public
pacote
subclasse
todos
Sim
Sim Sim Sim
Sim
Sim Sim No
Sim
Sim No No
Sim
No No No
protected
nenhum
private
40
modificador
Gamma Sim No No
Sim
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.
43
Contrutores (3/4)
Pacotes
Variveis Construtores
Classe
public AloMundo () { Date data = new Date(); mensagem = "Al, Mundo + data.toString() ; } public void mostrarMensagem () { System.out.println( mensagem ); } }
Mtodos
44
Contrutores (4/4)
public static void main (String[] args) { Pessoa p1 = new Pessoa(); p1.definirNome(Joo); p1.definirIdade(25); System.out.println( p1.retornarNome() + + p1.retornarIdade()); Pessoa p2 = new Pessoa(); p2.definirNome(Maria); p2.definirIdade(20); System.out.println(p2.retornarNome() + p2.retornarIdade()); } } // fim da classe Pessoa
45
Exerccios
Exerccio1: Escreva um programa que implemente as classes abaixo conforme o diagrama de classes em UML
46