Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

1ºAula
Orientação a objetos
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• conhecer os conceitos de 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.
Prezados(as) alunos(as),
Em nossa primeira aula, vamos estudar os conceitos 
importantes sobre orientação a objetos.
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!
141
Análise de Sistemas II 6
Seções de estudo
1 – Conceitos da orientação a objetos
2 – A complexidade do domínio do problema
3 – Benefícios da orientação a objetos
1 - Conceitos da orientação a objetos
CONCEITO
CURIOSIDADE
“Uma abordagem orientada a objetos para o desenvolvimento de 
software 
O conceito de orientação a objetos já vem sendo 
discutido há algum tempo. Por volta de 1970, surgiram 
as primeiras publicações, mas a sua maior disseminação 
ocorreu nos anos 90, quando se tornou uma das principais 
metodologias de desenvolvimento de software. Desde o 
lançamento da primeira linguagem orientada a objetos, a 
SIMULA, várias referências da engenharia de software mundial 
como: Peter Coad, Edward Yourdon e Roger Pressman 
abordaram extensamente a análise orientada a objetos como 
um grande avanço no desenvolvimento de sistemas.
No início dos anos 80, surgiu a análise essencial para 
sistemas em tempo real, que ajudaram a análise estruturada 
por eventos, delimitando a área de atuação do sistema, através 
da utilização da lista de eventos, o conceito de “tecnologia 
introduzindo o modelo Entidade Relacionamento (DER). 
As suas principais vantagens residem em oferecer critérios 
objetivos para o particionamento do sistema, observando 
suas características, facilita a obtenção da solução, através dos 
eventos, isola os requisitos de restrições de implementação, 
de análise e sincroniza a modelagem de dados com a de 
processos.
Entretanto, os sistemas desenvolvidos baseados nas 
técnicas estruturadas ainda apresentam algumas limitações, 
principalmente quando da inclusão de novas funções ou 
alterações em funções já existentes, que na maior parte das 
vezes, provocam problemas em outras partes do software.
A grande esperança que levou aos estudos da orientação 
a objetos com mais intensidade foi a de suprir algumas 
das principais preocupações das empresas de software: a 
necessidade cada vez mais crescente de se construir softwares 
corporativos de forma muito mais rápida, com baixo custo, 
em desenvolvimento de software, de Orientação a Objetos. 
apresenta a sua visão do que entende por essa abordagem. 
Alguns dos conceitos encontrados são:
• a orientação a objetos pode ser vista como a 
abordagem de modelagem e desenvolvimento 
de sistemas que facilita a construção de sistemas 
complexos a partir de componentes individuais;
• o desenvolvimento orientado a objetos é a técnica 
de construção de software na forma de uma coleção 
estruturada de implementações de tipos abstratos 
de dados;
• desenvolvimento de sistemas orientado a objetos é 
um estilo de desenvolvimento de aplicações onde 
o encapsulamento potencial e real de processos 
e dados é reconhecido num estágio inicial de 
desenvolvimento e num alto nível de abstração, 
com vistas a construir de forma econômica o que 
• a orientação a objetos é uma forma de organizar o 
software como uma coleção de objetos discretos que 
incorporam estrutura de dados e comportamento;
• quando construídos corretamente, sistemas 
possuem estruturas bem conhecidas e provêm a 
oportunidade de criar e implementar componentes 
totalmente reutilizáveis;
• modelos orientados a objetos são implementados 
convenientemente, utilizando uma linguagem de 
programação orientada a objetos. A engenharia de 
software orientada a objetos é muito mais que utilizar 
mecanismos de sua linguagem de programação, é 
saber utilizar, da melhor forma possível, todas as 
técnicas da modelagem orientada a objetos;
• a orientação a objetos não é só teoria, mas uma 
usadas em inúmeros projetos e para construção de 
diferentes tipos de sistemas;
• a orientação a objetos requer um método que integre 
o processo de desenvolvimento e a linguagem 
de modelagem com a construção de técnicas e 
ferramentas adequadas.
A Orientação a Objetos é um dos maiores, e talvez o 
maior avanço em software destes últimos anos. Ela nos oferece 
uma forma mais natural de se analisar o mundo e transformar 
as necessidades em programas que irão resolver nossos 
problemas. Ela nos permite construir sistemas melhores e 
mais fáceis de dar manutenção.
As técnicas de análise estruturadas ainda hoje são as mais 
sempre tiveram grande aceitação desde que foram lançadas 
sendo utilizadas, a decomposição das funções (chamada 
mostrou-se inadequada em situações de sistemas complexos 
aperfeiçoamentos foram introduzidos desde então, e ajudaram 
existe uma probabilidade maior de que os sistemas criados 
142
7
com as técnicas estruturadas sejam mais difíceis de serem 
incrementados com novas funções e as alterações em funções 
já existentes, muitas vezes, provocam sérios problemas em 
outras partes do software.
A orientação a objetos permite modelar de forma mais 
natural o mundo real, pois as estruturas de dados são vistas 
como objetos, ou seja, têm características e funções. Seu maior 
objetivo é aumentar a produtividade do desenvolvimento de 
software através de uma maior expansibilidade e reutilização 
de código, além de controlar a complexidade e o custo de 
manutenção.
1.1
Por muitos anos, o termo “orientado a objetos” (OO) 
foi usado para denotar uma abordagem de desenvolvimento 
de software que usava uma das linguagens de programação 
orientadas a objeto (ex. Ada 95, C++ , Eiffel, Smalltalk). Hoje, 
o paradigma abrange uma visão completa da Engenharia de 
Software. Edward Berard, citado por Pressman (2006, p.552) 
Os benefícios da tecnologia orientada 
a objetos são incrementados se ele for 
endereçado cedo - através do processo de 
engenharia de software, considerando que a 
tecnologia OO deve avaliar seu impacto em 
todo este processo. Simplesmente empregar 
a programação OO (OOP) não irá produzir 
os melhores resultados. Os engenheiros de 
software e seus gerentes devem considerar 
também itens como Análise de Requisitos 
OO (OORA), projeto OO (OOD), análise 
de domínio OO (OODA), sistemas de banco 
de dados OO (OODBMS) e engenharia de 
software auxiliada por computador orientada a 
objetos (OOCASE). (PRESSMAN, 2006, s/p)
A orientação ao objeto se dedica a desenvolver um 
modelo orientado a objetos do domínio da aplicação. Os 
estão associadas com o problema a ser resolvido.
O enfoque da orientação a objetos é uma visão sobre um 
mundo como uma coletânea de objetos que interagem entre 
si, apresentando características próprias que são representadas 
pelos seus atributos e operações.
No paradigma orientado a objetos, os dados e as funções 
são vistos de forma agregada, não ocorrendo uma modelagem 
separada para cada um desses componentes; portanto, sob 
esse ponto de vista, a orientação a objetos favorece uma 
modelagem mais natural, que melhor retrata a realidade, 
pois processos e dados estão coligados, não se encontram 
dissociados em nenhuma atividade real.
software
2
problema
A tarefa da equipe de desenvolvimento de software é 
construir a ilusão da simplicidade (Booch, 2005), como mostra 
software 
o usuário.
Para o usuário, não importa o quão complexa é a estrutura interna 
do software, para ele o que importa é se o software resolve suas 
necessidades de forma fácil, rápida e segura. Para o usuário, o 
sistema deve ser simples.
A complexidade de um software é uma propriedade 
essencial e não acidental. Observa-se que a herança da 
complexidade deriva de quatro elementos:• A complexidade do domínio do problema – o 
domínio do problema que estamos citando aqui não 
está relacionado com “dominar o problema”, mas 
sim a abrangência, o escopo do problema, este escopo 
envolve os dados, informações, procedimentos, 
o problema. Geralmente a pessoa que desenvolve 
não é quem conhece o domínio do problema que 
está sendo analisado. É preciso destacar também 
que a tarefa de levantamento das necessidades do 
sistema é complicada e demorada, além disso, estas 
necessidades podem mudar ao longo do trabalho, 
ou seja, são instáveis. Devemos pensar também que 
o sistema precisará evoluir para continuar sendo útil 
para a empresa, portanto o domínio do problema 
não está apenas nos requisitos atuais levantados, 
mas também nas possibilidades de necessidades 
futuras que devem ser percebidas pela equipe de 
análise.
• 
– os desenvolvedores devem 
criar a ilusão da simplicidade, ou seja, por mais 
complexo que o software possa ser na sua arquitetura 
interna e nos seus procedimentos, para o usuário 
deve parecer sempre uma coisa simples e de 
fácil utilização. Outro ponto importante é que 
o tamanho do software não está ligado á sua 
qualidade, programas grandes demais não são 
ou mais complexos que outros menores, nem 
mesmo podemos dizer que programas menores 
são melhores porque foram melhor estruturados, 
tudo vai depender de como o software é construído 
e com que desenvoltura ele resolve os problemas 
do usuário. Outro problema importante que precisa 
ser gerenciado é a comunicação entre os integrantes 
da equipe de desenvolvimento, para evitar 
• 
– Um 
mesmo problema pode ser resolvido de várias 
de interesses entre integrantes da equipe de 
desenvolvimento, que podem querer, cada um dos 
integrantes, defender sua alternativa de solução 
como sendo a melhor entre todas as outras. 
Algumas vezes o desenvolvedor pode acabar 
143
Análise de Sistemas II 8
perdendo tempo tentando “reinventar a roda”, ou 
seja, criar coisas que já existem, ou ainda não querer 
aproveitar recursos já disponíveis, seria como se um 
construtor quisesse fabricar os tijolos que irá usar 
na sua obra, ou plantar as árvores para ter a madeira 
que precisará durante a construção. A falta de 
padronização dos procedimentos é outro problema 
que é comum na indústria de software
muito o trabalho em equipe.
• 
um sistema deverá se comportar em determinadas 
situações é uma tarefa que exige um grande esforço 
de equipe e uma grande percepção das necessidades 
e limitações do usuário.
software
Podemos dizer que sistemas complexos são aqueles que 
possuem algumas das características fundamentais, como:
• possuem um longo ciclo de vida;
• 
todos os detalhes do projeto;
• a complexidade pode ultrapassar a capacidade da 
percepção humana, o que vai exigir um esforço em 
conjunto para resolver determinados problemas;
• em alguns sistemas, a complexidade estará sempre 
presente e pode apenas ser gerenciada e não 
superada, mesmo que este gerenciamento deva ser 
Serão descritos a seguir alguns princípios para administrar 
a complexidade, ou seja, levar ordem ao caos.
Figura 1.1. A complexidade do software
Fonte: Booch (2005)
2.1
trazendo ordem ao caos
Administrar a complexidade dos sistemas é tarefa 
essencial, pois sem ela os sistemas acabam por não atender 
todas as necessidades dos usuários, ou podem atender de 
forma errada, além disso, os prazos não serão cumpridos e o 
de construção do sistema.
2.1.1
Dividir um problema maior em partes menores é 
importante para facilitar o entendimento das necessidades, 
pois é muito mais tranquilo administrar problemas menores 
um sistema de software complexo está sendo projetado é 
essencial decompô-lo em partes cada vez menores, cada 
Dessa forma, é possível satisfazer a uma restrição real que 
existe sobre a capacidade de cognição humana: para entender 
qualquer nível de um sistema, é necessário compreender 
somente um pequeno número de partes de uma vez (ao invés 
inteligente endereça diretamente a complexidade inerente do 
software através de uma divisão forçada do espaço do estado 
do sistema” (BOOCH, 2005, s/p).
Para entender melhor o problema como um todo, é 
preciso que se tenha inicialmente uma visão geral sobre 
ele, sem se preocupar inicialmente com os detalhes 
procedimentais que possam aparecer no decorrer do processo 
de desenvolvimento. A partir daí, esse problema “grande” 
deverá ser subdividido em problemas menores e, aí sim, a cada 
subdivisão, os detalhes irão aparecer naturalmente, mas aí já 
será mais fácil administrar a complexidade desses problemas, 
uma vez que eles irão aparecer em porções menores.
A complexidade é organizada como uma hierarquia, 
um sistema complexo é composto por subsistemas inter-
relacionados que, por sua vez, têm seus próprios subsistemas 
e assim por diante, até que se chegue a componentes 
quais serão os componentes mais elementares de um sistema 
e quais são os mais primitivos será uma decisão arbitrária 
da equipe de análise e depende basicamente da visão que o 
observador do sistema terá.
pois descobrir as abstrações e mecanismos comuns num sistema 
Um dos maiores problemas para os desenvolvedores 
de software é conseguir transformar necessidades de 
gerenciamento de informação em soluções de software. Os 
experimentos de Miller, citados por Booch (2005) relatam que 
ele concluiu que “um indivíduo pode compreender somente 
sete (mais ou menos duas) partes de informação ao mesmo 
tempo. Este número aparece como sendo independente do 
conteúdo da informação”. Miller observou que “o espaço do 
julgamento absoluto e o espaço de memória imediata impõem 
várias limitações na quantidade de informação que as pessoas 
estão aptas a receber, processar e relembrar.
Através da organização dos estímulos de entrada 
simultaneamente em várias direções e sucessivamente 
144
9
dentro de uma sequência de partes, o ser humano é capaz de 
interromper esse engarrafamento (entrave) de informação.” 
perceber até sete níveis de informação sem se perder, com 
uma variação de mais ou menos duas. A partir deste número 
da informação. Em termos contemporâneos, este processo é 
chamado .
Uma forma de facilitar o entendimento de sistemas 
complexos é descobrir abstrações, mecanismos comuns e 
elementos já conhecidos em outras situações.
CURIOSIDADE
Um motorista consegue dirigir um novo modelo de carro 
Wulf, citado por Booch, (2005) descreve que:
os humanos desenvolveram uma técnica 
poderosa e excepcional para lidar com a 
complexidade. Eles a abstraem. Uma vez 
que o ser humano é inábil para dominar um 
objeto complexo por total, ele escolhe ignorar 
os detalhes não essenciais, lidando, no lugar, 
com um modelo de objetos idealizado e 
generalizado” (BOOCH, 2005, s/p).
Em cada nível de abstração, os elementos cooperam 
entre si para desempenharem suas funcionalidades por meio 
de uma interface e oferecem serviços para os níveis mais altos.
3
O benefício principal do desenvolvimento Orientado a 
Objetos não é reduzir o tempo de desenvolvimento. Ele pode 
levar mais tempo que o desenvolvimento convencional 
porque na Orientação a Objetos se pretende que haja a 
promoção da reutilização futura e a redução dos erros 
posteriores e futuras manutenções. O tempo transcorrido até 
que o código esteja completo pela primeira vez é possivelmente 
ou em alguns casos ligeiramente maior.
O benefício da Orientação a Objetos consiste em que as 
interações subsequentes são mais rápidas e mais fáceis do que 
empregando um método convencional, porque as revisões estão 
mais localizadas. A prática mostra que é necessário um menor 
número de interações porque um maior número de problemas 
são descobertos e corrigidos durante o desenvolvimento.
As técnicas de Orientação a Objeto pressupõem que 
se possam criar sistemas compondo-se objetos previamente 
criados e, consequentemente, reduzindo-se o tempo 
produtividade e qualidade.
Durante as seções anteriores comentamos sobre algumas 
das vantagens do uso da tecnologiade orientação a objetos 
para desenvolvimento de sistemas, vamos agora destacar 
detalhes de alguns dos principais benefícios:
• 
desenvolvimento estruturado, em que se elabora um 
projeto e depois se faz os programas, podemos ter 
seus objetivos depois de implementado. No 
desenvolvimento OOP (Object Oriented Project, ou 
Projeto Orientado a Objetos), devido ao fato deste 
ser feito de maneira quase que interativa com o 
A pouca quantidade de código programável 
projeto.
• 
reage aos erros imprevistos como: uma falha na 
impressora, ou um disco cheio. Tanto maior for a 
potencialidade, maior a capacidade do programa 
em causar o menor “estrago” possível aos dados e 
evitar uma saída drástica do sistema.
• - Dizemos que quanto maior for a 
extensibilidade do software, maior será sua capacidade 
analistas.
• - A capacidade de se otimizar a 
produtividade do programador depende diretamente 
da maneira como o software disponibiliza a 
reutilização do código (programa fonte) gerado. 
já reutiliza código anteriormente gerado, porém a 
perfeita reutilização consiste na utilização completa 
de um código gerado para algum sistema sem 
qualquer outra adaptação prévia.
• - A aplicação dos 
conceitos da orientação a objetos na análise de 
sistemas permitirá modelar a empresa ou as áreas 
da aplicação de uma forma mais natural, visto que 
os recursos a serem aplicados retratam com mais 
facilidade o mundo real. A capacidade de retratar 
o universo pesquisado é moldado em diagramas 
mundo real. A própria transição entre etapas na 
construção do software, aplicando- se o paradigma 
os mesmos conceitos e linguagem.
• 
de métodos reduz a complexidade na construção 
do código dos programas. Isso traz simplicidade 
software.
Devemos lembrar que os benefícios da orientação a 
objetos serão maiores e mais evidentes se ela for adotada do 
software.
Na prática, podemos dizer que a maior vantagem 
da orientação a objetos é a facilidade de manutenção do 
sistema (quando OO é aplicado corretamente). Mas, tem 
como desvantagem um maior tempo para desenvolvimento. 
Levantar um sistema orientado a objetos dá um pouco mais de 
145
Análise de Sistemas II 10
trabalho que um sistema procedural, pois temos que planejar 
o sistema pensando nos objetos e suas funções e não apenas 
nas funções que o sistema irá executar.
A orientação a objetos também possui algumas desvantagens 
• maior tempo necessário para o desenvolvimento do 
projeto do sistema;
• complexidade no aprendizado para 
desenvolvedores de linguagens estruturadas – 
com o desenvolvimento estruturado sentem maior 
orientação a objetos;
• maior uso de memória, por exemplo para aplicações 
móveis em algumas linguagens como o JavaME;
• maior esforço na modelagem de um sistema OO do 
que um sistema estruturado, porém oferece menor 
• dependência de funcionalidades já implementadas 
em superclasses no caso da herança, implementações 
espalhadas em classes diferentes (veremos o 
CURIOSIDADE
Retomando a aula
A orientação a objetos surgiu com o intuito de tornar 
possível criar sistemas mais complexos de forma mais rápida 
e que pudessem receber manutenção de forma que não fosse 
necessário fazer muitas mudanças na estrutura do projeto do 
sistema.
Apesar da maior complexidade nos trabalhos iniciais, a 
orientação a objetos permite que sistemas mais complexos 
possam ser desenvolvidos mais rapidamente.
2 – A complexidade do domínio do problema
A complexidade dos sistemas precisa ser administrada, 
mas isto não é uma tarefa simples, pois envolve uma série 
de problemas relacionados a: complexidade do domínio do 
caracterização do comportamento de sistemas.
Uma das formas de gerenciar a complexidade é a 
decomposição, que permite dividir problemas grandes em 
partes menores, tornando-os problemas menores e mais 
facilmente gerenciáveis.
Os principais benefícios da orientação a objetos são: 
exatidão, potencialidade, extensibilidade, reutilização, 
mais simples.
No entanto, vamos observar que foram citadas várias 
outras vantagens, entre elas, a maior facilidade quando se 
software.
Podemos apontar outros benefícios importantes como 
o ciclo de vida mais longo para os sistemas, desenvolvimento 
mais acelerado sem que isto implique em perda da qualidade, 
possibilidade de se construir sistema muito mais complexos 
pela incorporação de funções prontas (reutilização), menor 
custo para desenvolvimento e manutenção de sistemas.
Vale a pena
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.
pena ler
• YOUTUBE. Conceitos básicos de orientação a 
objetos. Disponível em:

Mais conteúdos dessa disciplina