Escolar Documentos
Profissional Documentos
Cultura Documentos
Questões comentadas
Prof. Alexandre Lênin Aula 1
SUMÁRIO PÁGINA
1. Resumo 02
2. Questões comentadas 17
4. Gabaritos 79
Prezados amigos,
Para refletir:
"Dar menos do que o seu melhor é sacrificar o dom".
Steve Prefontaine
Forte abraço,
Prof. Lênin
1. Resumo
a. Classificação
Classificação significa que os objetos com a mesma estrutura de dados
(chamados atributos) e o mesmo comportamento (chamados operações
ou métodos) são agrupados em uma classe. Classe é uma abstração que
descreve propriedades importantes para uma aplicação e ignora o
restante.
A escolha de classes depende da aplicação. Cada classe descreve um
conjunto possivelmente infinito de objetos individuais e cada objeto é uma
instância de sua classe.
Uma instância da classe tem seu próprio valor para cada atributo,
mas compartilha os nomes de atributos e operações com outras instâncias
da mesma classe.
b. Identidade
Identidade é a subdivisão dos dados em entidades discretas e distintas,
que são objetos. Cada objeto tem sua própria identidade, ou seja, são
distintos mesmo que todos os valores de seus atributos sejam idênticos,
como nome e tamanho, por exemplo.
No mundo real, um objeto limita-se a existir, mas no que se refere a
linguagem de programação, cada objeto possui um único indicador, pelo
qual ele pode ser referenciado sem erros.
d. Compartilhamento
O compartilhamento (herança) da estrutura de dados e do seu
comportamento permite que a estrutura comum seja compartilhada por
diversas subclasses semelhantes, sem redundâncias. O desenvolvimento
baseado em objetos não somente permite que as informações sejam
e. Polimorfismo
É quando a MESMA operação pode atuar de modos diversos em
classes diferentes. Uma operação é uma ação (ou transformação) que
um objeto executa (ou a que ele está sujeito). Uma implementação
específica de uma operação por uma determinada classe é chamada de
método.
Pode haver mais de um método para a implementação de um operador
baseado em objetos, pois ele é polimórfico.
g. Encapsulamento
Também conhecido como ocultamento de informações, consiste na
separação dos aspectos externos de um objeto, acessíveis por outros
objetos, dos detalhes internos da implementação daquele objeto.
O encapsulamento impede que um programa se torne tão dependente que
uma pequena modificação possa causar grandes efeitos de propagação.
1 Utilização da UML
Os principais objetivos da UML são:
Fornecer aos usuários uma linguagem de modelagem visual
expressiva e pronta para o uso, visando o desenvolvimento de
modelos de produtos de software.
Fornecer mecanismos para apoiar conceitos essenciais.
Ser independente de linguagens de programação e processos de
desenvolvimento.
Encorajar o crescimento no número de ferramentas orientadas a
objeto no mercado.
Suportar conceitos de desenvolvimento de nível mais elevado tais
como colaborações, estrutura de trabalho, padrões e componentes.
Integrar no projeto as melhores práticas de desenvolvimento
Orientado a Objetos.
A UML abrange todas as etapas da produção de software, mas
principalmente é utilizada para traduzir os requerimentos do sistema (em
alto nível e mais próximos do usuário) em componentes codificáveis (mais
próximos da aplicação). Mesmo estando entre essas duas camadas, a UML
pretende ser fácil de entender para todos os envolvidos. A UML é uma
linguagem, e como tal, é um meio de comunicação. Através de diagramas
gráficos é mais fácil discutir e visualizar as ideias e soluções entre a
equipe, ou com o usuário.
A utilização da UML permite visualizar melhor as fronteiras de um sistema
e suas funções principais utilizando atores e casos de uso, ilustrar a
realização de casos de uso com diagramas de interação, representar a
estrutura estática de um sistema utilizando diagramas de classe, modelar
o comportamento de objetos com diagramas de estado, e ainda,
representar a arquitetura de implementação física com diagramas de
componente e de implantação.
A UML é, então, uma linguagem destinada a visualizar, especificar,
construir e documentar sistemas complexos de software. Estes sistemas
podem ser empregados em diferentes áreas, como: telecomunicações,
vendas, bancos, Web, entre outros.
2 Diagramas na UML
Um diagrama é a representação gráfica de um conjunto de elementos do
sistema sob uma determinada perspectiva, criando uma projeção do
sistema. Logo, ele representa um modelo (representação abstrata) de
algo real.
Comportamento.
Os diagramas gerados podem (e devem) ser empregados para a
prototipação do sistema, podendo-se avaliar se ele cumpre realmente
seus requisitos. Na Análise Orientada a Objetos, podem-se empregar
diferentes diagramas da UML, de acordo com a necessidade do projeto.
Os diferentes diagramas permitem ao Analista observar o software sob
diferentes aspectos – Visões. O emprego de cada diagrama é
determinado de acordo com as características do sistema. A seguir são
estudados alguns destes diagramas.
6 - Diagrama de Classes
No Diagrama de Classes representa-se a estrutura estática do sistema. O
diagrama é considerado estático porque a estrutura descrita é sempre
válida em qualquer ponto do ciclo de vida do sistema. Este diagrama é
considerado o principal da OOA. Geralmente, a implementação do
software é feita baseando-se no Diagrama de Classes.
O diagrama de classes da UML é o resultado de uma combinação dos
diagramas propostos pela OMT, Booch e vários outros métodos. Consiste
em uma estrutura lógica estática em uma superfície de duas
dimensões mostrando uma coleção de elementos declarativos de modelo,
como classes, tipos e seus respectivos conteúdos e relações.
6.1 Classes
Uma classe é a descrição de um grupo de objetos com propriedades
similares (atributos), comportamento comum (operações ou
métodos), relacionamentos comuns com outros objetos (associações) e
semânticas idênticas.
As classes individuais são representadas na UML como um retângulo
sólido com um, dois ou três compartimentos. O primeiro compartimento é
para o nome da classe e é obrigatório, o segundo e o terceiro
compartimento são opcionais e podem ser usados para listar
respectivamente os atributos e as operações definidas para a classe.
A figura a seguir apresenta uma classe na notação UML.
Nome da Classe
Atributo
atributo: tipo do dado
atributo: tipo do dado = valor inicial
...
Operação
operação (lista de argumentos)
...
Funções;
Unidades Organizacionais;
Lugares; e
Estruturas.
Após identificar as possíveis classes, deve-se analisá-las para
determinar aquelas que realmente são válidas, de acordo com as
seguintes informações:
Informação Retida;
Serviços necessários;
Múltiplos Atributos;
Atributos Comuns;
Operações Comuns;
Requisitos Essenciais.
6.2 Relacionamentos
Os relacionamentos ligam as classes/objetos entre si criando relações
lógicas entre estas entidades. Os tipos principais de relacionamentos no
diagrama de classes:
7 - Diagrama de Sequência
O Diagrama de Sequência representa as interações do sistema como uma
série contínua de mensagens entre os objetos, que colaboram entre si
para produzir um resultado esperado. Este diagrama é utilizado também
para mostrar uma instância de um Caso de Uso.
Dentro de um diagrama de sequência, um objeto é desenhado como um
retângulo no topo de uma linha vertical tracejada projetada para baixo,
chamada linha de vida do objeto.
Cada mensagem é representada por uma linha com seta dirigida
horizontalmente entre as linhas de vida dos objetos. A ordem na qual
estas mensagens acontecem (fluxo de tempo) é mostrada do topo da
página para baixo.
As mensagens são etiquetadas com o seu nome e podem também conter
informações como condições para execução, parâmetros e informações de
controle. A figura a seguir apresenta um exemplo da notação do Diagrama
de Sequência.
2. Questões Comentadas
1. (FUNRIO/2009/FURNAS/Engenheiro da Computação) Um
estereótipo em UML é
A) uma forma de organizar diversos elementos de um modelo em
grupos.
B) a especificação de uma condição que deve ser satisfeita por um
sistema.
C) um mecanismo usado para estender o significado de um elemento
em um diagrama.
D) um papel desempenhado por um usuário ou sistema quando
participa de um caso de uso.
E) uma relação estrutural pela qual classes ou objetos estão
interconectados.
Comentários
A resposta correta é o item C, é através do mecanismo estereótipo em
UML que podemos incluir um ou mais novos elementos de um
determinado modelo. Desta forma você poderá gerar recursos que não
estejam presentes originalmente na linguagem, ou como indicado na
questão, você pode estender o significado de um elemento em um
diagrama.
GABARITO: C.
Comentários
O item I está correto, pois os Diagramas de Classes são os diagramas
encontrados com mais frequência na modelagem de sistemas orientados a
objetos, ele mostra um conjunto de classes, interfaces e colaborações com
seus relacionamentos. E este diagrama é usado para fazer a modelagem
da visão estática do projeto de um sistema.
O Item II também está correto, uma vez que os diagramas de casos de
uso são um dos diagramas disponíveis na UML para a modelagem de
aspectos dinâmicos de sistemas, o seu papel central é a modelagem do
comportamento de um sistema, de um subsistema ou de uma classe,
onde, cada um mostra um conjunto de casos de uso e interações entre
atores e seus relacionamentos.
O item III está errado, o diagrama de atividade é o diagrama que modela
os fluxos de atividades de negócio em uma aplicação. O diagrama de
estados mostra quais os estados os objetos podem assumir e quais os
eventos que provocam as mudanças de estado, enquanto o diagrama de
atividade é uma variação do diagrama de estados, mas com propósito
diferente. Ele se preocupa com as ações (trabalhos e atividades que serão
executados) e os resultados.
Desta forma, temos os itens I e II corretos e o III errado. O gabarito,
portanto, é a letra B.
GABARITO: B.
4. (FUNRIO/2008/Analista de Sistemas)
Diagrama de Atividades
Dentre as opções listadas na questão, a letra D contém apenas itens de
diagramas comportamentais.
GABARITO: D.
B) sequência.
C) estados.
D) atividades.
E) componentes.
Comentários
A resposta correta é o item D, um diagrama de atividade mostra um
processo de negócios ou um processo de software como um fluxo de
trabalho por meio de uma série de ações. Pessoas, computadores ou
componentes de software podem executar essas ações. Vale apena
lembrar que este diagrama é um dos 5(cinco) diagramas
comportamentais disponíveis na UML.
GABARITO: D.
B) Composição.
C) Agregação.
D) Generalização.
E) Pertinência.
Comentários
Uma associação representa que duas classes possuem uma ligação (link)
entre elas, ou seja, estão associadas. A associação mais comum é a
associação Normal, que é apenas uma conexão entre as classes, temos a
associação Recursiva, que possibilita a conexão de uma classe a ela
mesma através de uma associação, associação Ternária, onde mais de
duas classes podem ser associadas entre si e por último a associação de
Agregação, citada no item C, o item correto, ela é um caso particular da
associação que indica que uma das classes do relacionamento é uma
parte, ou está contida em outra classe. As palavras chaves usadas para
identificar uma agregação são: "consiste em", "contém", "é parte de". Na
questão podemos substituir a expressão “é formada por” na frase “Uma
equipe é formada por diversos jogadores” por “Uma equipe contém
diversos jogadores” ou “Uma equipe consiste em diversos jogadores”,
assim identificamos uma agregação.
GABARITO: C.
GABARITO: D.
GABARITO: A.
funcionais
São requisitos diretamente ligados à funcionalidade do software,
descrevem as funções que o software deve executar.
Thayer (1990) corrobora a definição anterior, ao especificar que requisito
funcional é um requisito de sistema de software que especifica uma
função que o sistema ou componente deve ser capaz de realizar. Estes
são requisitos de software que definem o comportamento do sistema, ou
seja, o processo ou transformação que componentes de software ou
hardware efetuam sobre as entradas para gerar as saídas. Esses
requisitos capturam as funcionalidades sob o ponto de vista do usuário.
Alguns exemplos são:
• O software deve permitir o cadastro de clientes;
• O software deve permitir a geração de relatórios sobre o desempenho
de vendas no semestre;
• O software deve permitir o pagamento das compras através de cartão
de crédito.
é feita, em parte, por meio de testes, enquanto que outra parte é avaliada
de maneira subjetiva.
Requisitos não funcionais são aqueles que não estão diretamente
relacionados à funcionalidade de um sistema. O termo requisitos não
funcionais é também chamado de atributos de qualidade. Se tais
requisitos não são levados em consideração, então o sistema de software
poderá ser inconsistente e de baixa qualidade. Para tanto, quanto mais
cedo forem definidos os critérios arquiteturais, mais cedo o projetista
pode identificar o estilo, ou combinação de estilos, mais apropriado ao
sistema considerado.
Alguns exemplos são:
• O software deve ser compatível com os browsers IE (versão 8.0 ou
superior) e Firefox (1.0 ou superior);
• O software deve garantir que o tempo de retorno das consultas não
seja maior do que 5 segundos.
Considere, por exemplo, o padrão IEEE-Std 830-1993 [IEEE 1993] que
lista um conjunto de 13 requisitos não funcionais a serem considerados no
documento de especificação de requisitos de software. Este padrão inclui,
dentre outros, requisitos de desempenho, confiabilidade, portabilidade e
segurança. Embora haja um conjunto de propostas, consideradas como
complementares, concentraremos nossas atenções num conjunto de
requisitos diretamente associados a um sistema de software e,
especificamente, à arquitetura de software. Este conjunto é baseado
numa classificação apresentada por Sommerville (2007), em que é feita a
distinção entre requisitos externos, de produto, e de processo.
A figura seguinte é uma adaptação da proposta de Sommerville, onde
consideramos os requisitos de produto, associados à arquitetura de
software, bem como adicionamos outros não presentes na proposta
original de Sommerville. É importante observar que a figura mostra um
subconjunto de requisitos não funcionais, denominados de requisitos de
produtos os quais estão associados à arquitetura de um sistema de
software.
Note que a classificação apresentada em Sommerville (2007) ainda
considera os requisitos de processo e requisitos externos como sendo
requisitos não funcionais, além dos requisitos de produtos. A figura
seguinte exibe um conjunto de 7 requisitos não funcionais, sendo alguns
destes ainda decompostos.
Requisitos de domínio
São requisitos derivados do domínio da aplicação e descrevem
características do sistema e qualidades que refletem o domínio. Podem ser
requisitos funcionais novos, restrições sobre requisitos existentes ou
computações específicas. Dois exemplos de requisitos do domínio são:
• O cálculo da média final de cada aluno é dado pela fórmula:
Item c. Pode ser exigido que o sistema ofereça uma forma para o usuário
ler um documento. Isso pode ser definido como uma funcionalidade
OBRIGATÓRIA para o sistema, o que torna o mesmo um requisito
Funcional. Item CERTO.
GABARITO: C.
GABARITO: CERTO.
GABARITO: CERTO.
Objetos
Pacotes
Diagramas de Interação: representam a interação que ocorre entre
os objetos.
Comunicação
Sequência
Sincronismo
GABARITO: ERRADO.
é uma lista que indica os tipos de todos os seus argumentos, sendo assim
métodos com mesmo nome são considerados diferentes se recebem um
diferente número ou tipo de argumentos e tem, portanto, uma assinatura
diferente.
A seguir, apresenta-se um exemplo de sobrecarga.
GABARITO: CERTO.
Associação Recursiva
Associação Qualificada
GABARITO: B.
Comentários
A questão está errada por conta da parte final: “As operações CRUD
(create, read, update e delete) são consideradas pertencentes às entradas
externas”. Naverdade apenas create, update e delete são entradas
externas, uma vez que atualizam arquivos lógicos internos. Mas a
operação Read é consulta externa, pois objetiva recuperar dados
armazenados nos arquivos lógicos.
GABARITO: item ERRADO.
1. (FUNRIO/2009/FURNAS/Engenheiro da Computação) Um
estereótipo em UML é
A) uma forma de organizar diversos elementos de um modelo em
grupos.
B) a especificação de uma condição que deve ser satisfeita por um
sistema.
C) um mecanismo usado para estender o significado de um elemento
em um diagrama.
D) um papel desempenhado por um usuário ou sistema quando
participa de um caso de uso.
E) uma relação estrutural pela qual classes ou objetos estão
interconectados.
4. (FUNRIO/2008/Analista de Sistemas)
D) conexão e colaboração.
E) interação e navegação.
A) Funcional
B) De Classes
C) De Contexto
D) De Atividades
E) Comportamental
4. Gabaritos
01 02 03 04 05 06 07 08 09 10
C B B D E D A C A D
11 12 13 14 15 16 17 18 19 20
A C A D E A C C C E
21 22 23 24 25 26 27 28 29 30
E C E C E C E C E E
31 32 33 34 35 36 37 38 39 40
C E C E C D A C A D
41 42 43 44 45 46 47 48 49 50
A B D B E C E