Você está na página 1de 6

147

Aula 2º

Características de objetos

Prezados(as) alunos(as),
Nesta segunda aula, vamos conhecer as definições dos
SULQFLSDLVWHUPRVUHODFLRQDGRVjRULHQWDomRDREMHWRV
Se ao final desta aula tiverem dúvidas, vocês poderão saná-
las através das ferramentas da plataforma de ensino.
Conto com a sua participação, aproveite para ler e refletir
os objetivos de aprendizagem, afinal da sua participação
dependerá seu aprendizado.
Bom Trabalho!
Bons estudos!

Objetivos de aprendizagem

Ao término desta aula, vocês serão capazes de:

• entender as definições dos termos mais utilizados na orientação a objetos;


• compreender as dificuldades de se observar um problema e transformar em uma solução;
• entender os benefícios da orientação a objetos.
148 Análise de Sistemas II 12
o mesmo comportamento são agrupados em uma estrutura
Seções de estudo que chamamos de FODVVH.
Em outras palavras, um REMHWRé algo distinguível que
1 – Objetos contém um HVWDGR(atributos ou propriedades) e possui um
2 – Classes FRPSRUWDPHQWR. O comportamento é como um objeto
3 – Características da orientação a objetos age e reage, em termos de mudanças em seu estado e troca de
mensagens. Uma RSHUDomR é alguma ação que um objeto
executa sobre outro para obter uma reação. Cada objeto tem
12EMHWRV uma LGHQWLGDGHe é distinguível de outro, mesmo que seus
atributos sejam idênticos. Instâncias de classes são chamadas
CONCEITO de objetos.
Ȋ8PREMHWRWHPHVWDGRFRPSRUWDPHQWRHLGHQWLGDGHDHVWUXWXUDH 2 FRQMXQWR GH YDORUHV DVVRFLDGRV jV SURSULHGDGHV do
FRPSRUWDPHQWRGHREMHWRVVLPLODUHVV¥RGHȴQLGRVHPVXDVFODVVHV REMHWRGHÀQHRHVWDGRGHVWHRFRPSRUWDPHQWRGHVFUHYHDV
FRPXQVRVWHUPRVLQVW¤QFLDHREMHWRVV¥RSHUPXW£YHLV VLPLODUHV ȋ mudanças do estado do objeto interagindo com o seu mundo
%22&+  externo, através das operações realizadas pelo objeto.
A comunicação entre objetos se dá por meio de troca de
Grady Booch (1955-) é um informático
mensagens. Assim, para acessar a estrutura de dados de outro
americano. Seu livro “Software Um objeto pode objeto, um objeto deve enviar uma mensagem para aquele
Engineering with Ada” lançou as raízes
do projeto orientado a objetos. Esse VHU GHÀQLGR FRPR XPD outro objeto. Uma mensagem consiste do nome de uma
trabalho evoluiu para uma metodologia
de desenvolvimento de sistemas entidade do mundo real operação e dos argumentos requeridos para que a operação
orientados a objetos publicada em seu que tem uma identidade. seja executada.
livro “Object- Oriented Analysis and
Design with Applications”. Em 1996, .KRVKDÀDQ  &RSHODQG O comportamento de um objeto representa como
em parceria com Ivar Jacobson e James
Rumbaugh, lançou uma linguagem citados por Booch (2005, este objeto reage, em termos de suas mudanças de estado,
XQLȴFDGDSDUDDPRGHODJHPGHVRIWZDUH p. 91) oferecem a seguinte jV PHQVDJHQV D HOH HQYLDGDV RX VHMD XP FRQMXQWR GH
que se tornou um padrão da indústria, a
UML. (Wikipedia, 2013) GHÀQLomR mensagens a que um objeto pode responder representa seu
comportamento.
A troca de mensagens é uma parte da equaçãoTXHGHÀQHR
6DEHU0DLV
comportamento de um objeto, uma vez que o estado de um
ȊΖGHQWLGDGH«DSURSULHGDGHGHXPREMHWRTXHRGLVWLQJXH
objeto afeta seu comportamento. Na maioria das linguagens
GHWRGRVRVRXWURVREMHWRVȋ
de programação orientadas a objetos, as operações que os
No mundo real um objeto limita-se a existir, mas, no clientes podem executar são tipicamente declaradas como
que se refere ao mundo da tecnologia da informação, cada métodos, que fazem parte da declaração das classes (veremos
REMHWRGLVS}HGHXPLGHQWLÀFDGRU~QLFRSHORqual pode ser o conceito de classe mais adiante). O estado de um objeto
referenciado inequivocamente (RUMBAUGH et al., 2005). representa os resultados cumulativos de seu comportamento
Os objetos podem representar uma entidade concreta (BOOCH, 2005).
(o parágrafo de um documento, a janela num computador, Um objeto é, pois, uma entidade que tem seus atributos
um aluno deste curso, o carro do aluno, um arquivo do representados por tipos de dados e seu comportamento
computador) ou uma entidade conceitual (uma regra num representado por operações.
sistema ou uma estratégia de jogo). A criação de um objeto é chamada de LQVWDQFLDomR.
Cada instância tem seus próprios valores para seus atributos,
mas compartilha o nome e os comportamentos dos atributos
com as outras instâncias da mesma classe.
A orientação a objetos possui alguns conceitos
fundamentais que norteiam todas as formulações e facilitam
a sua aplicação em software. As seções que seguem apresentam
outraV GHÀQLo}HV UHODFLRQDGDV j WHFQRORJLD GH REMHWRV TXH
sãRGHH[WUHPDLPSRUWkQFLDjFRPSUHHQVmRGDVDWLYLGDGHs e
metodologias baseadas em objetos.

1D SUµ[LPD VH©¥R YHUHPRV GHȴQL©·HV GH FODVVHV RXWUR WHUPR


HVVHQFLDOQDRULHQWD©¥RDREMHWRV

Figura 2.1. Características do objeto.


Fonte: Booch (2005) 2 - Classes
A estrutura de um objeto é representada por um Uma FODVVe é o agrupamento de objetos que possuem
conjunto de atributos. O comportamento do objeto é características idênticas, ou seja, com a mesma estrutura de
representado por um conjunto de operações que podem ser GDGRV GHÀQLGDSHORVatributos ou propriedades) e comportamento
executadas sobre o objeto. Objetos com a mesma estrutura e (operações).
13 149
Os atributos são “variáveis” ou campos que indicam $VHJXLUYHUHPRVDVFDUDFWHU¯VWLFDVPDLVLPSRUWDQWHVGDRULHQWD©¥R
possíveis informações armazenadas por um objeto de uma DREMHWRVTXHV¥R$EVWUD©¥R+LHUDUTXLD(QFDSVXODPHQWR+HUDQ©D
classe. Por exemplo: nome, cpf, endereço. H3ROLPRUȴVPR
Métodos são funcionalidades da classe. Exemplo:
calcular saldo, atualizar estoque, lançar nota.
O conceito de classe é bastante semelhante ao conceito 3  &DUDFWHU¯VWLFDV GD RULHQWD©¥R D
de tipo de dados de outras linguagens tradicionais. Da mesma objetos
IRUPD TXH SRGHPRV GHÀQLU RV Q~PHURV UHDLV FRPo um
conjunto de valores numéricos que possuem casas decimais, A Orientação a Objetos se caracteriza principalmente
ou strings como um conjunto de valores alfanuméricos, SHODDEVWUDomRHQFDSVXODPHQWRKHUDQoDHSROLPRUÀVPR
chamados de cadeia de caracteres,WDPEpPSRGHPRVGHÀQLU Usando como exemplo um sistema de cadastramento
o conceito de uma classe. de veículos, teríamos, entre outras, a classe VEÍCULOS que
As classes são um conjunto de “coisas”. Posteriormente, conteria um conjunto de registros ou ocorrência, um para
veremos que essas coisas são chamadas de objetos que cada veículo cadastrado. Cada um destes registros representa
apresentam características semelhantes. Numa classe, além um OBJETO para a OOA (Object Oriented Analysis - Análise
GHGHÀQLUPRVVXDVFDUDFWHUtVWLFDVWDPEpPSRGHPRVGHÀQLU Orientada a Objetos).
seu “comportamento”, que é expresso através de funções e Se aprofundássemos a nossa análise, descobriríamos
procedimentos. que existem tipos diferentes de veículos tais como: veículo-
Uma classe é uma abstração que descreve as propriedades caminhão, veículo-de-passeio e veículo- ônibus. Estaríamos
importantes para uma aplicação e não leva em conta as outras. diante das subclasses da classe veículo. É interessante notar
Exemplos de classes: Parágrafo, Janela, Aluno, Carro. Cada que,HPERUDH[LVWDPDWULEXWRVHFRPSRUWDPHQWRVHVSHFtÀFRV
a cada uma das subclasses, também existem atributos e
FODVVHGHVFUHYHXPFRQMXQWRSRVVLYHOPHQWHLQÀQLWRde objetos
comportamentos comuns entre elas, isto é, as subclasses
individuais. Cada objeto é uma LQVWkQFLD de uma classe.
herdam características das classes hierarquicamente
Assim, cada instância de classe tem seus próprios valores para
superiores. Este aspecto – HERANÇA – é profundamente
cada um dos atributos da classe, mas compartilham os nomes
explorado e é uma das razões de ser das tecnologias orientadas
dos atributos e métodos com as outras instâncias da classe.
a objeto.
Pensemos na classe CARRO. Essa classe define os
Pelo que foi exposto até agora parece não haver muita
comportamentos e atributos de um carro, e existem atributos
diferença entre a Análise Orientada a Objetos e a Modelagem
que serão comuns a todos os carros. As rodas e o motor são
Entidade-Relacionamento, mas essa diferença existe e é
atributos comuns a qualquer carro. Já uma Ferrari possui
fundamental.
atributos que são específicos dela, o valor por exemplo.
Na OOA, guardamos nas classes de objeto mais que
simplesmente os dados ou atributos; guardamos também, os
serviços exclusivos sobre esses dados.
No exemplo da classe VEÍCULOS, teríamos os atributos
Placa, Proprietário, Data-Compra, Potência, Marca, Cor
etc. E os serviços Incluir- Veículo, Calcular-idade-Veículo,
Deletar-Veículo, entre outros. Para a subclasse VEÍCULOS
– CAMINHÃO, além do que foi herdado, teríamos os
atributos Capacidade-de-cargas e Distância-entre-Eixos, e
mais os serviços de Calcular- Tempo-Vida-Útil e Reservar-
Espaço-para-frete.
Na OOA, só é possível incluir, alterar, acessar e
excluir objetos de uma classe através de um acionamento
de seus serviços exclusivos. Trata-se do conceito de
ENCAPSULAMENTO, que dá a uma classe de objetos,
Figura 2.2. Classe de objetos – Classe Carro.
características de “caixa-preta”. Para acionar estes serviços, o
Fonte: Booch (2005) usuário ou outro objeto deve emitir uma mensagem para o
objeto receptor, indicando qual função deve ser executada e
Uma classe é um conjunto de objetos do mesmo tipo. quais os argumentos servirão de parâmetros para essa função.
Todos os objetos de uma classe têm a mesma característica e Nas linguagens tradicionais, não orientadas a objetos, seria
realizam as mesmas funções. algo parecido com acionar uma sub- rotina chamando um
Fazendo uma comparação entre o Modelo Entidades procedimento ou função.
Relacionamentos (MER ou DER) e o Modelo Orientado a
objetos (OO), podemos dizer que: 3.1 - Abstração
MER....................................................................................OO A abstração consiste em enfocar os aspectos mais
Entidades.......................................................................Classes importantes de um objeto (visão externa; o que é e o que ele
Ocorrência.....................................................................Objeto faz), ignorando suas características internas (visão interna;
Atributo.......................................................................Atributo como ele deve ser implementado).
150 Análise de Sistemas II 14
4XDQGRXVDPRVDEVWUDomRDGPLWLPRVTXHRTXe estamos
3DUD5HȵHWLU
considerando é complexo; em vez de tentar compreender o
$DEVWUD©¥RFRQVLVWHHPUHWLUDUGRGRP¯QLRGRSUREOHPDRVGHWDOKHV
todo, selecionamos parte dele. Sabemos que existem detalhes
UHOHYDQWHVHUHSUHVHQWDORVHPXPDIRUPDGHVROX©¥R
adicionais; simplesmente optamos por não considerá-los
Abstração é uma das formas fundamentais do ser humano neste momento.
lidar com complexidade. Shaw, citado por Booch (2005, p. Ao aplicar a abstração de dados, um analistDGHÀQHRV
  GHÀQH DEVWUDomR FRPR ´XPD GHVFULomR VLPSOLÀFDGD atributos e os serviços que manipulam exclusivamente esses
RXHVSHFLÀFDomRGHXPsistema que dá ênfase a alguns dos atributos. O único jeito de chegar até os atributos é através de
detalhes ou propriedades do sistema enquanto suprimem um serviço. Os atributos e seus serviços podem ser tratados
outros. Uma boa abstração é aquela que enfatiza detalhes que como um todo intrínseco (COAD <OURDON, 1992).
VmRVLJQLÀFDQWHVSDUDROHLWRURXXVXiULRHVXSULPHGHWDOKHV
que são, para o momento, imateriais ou desviadores do foco.” 3.2+LHUDUTXLD
Uma abstração denota as características $ +LHUDUTXLD p XP HQÀOHLUDPHQWR RX RUGHQDomR GDs
essenciais de um objeto que o distinguem abstrações. A estrutura do objeto é importante uma vez que
de todos os outros tipos de objetos e ilustra como diferentes objetos colaboram uns com os outros
desta maneira, fornece limites conceituais através de padrões de interação, chamados mecanismos. A
FODUDPHQWH GHÀQLGRV UHODWLYRV j SHUVSHFWLYD estrutura de classes é igualmente importante, uma vez que
do observador. A abstração enfoca a visão destaca a estrutura comum e comportamento dentro de um
exterior de um objeto e serve para separar o VLVWHPD$LGHQWLÀFDomRGHKLHUDUTXLDVHQWUHFODVVHVHREMHWRs
comportamento essencial do objeto de sua dentro de um sistema de software complexo não é uma tarefa
implementação. (BOOCH, 2005) fácil, uma vez que requer a descoberta de padrões entre vários
objetos. No entanto, a partir do momento em que essas
estruturas estiverem mapeadas, a estrutura do sistema e seu
entendimento se tornam bastanteVLPSOLÀFDGRV

3.3 - Encapsulamento
O encapsulamento consiste em ocultar ao usuário o
funcionamento interno de uma classe. A principal vantagem
do encapsulamento é permitir que os programadores mudem
a implementação de uma classe sem que precisem alterar
algum código gerado. O encapsulamento é o empacotamento
de dados (atributos) e de operações sobre estes (métodos),
também conhecido como a capacidade de “esconder
informação” de detalhes de implementação (abstração).
Figura 2.3. A abstração enfoca as características essenciais de um objeto, No caso da orientação a objetos, os dados não podem ser
relativas à visão do observador. Fonte: Booch (2005)
acessados diretamente, mas através de mensagens enviadas
para as operações. O uso de encapsulamento permite que a
1DÀJXUDSRGHPRVYHUTXHFDGDREVHUYDGRUWHPXPa
implementação dHXPREMHWRSRVVDVHUPRGLÀFDGD sem afetar
abstração diferente do objeto focado, enquanto a vovó vê o
as aplicações que usam este objeto ou a forma de acessá-lo.
gato como uma bola de pelos, a veterinária vê sua anatomia.
Cada uma vê da forma do seu interesse.
Abstração é o princípio de ignorar os
aspectos de um assunto não relevante para o
propósito em questão, tornando possível uma
concentração maior nos assuntos principais.
A abstração consiste então na seleção que
um analista faz de alguns aspectos, ignorando
outros (COA' <285'21 

Figura 2.5. O encapsulamento esconde os detalhes da implementação de um


objeto. Fonte: Booch (2005)

No encapsulamento, os usuários têm conhecimento


apenas das operações que podem ser realizadas e precisam
estar cientes apenas do que as operações realizam e não como
Figura 2.4. Transformação do problema em modelo de sistema, através da
abstração Fonte: http://www.cpdee.ufmg.br elas estão implementadas (BOOCH, 2005).
15 151
O encapsulamento é mais frequentemente alcançado
através do ocultamento das informações, que é o processo
de esconder os detalhes de um objeto que não contribuem
para suas características essenciais; tipicamente a estrutura de
um objeto é escondida, bem como a implementação de seus
métodos.
Por exemplo, para se cadastrar uma localização turística
e suas atrações através de um sistema desenvolvido para
Web, uma pessoa não precisa conhecer sua estrutura interna
(tabelas, atributos, classes) nem tão pouco como se dá a
implementação de seus métodos. Sabe-se que é necessário
acessar a página via Internet, mas não é preciso saber como
esta operação é implementada (construída). Dessa forma, o Figura 2.6. Exemplo de Herança. Fonte: Microsoft.com

usuário precisa conhecer apenas a interface (neste caso, as


telas) que permite a ele executar operações do tipo incluir, Esta relação entre classes é uma das grandes vantagens
alterar, excluir ou consultar, e não como essas operações são de sistemas orientados a objetos por causa da redução de
de fato implementadas. trabalho resultante durante o projeto e a programação destes.
Existem dois tipos de herança:
3.4+HUDQ©D
• herança simples, onde uma subclasse tem somente
A Herança é uma das principais características da uma superclasse, ou seja, uma subclasse herda
orientação ao objetos, pois permite o reaproveitamento de apenas as características de uma superclasse;
métodos e atributos, diminuindo o tempo de desenvolvimento • herança múltipla, na qual uma subclasse herda
do sistema e facilita as futuras manutenções. simultaneamente de várias superclasses.
A herança consiste no compartilhamento de atributos e
operações entre as classes baseado num relacionamento de 3.5 - 3ROLPRUȴVPR
hierarquia. Permite que uma nova classe seja descrita a partir
de outra classe já existente (reutilização). A subclasse herda 2 SROLPRUÀVPR VLJQLÀFD TXH XPD PHVPD RSHUDomo
as características e o comportamento da superclasse, além de pode se comportar de forma diferente em classes diferentes.
poder adicionar novas características e comportamentos aos ([HPSORGHSROLPRUÀVPRDRSHUDomRFDOFXODURSHUtPHWUR
herdados; por exemplo, a classe DXWRPyYHOherda da classe que é diferente para as instâncias de classe círculo e polígono
YHtFXOR algumas propriedades e operações, pois a classe ou a operação PRYHUdiferente para janela de computador e
automóvel pertencHjFODVVHYHtFXOR para uma peça de um jogo de xadrez. Uma operação que tem
A Herança é um mecanismo onde temos uma classe mais de um método que a implementa é dita SROLPyUÀFD, ou
GHÀQLGDDSDUWLUGH outra, adicionando todas as funcionalidades seja, pode possuir várias formas. Uma mesma função pode
e propriedades daquela primeira (chamada de superclasse) e apresentar diferentes “comportamentos”, daí o nome do
podendo adicionar outras funcionalidades e propriedades para FRQFHLWR3ROLPRUÀVPRTXHTXHUGL]HUYiULDVIRUPDV
a classe criada a partir da primeira (chamada de subclasse). O usuário não precisa saber quantas implementações
Sua utilização força que a subclasse inclua todos os métodos e existem para uma operação, ou explicitar qual método deve
propriedades de sua superclasse; ser utilizado: a linguagem de programação deve ser capaz de
A utilização da herança representa mais que uma selecionar o método correto a partir do nome da operação,
simples economia na criaçãRGRSURJUDPDHODVLJQLÀFDPDLV classe do objeto e argumentos (parâmetros) para a operação.
LQWHJULGDGH4XDQGo um comportamento (método) é alterado, Assim, novas classes podem ser adicionadas sem a necessidade
todas as classes que descendem dela terão acesso aos métodos GHPRGLÀFDomRGHFyGLJRMá existente, pois cada classe apenas
atualizados, sem a necessidade de serem refeitos. GHÀQHos seus métodos e atributos.
Uma FODVVHSRGHVHUGHÀQLGDGHIRUPDDEUDQJHQWH (como
no caso do exemplo anterior) e posteriormenteUHÀQDGDHP Retomando a aula
termos de subclasses e assim sucessivamente. Podemos dizer
com isso que a classe automóvel é uma subclasse da classe
veículo e que a classe veículo é uma superclasse.
O conceito de herança para o paradigma da orientação 1HVWD DXOD HVWXGDPRV GHȴQL©·HV LPSRUWDQWHV GH
a objetos é bastante semelhante ao conceito de herança que WHUPRV XVDGRV IUHTXHQWHPHQWH QD RULHQWD©¥R D
conhecemos no nosso dia a dia. Cada um de nós herdou REMHWRV9DPRVUHFRUGDUDOJXQVWµSLFRVLPSRUWDQWHV
características existentes em nossos antecessores, sejam elas GHVWD$XOD"
características físicas ou de comportamento. Da mesma
forma, as classes e, por consequência, seus objetos, também ²2EMHWRV
têm a possibilidade de herdar características e métodos Um objeto é qualquer “coisa”, lugar, relatório, evento,
GHÀQLGRVSUHYLDPHQWH para seus antecessores. tela ou conceito que se aplique ao sistema. Todo objeto
pertence a uma classe e tem seus próprios atributos. Os
152 Análise de Sistemas II 16
atributos dos objetos são mutáveis e podem receber valores
diferentes conforme as características do objeto. Minhas anotações

²&ODVVHV
Uma classe representa um conjunto de objetos. Estes,
apesar de possuírem atributos iguais, têm valores diferentes
em seus atributos. Uma classe é um modelo e todos os seus
objetos têm os mesmos atributos, embora sejam atributos que
podem ter valores diferentes, e os mesmos métodos.

²&DUDFWHUtVWLFDVGDRULHQWDomRDREMHWRV
Na abstração, nós isolamos os objetos que queremos
representar do ambiente complexo em que se situam, e nesses
objetos representamos someta as características que são
relevantes para o problema em questão.
O encapsulamento é um dos pilares da orientação a
objetos, sua característica é ocultar partes da implementação,
e assim construir softwares que atinjam suas funcionalidades e
escondam os detalhes de implementação do mundo exterior.
Os objetos encapsulados funcionam como uma caixa preta,
sabe- se da sua interface externa, mas não precisa se preocupar
com o que acontece dentro dela.
A herança é uma das principais características das
linguagens de programação orientadas a objetos, permite
o reaproveitamento de métodos e atributos diminuindo o
tempo de desenvolvimento, ainda reduz as linhas de código,
desta forma facilita as manutenções futuras.
2SROLPRUÀVPRHVWiGLUHWDPHQWHOLJDGRjKHUHGLWDULHGDGH
das classes, este trabalha com a redeclararão de métodos
herdados, ou seja, os métodos têm a mesma assinatura (têm
o mesmo nome), mas a forma de implementação utilizada
diferem o da superclasse.

Vale a pena

9DOHDpena ler
PRESSMAN, Roger. Engenharia de Software. São Paulo-
SP: Makron Books, 2006. SOMMERVILLE, I. Engenharia
de Software. 8ª Edição. Addison Wesley, 2007. BOOCH,
Grady, JACOBSON, Ivar; RUMBAUGH, James. UML –
guia do usuário. Elsevier, Rio de Janeiro. 2005.

9DOHDpena assistir
• YouTube. Vídeo aula de orientação a objetos. Disponível em:
<http://www.youtube.com/watch?v=t9Cd7EWL0eo!.
Acesso em 01/12/2013

Você também pode gostar