Aula Orientação a Objetos
Transcript of Aula Orientação a Objetos
![Page 1: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/1.jpg)
Orientação a Objetos
Prof. Ms Eng Marcelo Bianchi
Aula 02
![Page 2: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/2.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/3.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/4.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/5.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/6.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/7.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/8.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/9.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/10.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/11.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/12.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/13.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/14.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/15.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/16.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/17.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/18.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/19.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/20.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/21.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/22.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/23.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/24.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/25.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/26.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/27.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/28.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/29.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/30.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/31.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/32.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/33.jpg)
33
Orientação a objetos
Analogia (a natureza)
– Resultados
![Page 34: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/34.jpg)
34
Orientação a objetos
![Page 35: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/35.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/36.jpg)
36
Orientação a objetos
Classes e Objetos
Classe Pessoa Objeto Pedro
![Page 37: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/37.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/38.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/39.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/40.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/41.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/42.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/43.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/44.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/45.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/46.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/47.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/48.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/49.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/50.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/51.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/52.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/53.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/54.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/55.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/56.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/57.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/58.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/59.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/60.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/61.jpg)
61
Orientação a objetos
Objeto (exemplo)
Nome = Pedro
Idade = 40
Peso = 70
Altura = 170
Objeto
![Page 62: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/62.jpg)
62
Orientação a objetos
Atributo (composição)
– Visibilidade
– Nome
– Tipo de expressão
– Valor inicial
![Page 63: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/63.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/64.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/65.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/66.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/67.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/68.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/69.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/70.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/71.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/72.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/73.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/74.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/75.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/76.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/77.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/78.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/79.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/80.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/81.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/82.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/83.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/84.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/85.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/86.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/87.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/88.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/89.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/90.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/91.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/92.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/93.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/94.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/95.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/96.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/97.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/98.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/99.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/100.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/101.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/102.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/103.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/104.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/105.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/106.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/107.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/108.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/109.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/110.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/111.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/112.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/113.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/114.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/115.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/116.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/117.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/118.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/119.jpg)
119
Orientação a objetos
Agregação (exemplo)
Apartamento Garagem
Classe parte Classe todo
![Page 120: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/120.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/121.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/122.jpg)
122
Orientação a objetos
Composição (exemplo)
Edifício Apartamento
Classe parte Classe todo
![Page 123: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/123.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/124.jpg)
124
Orientação a objetos
Associação (exemplo)
Funcionário Venda
![Page 125: Aula Orientação a Objetos](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/125.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/126.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/127.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022012019/616882c9d394e9041f7014fe/html5/thumbnails/128.jpg)
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