Orientação a Objetos na Prática
75 pág.

Orientação a Objetos na Prática


DisciplinaProgramação Orientada A Objetos5.630 materiais86.130 seguidores
Pré-visualização3 páginas
Orientação a Objetos na Prática
Entenda o contexto da modelagem de software e sistemas, descubra a 
importância e as principais características da orientação a objetos. 
Andre Luiz Monteiro da Costa
andre.monteiro@prof.infnet.edu.br
22
O paradigma da Orientação a Objetos
\uf06e Paradigma ==> forma de abordar um problema.
\uf06e Surgiu no fim dos anos 60.
\uf06e Hoje em dia, praticamente suplantou o paradigma 
anterior, o paradigma estruturado...
33
\uf06e Alan Kay, um dos pais do paradigma da orientação a 
objetos, formulou a chamada analogia biológica. 
\uf06e \u201cComo seria um sistema de software que funcionasse 
como um ser vivo?
O paradigma da Orientação a Objetos
44
Analogia Biológica
\uf06e Cada \u201ccélula\u201d interagiria com outras células através 
do envio de mensagens para realizar um objetivo 
comum.
\uf06e Adicionalmente, cada célula se comportaria como 
uma unidade autônoma. 
55
\uf06e De uma forma mais geral, Kay pensou em como 
construir um sistema de software a partir de agentes 
autônomos que interagem entre si. 
\uf06e Com isso, ele estabeleceu os princípios da orientação 
a objetos. 
Analogia Biológica
66
Orientação a Objetos - Princípios
\uf06e Tudo é um objeto. 
 Objeto = super variável: armazena dados, mas se 
pode fazer requisições a esse objeto, pedindo que ele 
faça operações sobre si próprio. 
Em teoria, qualquer elemento conceitual do problema 
pode ser representado como um objeto em um 
programa (Ex.: cachorros, livros, sócios, 
empréstimos, etc) . 
77
\uf06e Um programa é uma coleção de objetos dizendo uns 
aos outros o que fazer.
 
Para fazer uma requisição a um objeto você \u201cmanda 
uma mensagem\u201d para este objeto. 
Mensagem = chamada de um procedimento ou função 
pertencente a um objeto em particular.
Orientação a Objetos - Princípios
88
\uf06e Um objeto pode ser composto por vários outros 
objetos
Um novo tipo de objeto pode ser criado a partir de 
objetos existentes. 
Dessa forma, complexidade pode ser adicionada a um 
programa e escondida por trás da simplicidade de 
uso dos objetos.
Orientação a Objetos - Princípios
99
\uf06e Todo objeto tem um tipo. 
Objeto = instância de uma classe, onde classe é um 
sinônimo de tipo. 
 A questão mais importante relativa a uma classe é 
\u201cque mensagens eu posso enviar para uma instância 
dessa classe?\u201d
Orientação a Objetos - Princípios
1010
\uf06e Todos os objetos do mesmo tipo podem receber as 
mesmas mensagens.
Orientação a Objetos - Princípios
\uf06e Na figura abaixo, o objeto \u201cCírculo\u201d 
aceita qualquer mensagem 
endereçada a uma \u201cForma 
Geométrica\u201d. 
Essa capacidade de \u201csubtituição\u201d de 
um objeto por outro é um dos mais 
poderosos conceitos em orientação a 
objetos. (Herança)
1111
Abstração
\uf06e Inclui os aspectos relevantes de alguma 
coisa, ignorando os menos importantes.
1212
Objeto
\u2022 Definição:
\u2022 Um conceito, com significado específico em um 
contexto
\u2022 Propósito:
\u2022 Representar uma entidade do mundo real
\u2022 Objetos possuem:
\u2022 Identidade
\u2022 Características que determinam seu estado
\u2022 Comportamento específico definido por um 
conjunto de ações
1313
Exemplo
 Beija-Flor
Identidade:: \u2018o beija-flor que vem ao meu jardim\u2019
Estado:
penas azuis
bico fino
vôo rápido
Comportamento:
voar
piar
1414
\uf06e Pessoa
Identidade:: \u2018Mário\u2019
Estado::
olhos pretos
nasceu em 16/02/70
pesa 70kg
 mede 1,70m
Comportamento::
andar
falar
comer
rir
Exemplo
1515
Telefone
Identidade:: número 2576-0989
Estado::
azul
2.4 GHz
tone
Comportamento::
tocar
discar
Exemplo
1616
Representação
Mário
Estado
(características)
Comportamento
Identidade
Serviços, 
Interface ou 
protocolo
Objeto
1717
\uf06e Implementação
\u203a Interface Visível
\u203a Parte encapsulada (escondida)
Estado do Objeto 
(valor dos atributos)
Interface da Classe
Objeto
1818
Encapsulamento
\uf06e A interface de um objeto é o que ele conhece e o que 
ele sabe fazer, sem descrever como o objeto conhece 
ou faz.
\uf06e A interface de um objeto define os serviços que ele 
pode realizar (mensagens que ele recebe).
\uf06e Uma interface pode ter várias 
formas de implementação.
1919
Classe
\uf06e \u201cfábrica de objetos\u201d.
2020
Classe
\u203a \u201cFábrica de Objetos\u201d.
\uf06e Objetos:
 
\u203a São instâncias de alguma classe.
\u203a De uma classe são idênticos em sua interface e 
implementação.
\u203a Diferem-se de outros por seu estado e sua 
identidade.
2121
\u2022 Segundo a OMG:
Classe \u2013 Notação Gráfica
2222
Implementação em Java
2323
Implementação em Java
2424
Classes
 
Classe
Instâncias
(objetos)
2525
Implementação em Java
2626
Implementação em Java
2727
Atributos
\uf06e Descrevem as características das instâncias de uma classe
\uf06e Seus valores definem o estado do objeto
\uf06e O estado de um objeto pode mudar ao longo de sua existência
\uf06e A identidade de um objeto, contudo, nunca muda
Funcionário_Helena
Nome=Helena Reis
Nasc=28/01/1965
Salário = 4.000
InformarSalário
CalcularIdade
Funcionário_Mário
Nome=Mário Sá
Nasc=16/02/1970
Salário = 3.000
InformarSalário
CalcularIdade
2828
Serviços/Operações
\uf06e Representam o comportamento das instâncias de uma classe
\uf06e Correspondem às ações das instâncias de uma classe
Funcionário_Helena
Nome=Helena Reis
Nasc=28/01/1965
Salário = 4.000
InformarSalário
CalcularIdade
Funcionário_Mário
Nome=Mário Sá
Nasc=16/02/1970
Salário = 3.000
InformarSalário
CalcularIdade
4000
3000
Informar 
Salário?
2929
Implementação em Java
3030
Serviços/Métodos
\uf06e Alguns métodos especiais:
\u203a Construtores \u2013 criam objetos de uma classe
\u203a Destrutores \u2013 destroem objetos de uma classe
3131
Passos para a criação de um objeto
\uf06e Declarar uma referência para o objeto (variável)
Funcionario funcionario;
\uf06e Criar uma instância do objeto
funcionario = new Funcionario();
O sistema operacional aloca espaço em memória para o novo 
objeto e preenche os seus atributos com valores default (zero 
para números, null para referências, false para booleanos, 
string vazia para Strings.
3232
\uf06e Se houver um método construtor, este é invocado
O método construtor é usado para alterar os valores default dos 
atributos, possibilitando que o objeto se torne disponível para a 
aplicação já em um estado pré-definido
\uf06e Modificação explícita do estado do objeto
funcionario.salario = 4000; //se atributo é público
funcionario.gravaSalario(4000); // caso contrário
A referência para o objeto pode ser usada para alterar o estado 
dos atributos do objeto.
Passos para a criação de um objeto
3333
Herança
\uf06e Derivar características de gerações precedentes. 
\uf06e Termo é associado com uma das formas de 
reutilização de software. 
\uf06e Através da herança, novas classes podem ser 
derivadas das classes existentes. 
\uf06e A nova classe herda propriedades e métodos da 
classe base. 
\uf06e A nova classe também pode adicionar suas 
próprias propriedades e métodos.
3434
\uf06e Para que serve a herança?
Considere a criação da ClasseB.
Que métodos estão disponíveis para objetos da 
ClasseB?
Herança
3535
Suponha que a ClasseB herda da ClasseA
Que métodos estão agora disponíveis para objetos da 
ClasseB ?
Herança
3636
\uf06e O objeto da classeB tem agora disponíveis os 
métodos da classe ClasseA, sem ter que reescrevê-
los na ClasseB.
\uf06e Um objeto da ClasseB também é um objeto da classe 
ClasseA. 
Herança
3737
Herança
\uf06e Facilita a manutenção do código: Os métodos não 
são replicados. Se for necessário alterar o código do 
método m3(), basta alterá-lo na ClasseA.
\uf06e A ClasseB pode "recusar" parte da herança, 
reimplementando os métodos herdados, 
sobrescrevendo-os.
3838
 
O método m3(), agora disponível para objetos da 
ClasseB, é aquele implementado em ClasseB.
Herança
3939
\uf06e Várias subclasses podem herdar da mesma 
superclasse (Herança Simples).
Herança
4040
\uf06e Em Java, não é permitido herdar de mais de uma 
classe (Herança Múltipla).
ERRADO!!!!
Herança
4141
Herança
\uf06e A hierarquia de herança pode ter vários níveis
\uf06e Que métodos estão agora disponíveis para uma 
instância de ClasseC?
4242
\uf06e Pode surgir a partir da refatoração de classes 
existentes, de modo