Buscar

Aula 5 Modelos de classes de projeto

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Disciplina: TCC em Sistema da Informação
Aula 5: Modelos de classes de projeto
Apresentação
Nesta aula, vamos explorar as propriedades e conceitos do diagrama de classes de projeto, levando em consideração a
modelagem dos diagramas de estados e sequência, que podem ter levado à incorporação de novos métodos para as classes
envolvidas nos diversos cenários de uso do sistema.
Serão levados em consideração conceitos de coesão e acoplamento, bem como padrões de projeto e outros elementos de
reuso.
É o momento também de de�nir a arquitetura do sistema, através do diagrama de pacotes, mostrando o seu
particionamento e a interconexão entre as partes.
Objetivos
Explicar os conceitos, propriedades e técnicas para evoluir o diagrama conceitual de classes para diagrama de classes
de projeto;
Examinar conceitos de coesão e acoplamento, bem como padrões de projeto e outros elementos de reuso;
Aplicar a construção do diagrama de classes de projeto em seu TCC a partir do diagrama conceitual de classes.
Atividades inerentes ao projeto (ou design) de software
Conforme de�nido em Princípios de análise e projeto de sistemas com UML, de Eduardo Bezerra, as principais atividades
realizadas durante o projeto de software, especi�camente quando evoluímos, na fase de projeto, o diagrama conceitual de classes
para diagrama de classes de projeto.
Tais atividades são:
Clique nos botões para ver as informações.
• Re�namento do modelo conceitual de classes, acrescentando atributos e métodos que melhor de�nam as
responsabilidades de cada classe.
• Pode haver classe de análise que precise ser representada por mais de 1 classe de projeto e vice-versa (embora mais
difícil).
• São revistos e de�nidos tipos para os atributos.
• São de�nidas as navegabilidades das associações entre classes.
• Re�namento dos relacionamentos de associações, que podem vir a ser composição/agregação,
generalização/especialização, classes de associação e dependências.
• Devem ser considerados aspectos como coesão e acoplamento, garantindo maior independência entre as classes. Devem
ser considerados ainda a correta aplicação do conceito de encapsulamento.
• Destaque deve ser dado a fatoração de classes, através do conceito de herança (relacionamento de generalização e
especialização entre classes) e polimor�smo.
Re�namento dos aspectos estáticos e estruturais 
• A arquitetura lógica, diz respeito a divisão do software em camadas, incluindo aqui o modelo MVC e o modelo em camadas
de apresentação, domínio, persistência e etc. O diagrama de pacotes é o modelo disponibilizado pela UML para
representação da arquitetura lógica.
• Aspectos relevantes a serem considerados são: subsistemas, interfaces, camadas de software, como controle e
dependência entre subsistemas.
Projeto de arquitetura 
• Diz respeito a forma como os objetos são armazenados de forma persistente, em geral em banco de dados, que podem ser
relacionais, objeto relacionais ou de objetos.
• A persistência pode demandar novas classes, que sejam responsáveis por esse armazenamento no banco de dados
especi�cado (a partir desse momento as decisões de uso de linguagem de programação e SGBD começam a ocorrer.
• Tal técnica permite que se altere apenas a classe de persistência (DAO), em caso de troca de SGBD, por exemplo.
Persistência de objetos 
• As interfaces vêm sendo representadas nos diagramas de interação, como elemento através do qual se dá a interação do
usuário com o sistema. No diagrama de classes de projeto, podem tornar-se classe.
Interface 
• O uso de padrões de software tem sido bastante usado em projetos de software, na tentativa de desenhar sistemas mais
consistentes, com maior reuso.
Padrões de software 
Interações
É muito importante que avaliemos os diagramas de interação, já desenvolvidos, para de�nir melhor as classes de projeto.
Os diagramas de interação são extremamente valiosos, pois vamos entender e raciocinar em detalhes sobre quais mensagens
enviar, para quem e em que ordem.
Podemos re�etir também sobre as seguintes questões:
Quais objetos realmente precisam existir? Quais as responsabilidades de cada um?
Como os objetos interagem?
É o momento de veri�car se é possível estabelecer algum padrão de projeto dentro do
princípio de aplicação de boas práticas.
Atenção
Em geral, já aprendemos que: 
 
• Toda mensagem que chega a um objeto no diagrama de sequência ou comunicação vai representar uma operação da classe, ou
seja, um método na classe que recebe a mensagem.
Observe que ao objeto cliente chega uma mensagem de nome
procurar cliente (Id Cliente), ou seja, essa será a assinatura de
um método da classe, conforme especi�cado abaixo na classe
Cliente.
Ao criar os modelos de interação (sequência ou comunicação), geramos informações que complementam o modelo de classes
iniciado na fase de análise.
Dica
Avalie se o seu diagrama de classes está absolutamente compatível com os diagramas de sequência dos quais faz parte, ou seja,
se todas as mensagens que chegam na classe (avaliando o diagrama de sequência), de fato são métodos que estão nas
respectivas classes. O que estiver incompleto deve ser complementado.
Modelagem de classes de projeto
O diagrama de classes de um sistema é um só, que vai sendo re�nado ao longo dos momentos de análise e projeto do
desenvolvimento desse sistema.
Iniciamos avaliando o negócio e extraindo as classes a ele relacionadas.
O diagrama conceitual de classes apresenta os principais atributos e (caso desejado) os métodos derivados dos casos de uso.
Com a construção do diagrama de interação (sequência ou comunicação), começamos os re�namentos, que encerram ao �nal
do momento de projeto ou design do sistema. Assim, novas classes, relacionadas à forma de implementação, vão sendo criadas.
Novos métodos das classes existentes vão sendo adicionados, para adequar melhor a solução com as tecnologias propostas ou
alternativas.
Novas classes de negócio também podem ser inseridas nesse momento do processo de
desenvolvimento, mas isso com certeza vai representar ou novos requisitos que estão
sendo adicionados, ou falha técnica no momento anterior, onde os requisitos foram
identi�cados e de�nidos como presentes no escopo do sistema.
Outra tese famosa é a de Martin Dibelius, professor da Universidade de Heidelberg no início do século XX. Ele a�rmava que Lucas,
o autor, utilizou um diário de viagens escrito por um companheiro de Paulo, tendo ele também participado de viagens de Paulo.
O argumento principal dessa hipótese é o fato de, em alguns trechos de Atos, ser
utilizado o pronome pessoal da primeira pessoa do plural, “nós”, enquanto que em
outros trechos não é usado.
Vielhauer (2015) concorda que um itinerário de viagens foi utilizado como fonte, mas a�rma que o autor de Atos não pode ter sido
uma testemunha ocular e alguém próximo de Paulo, argumentando que são cometidos por ele equívocos históricos.
Ele cita a a�rmação de que houve uma segunda viagem missionária a Jerusalém, antes do Concílio, o que entra em contradição
com o que Paulo diz em Gálatas 1,17-2,1 e com o Decreto dos Apóstolos (At 15,23-29), que contradiz Gálatas 2,6-9.
A seguir, eis algumas situações que nos fazem acrescentar classes ao modelo conceitual, dando origem ao modelo de classes de
projeto:
1
Classes de fronteira: interface entre a aplicação e as entidades externas (usuários, sistemas, equipamentos). Os atores
comunicam-se apenas com essas classes. Dessa forma, mudanças na interface não interferem nas classes de entidade,
persistência e controle. Não devem conter lógica do negócio (melhor coesão).
2
Classes de controle: as mais conhecidas são as que controlam a realização de um caso de uso (em geral, uma classe de
controle). Casos de uso simples, como cadastramentos, não necessitam de classes de controle. Classes de controle
geram uma camada entre as classes de fronteira e a classe de entidade.
3 Classes que sirvam de base para implementação do mecanismo de herança, as chamadasclasses abstratas.
4 Controle de segurança (autorização e autenticação de acesso): usuário, per�s de acesso e login/logout.
5 Registro de ações realizadas no sistema (guardar os logs de acesso).
6 Classes de transações
7 Acesso e armazenamento
Veja abaixo a relação entre as classes de fronteira, entidade e controle.
• A classe de controle passa o “comando” para a classe de
fronteira (Boundary);
• O usuário interage com a classe de fronteira e devolve o
comando para a classe de controle;
• A classe de controle repassa para a classe de agência os
dados do saldo a consultar, pois é esta última classe que
conhece as suas contas.
 Fonte: ARAÚJO, 2009.
Cada situação exempli�cada implica na necessidade de novas responsabilidades do sistema, que demandam novas classes a ser
projetadas.
A reutilização também está presente no projeto do software, através de padrões de projeto, bibliotecas de classes (coleção de
classes com objetivo determinado), frameworks (coleção de classes em colaboração, como o hibernate e JUnit) e componentes.
Além de novas classes, vamos também re�nar as classes de�nidas no modelo conceitual de classes, no que se refere:
À visibilidade de atributos e métodos;
Aos detalhes das assinaturas dos métodos, como os argumentos adequados, e o tipo de dado que retorna;
À análise da possibilidade de uso da herança;
À identi�cação de novos métodos pela análise das interações dos diagramas de sequência e/ou comunicação;
À substituição de relacionamentos de associações por outros mais semanticamente adequados; por exemplo:
Agregação;
Composição;
Classe de relacionamento;
Dependência.
Passando da Análise ao Projeto: Classes
A seguir, veremos uma classe típica de um modelo conceitual, onde são apresentados os principais atributos e métodos obtidos
diretamente do diagrama de casos de uso, ou de outra técnica, onde poucos detalhes são apresentados.
1
O nome da classe
que representa algo relevante para o negócio.
2
Os nomes dos principais atributos
a partir dos dados recuperados da especi�cação textual dos casos de uso, sem especi�car detalhes como visibilidade e tipos
dos dados (inteiro, real, string etc.).
3
Os nomes dos métodos derivados de casos de uso
mas sem detalhes como parâmetros.
Saiba mais
Veja a representação da classe fornecedor <galeria/aula5/docs/PDF_Aula_Classe fornecedor.pdf> em um diagrama de classes de
projet.o, derivado do modelo conceitual de classes em que são acrescentados detalhes de projeto.
No diagrama conceitual de classes não há preocupação na identi�cação exata dos relacionamentos. De forma geral, são
indicados como associações.
Na elaboração do diagrama conceitual de classes, temos que nos preocupar com a melhor forma de implementar.
Considere o seguinte trecho de um diagrama conceitual de classes:
Veremos mais exemplos de derivação de diagrama de classes de projeto com base no diagrama conceitual de classes e algumas
decisões de implementação.
Adiante, um dos possíveis trechos de diagrama de classes de projeto:
Além do detalhamento dos atributos (aqui não exempli�camos métodos, propositalmente), adicionamos ao modelo de projeto:
1 A inclusão da classe Itens do Pedido, pois é necessário conhecer os produtos que pertencem a um pedido.
2
Assim sendo, o Pedido passa a ser composto de ItensPedido, pelo relacionamento de composição (a vida de Itens Pedido
depende de Pedido, ou seja, é criado e destruído por objetos da classe Pedido). E a classe itens Pedido refere-se à classe
produto. Foram adicionadas as multiplicidades dos novos relacionamentos identi�cados.
3 Como as vendas podem ter descontos unitários de produto, adicionou-se o atributo Desconto Unit na classe Itens Pedido.
4
Outra decisão de projeto foi a inclusão dos atributos Valor Pedido e Impostos Pedido, que vão armazenar o total do
pedido e o total de impostos a ser recolhidos por pedido. Tal decisão deu-se pela necessidade de uma lei vigente de
informar tais dados ao �sco.
https://stecine.azureedge.net/webaula/estacio/gon375/galeria/aula5/docs/PDF_Aula_Classe%20fornecedor.pdf
5
Na classe ProdutosE foi incluído um atributo Perc Imposto, que visa a informar o percentual de imposto daquele produto,
na venda. Esse atributo é a base para que se possa armazenar o atributo Impostos Pedido que soma o valor de todos os
impostos de todos os itens constantes no pedido.
Vamos demonstrar agora a utilidade dos modelos de interação para a construção do modelo conceitual de classes. Para tal,
vamos construir um diagrama de sequência, tomando por base:
O trecho de diagrama de casos de uso, representado pela �gura;
A especi�cação textual do caso de uso: Registrar Pedido, conforme abaixo;
O trecho do diagrama de classes de projeto, representado pela �gura.
Especi�cação do Caso de Uso: Registrar Pedido 
Objetivo: registrar os pedidos solicitados pelos clientes 
Ator(s): Atendente
Clique nos botões para ver as informações.
1. Atendente informa Id Cliente
2. Sistema Localiza Cliente
3. Para cada Item a ser inserido no pedido
3.1. Atendente informa Id Produto
3.2. Sistema localiza Produto
3.3. Atendente informa quantidade de produto
3.4. Sistema valida quantidade de produto
3.5. Sistema registra item do pedido
4. Atendente con�rma dados do pedido
5. Sistema registra pedido
Cenário Principal 
2.a. Cliente não cadastrado
1. Sistema informa “Cliente não cadastrado”
2. << Extends Incluir Cliente >>
2.a. Produto não cadastrado
1. Sistema informa: “Produto não cadastrado”
2. Sistema retorna ao passo 3.1 do cenário principal
4.a. Sem estoque su�ciente
1. Sistema informa: “Não há estoque su�ciente do produto para a quantidade informada”
2. Sistema retorna ao passo 3.3. do cenário principal
Cenários Alternativos 
Com base nos diagramas e especi�cações acima, o diagrama de sequência do cenário principal do caso de uso Registrar Pedido
pode �car (tem outras soluções) conforme abaixo.
O diagrama de sequência conta a
estória do caso de uso Registrar Pedido,
mostrando as classes que interagem e
quais mensagens são trocadas entre
eles.
Dessa solução, que é uma das possíveis, observe:
1
O método Inicializar Pedido, da classe PedidoE vai iniciar o pedido, gerando o número do pedido, através do método Gera
NumPedido, também da Classe PedidoE, criando ainda o objeto Itens Pedido, que vai armazenar os itens do pedido
inicializado, através do método Criar ItemPed, que tem como parâmetro o Num. Pedido que acabou de ser gerado.
2
Observe o lopp, quadrado que circunda desde o Item Pedido informado pelo Atendente até o retorno do método Incluir
Item Pedido (Num Pedido, Id Produto, Qtde Produto). Ele indica que todas as entradas de dados e métodos com seus
respectivos retornos são repetidos, conforme indicado na especi�cação textual do cenário principal do caso de uso em
questão (Registrar Pedido).
3
Observe que, a cada Produto e respectiva quantidade informados pelo atendente, e após veri�cações de produto
existente e quantidade em estoque, o item do pedido é registrado pelo método Incluir Item Pedido (Num Pedido, Id
Produto, Qtde Produto) da classe Itens Pedido.
4 Ao �nal, após o �m do loop, o pedido é con�rmado pelo Atendente, e então é �nalizado (registro efetivamente inserido).
Outra situação que deve ser analisada é a representação de herança no diagrama conceitual de classes, conforme abaixo
explicitado:
 Fonte: Extraído do livro proprietário da disciplina Modelagem de Sistemas [Seses].
Ao pensar no modelo conceitual de classes, temos três possibilidades:
Clique nos botões para ver as informações.
Quando as três classes têm relacionamentos individuais e há uma quantidade equivalente e equilibrada de atributos nas
quatro classes.
Opção 1: Manter as mesmas classes 
Quando a classe pai tem a maioria de relacionamentos e atributos. Nesse caso, essa classe absorve todos os atributos,
métodos e relacionamentos das classes �lhas.
Opção 2: Manter apenas a classe pai (Funcionário) 
Ou seja, a classe pai não tem relacionamentosou atributos especí�cos. Mas pode ser mantida no modelo, como uma classe
abstrata , ou seja, não tem atribuição especí�ca no contexto, mas incorpora o que há de comum entre as �lhas. Também
pode ser eliminada, dependendo da solução desejada.
Opção 3: Manter apenas as classes �lhas (diretoria, gerência e operação) 
1
Comentário
No exemplo ilustrado no trecho de diagrama de classes , vemos a classe empregado atuando como classe abstrata. Essa deve ter
ao menos um método abstrato.
 
Nesse exemplo, a classe empregada tem o método abstrato Vencimento() implementado pelo método de mesma assinatura, mas
com os respectivos códigos implementados, conforme o tipo de empregado (assalariado, comissionado e horista).
Conceitos de acoplamento e coesão
Quando falamos em arquitetura de um sistema, estamos falando de sua organização em partes, das relações de dependências
entre as partes e da forma como dividimos os elementos do sistema entre essas partes.
Quando falamos de partes, estamos nos referindo a subsistemas, módulos, pacotes, classes, componentes, métodos de uma
classe ou qualquer outra forma de organizar os elementos de um sistema.
Há dois conceitos relevantes que estão diretamente relacionados ao conceito de arquitetura de software: acoplamento e coesão.
Acoplamento
Diz respeito a dependência entre as partes, a forma
como estão relacionadas ou acopladas.
Coesão
Diz respeito ao grau de dependências entre os
elementos internos das partes do sistema.
https://stecine.azureedge.net/webaula/estacio/gon375/aula5.html
Continue lendo...

Continue lendo...
As classes precisam ser construídas levando em consideração a análise de coesão
entre as suas funcionalidades e ainda a avaliação do acoplamento entre as classes.
Considere, ainda nessa análise sobre as classes, o conceito de responsabilidade, que veremos mais detalhadamente a seguir.
Responsabilidade das classes
Uma das formas mais clássicas de pensar sobre projeto de objetos em um software diz respeito à responsabilidades, papéis e
colaborações.
A UML de�ne responsabilidade como “um contrato ou obrigação de um classi�cador”.
Responsabilidade tem relação com o que o objeto precisa fazer para exercer seu papel no contexto. Basicamente:
Fazer
algo em prol da colaboração, seja criando um objeto,
calculando, controlando demais objetos e etc.
Conhecer
os dados e os objetos relacionados.
As responsabilidades dos objetos são identi�cadas durante a fase ou disciplina de projeto de software.
A ideia de colaboração está intimamente relacionada com o conceito de responsabilidade. Responsabilidades são implementadas
por métodos, que atuam por si só ou colaboram com métodos de objetos relacionados. Os diagramas de interação são
extremamente úteis para atribuir responsabilidades às classes.
 Diagrama de classe.
A classe PedidoE é responsável por criar Itens Pedido (responsabilidade de fazer), e por conhecer o seu total (responsabilidade de
conhecer).
https://stecine.azureedge.net/webaula/estacio/gon375/aula5.html
https://stecine.azureedge.net/webaula/estacio/gon375/aula5.html
Sobre essa responsabilidade, para conhecer o seu total, a classe faz uso do método Obter
TotalPed (). Mas não faz isso sozinho. Precisa de colaboração da classe Itens Pedido,
através do método Obter Sub Total Ped (), pois quem conhece o total de cada linha de item
do pedido é a própria classe Itens Pedido.
Conceito de Interface
Outro conceito que deve ser incorporado a sua visão de agregar mais detalhes ao diagrama de classes de projeto é o de interface.
Uma classe pode ter em uma instância um objeto real, ao
passo que a interface precisa de uma classe para implementá-
la.
Observe a imagem onde, na parte superior do retângulo, que
representa a classe, é apresentado o estereótipo «interface».
 Representação de uma interface.
Dica
A partir da versão 2.0 da UML, uma interface é considerada uma especialização de uma classe e é desenhada como uma classe.
Uma interface é útil quando não se pode implementar herança múltipla (na linguagem de programação que se pretende usar),
mas permite inúmeras interfaces.
As classes que implementarem o conceito de interface passam a incorporar todos os
métodos da interface ou se transformam em uma classe abstrata.
Aplicando em seu TCC, o diagrama de classes de projeto e
diagrama de pacotes
Aplicando os conteúdos aqui ministrados, elabore o diagrama de classes de projeto, considerando o seu diagrama conceitual de
classes, construído na disciplina de Projeto de TCC em Sistemas de Informação.
• Caso seja necessário alterar diagramas de interação em função de novas formas de implementar uma determinada solução, não
há qualquer problema. Apenas avise ao seu orientador-tutor e, ao mandar o projeto como um todo, agregue essas eventuais
mudanças.
• Conforme identi�car métodos de classes que tenham algoritmos complexos e/ou que tenham atividades realizadas em paralelo,
faça anotações, pois o próximo passo é justamente a elaboração do diagrama de atividades para esses métodos.
• Cabe lembrar que a cada momento de evolução no projeto você deve registrar as bibliogra�as consultadas, independentemente
do tipo de mídia.
Atividade
1. No que se refere às atividades inerentes ao projeto de objetos: 
 
I. O diagrama conceitual de classes já traz as classes completas em termos da de�nição dos atributos. 
II. Re�namento das classes, com inserção de classes de software (de projeto). 
III. Inserção de métodos nas classes, com atribuições de responsabilidades. 
 
Com base em sua análise, assinale a única alternativa correta:
a) Estão corretas apenas II e III.
b) Está correta apenas I.
c) Estão corretas I, II e III.
d) Estão corretas apenas I e II.
e) Estão corretas apenas I e III.
2. Analise as duas assertivas a seguir e a relação entre elas: 
 
I. No modelo de classes de projeto podemos incluir novos atributos nas classes 
 
PORQUE 
 
II. No modelo conceitual de classes não representamos atributos. 
 
Com base em análise , assina a resposta correta quanto a assertividade de cada uma e sobre a relação entre elas.
a) As duas assertivas estão corretas e a segunda justifica a primeira.
b) As duas assertivas estão corretas e a segunda não justifica a primeira.
c) As duas assertivas estão erradas.
d) A assertiva I está correta e a assertiva II está errada.
e) A assertiva I está errada e a assertiva II está correta.
Notas
Classe abstrata 1
São “modelos” para classes que forem suas herdeiras. Não pode ser instanciada (ter objeto a ela associado). Para ter um objeto
de uma classe abstrata é necessário criar uma classe mais especializada, herdando dela e então instanciar essa nova classe.
Seus métodos devem ser sobrescritos, em suas classes �lhas.
Tais classes abstratas trazem consigo o conceito de métodos abstratos, implementados em suas subclasses para de�nir um
comportamento especí�co. O método abstrato de�ne tão somente a assinatura do método e não possui código, que estará em
cada classe especializada que desejar implementar aquele método (assinatura) de forma diferenciada, especí�ca.
Acoplamento
Partindo do próprio conceito de sistema, temos que sistema é um conjunto de partes independentes, cada qual realizando seu
trabalho, que juntas colaboram para um objetivo maior, em comum. Ou seja, as partes devem ser independentes ou pouco
dependentes. 
 
O acoplamento, assim, mede o grau de interdependência entre essas partes. Dessa forma, os sistemas devem ser organizados
para ter baixo acoplamento ou baixa dependência. 
 
O alto acoplamento entre as partes pode gerar di�culdade de: 
• Alteração no sistema, uma vez que existe dependência entre as partes (a alteração em uma parte pode demandar re�exos nas
que dela dependem); 
• Reutilização, uma vez que depende da presença de outras partes.
Coesão
Podemos dizer que a coesão mede, por exemplo, o grau de a�nidade entre as funcionalidades de cada parte do sistema. As
funcionalidades de uma parte devem levar ao desenvolvimento de apenas uma tarefae, nesse caso, devemos perseguir a alta
coesão, ou seja, que a a�nidade entre as funcionalidades seja alta. 
 
Uma parte com baixa coesão faz muitas coisas não relacionadas, e apresenta di�culdades de: 
• Entendimento das partes e consequentemente do sistema. 
• Reutilização, na medida em que a parte não realiza uma tarefa única. 
• Manutenção
Referências
BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. 3.ed. Rio de Janeiro: Elsevier, 2015. Cap. 3.
BOOCH, G.; JACOBSON, I.; RUMBAUGH, J. UML - Guia do Usuário. 2.ed. Rio de Janeiro: Elsevier, 2005. cap. 1 e 2.
FOWLER, Martin. UML Essencial - Um Breve Guia Para a Linguagem-Padrão. 3.ed. Porto Alegre: Artmed, 2005. cap. 1.
LARMAN, Craig. Utilizando UML e Padrões? Uma Introdução à Análise e ao Projeto Orientados a Objetos e ao Processo
Uni�cado. 3.ed. Porto Alegre: Artmed, 2007. cap. 2.
Próxima aula
Detalhar lógica de métodos complexos e/ou com atividades em paralelo, usando o diagrama de atividades da UML;
Desenvolver o Diagrama de Atividades em seu TCC.
Explore mais
Leia os seguintes textos:
Engenharia de Software 2 - Análise Orientada a Objetos. Saiba como chegar a um modelo OO focado em responsabilidades a
partir de casos de uso <https://www.devmedia.com.br/artigo-engenharia-de-software-2-analise-orientada-a-objetos/9150> .
Acesso em: 02 jan. 2019.
O diagrama de classes
<https://www.ibm.com/developerworks/br/rational/library/content/RationalEdge/sep04/bell/index.html> . Uma introdução aos
diagramas de estrutura em UML 2. Acesso em: 02 jan. 2019.
Polimor�smo, classes abstratas e interfaces: fundamentos da POO em Java <https://www.devmedia.com.br/polimor�smo-
classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387> . Acesso em: 02 jan. 2019.
Visite também a página da Uni�ed Modeling Language (UML) <//www.uml.org/> . Acesso em: 02 jan. 2019.
https://www.devmedia.com.br/artigo-engenharia-de-software-2-analise-orientada-a-objetos/9150
https://www.ibm.com/developerworks/br/rational/library/content/RationalEdge/sep04/bell/index.html
https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387
https://www.uml.org/

Outros materiais