Você está na página 1de 9

Paradigma orientado a objetos

1 -) Explique a diferença entre herança e composição em um sistema Orientado a


Objetos? Apresente um exemplo para cada conceito.
A generalização pode ser vista como um nível de abstração acima da encontrada entre
classes e objetos. Na generalização, classes semelhantes são agrupadas em uma
hierarquia. Cada nível dessa hierarquia pode ser visto como um nível de abstração.
Cada classe em um nível da hierarquia herda as características e o comportamento das
classes às quais está associada nos níveis acima dela. Além disso, essa classe pode
definir características e comportamento particulares. Dessa forma, novas classes
podem ser criadas a partir do reuso da definição de outras preexistentes. O mecanismo
de generalização facilita o compartilhamento de comportamento comum entre um
conjunto de classes semelhantes.
De uma forma geral objetos podem ser compostos de outros objetos; esse é o princípio
da composição. A composição permite que criemos objetos a partir da reunião de
outros objetos.
2-) Explique a diferença entre classe e objeto? Apresente um exemplo para cada
conceito.
Uma classe é uma descrição dos atributos e serviços comuns a um grupo de objetos.
Sendo assim, pode-se entender uma classe como sendo um molde a partir do qual
objetos são construídos. Uma classe é uma abstração das características de um grupo
de coisas do mundo real.
um objeto é uma instância de uma classe. O objeto é uma unidade autônoma que
contém seus próprios dados que são manipulados pelos processos definidos para o
objeto e que interage com outros objetos para alcançar um objetivo. Objetos são coisas
do mundo real.
Quando se pensa em um cavalo, logo vem à mente um animal de quatro patas, cauda,
crina etc. Pode ser que algum dia você veja dois cavalos, um mais baixo que o outro,
um com cauda maior que o outro, ou mesmo, por um acaso infeliz, um cavalo com
menos patas que o outro. No entanto, você ainda terá certeza de estar diante de dois
cavalos. Isso porque a ideia (classe) cavalo está formada na mente dos seres humanos,
independentemente das pequenas diferenças que possa haver entre os exemplares
(objetos) da ideia cavalo.
3-) O que é abstração dentro da Orientação a Objetos?
A abstração esconde o que não é relevante, esconde detalhes desnecessários, uma
classe é uma abstração das características de um grupo de coisas do mundo real. Só as
características relevantes à resolução de um problema devem ser consideradas.
4-) Explique por que um sistema Orientado a Objetos pode ser comparado às células
do corpo humano.
R: Porque cada parte de um sistema de software interage com outras, assim como
células, através do envio de mensagens com o objetivo realizar um objetivo comum.
Além disso, cada célula se comportaria como uma unidade autônoma, assim como um
objeto no sistema orientado a objetos.
5-) Explique o conceito de Encapsulamento e Polimorfismo na orientação a objetos,
como um conceito complementa o outro?
R: Encapsulamento: Objetos possuem comportamento (o termo comportamento diz
respeito a que operações são realizadas por um objeto e de que modo estas operações
são executadas).
De acordo com o encapsulamento, objetos devem “esconder” a sua complexidade.
Esse princípio aumenta qualidade do SSOO, em termos de: legibilidade, clareza e reuso.
O encapsulamento é uma forma de restringir o acesso ao comportamento interno de
um objeto.
Um objeto que precise da colaboração de outro para realizar alguma tarefa
simplesmente envia uma mensagem a este último.
O método (maneira de fazer) que o objeto requisitado usa para realizar a tarefa não é
conhecido dos objetos requisitantes.
Polimorfismo: É a habilidade de objetos de classes diferentes responderem a mesma
mensagem de diferentes maneiras. Isso significa que objetos de classes diferentes
podem ser tratados de forma uniforme, desde que possuam uma interface comum,
como um método com o mesmo nome e parâmetros (mas com implementações
específicas para cada classe). O polimorfismo trabalha com a redeclararão de métodos
previamente herdados por uma classe. Esses métodos, embora semelhantes, diferem
de alguma forma da implementação utilizada na superclasse, sendo necessário,
portanto, reimplementá-los na subclasse.
A relação entre encapsulamento e polimorfismo na programação orientada a objetos é
que o encapsulamento ajuda a estabelecer uma interface clara e protegida para os
objetos de uma classe, enquanto o polimorfismo permite que esses objetos interajam
de maneira flexível e uniforme com base nessa interface.

6-) Como a herança pode contribuir com o polimorfismo na Orientação a Objetos.


R: A herança permite que objetos que são estendidos compartilhem das mesmas
características da superclasse, e com a ajuda do polimorfismo dessa forma cada classe
pode reagir a mesma mensagem de maneiras diferentes.
7-) Qual a diferença entre o paradigma estruturado e o paradigma orientado a
objetos no desenvolvimento de software?
R: No paradigma orientado a objetos, o software funciona como um sistema onde cada
objeto possui sua responsabilidade e caso necessário pode se comunicar com outros
objetos para realizar uma determinada tarefa, e no estruturado o software é
construído de uma maneira sequencial, existindo uma ênfase na sequência de passos e
na lógica do processo.
8-) explique os motivos para um objeto fazer o estímulo a outros objetos?
R: O principal motivo é a separação de responsabilidades, e caso um objeto precise
fazer algo que não seja da sua responsabilidade ele precisa solicitar a um objeto que
saiba responder ao estímulo.
5-1: Descreva a posição do diagrama de classes no processo de desenvolvimento
incremental e iterativo. Quando eles são utilizados? Para que são utilizados?
R: Os diagramas de classe é uma ferramenta importante durante todo o
desenvolvimento de software, porque ajuda a eliminar inconsistências e redundâncias
que podem surgir, além de fornecer informações importantes.
5-4: Desenhe um diagrama de classes com relacionamentos, nomes de papéis e
multiplicidades para as seguintes situações:
• Uma Pessoa pode ser casada com outra Pessoa;
• Uma Disciplina é pré-requisito para outra Disciplina;
• Uma Peça pode ser composta de diversas outras Peças.
R:
5-5: Considere o diagrama de classes a seguir, que exibe uma classe associativa entre
as classes Pessoa e Empresa. Crie um diagrama de classes equivalente ao fornecido a
seguir, mas sem utilizar uma classe associativa.
R:

5-6: Construa um diagrama de classes inicial para a seguinte situação: Pacotes são enviados
de uma localidade a outra. Pacotes têm um peso específico. Localidades são caracterizadas
pelas facilidades de transporte (p. ex., rodoviárias, aeroportos e autoestradas). Algumas
localidades são vizinhas, isto é, existe uma rota direta de transporte entre tais localidades. A
rota de transporte entre as localidades tem certo comprimento (a distância entre as
localidades). Trens, aviões e caminhões são usados para o transporte de pacotes. Cada um
destes meios de transporte pode suportar uma carga máxima de peso. A cada momento,
durante o seu transporte, é necessário saber a posição (localidade) de cada pacote. Também
é necessário manter o controle de que meio de transporte está sendo utilizado em cada
parte da rota para um certo pacote.

R:

5-9: Identifique classes e/ou relacionamentos a partir das seguintes regras do negócio:

a) Pedidos são compostos de vários itens de pedido.

b) Um item de pedido diz respeito a um e exatamente um produto.

c) Um pedido pode conter até 20 itens.


R:

5-13: A seguir, são enumeradas diversas responsabilidades típicas de serem encontradas em


objetos de um sistema de software. No contexto da categorização BCE, discuta qual das
categorias de objetos (fronteira, controle ou entidade) é mais 1. 2. 3. 4. adequada para
cumprir cada uma dessas responsabilidades:

a) Criação ou destruição de um objeto.

R: Entidade

b) Formação ou destruição de associações entre objetos de entidade.

R: Controle

c) Obtenção ou modificação de valores de atributos de um objeto de entidade.

R: Controle

d) Exibição de mensagens para o ator.

R: Fronteira

e) Realização de cálculos complexos.

R: Controle

5-14: Considere as instâncias das classes do diagrama exibido a seguir. Para o diagrama de
classes apresentado, qual das seguintes situações são possíveis?

e1 contém um d1, o qual contém um e2, o qual contém um b2. R: falso

a1 contém um c1, o qual contém um d1. R: falso

b1 contém um d1, o qual contém um e2. R: falso

c1 contém um a1, o qual contém b1. R: falso

5-16: Analise os dois fragmentos de diagrama de classes a seguir. Eles são equivalentes?
Explique sua resposta.

R: Sim, visto que os dois fragmentos representam as mesmas informações, onde seus
relacionamentos são de muitos para muitos.

5.17. Desenvolva o diagrama de classes de análise do seguinte sistema de hotelaria:

Desenvolva o modelo de domínio para um sistema de controle de hotelaria de acordo com os


seguintes fatos:

• O hotel aluga quartos de diversas categorias (simples, duplo, casal, luxo etc.). O valor dos
quartos varia de acordo com a categoria.
• Os quartos do hotel podem ser reservados previamente antes de os hóspedes virem ocupá-
los. Para isso, é necessário informar os dados do cliente que os está reservando, a data da
reserva e a provável data em que um quarto será desocupado.

• Cada hóspede precisa ser identificado no momento em que ocupa um quarto, mesmo que
este seja pago por outro cliente. Caso seu cadastro ainda não exista ou seus dados tenham
mudado, será necessário cadastrá-lo.

• Um hóspede pode alugar muitos quartos, em um mesmo momento ou em momentos


diferentes, e um quarto pode ser alugado por muitos hóspedes, em momentos diferentes,
naturalmente.

• Dependendo da categoria do quarto, terá uma determinada quantidade de itens, tanto no


quarto propriamente dito como no frigobar.

• Um hóspede pode consumir itens do frigobar. Cada item tem valores e quantidades
diferentes. É preciso registrar o consumo do hóspede para posterior cobrança.

• Um hóspede pode solicitar serviços do hotel, como passar roupas ou lavanderia. Da mesma
forma que o consumo, cada serviço solicitado precisa ser registrado.

• Cada quarto ocupado gera diárias sempre ao meio-dia. Uma diária deve ser paga
exclusivamente por um determinado hóspede (ou pelo cliente que fez a reserva), mas um
hóspede pode pagar muitas diárias.

• É necessário saber qual funcionário foi responsável pela locação e/ou encerramento de
cada locação de um quarto.

R:

7-1: Descreva a posição dos diagramas de interação no processo de desenvolvimento


incremental e iterativo. Quando eles são utilizados? Para que são utilizados?

R: A modelagem de interações tem como principais objetivos proporcionar informações


adicionais para aprimorar e complementar outros modelos, como os modelos de casos de uso
e de classes, e fornecer aos programadores uma visão detalhada dos objetos e mensagens
envolvidos na execução dos casos de uso do sistema. Em um processo incremental e iterativo,
é inerente que os modelos evoluam de maneira conjunta ao longo do desenvolvimento do
sistema, mesmo representando visões distintas e interdependentes.

Em sistemas complexos, a execução pode seguir uma variedade imensa de caminhos, tornando
desafiadora a definição do comportamento de cada classe. Nesse contexto, a abordagem
iterativa revela-se a melhor alternativa: inicialmente, desenvolvem-se os modelos de casos de
uso e de classes; em seguida, elabora-se o modelo de interações e de estados; por fim, o
projetista retorna aos modelos iniciais para assegurar a consistência interna e em relação aos
demais modelos. Essa abordagem iterativa permite uma evolução progressiva e coesa dos
modelos durante o processo de desenvolvimento do sistema.

7-2: Ivar Jacobson, um dos proponentes da UML, disse uma vez: “Somente após a construção
de diagramas de interação para os cenários de um caso de uso pode-se ter certeza de que
todas as responsabilidades que os objetos devem cumprir foram identificadas.” Reflita sobre
essa afirmativa. A construção dos diagramas de interação é realmente essencial para a
definição das responsabilidades dos objetos participantes de um caso de uso? Justifique.

R: A partir da construção do caso de uso, as responsabilidades são definidas, evitando


redundâncias, o comportamento dos objetos é validado, ajudando no processo de modelagem
e implementação do sistema.

7-3: Considere o fragmento de diagrama de sequência a seguir. Determine a ordem na qual


as mensagens m1 e m2 serão passadas.

R: 1º: m1
2º: m2
3º: m2
4º: m2
5º: m1
6º: m2
7º: m2
8º: m2

7-4: Desenhe um diagrama de comunicação equivalente ao diagrama de sequência do


exercício anterior.

R:

7-5: Construa os diagramas de comunicação equivalentes aos diagramas de sequência


apresentados na Figura 7-24 e na Figura 7-25.
R:

7-9: De acordo com a divisão de responsabilidades pelos objetos de um sistema, a


colaboração entre eles para a realização de um cenário pode ser classificada em um espectro
que vai desde a forma centralizada até a forma descentralizada. Na primeira forma de
colaboração (centralizada), a inteligência do sistema está concentrada em um único objeto.
Por outro lado, na forma descentralizada, a inteligência do sistema está mais uniformemente
espalhada pelas classes. A figura a seguir apresenta de maneira esquemática as duas
estratégias de colaboração, utilizando a notação vista para diagramas de sequência. Note
que, na estratégia centralizada, há um objeto que controla os demais (Obj1). Já na estratégia
descentralizada, há uma cadeia de delegações entre os objetos; não há um objeto central
que “conhece” todos os demais. Cada objeto realiza uma parte da tarefa. Discuta as
vantagens e desvantagens de cada uma dessas estratégias.

R: Cada estratégia possui suas vantagens e desvantagens específicas, a escolha da estratégia


ideal parte da avaliação das características específicas do sistema e de seus requisitos. Para a
divisão centralizada, podemos apontar como vantagens:

• Manutenção simplificada: o código centralizado é mais fácil de ser modificado, logo, a


manutenção é mais simples de ser realizada.

• Facilidade no controle: devido as responsabilidades estarem centralizadas, manter o controle


do sistema é mais simples.

• Tomar decisões: a responsabilidade centralizada facilita a tomada de decisões, fazendo com


que seja feita de forma mais rápida e eficiente.

Desvantagens:
• Dificuldade de crescimento: devido o objeto ser centralizado, pode haver dificuldades na
ampliação em grande escala do sistema.

• Risco de falhas: caso o objeto central falhe, todo o sistema será comprometido.

Para a divisão descentralizada, podemos apontar como vantagens:

• Resistência a falhas: como as responsabilidades estão divindades entre as partes do sistema,


havendo um ponto de falha, as outras partes podem seguir em funcionamento de maneira
independente.

• Facilidade de crescimento: novos objetos podem ser adicionados ao sistema, sem afetar os já
existentes. • Desenvolvimento: cada objeto pode ser desenvolvido e aperfeiçoado de forma
independente.

Desvantagens:

• Dificuldade de manutenção: em sistemas de grande escala, a manutenção pode ser mais


difícil, devido a quantidade de relações entre os objetos.

• Dificuldade de coordenação: uma grande quantidade de objetos, pode dificultar a


coordenação entre eles, por conta da quantidade de relacionamentos.

Você também pode gostar