Você está na página 1de 51

Programao de computadores II

Professor:
Anselmo Montenegro www.ic.uff.br/~anselmo

Contedo:
- Conceitos de orientao a objetos em Java

Instituto de Computao - UFF

Orientao a Objetos em Java

(1/33)

O ser humano se relaciona com o mundo atravs do conceito de objetos.

Estamos sempre identificando qualquer objeto ao nosso redor.

Para isso lhe damos nomes, e de acordo com suas caractersticas lhes classificamos em grupos, ou seja, classes. Instituto de Computao - UFF

Orientao a Objetos em Java

(2/33)

Conceitos:

Identidade. Classificao. Hereditariedade. Encapsulamento. Polimorfismo. Ligao Dinmica.

Instituto de Computao - UFF

Orientao a Objetos em Java

(3/33)

Aluno
Nome Matrcula Nota Mdia

Classe

Joo 193.31.098-7 7,6

Maria 195.31.022-5 8,7

Instituto de Computao - UFF

Orientao a Objetos em Java

(4/33)

Objetos do mundo real possuem duas caractersticas: estado e comportamento. Exemplos:


cachorros

estado: nome, cor, raa comportamento: latir, correr Bicicletas estado: marcha atual, velocidade atual comportamento: trocar marcha, aplicar freios

Instituto de Computao - UFF

Orientao a Objetos em Java

(5/33)

Identificar o estado e o comportamento de objetos do mundo real o primeiro passo para comear a pensar em programao OO.

Observe um objeto e pergunte:

Quais os possveis estados que esse objeto pode estar? Quais os possveis comportamentos que ele pode executar?

Instituto de Computao - UFF

Orientao a Objetos em Java

(6/33)

A unidade fundamental de programao em orientao a objetos (POO) a classe. Classes contm:

Atributos: determinam o estado do objeto; Mtodos: semelhantes a procedimentos em linguagens convencionais, so utilizados para manipular os atributos.
Instituto de Computao - UFF
7

Orientao a Objetos em Java

(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

Instituto de Computao - UFF

Orientao a Objetos em Java Objetos

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

Um programa orientado a objetos composto por um conjunto de objetos que interagem

entre si
Instituto de Computao - UFF
9

Orientao a Objetos em Java


Objetos

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

Instituto de Computao - UFF

10

Orientao a Objetos em Java

(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

Instituto de Computao - UFF

11

Orientao a Objetos em Java

(11/33)

Mtodos operam no estado interno de um objeto e servem como mecanismo de comunicao entre objetos.

Joo Joo 30 anos mudarMarcha

Bibicleta B 7 35 km/h

Instituto de Computao - UFF

12

Orientao a Objetos em Java Classes x Objetos (12/33)

CLASSE

Documento
Autor DataDeChegada

Atributos
Imprimir Editar

Funes

OB1: Documento

OB2: Documento

Instituto de Computao - UFF

13

Orientao a Objetos em Java Classe em Java (13/33)


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

Instituto de Computao - UFF

14

Orientao a Objetos em Java Classe em Java (14/33)


class Bicicleta { int velocidade = 0; int marcha = 1; void mudarMarcha(int novoValor) { marcha = novoValor; } void aumentarVelocidade(int incremento) { velocidade = velocidade + incremento; } void aplicarFreios(int decremento) { velocidade = velocidade - decremento; } }

Instituto de Computao - UFF

15

Orientao a Objetos em Java Criando objetos com Java (15/33)

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

Criando dois objetos bicicleta:


Bicicleta bicicleta1 = new Bicicleta(); Bicicleta bicicleta2 = new Bicicleta();

Invocando seus mtodos:


bicicleta1.mudarMarcha(2); bicicleta2.aumentaVelocidade(5);
16

Instituto de Computao - UFF

Orientao a Objetos em Java Resumo


(16/33)

A classe prov a estrutura para a construo de objetos.

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.

Instituto de Computao - UFF

17

Orientao a Objetos em Java Resumo


(17/33)

um princpio fundamental da OO:


Esconder o estado interno (valores dos atributos). Obrigar que interaes com os atributos sejam executadas atravs de mtodos.

Com o encapsulamento um objeto determina a permisso que outros objetos tero para acessar seus atributos (estado). 18 Instituto de Computao - UFF

Orientao a Objetos em Java Encapsulamento dos Dados (18/33)

Proteger os atributos Permitir acesso aos atributos atravs dos mtodos

Instituto de Computao - UFF

19

Orientao a Objetos em Java Herana


(19/33)

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

Superclasse Subclasse Ancestral Descendente


20

Instituto de Computao - UFF

Orientao a Objetos em Java Herana


(20/33)

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

Instituto de Computao - UFF

21

Orientao a Objetos em Java Herana


(21/33)

Instituto de Computao - UFF

22

Orientao a Objetos em Java Herana


(22/33)

Instituto de Computao - UFF

23

Orientao a Objetos em Java Herana


(23/33)

Instituto de Computao - UFF

24

Orientao a Objetos em Java Herana


(24/33)

Instncias de Aluno
Joo 25 Sistemas de Informao Maria 20 Sistemas de Informao

Instituto de Computao - UFF

25

Orientao a Objetos em Java Herana


(25/33) // SuperClass.java
public class SuperClass { // Atributos e mtodos } // SubClass.java public class SubClass EXTENDS SuperClass { // Atributos e mtodos } class Aluno extends Pessoa { ... }

Instituto de Computao - UFF

26

Orientao a Objetos em Java Herana


(26/33)
class Pessoa { String int

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

Instituto de Computao - UFF

27

Orientao a Objetos em Java Herana


(27/33) 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);

Joo 25 Sistemas de Informao

Maria 20 Sistemas de Informao

Instituto de Computao - UFF

28

Orientao a Objetos em Java Herana


(28/33)

ELETRODOMSTICO Voltagem Garantia Ligar Desligar

Liquidificador Fabricante Cor Auto Limpeza Velocidade

Instituto de Computao - UFF

29

Orientao a Objetos em Java Herana


(29/33)

Classes Abstratas X Classes Concretas


Uma classe abstrata uma classe que no tem instncias diretas, mas cujas classes descendentes podem ter instncias diretas. Uma classe concreta uma classe que pode ser instanciada.

Classes Abstratas X Interfaces


A classe abstrata pode possuir mtodos no abstratos, bastando ter apenas um mtodo abstrato para ser considerada como tal. Um interface apenas prope os mtodos que devem ser implementados pelas classes que desejarem. Uma interface define um tipo.

Instituto de Computao - UFF

30

Orientao a Objetos em Java Herana


(30/33)

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

Instituto de Computao - UFF

31

Orientao a Objetos em Java Herana


(31/33)

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+]) > ) ...} }

Instituto de Computao - UFF

32

Orientao a Objetos em Java Polimorfismo (32/33)


Em O.O., polimorfismo o conceito que descreve a capacidade de um tipo A ser usado como um tipo B. O objetivo do polimorfismo implementar um estilo de programao baseado em passagem de mensagens no qual objetos de diferentes tipos definem uma mesma interface de operaes. Em linguagens fortemente tipadas o polimorfismo implementado atravs de herana ou implementao de interfaces.

Instituto de Computao - UFF

33

Orientao a Objetos em Java Polimorfismo (33/33)


Classe A A1 A2 Classe B A1 A2

Obj. A

Obj. B
Instituto de Computao - UFF
34

Orientao a Objetos em Java Ligao dinmica (34/33)


O mecanismo de ligao dinmica possibilita o uso do polimorfismo; Para entendermos melhor como funciona a atuao da ligao dinmica no polimorfismo voltemos ao exemplo anterior

A1 A2
A1 chama A2

Obj. A

Classe B A1 A2

Qual a sequncia de mtodos executados?


35

Obj. B
Instituto de Computao - UFF

Modificadores de Acesso (1/5)

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

Modificadores de Acesso (2/5)

Uma classe pode ser: public acessado por qualquer outra classe.

nenhum modificador (package-private) acessada somente dentro do seu pacote.

Instituto de Computao - UFF

37

Modificadores de Acesso (3/5)

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

Instituto de Computao - UFF

Modificadores de Acesso (4/5)

modificador public

Classe/ Atributos ou mtodos

pacote

subclasse

todos

Sim Sim Sim Sim

Sim Sim Sim No

Sim Sim No No

Sim No No No
39

protected

nenhum

private

Instituto de Computao - UFF

Modificadores de Acesso (4/5)

modificador public

Classe/ Atributos ou mtodos

pacote

subclasse

todos

Sim Sim Sim Sim

Sim Sim Sim No

Sim Sim No No

Sim No No No
40

protected

nenhum

private

Instituto de Computao - UFF

Modificadores de Acesso (5/5)

modificador

Alpha Sim Sim Sim Sim

Beta Sim Sim Sim No

AlphaSub Sim Sim No No

Gamma Sim No No No
41

public protected nenhum private

Instituto de Computao - UFF

Contrutores (1/4)

Utilizados para a construo de objetos


class Pessoa { String nome; int idade; public Pessoa (String nome, int idade) { this.nome = nome; this.idade = idade; } public Pessoa () { this.nome = Joo; this.idade = 25; } }
42

Pessoa maria = new Pessoa(Maria, 20); Pessoa joao = new Pessoa();

Instituto de Computao - UFF

Contrutores (2/4)
Devem ter o mesmo nome da classe que inicializam.

Podem ter parmetros.

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

import java.util.*; public class AloMundo {

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

Instituto de Computao - UFF

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

Pessoa p2 = new Pessoa(); p2.definirNome(Maria); p2.definirIdade(20); System.out.println(p2.retornarNome() + p2.retornarIdade());

} // fim da classe Pessoa

Instituto de Computao - UFF

45

Exerccios (1/6)
Exerccio1: Escreva um programa que implemente as classes abaixo conforme o diagrama de classes em UML

Instituto de Computao - UFF

46

Exerccios (2/6)
Exerccio2: Implemente uma interface Comparvel que deve ser implementada pelas classes definidas anteriormente

Instituto de Computao - UFF

47

Exerccios (3/6)
Exerccio3: Implemente um as classes Frota e TerrenoIrregular conforme explicitado no diagrama UML abaixo;

Instituto de Computao - UFF

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.

Instituto de Computao - UFF

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.

Instituto de Computao - UFF

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

Instituto de Computao - UFF

51

Você também pode gostar