aula orientação a objetos

128
Orientação a Objetos Prof. Ms Eng Marcelo Bianchi Aula 02

Upload: others

Post on 15-Oct-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula Orientação a Objetos

Orientação a Objetos

Prof. Ms Eng Marcelo Bianchi

Aula 02

Page 2: Aula Orientação a Objetos

2

Orientação a objetos

Introdução

– A indústria da informática vem oferecendo soluções que buscam minimizar dificuldades reproduzindo ou simulando modelos da realidade de forma mais amigável através de ambientes gráficos e interfaces ricas

– Criar aplicações a partir de componentes não é algo novo, então, porque 100% das organizações ainda não adotaram a tecnologia de objetos?

Page 3: Aula Orientação a Objetos

3

Orientação a objetos

Introdução

– Há razões habituais para resistência na adoção

de qualquer nova tecnologia:

• Incerteza

• Falta de pessoal treinado

• Ferramentas imaturas

Page 4: Aula Orientação a Objetos

4

Orientação a objetos

Introdução Segundo Furlan (1998)

– Sistemas antigos se parecem com um dinossauro que mora no escritório • Ninguém na organização sabe exatamente como

ele chegou lá, mas é grande

• Consome vasta quantidade de recursos para mantê-lo vivo

• Demanda muita atenção

• Alguns poderiam sugerir que deve ser morto

• Outros alimentam esperanças que evoluirá para uma forma de vida mais elevada

Page 5: Aula Orientação a Objetos

5

Orientação a objetos

Mudança de enfoque

– O enfoque tradicional de modelagem para a

construção de sistemas de informação, baseia-

se

• Na compreensão desse sistema como um conjunto

de programas

• Que, por sua vez, executam processos sobre dados

Page 6: Aula Orientação a Objetos

6

Orientação a objetos

Mudança de enfoque

– O enfoque de modelagem por objetos, vê o

mundo como uma coletânea de objetos que

• Interagem entre si

• Apresentam características próprias que são

representadas por

– Atributos (onde os dados estão associados)

– Operações (onde as funções estão associadas)

Page 7: Aula Orientação a Objetos

7

Orientação a objetos

Mudança de enfoque

– Enfoque baseado em Sistema x enfoque

baseado em Objetos

Programa

Processos

Dados

Classe

Atributos

Operações

Foco em Sistema Foco em Objeto

Page 8: Aula Orientação a Objetos

8

Orientação a objetos

Mudança de enfoque

– A mudança de enfoque é justificada pelo fato de que objetos existem na natureza muito antes de haver qualquer tipo de aplicação deles pelo negócio

– Equipamentos, pessoas, minerais

• Existem por si só

• Apresentam características peculiares

• As características são representadas pelos seus atributos e pelo seu comportamento no mundo real

Page 9: Aula Orientação a Objetos

9

Orientação a objetos

Mudança de enfoque

– Benefícios

• Manter a modelagem do sistema e, em

decorrência, sua automação o mais próximo

possível de uma visão conceitual do mundo real

• Oferecer maior transparência na passagem da fase

de modelagem para a de construção através da

introdução de detalhes, não requerendo uma

reorganização do modelo

Page 10: Aula Orientação a Objetos

10

Orientação a objetos

Paradigma

– Tem origem da palavra grega παράδειγμα

(paradeigma) que significa “padrão” ou

“exemplo”

– Diz-se que a orientação a objetos constitui um

novo paradigma computacional, pois

representa uma mudança na forma de pensar e

conceber softwares

Page 11: Aula Orientação a Objetos

11

Orientação a objetos

Porque Orientação a objetos?

– Os softwares estão ficando mais complexos

Fonte: Pressman (2002)

Page 12: Aula Orientação a Objetos

12

Orientação a objetos

Porque Orientação a objetos?

– O não cumprimento de cronogramas é comum

na área

• Falha em especificar e concordar em requisitos é a

segunda razão por problemas de cronograma

• Produzir cronogramas irracionais é a primeira

Page 13: Aula Orientação a Objetos

13

Orientação a objetos

Porque Orientação a objetos?

– Custos

• Custos de desenvolvimento são muitos altos

• Elevaram-se os custos de manutenção

– Década de 70 e 80

• de 60 a 65 % dos custos totais

– Atualmente

• de 70 a 80 % dos custos totais

Page 14: Aula Orientação a Objetos

14

Orientação a objetos

Porque Orientação a objetos?

– Flexibilidade frente a mudanças

• Mudanças nos processos de negócio do usuário

– década de 40 10 anos

– década de 60-70 5 anos

– década de 90 2 anos

– século 21 6 meses

Page 15: Aula Orientação a Objetos

15

Orientação a objetos

Onde está a solução?

– Não se sabe!

– Porém a reutilização é peça chave para

aumento da produtividade e melhoria da

qualidade

Page 16: Aula Orientação a Objetos

16

Orientação a objetos

Reutilização

– Usar novamente algo que foi feito

– Em hardware

• projetar baseado em componentes

• integrar componentes

• desenvolver novos quando necessário

– Em software

• código (rotinas)

• ???

Page 17: Aula Orientação a Objetos

17

Orientação a objetos

Reutilização (objetivos)

– Permitir uma ampla utilização de todos os

tipos de informação encontradas na situação

de desenvolvimento

– Exemplo:

• Requisitos

• Especificação

• Código

• Testes

• Ou seja, todas as atividades

Page 18: Aula Orientação a Objetos

18

Orientação a objetos

Reutilização (benefícios)

– Menor produção de software novo

– Aumento de produtividade

– Ganho de qualidade

– Ganho de confiabilidade

– Conhecimento adquirido pode ser compartilhado

– Gerenciamento simplificado

• Através da quebra das aplicações em unidades menores e mais bem definidas

Page 19: Aula Orientação a Objetos

19

Orientação a objetos

Reutilização (benefícios)

– Reduz complexidade através de melhoria do

grau de abstração

– Melhora produtividade a longo prazo,

permitindo o uso da reutilização pelos

desenvolvedores

– Torna mais fácil a comunicação entre clientes

e desenvolvedores

Page 20: Aula Orientação a Objetos

20

Orientação a objetos

Vantagens da OO

– O uso de objetos para a modelagem torna mais fácil descrever as estruturas e o comportamento existente no mundo real

– Os clientes podem ser identificados mais diretamente com os problemas nos modelos

– O encapsulamento do conhecimento em componentes isola o comportamento

• Isso permite que as mudanças nos requisitos possam também ser isoladas em cada componente, sem afetar o sistema como um todo

Page 21: Aula Orientação a Objetos

21

Orientação a objetos

Vantagens da OO

– O uso de classes e objetos facilita a integração

das fases do processo de desenvolvimento

– Na orientação a objetos o mesmo paradigma é

conduzido da análise à construção

– A reutilização implica na redução de custos e

prazos porque possibilita que o mesmo

componente seja utilizado em vários projetos

Page 22: Aula Orientação a Objetos

22

Orientação a objetos

Características

– Procura representar o mundo real como o

vemos

• pessoas, lugares e coisas existentes que se

comportam como objetos e que possuem

características próprias de atributos e operações

– Por definição a teoria de objetos espelha o

mundo de forma mais simples do que

modelos algorítmicos ou estruturados

Page 23: Aula Orientação a Objetos

23

Orientação a objetos

Características

– Busca diminuir a diferença semântica entre a

realidade e o modelo

– Vamos a uma comparação

Page 24: Aula Orientação a Objetos

24

Orientação a objetos

Capacidade Perspectiva Humana Perspectiva OO

Classificação Percepção de

semelhanças entre

coisas atribuindo-lhe

uma designação

genérica

Exemplo: jazz, blues e

bossa nova são estilos

musicais

Generalização

e especificação

em um

relacionamento

de herança

entre pai e filho

Page 25: Aula Orientação a Objetos

25

Orientação a objetos

Capacidade Perspectiva Humana Perspectiva OO

Composição Elemento cuja vida

está intimamente

relacionada a um

outro elemento

Exemplo: um braço

no corpo humano

Agregação

Page 26: Aula Orientação a Objetos

26

Orientação a objetos

Capacidade Perspectiva Humana Perspectiva OO

Comunicação Troca de mensagens

entre objetos

Exemplo: Um

indivíduo pergunta o

nome a outro

indivíduo

Mensagem

Page 27: Aula Orientação a Objetos

27

Orientação a objetos

Capacidade Perspectiva Humana Perspectiva OO

Consciência A constatação da

existência de coisas

baseada na consciência,

indução intelectual e nas

características

observáveis pelos

sentidos humanos de

elementos da natureza,

suas propriedades e

comportamento

Exemplo: uma árvore,

um animal, um carro

Objetos com suas

propriedades

(atributos) e seu

comportamento

(operações)

Page 28: Aula Orientação a Objetos

28

Orientação a objetos

Capacidade Perspectiva Humana Perspectiva OO

Relacionamento Observação de

correlações entre

coisas físicas e

lógicas

Exemplo: um

indivíduo tem

vários documentos

Associação

Page 29: Aula Orientação a Objetos

29

Orientação a objetos

Analogia (a natureza)

– A vida é construída a partir de um único

componente, a célula

Page 30: Aula Orientação a Objetos

30

Orientação a objetos

Analogia (a natureza)

– Uma célula genérica

• É protegida por uma membrana que

– controla o acesso ao seu interior

– encapsula a célula protegendo-a de ataques

externos

• Contém mecanismos para manipular

– informações contidas no núcleo

– funções como síntese de proteínas e conversão

de energia

Page 31: Aula Orientação a Objetos

31

Orientação a objetos

Analogia (a natureza)

– Uma célula genérica

• Interagem umas com as outras através de

mensagens

– quando uma quer afetar o comportamento de

outra, envia um sinal químico que dispara uma

resposta desejada

– a membrana da outra filtra as mensagens,

atendendo aquelas que fazem algum sentido,

ativando alguma função interna

Page 32: Aula Orientação a Objetos

32

Orientação a objetos

Analogia (a natureza)

– Resultados

• Isto evita que as células tenham que conhecer

detalhes internos das demais

– Imagine se cada célula devesse armazenar detalhes de

funcionamento de todas as outras ???

• A partir deste tipo de estrutura, origina-se uma

grande variedade de formas especializadas

Page 33: Aula Orientação a Objetos

33

Orientação a objetos

Analogia (a natureza)

– Resultados

Page 34: Aula Orientação a Objetos

34

Orientação a objetos

Page 35: Aula Orientação a Objetos

35

Orientação a objetos

Componentes

– Entre as idéias fundamentais para a orientação a objetos incluem-se

• Classes e Objetos

• Atributos

• Métodos

• Mensagens

• Herança, Agregação, Associação

• Encapsulamento

• Polimorfismo

Page 36: Aula Orientação a Objetos

36

Orientação a objetos

Classes e Objetos

Classe Pessoa Objeto Pedro

Page 37: Aula Orientação a Objetos

37

Orientação a objetos

Classe

– Muitos dos objetos do mundo real possuem

características comuns e podem ser agrupados

de acordo com elas

– É uma coleção de objetos que podem ser

descritos com os mesmos atributos e as

mesmas operações

Page 38: Aula Orientação a Objetos

38

Orientação a objetos

Classe

– Representa uma idéia ou um conceito simples

• Categoriza objetos que possuem propriedades

similares

• Configura-se em um modelo para a criação de

novas instâncias

– Uma classe representa um gabarito (nível,

categoria) para muitos objetos e descreve

como estes objetos estão estruturados

internamente

Page 39: Aula Orientação a Objetos

39

Orientação a objetos

Classe

– Objetos de mesma classe possuem a mesma

definição tanto para métodos quanto para

atributos

– Uma classe deve sempre versar sobre algum

assunto

É similar a uma entidade/tabela no modelo relacional

somente até o ponto onde representa uma coleção de dados

armazenados com um tema em comum

Page 40: Aula Orientação a Objetos

40

Orientação a objetos

Classe

– Um programa é constituído de uma classe ou

de um conjunto de classes

• Com seus atributos

• Com seus métodos

Page 41: Aula Orientação a Objetos

41

Orientação a objetos

Classe

– Uma instância é um objeto criado a partir de

uma classe

– Quando se instancia objetos de uma classe,

cria-se esses objetos na memória

– A classe descreve a estrutura da instância,

enquanto que o estado da instância é definido

pelas operações realizadas sobre ela

Page 42: Aula Orientação a Objetos

42

Orientação a objetos

Classe

– Os elementos básicos de uma classe são chamados membros da classe e podem ser divididos em duas categorias:

• Variáveis (atributos)

– Especificam o estado da classe ou de um objeto, que é a instância desta classe

• Métodos (funções)

– Especificam os mecanismos pelos quais a classe ou um objeto instância desta classe podem operar

Page 43: Aula Orientação a Objetos

43

Orientação a objetos

Classe

– Uma variável de classe é uma variável cujo

valor é comum a todos os objetos membros da

classe

– Mudar o valor de uma variável de classe em

um objeto membro, automaticamente, muda o

valor para todos os objetos membros da classe

Page 44: Aula Orientação a Objetos

44

Orientação a objetos

Classe (notação)

Pessoa

informar_data_nasc ( )

assumir_data_nasc (valor)

informar_idade ( )

nome

data_nascimento

endereco

Nome da classe

Atributos

Métodos

Essa notação não foi definida pela UML

Page 45: Aula Orientação a Objetos

45

Orientação a objetos

Classe (pacote)

– É utilizado para agrupar um conjunto de classes

– Uma classe declarada como em pacote terá sua visibilidade restrita ao pacote em que reside

– Classes fora daquele pacote não saberão de sua existência

– Uma classe sem visibilidade nenhuma terá visibilidade default, que é em pacote

Page 46: Aula Orientação a Objetos

46

Orientação a objetos

Classe (visibilidade)

– As classes podem ter diferentes visibilidades

• Pública

• Privada

• Protegida

• Default

– A visibilidade descreve se a classe é visível e

pode ser referenciada a partir de outras

classes, ou é somente vista por si só

Page 47: Aula Orientação a Objetos

47

Orientação a objetos

Classe (visibilidade)

– Uma classe com visibilidade pública

• Pode ter seus atributos e métodos acessados por

qualquer outra classe

– Uma classe com visibilidade privada

• Só pode ser acessada por membros da mesma

classe, não podendo ser acessado por membros

externos (membros de outras classes)

Page 48: Aula Orientação a Objetos

48

Orientação a objetos

Classe (visibilidade)

– Uma classe com visibilidade protegida

• Pode ser acessada por membros de classes com

relacionamento de herança, ou seja,

(generalização/especialização)

– Uma classe com visibilidade default

• É usada somente por classes que estejam no

mesmo pacote. Classes fora do pacote não

poderão saber de sua existência

Page 49: Aula Orientação a Objetos

49

Orientação a objetos

Classe (visibilidade)

Visibilidade Public Protect Default Private

Da mesma classe Sim Sim Sim Sim

De qualquer classe no mesmo pacote Sim Sim Sim Não

De qualquer classe fora do pacote Sim Não Não Não

De uma subclasse no mesmo pacote Sim Sim Sim Não

De uma subclasse fora do mesmo pacote Sim Sim Não Não

Os diferentes níveis de controle de acesso

Page 50: Aula Orientação a Objetos

50

Orientação a objetos

Classe (modificadores)

– Uma classe pode sofrer modificações

dependendo do uso que lhe seja dado através

dos modificadores

• Abstract

• Final

• Root

• Active

Page 51: Aula Orientação a Objetos

51

Orientação a objetos

Classe (modificadores)

– Modificador de classe Abstract

• É uma classe que não terá objetos na memória em

momento algum

• O contraste para a classe abstrata é a classe

Concreta, que gera objetos na memória

• A classe abstrata serve de modelo para outras

classes, pois está fornecendo herança para estas

Ex 1

Uma classe pode fornecer herança e não ser abstrata

Page 52: Aula Orientação a Objetos

52

Orientação a objetos

Classe (modificadores)

– Modificador de classe Final

• Uma classe é criada como final se sua definição

está completa e nunca existirá uma subclasse dela

• Uma classe nunca poderá ser abstract e final, ao

mesmo tempo, porque sua implementação jamais

poderá ser completada

Ex 2

Page 53: Aula Orientação a Objetos

53

Orientação a objetos

Classe (modificadores)

– Modificador de classe Root

• Uma classe declarada como root não poderá ter

ancestral

• Utiliza-se quando se trabalha com herança, para

informar qual classe é a “mais alta” na hierarquia

de classes

Page 54: Aula Orientação a Objetos

54

Orientação a objetos

Classe (modificadores)

– Modificador de classe Active

• Uma classe declarada como active permite que

seus métodos sejam executados de maneira

concorrente (quando se trabalha com thread)

• O oposto para esse tipo de modificador é uma

classe passiva, ou seja, todas as demais classes

que não são marcadas como active

Page 55: Aula Orientação a Objetos

55

Orientação a objetos

Objeto

– Coisa do mundo real

– É uma entidade capaz de reter um estado

(informação) e que oferece uma série de

operações (comportamento) ou para examinar

ou para afetar este estado

– É uma instância de uma classe

Page 56: Aula Orientação a Objetos

56

Orientação a objetos

Objeto

– É uma entidade com uma fronteira bem-definida e uma identidade, que encapsula estado e comportamento

• Estado é representado por atributos e relações

• Comportamento é representado por operações e seus métodos

– Os atributos de um objeto são representação de dados que podem ser representados atomicamente, ou através de coleção de dados

Page 57: Aula Orientação a Objetos

57

Orientação a objetos

Objeto

– Atributos atômicos são idênticos aos atributos de uma entidade no modelo relacional

• Representam uma informação sem divisões, como por exemplo, nome de uma pessoa

– Atributos que representam uma coleção de dados é uma característica peculiar ao paradigma de objetos

– Este tipo de atributo é formado por outros atributos e objetos

Page 58: Aula Orientação a Objetos

58

Orientação a objetos

Objeto

– Quando um objeto é criado na memória, ele

contém os atributos da classe, pois cada

objeto terá seus valores para cada atributo

– Os métodos são compartilhados por todos os

objetos de uma classe, pois pertencem à classe

e não aos objetos

Page 59: Aula Orientação a Objetos

59

Orientação a objetos

Objeto

– Os atributos do objeto são chamados de

variável de instância e é uma variável cujo

valor é específico ao objeto e não à classe

– Uma variável de instância em geral possui

uma valor diferente em cada objeto membro

da classe

Page 60: Aula Orientação a Objetos

60

Orientação a objetos

Objeto

– Os objetos do mundo real possuem

propriedades e valores para estas propriedades

e esses valores definem seu estado

– Os atributos descrevem as características dos

objetos de uma classe

Page 61: Aula Orientação a Objetos

61

Orientação a objetos

Objeto (exemplo)

Nome = Pedro

Idade = 40

Peso = 70

Altura = 170

Objeto

Page 62: Aula Orientação a Objetos

62

Orientação a objetos

Atributo (composição)

– Visibilidade

– Nome

– Tipo de expressão

– Valor inicial

Page 63: Aula Orientação a Objetos

63

Orientação a objetos

Atributo (visibilidade)

– Os atributos podem ter diferentes visibilidades

• Pública

• Privada

• Protegida

• Default

– A visibilidade descreve se o atributo é visível e pode ser referenciado a partir de outras classes, ou é somente visto pela própria classe

Page 64: Aula Orientação a Objetos

64

Orientação a objetos

Atributo (visibilidade)

– Atributo com visibilidade pública

• Pode ser acessado por objetos da mesma classe e

de objetos externos (objetos de outras classes)

– Atributo com visibilidade privada

• Só pode ser acessado por objetos da mesma classe,

não podendo ser acessado por objetos externos

(objetos de outras classes)

Page 65: Aula Orientação a Objetos

65

Orientação a objetos

Atributo (visibilidade)

– Atributo com visibilidade protegida

• Pode ser acessado por objetos de classes com

relacionamento de herança, ou seja,

(generalização/especialização)

– Atributo com visibilidade default

• É usado somente por classes que estejam no

mesmo pacote onde a classe que o declarou está

Page 66: Aula Orientação a Objetos

66

Orientação a objetos

Atributo (notação)

– Visibilidade pública: + (mais)

– Visibilidade privada: – (menos)

– Visibilidade protegida: # (sustenido ou

cerquilha)

– Visibilidade default: ~ (til)

Ex 3

Page 67: Aula Orientação a Objetos

67

Orientação a objetos

Atributo (modificadores)

– Podem alterar o significado ou o

comportamento de um atributo

• Static _ (sublinhado)

• Final

• Transient

• Volatile

Page 68: Aula Orientação a Objetos

68

Orientação a objetos

Atributo (modificadores)

– Modificador de atributo Static

• Um atributo declarado com estático permanecerá

na classe enquanto houverem objetos instanciados

daquele tipo

• O atributo é estático para a classe e seu valor é

válido para todos os objetos

• O valor do atributo não muda para todos os

objetos da classe

Ex 4

Page 69: Aula Orientação a Objetos

69

Orientação a objetos

Atributo (modificadores)

– Modificador de atributo Final

• Um atributo marcado com final não pode ter seu

valor de inicialização alterado

• Dado um valor a este atributo para “um objeto”,

este não sofrerá mais mudanças

• O valor do atributo não muda “apenas para o

objeto” e não para todos os objetos da classe

Não há identificação visual e algumas ferramentas

sequer permitem a sua utilização

Ex 5

Page 70: Aula Orientação a Objetos

70

Orientação a objetos

Atributo (modificadores)

– Modificador de atributo Transient

• Um atributo marcado com transiente (transitório)

significa que o seu valor não será salvo e nem

restaurado por um mecanismo de persistência

• O programador terá de manuseá-lo por conta

própria caso necessite recuperá-lo

Não há identificação visual e algumas ferramentas

sequer permitem a sua utilização

Ex 6

Page 71: Aula Orientação a Objetos

71

Orientação a objetos

Atributo (modificadores)

– Modificador de atributo Volatile

• Um atributo marcado com volátil (inconstante)

tem seu valor alterado assincronamente por

segmentos que estejam sendo executados ao

mesmo tempo e sua cópia é atualizada com o novo

valor

Não há identificação visual e algumas ferramentas

sequer permitem a sua utilização

Ex 7

Page 72: Aula Orientação a Objetos

72

Orientação a objetos

Atributo (nome)

– É uma sequência de caracteres de

identificação

– Exemplo

• Nome

• Altura

• Data de Nascimento

Page 73: Aula Orientação a Objetos

73

Orientação a objetos

Atributo (tipo de expressão)

– É uma especificação que depende da

linguagem de programação que será utilizada

– Exemplo

• Integer

• Date

• Float

• Double

Page 74: Aula Orientação a Objetos

74

Orientação a objetos

Atributo (valor inicial)

– É uma especificação que também depende da

linguagem de programação utilizada e pode

ser opcional

– Exemplo

• Nome = João

• Idade = 40

• Peso = 70

• Altura = 170

Page 75: Aula Orientação a Objetos

75

Orientação a objetos

Operação e Método

– Há uma distinção entre operação e método

• Operação

– É algo invocado por um objeto (procedimento de chamada, )

• Método

– É um corpo de procedimento (o algoritmo, a programação)

– Um método é a implementação de uma operação

Page 76: Aula Orientação a Objetos

76

Orientação a objetos

Método (capacidades)

– Informar o valor de um atributo de um objeto

• informar_data_nasc

– Alterar o valor de um atributo de um objeto

• assumir_data_nasc (valor)

– Executar um procedimento

• acessando atributos (informar_idade) ou não

• fornecendo respostas a quem invoca, ou não

Page 77: Aula Orientação a Objetos

77

Orientação a objetos

Método (capacidades)

– De modo geral, um método recebe

argumentos cujos valores lhe são passados

pelo objeto que o chamou, efetua um conjunto

de operações e retorna algum resultado

– A declaração do método especifica o nome do

método, o tipo de retorno, o nome e o tipo de

cada argumento.

Page 78: Aula Orientação a Objetos

78

Orientação a objetos

Método (capacidades)

– Se o método não utiliza nenhum argumento,

parênteses vazios devem ser incluídos na

declaração

– Se o método não retorna nenhum valor, isto

deve ser declarado usando-se a palavra-chave

void

Page 79: Aula Orientação a Objetos

79

Orientação a objetos

Método (classificação)

– É composto de:

• Assinatura (nome, parâmetros)

• Corpo (o algoritmo, a programação)

– Método concreto

• Possui assinatura e corpo

– Método abstrato

• Possui somente assinatura

Page 80: Aula Orientação a Objetos

80

Orientação a objetos

Método (visibilidade)

– Os métodos podem ter diferentes visibilidades

• Pública

• Privada

• Protegida

• Default

– A visibilidade descreve se o método é visível

e pode ser referenciado a partir de outras

classes, ou é somente visto pela própria classe

Page 81: Aula Orientação a Objetos

81

Orientação a objetos

Método (visibilidade)

– Método com visibilidade pública

• É aquele que só pode ser acessado por objetos da

mesma classe e por objetos externos (objetos de

outras classes)

– Método com visibilidade privada

• É aquele que só pode ser acessado por objetos da

mesma classe, não podendo ser acessado por

objetos externos (objetos de outras classes)

Page 82: Aula Orientação a Objetos

82

Orientação a objetos

Método (visibilidade)

– Método com visibilidade protegida

• Pode ser acessado por objetos de classes com

relacionamento de herança, ou seja,

(generalização/especialização)

– Método com visibilidade default

• É usado somente por classes que estejam no

mesmo pacote onde a classe que o declarou está

Page 83: Aula Orientação a Objetos

83

Orientação a objetos

Método (notação)

– Visibilidade pública: + (mais)

– Visibilidade privada: – (menos)

– Visibilidade protegida: # (sustenido ou

cerquilha)

– Visibilidade em default: ~ (til)

Page 84: Aula Orientação a Objetos

84

Orientação a objetos

Método (modificadores)

– Os modificadores de métodos podem ser:

• Static _ (sublinhado)

• Abstract i (itálico)

• Final

• Root

• Query

Page 85: Aula Orientação a Objetos

85

Orientação a objetos

Método (modificadores)

– Modificador de método Static

• Um método declarado com estático permanecerá

na classe enquanto houverem objetos instanciados

daquele tipo

• O atributo é estático para a classe e seu valor é

válido para todos os objetos

• O valor do atributo não muda para todos os

objetos

Ex 8

Page 86: Aula Orientação a Objetos

86

Orientação a objetos

Método (modificadores)

– Modificador de método Abstract

• Um método abstrato possui apenas assinatura

• Não possui implementação (o algoritmo)

• Uma classe que possua pelo menos um método

abstrato deve, obrigatoriamente, ser abstrata

Ex 9

Page 87: Aula Orientação a Objetos

87

Orientação a objetos

Método (modificadores)

– Modificador de método Final

• Um método marcado como final não pode ser

alterado por outra classe

• Um método final está perfeitamente definido, logo

não existe motivos para sua modificação

• Um método final não pode ser abstrato

Não há identificação visual e algumas ferramentas

sequer permitem a sua utilização

Ex 10

Page 88: Aula Orientação a Objetos

88

Orientação a objetos

Método (modificadores)

– Modificador de método Root

• Indica que um método está em seu nível mais alto,

não existindo nenhum outro nível acima

Muito pouco utilizado

Não há identificação visual e algumas ferramentas

sequer permitem a sua utilização

Page 89: Aula Orientação a Objetos

89

Orientação a objetos

Método (modificadores)

– Modificador de método Query

• Um método marcado como query não faz

nenhuma alteração no estado do objeto que está

manipulando

• O objetivo é preservar o estado do objeto

Muito pouco utilizado

Não há identificação visual e algumas ferramentas

sequer permitem a sua utilização

Page 90: Aula Orientação a Objetos

90

Orientação a objetos

Métodos (Sobrecarga)

– Técnica conhecida, também, por Sobreposição

ou Overloading

– Quando um método é sobreposto por outro

• Sua assinatura deve ser diferente, pois a

identificação de um método é sua assinatura

(nome + argumentos)

– Evita a replicação de métodos que fazem as

mesmas coisas

Page 91: Aula Orientação a Objetos

91

Orientação a objetos

Métodos (Sobrecarga)

– Como são métodos distintos, cada um pode

ter um modificador de acesso

– É permitido incluir numa classe métodos que

possuem o mesmo nome e o mesmo tipo de

retorno, mas que diferem pelo número e/ou

pelos tipos dos argumentos, o contrário não

– Não confundir com métodos substituídos (que

não podem ter assinaturas diferentes)

Page 92: Aula Orientação a Objetos

92

Orientação a objetos

Métodos (Sobrecarga – Exemplo)

calcular_comissao(int x)

Venda

calcular_comissao(double x)

Pessoa

Ex 11

Page 93: Aula Orientação a Objetos

93

Orientação a objetos

Métodos (Substituição)

– Técnica conhecida, também, como Superação,

Redefinição ou Overriding

– Quando um método é substituído por outro

• A assinatura do método é a mesma (nome + argumentos)

– Mesmo nome, tipo de retorno, número e tipos de

argumentos

– Utilizado entre superclasse e subclasses, na herança

– O algoritmo é substituído por outro

Page 94: Aula Orientação a Objetos

94

Orientação a objetos

Métodos (Substituição – Exemplo)

calcular_salario(int x)

Pessoa

calcular_salario(int x)

Professor

Page 95: Aula Orientação a Objetos

95

Orientação a objetos

Polimorfismo

– Originário do grego

• Poli = Muitas

• Morphos = Formas

– Um mesmo método pode apresentar várias

formas, de acordo com seu contexto

– Permite que a semântica de uma interface seja

efetivamente separada da implementação que

a representa

Page 96: Aula Orientação a Objetos

96

Orientação a objetos

Encapsulamento

– Segundo Deitel e Deitel:

“A orientação a objetos encapsula os atributos e métodos em objetos, pois estão amarrados entre si. Os objetos tem a propriedade de ocultar informações e isto implica em um objeto não necessariamente conhecer a implementação de outro.”

– Detalhes são ocultados dentro de objetos, pois eles encapsulam estado e comportamento

Page 97: Aula Orientação a Objetos

97

Orientação a objetos

Mensagem

– É a forma como os objetos se comunicam

– Uma mensagem é uma solicitação a um

objeto para que seja executado um método

– O objeto transmissor apenas conhece o que

quer solicitar e nem se preocupa em como

será atendido

Page 98: Aula Orientação a Objetos

98

Orientação a objetos

Mensagem

– O objeto receptor conhece como atender à

solicitação (método correspondente),

incluindo a forma de retorno da mensagem

– Os métodos são responsáveis por acessar ou

alterar os atributos de um objeto, através das

mensagens

– Ao conjunto de mensagens e métodos de um

objeto, dá-se o nome de protocolo

Page 99: Aula Orientação a Objetos

99

Orientação a objetos

Classe (encontrando)

– Representam, normalmente, os substantivos

no domínio de aplicação

– Classes grandes são mais difíceis de entender,

por isso deve-se criar classes de objetos que

possuam propósitos bem definidos para ajudar

na reutilização por outras aplicações

Page 100: Aula Orientação a Objetos

100

Orientação a objetos

Classe (encontrando)

– Classes menos complicadas são mais fáceis de

entender e manter

– Se uma classe não puder ser explicada em

poucas orações ou, no máximo, em alguns

parágrafos, ou ainda ter muitas operações

(métodos) são fortes candidatas a subdivisões

em classes menores

Page 101: Aula Orientação a Objetos

101

Orientação a objetos

Classe (exemplo)

– Pessoa

• Generaliza a descrição de seres humanos

• Aplicações bancárias, cadastro de clientes,

controle acadêmico

– Tabuleiro

• Generaliza um elemento de jogos de tabuleiro

• Tabuleiros de xadrez, jogo da velha, banco

imobiliário

Page 102: Aula Orientação a Objetos

102

Orientação a objetos

Classe (classificação)

– As classes são classificadas em função de

seus métodos:

• Classe concreta

– Nenhum método abstrato

• Classe abstrata

– Pelo menos um método abstrato

Page 103: Aula Orientação a Objetos

103

Orientação a objetos

Relacionamentos entre classes

– As classes não coexistem isoladamente em uma aplicação

– Os relacionamentos existentes entre classes podem ser

• Herança

– Generalização/Especialização

• Agregação

• Composição

• Associação

Page 104: Aula Orientação a Objetos

104

Orientação a objetos

Herança

– Define que uma classe é uma especialização de outra

classe

– Exemplo

• As classes Pessoa, Estudante, Funcionário e Professor

– Estudante, Funcionário e Professor são um tipo de pessoa

– Pessoa (generalização)

– Estudante, Funcionário e Professor (especialização,

particularização)

– Dica

• “ é um tipo de ”

Page 105: Aula Orientação a Objetos

105

Orientação a objetos

Herança (papéis das classes)

– Superclasse

• Representa a generalização

– Subclasse

• Representa a especialização/particularização

– Exemplo

• Relacionamento de herança entre as classes Pessoa e Estudante, Funcionário e Professor

– Pessoa: superclasse de Estudante, Funcionário e Professor

– Estudante, Funcionário e Professor: subclasse de Pessoa

Page 106: Aula Orientação a Objetos

106

Orientação a objetos

Herança (vantagens)

– Economia de descrição

– Facilidade de gerenciamento da estrutura

– Reutilização

Page 107: Aula Orientação a Objetos

107

Orientação a objetos

Herança (exemplo)

Estudante Funcionario Professor

Superclasse

Subclasses

matricula

nome

endereco

informar_nome ( )

Pessoa

Page 108: Aula Orientação a Objetos

108

Orientação a objetos

Herança (significado)

– Atributos da superclasse são herdados pela subclasse

• Pessoa possui o atributo nome

• Em consequência, estudante, funcionário e professor também possuem o atributo nome

– Todos os atributos da superclasse são herdados pela subclasse

– Todos os métodos da superclasse são herdados pela subclasse

Page 109: Aula Orientação a Objetos

109

Orientação a objetos

Herança (características)

– A superclasse implementa atributos e métodos

genéricos que servem para todas as subclasses

e estas, implementam atributos e métodos

específicos ao seu contexto

– Este tipo de relacionamento é um dos pontos

chaves do paradigma de orientação a objetos,

pois contempla a propriedade de reuso de

software

Page 110: Aula Orientação a Objetos

110

Orientação a objetos

Herança (características)

– A generalização é um relacionamento entre

classes e não entre objetos, ou seja

– Cada instanciação de um objeto da subclasse

gera uma estrutura composta por atributos e

métodos públicos da superclasse acrescidos

dos atributos e métodos da subclasse

Page 111: Aula Orientação a Objetos

111

Orientação a objetos

Herança Múltipla

– Quando uma subclasse herda atributos ou métodos de duas ou mais superclasses

– É um tipo de relacionamento que pode apresentar problemas se não for bem utilizado

• colisão de nomes provindos de atributos da superclasse

• colisão de métodos provindos das superclasses

– Java e Smalltalk não implementam

– Eifell e C++ implementam

Page 112: Aula Orientação a Objetos

112

Orientação a objetos

Herança Múltipla (exemplo)

Veículo marca modelo ano

dirigir ( )

Anfíbio

Automóvel

numportas dirhidraulica

dirigir ( )

Barco tamanho tipomotor

dirigir ( )

Superclasse

Subclasse e

Superclasse

Subclasse e

Superclasse Subclasse

dirigir ( )

Page 113: Aula Orientação a Objetos

113

Orientação a objetos

Herança Múltipla (como evitar)

– Em Java existem duas saídas para o

“problema” da herança múltipla

• A primeira é aumentar o número de classes e isso

é feito em 50% dos casos (Medeiros, 2004)

• A segunda é a utilização de Interfaces

Page 114: Aula Orientação a Objetos

114

Orientação a objetos

Interfaces

– Utilizada em Java para contornar a falta da

herança múltipla

– Não é uma classe

– Não possuem atributos

– É um arquivo que define valores constantes e

operações que outra classe deve implementar

Page 115: Aula Orientação a Objetos

115

Orientação a objetos

Interfaces

– Define somente as operações, sem os métodos

– Não podem ser instanciadas (não tem objetos)

– Só podem ser Public e Abstract

– Não podem ser Private e Protected

– Se não forem declaradas como Public e

Abstract, serão automaticamente

transformados desse maneira

Page 116: Aula Orientação a Objetos

116

Orientação a objetos

Interfaces (exemplo)

Veículo marca modelo ano

dirigir ( )

dirigir ( ) <<Interface>>

Barco

dirigir ( )

Superclasse

Subclasse

Subclasse/Superclasse Anfíbio

dirigir ( )

Ex 15 Ex 14 Ex 13

Automóvel

numportas dirhidraulica

dirigir ( )

Barco tamanho tipomotor

dirigir ( )

Page 117: Aula Orientação a Objetos

117

Orientação a objetos

Agregação

– Relação que pode ocorrer entre duas classes

– Caracteriza uma relação de “todo-parte”

– Exemplo

• Relação entre as classes Apartamento e Garagem

• Um apartamento pode ter garagem

Page 118: Aula Orientação a Objetos

118

Orientação a objetos

Agregação (papéis das classes)

– Classe todo ou agregada

• É a classe resultante da agregação

– Classe parte

• É a classe cujas instâncias formam a agregação

– Exemplo entre as classes

• Apartamento e Garagem

– Classe Apartamento: todo ou agregada

– Classe Garagem: parte

Page 119: Aula Orientação a Objetos

119

Orientação a objetos

Agregação (exemplo)

Apartamento Garagem

Classe parte Classe todo

Page 120: Aula Orientação a Objetos

120

Orientação a objetos

Agregação (significado)

– A classe todo existe, independentemente da classe parte (e vice-versa)

– Não existe uma “ligação forte” entre as duas classes

– Objetos da classe todo são independentes da classe parte

– Dica

• Pergunta 1: é uma relação todo-parte?

• Pergunta 2: um objeto vive sem o outro?

Page 121: Aula Orientação a Objetos

121

Orientação a objetos

Composição – Ocorre quando tem-se uma situação semelhante à da

agregação entre duas partes

– Os objetos da classe parte não podem continuar vivendo quando o todo é destruído

– Ambas as classes vivem unidas, de forma dependente, ou seja, existe uma “ligação forte” entre as duas

– Os objetos da classe parte são dependentes, em termos de vida, da classe todo

– Dica • Pergunta 1: é uma relação todo-parte?

• Pergunta 2: um objeto vive sem o outro?

Page 122: Aula Orientação a Objetos

122

Orientação a objetos

Composição (exemplo)

Edifício Apartamento

Classe parte Classe todo

Page 123: Aula Orientação a Objetos

123

Orientação a objetos

Associação

– É uma relacionamento entre classes que não

pode ser caracterizado como herança, nem

como agregação e nem como composição

– Não apresenta significado preciso

– Mais comum em aplicações voltadas para

comércio e serviços

Page 124: Aula Orientação a Objetos

124

Orientação a objetos

Associação (exemplo)

Funcionário Venda

Page 125: Aula Orientação a Objetos

125

Orientação a objetos

Como saber qual relacionamento deve ser

utilizado?

– Pense se existe herança

• Existem atributos ou métodos sendo aproveitados por outras

classes? A subclasse “é do tipo” da superclasse?

• Sim: Isso é herança

• Não: Existe todo-parte?

– Sim: A parte vive sem o todo?

• Sim: Isso é agregação

• Não: Isso é uma composição

– Não: Isso é associação

Page 126: Aula Orientação a Objetos

126

Orientação a objetos

Objetivos gerais da orientação a objetos

– Definir o conjunto de classes

• Com seus atributos

• Com seus métodos (incluindo assinatura e corpo)

– Definir os relacionamentos entre as classes

• Herança

• Agregação

• Composição

• Associação

Page 127: Aula Orientação a Objetos

127

Orientação a objetos

Persistência

– Refere-se à habilidade de um objeto existir

além da execução que o criou, ou seja, ser

armazenado de alguma forma

– Não é o armazenamento apenas dos dados

referentes aos atributos, mas também dos

métodos para realizar os acessos

– Um objeto não persistente é também chamado

de transiente

Voltar

Page 128: Aula Orientação a Objetos

128

Referências

– Cadenhead, Rogers; Lemay, Laura. Aprenda em 21 Dias Java 2. 4ª ed. Canpus, 2005

– Deboni, José Eduardo Zindel. Modelagem Orientada a Objetos com a UML. 1ª ed. Futura, 2003

– Deitel, Harvey M. / Deitel, Paul J. Java: Como Programar. 6ª ed. Prentice-Hall, 2006

– Horstmann, Cay S. e Cornell, Gary. Core Java 2: Volume 1 - Fundamentos. 4ª ed. Makron Books, 2001

– Medeiros, Ernani Sales de. Desenvolvendo Software com UML 2.0: Definitivo. 1ª ed. Makron Books, 2004

– Pressman, Roger. Engenharia de Software. 5ª ed. McGraw-Hill, 2002

– Santos, Rafael. Introdução à Programação Orientada a objetos Usando Java. 1ª ed. Campus, 2003