Buscar

aula02

Prévia do material em texto

Met. para de Desenvolvimento de Software
2º Aula
Metodologia orientada a objetos
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
Olá, pessoal, tudo bem? 
Chegamos à segunda aula da nossa matéria. Vamos ver 
aqui como funciona a Análise Orientada a Objetos, uma das 
metodologias mais atuais do ramo. Além disso, veremos uma 
introdução da Orientação a Objetos, um dos paradigmas mais 
utilizados atualmente pelos programadores.
A sua participação é muito importante para nós.
Bons estudos!
154
11
Seções de estudo
1 - Introdução à Orientação a Objetos
1 – Introdução à Orientação a Objetos
2 – Análise Orientada a Objetos
3 – Projeto Orientado a Objetos
Apesar de ser um tópico que se popularizou nas últimas 
décadas, a orientação a objetos (também chamada de OO) já 
era discutida desde a década de 1960 e 1970, com as linguagens 
SmallTalk e SIMULA, consideradas pioneiras nesse paradigma. 
Apesar disso, demorou certo tempo para que o paradigma 
orientado a objetos fosse popularizado.
Como vimos, a análise estruturada dominou a década 
de 1980, junto com as linguagens que adotavam o paradigma 
procedimental. Esse paradigma se baseia nos comandos 
e atualização de variáveis e cada programa escrito nesse 
paradigma é visto como um conjunto de funções que 
manipulam dados. Assim, tanto a análise estruturada quanto 
o paradigma procedimental viam dados e comportamentos 
como coisas separadas.
Existem vários nomes para o paradigma procedimental, 
dependendo do autor. Ele pode ser chamado de paradigma 
imperativo, paradigma modular ou paradigma estrutural.
Segundo Lee e Tepfenhart (2002), a programação 
procedimental eliminou o código spaghetti (nomeada em 
alusão ao excesso de instruções GOTO, que dificultavam o 
entendimento e a manutenção do programa), possibilitando 
um melhor modo para construir software. Apesar de a 
programação procedimental ajudar na administração de 
funções, ela pouco ajudava na administração de dados.
Lee e Tepfenhart ainda relatam que com a ascensão da 
modelagem de banco de dados na década de 1980, através 
de autores como Peter Chen e Edgard Codd, os projetistas 
passaram a ter mais ferramentas de modelagem de dados, mas 
passou a constatar que o paradigma procedural pouco ajudava, 
pois, como ressaltado, o paradigma procedural colocava pouca 
organização sobre os dados, ou seja, geria os dados de forma 
débil. Além disso, nenhuma das duas modelagens permitia 
capturar satisfatoriamente o comportamento dinâmico das 
entidades de um programa.
Assim, o paradigma orientado a objetos foi visto como 
o paradigma que satisfazia essas necessidades. Como veremos 
mais tarde, o paradigma orientado a objetos não vê um 
programa como um conjunto de funções que compõem, 
e sim um conjunto de objetos, onde cada objeto contém os 
dados que o identificam e os seus métodos, que representam 
seu comportamento perante o programa. Como os dados e 
funções ficam juntos, o programador pode estabelecer regras 
sobre o acesso aos dados. Graças a essa possibilidade, várias 
novas possibilidades surgiram na informática.
Na programação orientada a objeto, a aplicação (sistema) 
é uma rede dinâmica de objetos colaboradores. (LEE, 
Vamos ver agora os benefícios de usar a orientação a 
objetos.
1.1 - Benefícios da orientação a 
objetos
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 ocorra 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 o mesmo que o 
transcorrido em uma codificação convencional, 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, pois as revisões estão 
mais localizadas. A prática mostra que é necessário um menor 
número de interações porque um número maior de problemas 
é descoberto e corrigido durante o desenvolvimento.
As técnicas de orientação a objetos pressupõem que se 
possam criar sistemas compondo-se objetos previamente 
criados e, reduzindo-se o tempo de desenvolvimento, 
com um significativo ganho de produtividade e qualidade, 
consequentemente.
 A seguir, vamos destacar alguns benefícios do uso da 
orientação a objetos:
Exatidão: Devido à característica do desenvolvimento 
estruturado, em que se elabora um projeto e depois se faz os 
programas, podemos ter no final um sistema que não atenda 
perfeitamente 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 usuário, esse risco é 
significativamente diminuído. A pouca quantidade de código 
programável também reduz os problemas inerentes às 
mudanças das especificações durante o desenvolvimento do 
projeto.
Potencialidade: Define-se como o programa 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. 
Extensibilidade: Dizemos que quanto maior for a 
extensibilidade do software, maior será sua capacidade em 
adequar-se às especificações definidas pelos analistas.
Reutilização: 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. De fato, a maioria dos 
programadores profissionais 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.
Modelagem mais natural: 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 é moldada em diagramas que refletem 
exatamente o arranjo dos objetos no mundo real. A própria 
155
12Met. para de Desenvolvimento de Software
transição entre etapas na construção do software, aplicando-
se o paradigma orientado a objetos, são refinações sucessivas 
com os mesmos conceitos e linguagem.
Codificação dos programas de forma mais simples: 
Devido à estrutura de como se apresenta o paradigma da 
orientação a objetos, a codificação de métodos reduz a 
complexidade na construção do código dos programas. Isso 
traz simplicidade no momento de codificar, testar e manter o 
software.
Devemos lembrar que os benefícios da orientação a 
objetos serão maiores e mais evidentes se ela for adotada do 
início ao fim do processo de construção de 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 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.
No entanto, a orientação a objetos também possui 
algumas desvantagens com relação à análise estruturada, entre 
elas estão:
de linguagens estruturadas – Profissionais de desenvolvimento 
acostumados com o desenvolvimento estruturado sentem 
maior dificuldade em se adaptar aos novos conceitos da 
que um sistema estruturado, porém oferece menor esforço na 
em superclasses no caso da herança, implementações 
espalhadas em classes diferentes (veremos o conceito de 
herança e polimorfismo mais adiante).
A seguir, veremos as definições de Classes e Objetos, 
que sãoa base para o paradigma orientado a objetos.
1.2 - Objeto
Em relação ao objeto, Booch (2005) define: “Um objeto 
comportamento de objetos similares são definidos em suas 
(similares)”. 
Podemos definir um objeto como uma entidade do 
mundo real, podendo ser um carro, uma geladeira, uma 
televisão, um relatório, este parágrafo desta aula, etc. Pode 
representar algo concreto (como os exemplos acima) ou uma 
entidade conceitual (uma regra de um jogo, por exemplo).
Como vimos anteriormente, cada objeto possui 
seus dados e suas funções. Na verdade, os dados que são 
armazenados em um objeto são chamados de atributos, 
sendo que os conjuntos desses atributos formam o estado 
do objeto.
Por sua vez, as funções que ficam em um objeto, ou seja, 
o que um objeto pode fazer, são denominadas de métodos, 
que formam o comportamento do objeto. Os métodos são 
importantes, pois permitem que um objeto possa se comunicar 
com outro, por meio da troca de mensagens, chamando os 
métodos da outra classe. Além disso, cada objeto recebe uma 
identidade única, fazendo que seja distinguível de outros 
objetos que tenham valores dos seus atributos iguais.
Tomemos, por exemplo, um objeto que representa um 
carro (por exemplo, um Gol). Esse carro, por exemplo, tem 
velocidade, nível do combustível, potência, modelo e cor. 
Podemos chamar esses elementos de atributos desse objeto. 
Um carro pode acelerar e frear, caracterizando o que esse 
objeto pode fazer. Assim, podemos chamar essas duas ações 
de métodos desse objeto.
A seguir, veremos a definição de classe.
1.3 - Classe
Podemos chamar de classe o agrupamento de objetos 
que possuem características idênticas, ou seja, com a mesma 
estrutura de dados (definida pelos atributos ou propriedades) e 
comportamento (operações ou métodos).
Voltemos ao exemplo do Gol que mostramos 
anteriormente. Você concorda que outros modelos de outras 
marcas de carro, como Corsa, Uno, HB20, Fiesta (entre outros) 
possuem as mesmas características, ou seja, possuem os 
mesmos atributos (velocidade, nível do combustível, potência, 
modelo e cor) e fazem as mesmas ações (acelerar e frear)? Se 
você concorda, podemos agrupar esses objetos em uma classe 
denominada Carro.
156
13
Na realidade, quando implementamos um programa 
orientado a objetos, definimos as classes desse programa (ex. 
Carro, Moto, Relatório, Boletim etc), e ao mesmo momento, 
seus atributos e métodos. Após isso, para usar as classes, 
criamos um objeto, por meio de uma instanciação, onde 
atribuímos uma variável a um objeto no programa. Apesar 
desse nome, em muitas linguagens isso é bastante simples, 
sendo semelhante a uma inicialização de uma variável. Só que 
ao invés de atribuir um tipo predefinido a uma variável, você 
atribui um tipo que você mesmo criou a essa variável.
Agora que você já sabe o que são classes e objetos, vamos 
ver outras características da programação orientada a objetos 
que você deve saber antes de estudarmos a análise orientada 
a objetos.
1.4 - Outras características da 
orientação a objetos
Agora, vamos ver outras características que tornam a 
orientação a objetos uma tecnologia poderosa na construção 
de sistemas.
Abstração: A abstração consiste em enfocar os 
que é e o que ele faz), ignorando suas características internas 
formas fundamentais do ser humano lidar com complexidade. 
Assim, podemos usar uma parte das características e ações 
de um determinado objeto para modelar em um sistema 
computacional.
Hierarquia: A Hierarquia é um enfileiramento ou 
ordenação das abstrações. A estrutura do objeto é importante, 
uma vez que ilustra como diferentes objetos colaboram uns 
com os outros através de padrões de interação, chamados 
mecanismos. A estrutura de classes é igualmente importante, 
uma vez que destaca a estrutura comum e comportamento 
dentro de um sistema. A identificação de hierarquias entre 
classes e objetos dentro de um sistema de software complexo 
não é uma tarefa 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 simplificados. 
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 
esses (métodos), também conhecido como a capacidade 
de “esconder informação” de detalhes de implementação 
(abstração). No caso da orientação a objetos, os dados não 
podem ser acessados diretamente, mas através de mensagens 
enviadas para as operações. O uso de encapsulamento permite 
que a implementação de um objeto possa ser modificada 
sem afetar as aplicações que usam esse objeto ou a forma de 
acessá-lo.
Herança: A Herança é uma das principais 
características da orientação a objetos, pois permite o 
reaproveitamento de métodos e atributos, diminuindo o 
tempo de desenvolvimento do sistema e facilitando as futuras 
manutenções. 
Ela consiste no compartilhamento de atributos e 
operações entre as classes baseado num relacionamento de 
hierarquia. Permite que uma nova classe seja descrita a partir 
de outra classe já existente (reutilização). A subclasse herda 
as características e o comportamento da superclasse, além de 
poder adicionar novas características e comportamentos aos 
veículo algumas propriedades e operações, pois a classe 
automóvel pertence à classe veículo. Da mesma forma que 
um gerente herda as características de um funcionário, mas 
tem suas características próprias.
´
157
14Met. para de Desenvolvimento de Software
Polimorfismo: Consiste em um método de possuir 
várias implementações dentro de um mesmo programa, daí 
o nome polimorfismo. Por exemplo, a operação calcular o 
perímetro que é diferente para as instâncias de classe círculo 
e polígono ou a operação mover diferente para a janela de 
computador e para uma peça de um jogo de xadrez. 
O usuário não precisa saber quantas implementações 
existem para uma operação, ou explicitar qual método deve 
ser utilizado: a linguagem de programação deve ser capaz de 
selecionar o método correto a partir do nome da operação, 
classe do objeto e argumentos (parâmetros) para a operação. 
Assim, novas classes podem ser adicionadas sem a necessidade 
de modificação de código já existente, pois cada classe apenas 
define os seus métodos e atributos.
Agora que você já sabe como funciona o paradigma 
orientada a objetos, veremos como funciona a Análise 
Orientada a Objetos.
2 - Análise Orientada a Objetos
Segundo Engholm Jr. (2010), a etapa de análise serve 
para entender o problema a partir da perspectiva do cliente, 
sem preocupações relacionadas à tecnologia onde o sistema 
será implementado.
Assim, Engholm Jr. ressalta alguns objetivos que devem 
ser cumpridos nesta etapa:
A Análise Orientada a Objetos tem como objetivo, 
modelar quais serão as classes e os objetos que estarão no 
sistema, definindo seus papéis e o seu ciclo de vida. A base 
dessa análise são os Casos de Uso, vindos da descoberta dos 
requisitos. Por isso, ela também é chamada de Análise Baseada 
em Casos de Uso.
dele e descrevem a funcionalidade do sistema desempenhada pelos 
atores. Você pode imaginar um caso de uso como um conjunto 
de cenários, onde cada cenário é uma sequência de passos a qual 
descreve uma interação entre um usuário e o sistema. 
Imasters, 2006. 
A partir dos Casos de Uso, a análise OO detecta:
 Engholm Jr. ressalta que a análise OO gera como 
saídas:
Nesta aula, você aprenderá as etapas da Análise Orientada a Objetos. 
Nas próximas aulas, você aprenderá o que são os diagramas que 
citamos acima.
Agora, você vai saber das etapas que correspondem à 
Análise Orientada a Objetos.
2.1 - Etapas da Análise OO
Como você viu, para que possamos descobrir os 
componentes do nossosistema, precisamos saber quais serão 
os casos de uso do sistema. Mas, para sabermos quais casos 
de uso o sistema deverá ter, precisamos saber o que o cliente 
deseja. Assim, precisamos saber antes os requisitos do sistema.
Portanto, a primeira etapa da Análise Orientada a Objetos 
é a Elicitação de Requisitos, que é o processo de descoberta 
e entendimento do domínio do problema a ser atendido pelo 
sistema a ser construído, além das necessidades de negócio que 
devem ser contempladas por esse sistema.
Nesse processo participam os stakeholders, as pessoas que 
têm interesse no sistema a ser construído. Em um sistema 
comercial, podemos encaixar os diretores, funcionários, e 
proprietários da empresa nesse conceito.
Várias técnicas são aplicadas para extrair esses requisitos, 
tais como:
workshops, ou a técnica 
Delphi.
Além disso, os requisitos podem se dividir em:
Requisitos funcionais: São aqueles que definem 
funcionalidades ou ações que o sistema deve fornecer. Esses 
requisitos lidam com o que o sistema deve funcionar. Assim, 
os requisitos funcionais são, na maioria das vezes, convertidos 
para Casos de Uso.
Requisitos não funcionais: Descrevem atributos 
do sistema ou do ambiente do sistema, como extensibilidade, 
usabilidade, confiabilidade, desempenho, escalabilidade, 
performance etc.
Usamos, como exemplo, um projeto de software para 
um saque, informando sua conta, sua senha e o valor 
pretendido” é alguma ação que o sistema deve fazer, logo, é 
um requisito funcional. Já o requisito “O processo de saque 
deve ser completado em no máximo 30 segundos”. Fala de 
158
15
algum atributo que o sistema deve ter. Logo, é um requisito 
não funcional.
Com os requisitos levantados, podemos saber quais serão 
os casos de uso do sistema, que servirão de base para a nossa 
segunda etapa, que é a identificação dos componentes do 
sistema. Essa etapa compreende as seguintes tarefas:
entre os objetos.
Para isso, são usadas várias técnicas para mapear essas 
situações. Uma das formas mais usuais é a interpretação dos 
casos de uso, através da leitura dos casos e selecionando as 
seguintes situações:
Nomes, pronomes e frases substantivadas 
são grandes candidatas a serem classes e objetos. Nomes 
no singular (João, ele, ela, estação de trabalho) e nomes de 
referência direta (o sexto jogador, a transação) podem ser 
objetos. Já nomes no plural (pessoas, alunos, professores) são 
nomes podem representar 
propriedades (atributos) de um objeto, além de adjetivos e 
frases possesivas. Por exemplo, a idade da criança, o nível do 
Verbos, como pagar, solicitar, emitir, por exemplo, são 
candidatas a serem serviços, ou seja, métodos dessas classes.
Depois de selecionarmos essas situações, devemos 
eliminar alguns objetos essenciais “falsos”, através de um teste. 
Para cada objeto detectado, verifique se encaixa nas seguintes 
definições:
já selecionei antes?
pode ser definido totalmente?
Depois de refinarmos a lista, podemos verificar se há 
uma relação de generalização/especialização entre um ou 
mais objetos detectados. Uma abordagem para detectar isso é 
explicada por Lee e Tepfenhart:
Recomendamos a utilização da lista original de 
objetos potenciais, sem os objetos externos à 
aplicação, como a nossa lista de objetos que 
podem ser potencialmente utilizados em um 
relacionamento é um. Com essa lista, aplicamos 
os seguintes testes para cada par possível de 
objetos. Perguntamos: “O objeto A é um 
objeto B?” e “O objeto B é um objeto A?”. As 
respostas admissíveis são sempre, às vezes e nunca. 
Se a resposta para ambas às questões for nunca, 
os dois objetos não terão um relacionamento é 
um entre si. Se ambas as respostas forem sempre, 
(Eles ou são instâncias da mesma classe ou 
diferentes nomes para a mesma classe). Se a 
resposta para “O objeto A é um objeto B?” 
for sempre e a resposta para “O objeto B é um 
objeto A?” for às vezes [e vice-versa], então o 
objeto A terá um relacionamento é_um com 
p. 149 - Adaptado)
outro objeto, temos dois candidatos à herança. Por exemplo, 
se dissermos que um cliente é uma pessoa, e uma pessoa 
às vezes pode ser um cliente, então, dizemos que há um 
relacionamento entre eles. E em um programa, uma classe 
Cliente pode herdar atributos e comportamentos de Pessoa.
Por fim, devemos atentar a situações de composição 
(por exemplo: “Uma caixa tem 20 unidades de um produto”, 
“Um hotel possui quartos”, “Um boletim possui notas”), 
onde detectamos quando um objeto é composto por outros 
objetos. E também por situações de relacionamento, quando 
um objeto precisa saber sobre o estado de outro objeto para 
requerer os serviços deste. 
Agora que você já sabe das etapas e das técnicas da 
Análise Orientada a Objetos, veremos a etapa seguinte, que é 
o Projeto Orientado a Objetos.
3 - Projeto Orientado a Objetos
O Projeto Orientado a Objetos se dedica a desenvolver 
um modelo orientado a objetos de um sistema de software 
para implementar os requisitos. Os objetivos em um projeto 
OO estão relacionados à solução do problema que está sendo 
resolvido.
Embora a tecnologia orientada a objetos não seja 
nova, o Projeto Orientado a Objetos é uma abordagem 
inovadora para o desenvolvimento do software que, se bem 
implementada, trará benefícios substanciais para o aumento 
da produtividade com qualidade. É necessário, no entanto, 
que se consiga transpor as razões habituais de resistência para 
adoção de novas tecnologias.
Algumas das vantagens do Projeto OO são:
entre as entidades do mundo real para objetos do sistema.
adotaram ainda o projeto orientado a objetos? Alguns dos 
motivos apontados são:
know-how
não orientadas a objetos.
Além dos benefícios citados anteriormente, outros 
fatores ligados à produtividade também são esperados. Deve 
haver uma maior reutilização do software, acarretando ganhos 
159
16Met. para de Desenvolvimento de Software
de performance na construção de novos sistemas.
A partir da década de 90, as aplicações se tornaram mais 
complexas, demorando mais tempo para serem executadas e 
apresentando um índice proporcionalmente maior de falhas.
O tempo e o dinheiro necessários para a manutenção 
dessas aplicações também aumentaram substancialmente.
A fase de projeto é responsável por incorporar requisitos 
tecnológicos aos requisitos essenciais. Assim, o projetista 
deverá estar atento aos critérios de qualidade que o sistema 
terá que atender.
O projeto OO modela a solução e consiste das atividades 
de criação (como pode ser feito), enquanto que a análise 
modela o problema e consiste das atividades necessárias para 
entender o domínio do problema (o que deve ser feito).
A qualidade do projeto pode ser medida conforme os 
requisitos citados a seguir:
Funcionalidade: refere-se à existência de um conjunto 
de funções que satisfaz às necessidades explícitas e implícitas 
e suas propriedades específicas. Tem como subcaracterísticas: 
adequação, acurácia, interoperabilidade, segurança de acesso e 
conformidade.
Confiabilidade: diz respeito à capacidade do 
software de manter seu nível de desempenho, sob 
condições estabelecidas, por um período de tempo. Tem 
como subcaracterísticas: maturidade, tolerância a falhas, 
recuperabilidade e conformidade.
Usabilidade: refere-se ao esforço necessário para se 
utilizar um produto de software, bem como o julgamento 
individual de tal uso por um conjunto de usuários. Tem 
como subcaracterísticas: inteligibilidade, apreensibilidade, 
operacionalidade, atratividade e conformidade.
Eficiência: diz respeito ao relacionamento entre 
o nível de desempenho do software e a quantidade de 
recursos utilizados sob condições estabelecidas. Tem como 
subcaracterísticas: comportamento em relação ao tempo, 
comportamento em relação aos recursos e conformidade.
anutenibilidade: concerne ao esforço necessário 
para se fazer modificações no software. Tem como 
subcaracterísticas: analisabilidade, modificabilidade, 
estabilidade, testabilidade e conformidade.
Portabilidade: refere-se à capacidadedo software 
ser transferido de um ambiente para outro. Tem como 
subcaracterísticas: adaptabilidade, capacidade para ser 
instalado, coexistência, capacidade para substituir e 
conformidade.
Para auxiliar na análise e no projeto orientados a objetos, 
existem os diagramas da notação UML. Veremos esses 
diagramas a partir da próxima aula.
Retomando a aula
Parece que estamos indo bem. Então, para encerrar 
1 – Introdução a Orientação a Objetos
Vimos que a Orientação a Objetos é uma nova forma 
de enxergar elementos em um programa de computador. Ao 
invés de termos funções e dados separados, as classes definem 
tipos compostos por atributos e funções, proporcionando 
o encapsulamento dos dados. A orientação a objetos ainda 
facilita a portabilidade e a reusabilidade de código.
2 – Análise Orientada a Objetos
Vimos que a Análise Orientada a Objetos compreende a 
extração das classes, objetos, além de seus atributos e métodos 
relacionados e da extração de relacionamentos entre as classes. 
Para isso, são empregados os casos de uso extraídos através 
dos requisitos elicitados pelos stakeholders.
3 – Projeto Orientado a Objetos
Você percebeu que o Projeto Orientado a Objetos se 
dedica a desenvolver um modelo orientado a objetos de um 
sistema de software para implementar os requisitos. É uma 
abordagem nova, que propicia vários benefícios ao software.
PRESSMAN, Roger. Engenharia de Software. São Paulo-
SP: Makron Books, 2006.
SOMMERVILLE, I. Engenharia de Software. 8ª Edição. 
Addison Wesley, 2007.
James. UML – guia do usuário. Elsevier, Rio de Janeiro. 2005.
UML e 
C++-Guia prático de desenvolvimento orientado a objeto. São Paulo: 
Makron, 2002.
ENGHOLM JR, Hélio. Engenharia de Software na prática. 
São Paulo: Novatec Editora, 2010.
SEBESTA, Robert W. Conceitos de linguagens de programação. 
Porto Alegre: Bookman Editora, 2009.
Vale a pena
Vale a pena ler
Vale a pena acessar
DEVMEDIA. Análise e projeto orientado a objetos. 
Disponível em <http://www.devmedia.com.br/curso/
analise-e-projeto-orientado-a-objetos/336>. Acesso em: 24 
set. 2017.
UNESP. Projeto orientado a objetos. Disponível em <http://
www.dcce.ibilce.unesp.br/~ines/cursos/eng_soft/2006/
aula11_ProjetoOrientadoObjeto.pdf>. Acesso em: 24 set. 
2017.
CAELUM. Herança, reescrita e polimorfismo. [S.l.:] 
Caelum, [s.d.]. Disponível em: <https://www.caelum.com.
br/apostila-java-orientacao-objetos/heranca-reescrita-e-
polimorfismo/>. Acesso em: 24 set. 2017.
160

Continue navegando