1 orientação a objetos: encapsulamento e classificação alcides calsavara edson scalabrin

25
Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

Upload: internet

Post on 17-Apr-2015

112 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

1

Orientação a Objetos: Encapsulamento e

Classificação

Alcides Calsavara

Edson Scalabrin

Page 2: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

2

Sistema Orientado a Objetos

Um sistema orientado a objetos é uma coleção de objetos que interagem entre si.

Um objeto interage com outro através de uma mensagem que causa um estímulo.

Page 3: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

3

Interação entre Objetos

Page 4: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

4

Objeto

Um objeto possui um comportamento e um estado :– o comportamento é a forma como reage a

estímulos– o estado modifica-se de acordo com o

comportamento

Page 5: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

5

Comportamento e Estado

Page 6: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

6

Encapsulamento

Separação dos aspectos externos de um objeto dos seus detalhes internos de implementação

O estado de um objeto somente é acessível a partir da implementação de seu comportamento

Page 7: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

7

Guarantia de Encapsulamento

Page 8: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

8

Comportamento

O comportamento de um objeto é definido por um conjunto de métodos

Um estímulo causa a execução de um método

Um estímulo pode ser uma invocação explícita de um método ou um evento relevante para o objeto

Page 9: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

9

Execução de Métodos

invocação evento

m ( ) e

m ( ) m ( )

Page 10: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

10

Estado

O estado de um objeto é composto por um conjunto de valores de atributos

Page 11: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

11

Classe

Uma classe descreve um conjunto de objetos: as instâncias da classe

Uma classe descreve o comportamento e a composição do estado de todos os seus objetos

Cada classe deve ter um nome distinto

Page 12: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

12

Classes e Objetos

Page 13: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

13

Tipos

Um tipo pode ser primitivo ou uma classe

Uma classe é um tipo abstrato de dados (ADT)

Page 14: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

14

Tipos Primitivos em Java

Os tipos primitivos incluem:– números inteiros: byte, short, int, long– números reais: float, double– valores lógicos: boolean– caracteres: char

Page 15: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

15

Classes de Bibliotecas

Exemplos:– String– Applet– Button– System

Page 16: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

16

Método Cada método possui uma assinatura,

um tipo de retorno (primitivo ou classe) e uma implementação

A assinatura de um método é composta por um nome e uma lista de parâmetros

Cada parâmetro tem um nome e um tipo (primitivo ou classe)

Page 17: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

17

Atributo

Cada atributo tem um nome e um tipo (primitivo ou classe)

Um objeto que possui um atributo cujo tipo é uma classe é um objeto composto, pois contém outro objeto

Page 18: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

18

Atributos em Classes e Objetos

b=truek=7

boolean bint k

int xString s

x =10

v=Pariss=

char[] v

A B

String

Page 19: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

19

Visibilidade e Encapsulamento

Um atributo deve preferencialmente ser qualificado como privado (private)

Um método pode ser tanto qualificado como privado como público (public)

O conjunto de métodos públicos de uma classe define a sua inteface

Page 20: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

20

Estrutura de uma Classe Uma classe contém um conjunto de

atributos e um conjunto de métodos– os atributos devem ter nomes distintos– os métodos devem ter assinaturas distintas

Cada objeto possui um conjunto próprio de valores dos atributos e o conjunto de métodos da classe

Page 21: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

21

Classe e Encapsulamento

Os valores dos atributos de um objeto somente são acessíveis a partir dos seus métodos

Page 22: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

22

Exemplo: veículo, relógio, hodômetro, cronômetro

Um veículo possui um código, um hodômetro, um cronômetro e um relógio.

O hodômetro registra a kilometragem do veículo, e pode ser zerado a qualquer momento.

O hodômetro exibe a kilometragem atual e a média de kilômetros por segundo, desde o último instante em que foi zerado

A kilometragem registrada pelo hodômetro avança a medida que o veículo avança.

Page 23: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

23

Exemplo: veículo, relógio, hodômetro, cronômetro

O cronômetro já fica ativo no momento da sua criação.

O cronômetro pode ser parado e reativado a qualquer instante.

O cronômetro exibe o número de milisegundos decorridos desde o instante da sua última ativação.

O relógio exibe a hora atual, com precisão de minutos.

Page 24: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

24

:Veículo

codigo = 13hodometrocronometrorelogio

avance(distancia : int)exiba()comeceCronometro()pareCronometro()zereCronometro()zereHodometro()Veiculo(c : int)

:Instante

T

diferenca(i : Instante) : intdigaHoras() : intdigaMinutos() : int

:Date

:Instante

T

diferenca(i : Instante) : intdigaHoras() : intdigaMinutos() : int

:Date

:Instante

T

diferenca(i : Instante) : intdigaHoras() : intdigaMinutos() : int

:Date

:Hodometro

kilometragem = 283momentoZeragemrelogio

zere()kilometragemMedia() : doubleavance(distancia : int)exiba()Hodometro(r : Relogio)

:Cronometro

ativo = truemomentoIniciomomentoParadarelogio

comece()pare()exiba()Cronometro(r : Relogio)

:Relogio

exiba()digaInstante() : Instante

Representação de Objetos (usando UML)

“main”

Page 25: 1 Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara Edson Scalabrin

25

:Veículo

- codigo : int

+ avance(distancia : int)+ exiba()+ comeceCronometro()+ pareCronometro()+ zereCronometro()+ zereHodometro()+ Veiculo(c : int)

:Instante

+ diferenca(i : Instante) : int+ digaHoras() : int+ digaMinutos() : int

:Hodometro

- kilometragem : int

+ zere()- kilometragemMedia() : double+ avance(distancia : int)+ exiba()+ Hodometro(r : Relogio)

:Cronometro

- ativo : boolean

+ comece()+ pare()+ exiba()+ Cronometro(r : Relogio)

:Relogio

+ exiba()+ digaInstante() : Instante

Diagrama de Classes (usando UML)

momentoZeragem

:Date

momentoInicio momentoParada

0..1

0..1

0..1