Você está na página 1de 46

Programao Orientada a Objetos

Professor:
Lus Augusto Machado Moretto. Msc http://malacma.appspot.com

Contedo:
- Conceitos de orientao a objetos em Java

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. 2 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:


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

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.


7

Instituto de Computao - UFF

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

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
9

Instituto de Computao - UFF

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
10

operao deve ser revelado (tornado pblico)

Instituto de Computao - UFF

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

11

Instituto de Computao - UFF

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

12

Instituto de Computao - UFF

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

Documento
CLASSE
Autor DataDeChegada

Atributos
Imprimir Editar

Funes

OB1: Documento

OB2: Documento

13

Instituto de Computao - UFF

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

14

Instituto de Computao - UFF

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

Instituto de Computao - UFF

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

Instituto de Computao - UFF

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

19

Instituto de Computao - UFF

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)

Pessoa
------------------------------------------------

nome idade

Professor
------------------------------------------------------------------------------------

Aluno
-------------------------------------------------------------------

formao rea de interesse

curso cr

21

Instituto de Computao - UFF

Orientao a Objetos em Java Herana


(21/33)

22

Instituto de Computao - UFF

Orientao a Objetos em Java Herana


(22/33)

23

Instituto de Computao - UFF

Orientao a Objetos em Java Herana


(23/33)

24

Instituto de Computao - UFF

Orientao a Objetos em Java Herana


(24/33)

Instncias de Aluno
Joo 25 Sistemas de Informao

Maria 20 Sistemas de Informao

25

Instituto de Computao - UFF

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 { ... }
26

Instituto de Computao - UFF

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

class Aluno extends Pessoa { String curso; void definirCurso(String valor) { curso = valor; } String retornarCurso() { return curso; }

Instituto de Computao - UFF

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

28

Instituto de Computao - UFF

Orientao a Objetos em Java Herana


(28/33)

ELETRODOMSTICO Voltagem Garantia Ligar Desligar

Liquidificador Fabricante Cor Auto Limpeza Velocidade

29

Instituto de Computao - UFF

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.


30

Instituto de Computao - UFF

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

Instituto de Computao - UFF

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

Instituto de Computao - UFF

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.

33

Instituto de Computao - UFF

Orientao a Objetos em Java Polimorfismo (33/33)


Classe A

A1
A2 Classe B A1

Obj. A

A2
34

Obj. B
Instituto de Computao - UFF

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
35

Qual a sequncia de mtodos executados?

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
36

Instituto de Computao - UFF

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.

37

Instituto de Computao - UFF

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

protected

nenhum

private

39

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

protected

nenhum

private

40

Instituto de Computao - UFF

Modificadores de Acesso (5/5)

modificador

Alpha Sim Sim Sim

Beta Sim Sim Sim No

AlphaSub Sim Sim No

Gamma Sim No No

public protected nenhum private

Sim

No

No

41

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

Instituto de Computao - UFF

Contrutores (3/4)

Pacotes

import java.util.*; public class AloMundo {

Variveis Construtores

private String mensagem = ;

Classe
public AloMundo () { Date data = new Date(); mensagem = "Al, Mundo + data.toString() ; } public void mostrarMensagem () { System.out.println( mensagem ); } }

Mtodos

44

Instituto de Computao - UFF

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

public class Pessoa { private String nome; private int idade;

void definirNome(String valor) { nome = valor; }


String retornarNome() { return nome; } void definirIdade(int valor) { idade = valor; }

45

int retornarIdade() { return idade; }

Instituto de Computao - UFF

Exerccios
Exerccio1: Escreva um programa que implemente as classes abaixo conforme o diagrama de classes em UML

46

Instituto de Computao - UFF

Você também pode gostar