Aula 4

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 26

COLETA DE REQUISITOS E

MODELAGEM PARA BANCO DE


DADOS
AULA 4

Prof. Manoel Flavio Leal


CONVERSA INICIAL

Os diagramas de classes normalmente são utilizados para representar de


maneira estática a modelagem conceitual e a arquitetura de um sistema. Esse
diagrama apresenta as classes e seus relacionamentos, interface, associação,
métodos entre outros.
De acordo com Pender (2003), o diagrama de classes possui as seguintes
características:

• definir os recursos essenciais de um sistema;


• definir os relacionamentos entre os recursos;
• gerar código; e
• fornecer foco para todos os outros diagramas.

Segundo Bezerra (2007), “o diagrama de classes é utilizado na


construção do modelo de classes desde o nível de análise até o nível de
especificação. De todos os diagramas da UML, esse é o mais rico em termos de
notação”.
Um diagrama de classes é composto por classes, representando por
retângulos, e de relacionamentos entre as classes, representado por linhas. Na
Figura 1, é apresentada a estrutura de uma classe, que é representada por um
retângulo com três compartimentos (nome da classe (normalmente, em negrito),
seus atributos e métodos).

Figura 1 – Estrutura da classe

Na Figura 2, é apresentado um exemplo de um diagrama de classes, no


qual é possível visualizar as classes e seus atributos, e as associações entre as
classes. As informações armazenadas pelo sistema são representadas pelos
2
atributos e suas associações. Esse diagrama pode ser lido da seguinte maneira:
Toda Pessoa (classe) possui nome e cpf (atributos), e poderá ser um Cliente ou
Entregador. Além disso, uma Pessoa poderá realizar um ou mais Pedidos
(classe) que possuirão um ou mais Itens de Produtos (Classe).

Figura 2 – Exemplo de diagrama de classes

TEMA 1 – CLASSES E OBJETOS

De acordo com Bezerra (2007),

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.

Na Figura 3, temos uma representação do exemplo apresentado por


Bezerra (2007)).

Figura 3 – Exemplo de classe e objetos

3
1.1 Classes

A classe é a representação do modelo que será utilizado no sistema a ser


desenvolvido; seria como se fosse uma receita de bolo.
Uma classe é composta de objetos distintos, mas que possuam os
mesmos atributos, operações, relacionamentos e semântica. A classe é uma
abstração de entidades existentes no mundo real.
Exemplos de classes:

• Pessoa;
• Estudante;
• Animal;
• Carro; e
• Loja.

As classes podem ser definidas como abstratas, quando não possui


objetos instanciados a partir dela ou concretas, quando possui objetos
instanciados (criados) a partir dela.

1.2 Objeto

Objetos são os elementos que representam uma instância de uma classe,


são elementos que podem ser manipulados e podem existir no mundo real, por
exemplo, uma pessoa ou uma máquina.
Exemplos de objetos:

• Pessoa – Pedro;
• Pessoa -> Luís; e
• Pessoa -> Laura.

Nos exemplos acima, pessoa é a classe e Pedro, Luís e Laura, são as


instâncias dessa classe, ou seja, os objetos.

Crédito: Nadya_Art/shutterstock.

4
Para que o conceito de classes e objetos seja mais bem compreendido,
faz-se necessária a explicação dos elementos que compõem uma classe:

• Métodos ou comportamentos;
• Atributos ou propriedades; e
• Visibilidade.

Esses elementos serão explicados no próximo tópico.

TEMA 2 – ATRIBUTOS, MÉTODOS E VISIBILIDADE

2.1 Atributos

Os atributos, também conhecidos como propriedades, retratam as


particularidades de uma classe, ou seja, as características que normalmente
variam entre os objetos. Por exemplo, a cor ou o modelo de um objeto da classe
Carro.

Crédito: Mind Pixell/Shutterstock.

Na Figura 4, apresentamos a estrutura de um atributo que é localizado na


segunda divisão da classe e é composto normalmente por um nome e tipo de
dado.

5
Figura 4 – Estrutura de um atributo

Padrões para nomenclatura de atributos:

• Utilizar letras minúsculas, no singular e sem acentuação. Exemplo: nome,


sobrenome, RG, CPF;
• Nomes formados por duas ou mais palavras, a partir da segunda palavra,
cada palavra nova deve iniciar com letra maiúscula e não devem existir
espaços entre as palavras.

Por exemplo: nomeFilho, numeroConta, codigoPais.

2.2 Métodos

Também chamado de comportamento, os métodos representam uma


função que um objeto de uma classe pode executar.

6
Crédito: EamesBot/shutterstock.

Na Figura 5, apresentamos a estrutura de um método que é localizado na


terceira divisão da classe e é composto por um nome, parâmetros e os tipos de
retorno, quando houver.

Figura 5 – Estrutura de um método

Padrão da nomenclatura dos métodos:

7
• Nomes escritos com letra minúscula;
• Nomes formados por duas ou mais palavras, a partir da segunda palavra,
cada palavra nova deve iniciar com letra maiúscula e não devem existir
espaços entre as palavras; e
• Usar o infinitivo nos nomes.

Exemplos de nomes de métodos:

• calcularValorImposto;
• cadastrar; e
• cancelar.

2.3 Visibilidade

A visibilidade indica se um método ou atribuição de uma classe serão


visíveis e poderão ser utilizados por outras classes.

Crédito: Andrea Danti/Shutterstock.

Os modos de visibilidade podem ser identificados por palavras-chave ou


ícones que ficam localizados à frente do atributo ou método, conforme
apresentadas a seguir.

8
• Pública (public): representada pelo símbolo de mais (+), indica que o
atributo ou método pode ser visualizado e utilizado por qualquer classe.
• Protegido (protected): representada pelo símbolo de sustenido (#),
indica que o atributo ou método pode ser visualizado e utilizado somente
pela classe em foi declarada e em suas subclasses.
• Privado (private): representada pelo símbolo de menos (-), indica que o
atributo ou método pode ser visualizado e utilizado somente pela classe
em foi declarada.

A Figura 6 apresenta um exemplo de visibilidade de atributos e métodos.

Figura 6 – Exemplo de visibilidade

TEMA 3 – HERANÇA E SUBCLASSES, ABSTRAÇÃO, ENCAPSULAMENTO,


POLIMORFISMO

3.1 Herança

De acordo com Guedes (2011),

A herança é uma das características mais poderosas e importantes da


Orientação a Objetos. Isso é devido ao fato de a Herança permitir o
reaproveitamento de atributos e métodos, otimizando o tempo de
desenvolvimento, além de permitir a diminuição de linhas de código,
bem como facilitar futuras manutenções.

9
Crédito: Henadzi Kllent/Shutterstock.

A Herança adota os conceitos de superclasses (classe-mãe) e subclasses


(classe-filha), conforme mostrado na Figura 7. A superclasse possui subclasses
derivadas a partir dela que herdam seus atributos e métodos e acrescenta suas
próprias características. As propriedades da superclasse não precisam ser
repetidas em cada subclasse.

Figura 7 – A Herança adota os conceitos de superclasses (classe-mãe) e


subclasses (classe-filha)

Crédito- Smile Ilustras.

10
A maior vantagem do uso da Herança é a de não precisar declarar
novamente os atributos e métodos quando declaramos uma classe com atributos
e métodos específicos e dessa classe em seguida derivamos uma subclasse
com os mesmos atributos e métodos. Com isso, é possível reutilizar o código já
escrito. Somente é necessário declarar os atributos e métodos específicos da
subclasse. Isso facilita a manutenção do código, pois qualquer alteração de
método feita na superclasse já é aplicada nas subclasses.
Além da declaração de atributos e métodos na superclasse que são
transmitidos para as subclasses, é possível atributos e métodos específicos das
subclasses, conforme apresentado na Figura 8.

Figura 8 – Exemplo de herança

3.2 Tipos de herança

3.2.1 Herança simples

A subclasse herda os atributos e métodos de uma única superclasse,


conforme demonstrado na Figura 9. As subclasses Micro-ondas, Gás e Elétrico
herdam as características da superclasse Forno.

11
Figura 9 – Exemplo de herança simples

3.2.2 Herança múltipla

A subclasse herda os atributos e métodos de mais de uma superclasse,


conforme demonstrado na figura 10. Um Leitor da Biblioteca herda os atributos
das superclasses Estudante e Funcionário, além de possuir seus próprios
atributos.

Figura 10 – Exemplo de herança múltipla

12
3.3 Subclasses

A subclasse é uma classe mais específica, herda todos os atributos e


métodos da classe mãe e pode possuir seus próprios atributos e métodos.
Na Figura 11, podemos ver que uma subclasse pode se transformar em
uma superclasse – basta que novas subclasses sejam derivadas dela.

Figura 11 – Exemplo de subclasse

3.4 Abstração

A abstração é utilizada para reduzir a complexidade de algo, os detalhes


sobre as partes devem ser ignorados e o foco deve ser sobre o nível mais alto
de um problema. Na programação orientada a objetos (POO), devemos sempre
analisar as partes para compreender o todo.
Com a abstração a representação do objeto leva em consideração o ponto
de vista e interesse de quem os representa.
No caso de uma cozinha, por exemplo, descrevemos uma geladeira por
meio de sua capacidade, status, cor, potência, entre outras. Estas são as

13
caraterísticas para que uma geladeira seja considerada funcional na
conservação dos alimentos e quando identificamos uma geladeira por meio
destes elementos, estamos fazendo uma abstração, pois não consideramos
outras particularidades na sua descrição. Sob a ótica de um vendedor, outras
características são relevantes, tais como preço, voltagem, fabricante e
dimensões. Com isso, identificamos que a abstração faz com que a definição de
objetos e métodos varia de acordo com o referencial adotado.
Aplicando corretamente o conceito de abstração na análise de sistemas,
conseguimos representar apenas as características dos objetos reais que
possuem alguma relevância para o sistema a ser desenvolvido. Na Figura 12,
temos a representação de abstração, ou seja, cada uma das pessoas possui
uma visão do objeto e, com isso, cada uma delas se concentra nas
características do seu interesse.

Figura 12 – Representação de abstração

Crédito: Jefferson Schnaider.

14
3.5 Encapsulamento

Qual é o conceito de uma cápsula de remédio? Ela envolve e protege um


medicamento. Esse é o conceito do encapsulamento na orientação a objetos:
proteger os métodos e atributos de uma classe para que não sejam alterados
incorretamente. Esse mecanismo restringe o acesso ao objeto e assegura que
qualquer modificação ou comunicação ocorra seguindo um padrão definido de
operações.

Crédito: Bobicova Valeria/Shutterstock.

A Figura 13 representa o encapsulamento, que oculta algumas


caraterísticas de um objeto ou método de uma classe para que não sejam
visualizadas ou modificadas por outros objetos.

Figura 13 – Encapsulamento

Crédito: Smile Ilustras.

15
O encapsulamento utiliza modificadores de acesso, que controlam o
acesso aos atributos e classes e podem ser classificados como:

• Public: visível para todas as classes;


• Private: visível apenas para a classe;
• Protected: visível apenas para o pacote e todas as subclasses;
• Default: é o padrão, sem modificador, visível para o pacote.

Os atributos de uma classe podem ser declarados como públicos, que


podem ser alterados ou acessados por outros objetos ou privados que somente
podem ser alterados ou acessados pelo objeto que está instanciado pela classe
e são acessados por meio de métodos, conforme apresentado na Figura 14.

Figura 14 – Métodos públicos e privados

Crédito: Jefferson Schnaider.

3.6 Polimorfismo

Segundo Guedes (2011), “o polimorfismo trabalha com a redeclaração de


métodos previamente herdados de uma classe. Esses métodos, embora
semelhantes, diferem de alguma forma da implementação utilizada na
superclasse, sendo necessário, reimplementá-los na subclasse”.

16
O polimorfismo permite que objetos diferentes respondam de formas
diferentes a uma mesma mensagem, ou seja, quando existir um método na
subclasse com o mesmo nome do método declarado na superclasse, mas com
diferentes funcionalidades, o sistema deverá verificar qual a classe responsável
pelo método e apresentar o resultado esperado.
A Figura 15 apresenta um exemplo de polimorfismo, a superclasse
animal. Ela possui o método emitiSom(), que contém um comportamento
definido para ela. J as subclasses Leao, Tigre, Elefante, Cachorro e Macaco
possuem o método emitirSom() particular a cada uma delas. Cabe ao sistema
verificar qual das instâncias chamou o método pertencente à classe Animal,
Leao, Tigre, Elefante, Cachorro ou Macaco e com isso executar o método
definido na classe selecionada.

Figura 15 – Exemplo de polimorfismo

Os conceitos de herança e polimorfismo podem ser facilmente


confundidos. A diferença básica entre eles é que a Herança possibilita que um
código seja reutilizado em um sistema e o polimorfismo possibilita que um
sistema decida dinamicamente qual função será invocada.

TEMA 4 – RELACIONAMENTO E MULTIPLICIDADE

4.1 Relacionamento

Um relacionamento determina as conexões e fornecem um caminho para


comunicação entre os objetos. Em uma modelagem orientada a objetos, os três
relacionamentos principais são:

• Dependência;

17
• Generalização; e
• Associação.

4.1.1 Dependência

O relacionamento de dependência identifica um grau de dependência


entre duas classes, ou seja, quando uma classe, que possui outra classe
dependente, for alterada, a classe dependente também será alterada. A
dependência é representada graficamente com linhas tracejadas apontando o
item do qual o outro depende, conforme se vê na Figura 16.

Figura 16 – Relacionamento de dependência

4.1.2 Generalização

No relacionamento de generalização uma subclasse tem como base uma


superclasse e recebe todos os seus atributos e métodos, como ocorre na
Herança. Na Figura 17, a classe Animal possui as características comuns a todos
os animais e as subclasses Onça e Leão trazem as características específicas
de cada subclasse. A generalização é representada graficamente por uma seta
branca e fechada direcionada das classes específicas para a classe
generalizada.

18
Figura 17 – Exemplo de generalização e especialização

Generalização

Especialização

4.1.3 Associação

De acordo com Guedes (2011),

Em uma associação, determina-se que as instâncias de uma classe


estão de alguma forma ligadas às instâncias das outras classes
envolvidas na associação, podendo haver troca de informações entre
elas e compartilhamento de métodos, ou mesmo que uma determinada
instância de uma das classes origine uma ou mais instâncias nas
outras classes envolvidas na associação. Uma associação pode ainda
identificar algum nível de dependência entre as classes que a
compõem.

Uma associação descreve o vínculo da classe consigo mesma


(Associação unária), entre duas classes (Associação binária) ou por várias
classes (Associação ternária).
Da mesma forma que apresentado sobre diagrama de casos de uso
apresentado nesse material, as associações são representadas por setas
ligando as classes envolvidas ou, também, apresentar setas indicando o sentido
que as informações trafegam, chamada de navegabilidade.

4.1.3.1 Associação unária ou reflexiva

Essa associação ocorre quando uma classe se relaciona com ela mesma,
devido a necessidade de associação de dois objetos da mesma classe. Na
Figura 18, vemos que na classe Funcionário, um funcionário pode ou não

19
gerenciar outros funcionários. Também temos a representação de multiplicidade,
que falaremos a seguir.

Figura 18 – Exemplo de associação unária

4.1.3.2 Associação binária

Associação binária indica que existe um relacionamento entre duas


classes, conforme apresentado na Figura 19. Um objeto da classe Sócio pode
ou não se relacionar com instâncias da classe Dependente, mas se existir um
objeto da classe Dependente, este deverá necessariamente se relacionar com
um objeto da classe Sócio.

Figura 19 – Exemplo de associação binária

20
4.1.3.3 Associação ternária ou N-ária

A associação ternária ou N-ária utilizada quando mais de duas classes


podem se conectar. Sua representação é feita por meio de um grande losango,
também chamado de diamante. Na Figura 20, vemos que um cliente poderá
possuir 1 ou mais contratos e cada contrato será composto por 1 ou várias regras
contratuais.

Figura 20 – Exemplo de associação ternária

4.2 Multiplicidade

A multiplicidade é representada por um subconjunto de um conjunto de


números inteiros não negativos, numa sequência de intervalos inteiros e que são
separados por uma vírgula, representado da seguinte forma: limite-
inferior...limite-superior (Melo, 2002).
Na Figura 21, vemos os valores mínimos e máximos que uma associação
pode conter, por exemplo, multiplicidade 0..1, no mínimo 0 e no máximo 1, ou
seja, o objeto pode não se relacionar com outros objetos ou pode se relacionar
com no máximo um objeto de outra classe.

Quadro 1 – Exemplos de multiplicidade

Multiplicidade Significado
0..1 No mínimo zero (nenhum) e no máximo um. Indica que os
objetos das classes associadas não precisam

21
obrigatoriamente estar relacionados, mas se houver
relacionamento indica que apenas uma instância da classe
se relaciona com as instâncias da outra classe.
1..1 Um e somente um. Indica que apenas um objeto da classe
se relaciona com os objetos da outra classe.
0..* No mínimo nenhum e no máximo muitos. Indica que pode ou
não haver instâncias da classe participando do
relacionamento.
* Muitos. Indica que muitos objetos da classe estão envolvidos
no relacionamento.
1..* No mínimo 1 e no máximo muitos. Indica que há pelo menos
um objeto envolvido no relacionamento, podendo haver
muitos envolvidos.
Fonte: Guedes, 2004.

TEMA 5 – FERRAMENTAS ONLINE E LOCAL PARA DIAGRAMAS E ANÁLISE


DE UM DIAGRAMA DE CLASSES REAL COM APONTAMENTOS SOBRE BD.

5.1 Draw.io

Diagrams.net ou draw.io é um software de diagramas gratuito que é


disponibilizado via desktop e online. Com ele é possível criar fluxogramas,
diagramas UML, diagramas de ER (entidade relacionamento), banco de dados,
modelos BPMN, e outros diagramas.

22
Um dos pontos negativos dessa ferramenta é a baixa variedade de
componentes e recursos.

Saiba mais

Versão desktop:
DRAW.IO. Disponível em: <https://drawio-app.com/>. Acesso em: 23 fev.
2023.

23
Versão online:
SOFTONIC. Draw.io. Softonic, S.d. Disponível em: <https://draw-
io.softonic.com.br/>. Acesso em: 23 fev. 2023.

5. 2. Lucidchart

O Lucidchart é uma das plataformas muito utilizada para a criação de


vários tipos de diagramas, inclusive o diagrama de classes. O site é gratuito, mas
limita a três documentos abertos simultaneamente e possui uma versão paga
onde oferece algumas funções específicas. Fácil utilização, com os menus em
português e com as funções bem explicadas.

Além da limitação de documentos abertos simultaneamente, outro ponto


negativo é que o armazenamento tem uma capacidade limitada e nem todas as
formas estão disponíveis no acesso gratuito e a exportação e o backup das
informações são limitados aos assinantes.

24
Para as pessoas que trabalham com diagramas UML, o Lucidchart é uma
ótima opção e assinar um dos planos pode trazer vantagens.

Saiba mais

Versão online:
LUCID. Disponível em: <https://lucid.app/users/login#/login>. Acesso em:
23 fev. 2023.

FINALIZANDO

Conhecemos um pouco sobre o diagrama de classe e seus componentes


e entendemos a importância da sua utilização para a Programação Orientada a
Objetos (POO).
Compreendemos os conceitos de classes e objetos e como eles devem
ser representados no diagrama de classes, depois aprofundamos esses
conceitos quando estudamos métodos, atributos e visibilidade. Para cada um
desses tópicos, vimos como devem ser utilizados e representados.
Em seguida, apresentamos os conceitos de abstração, encapsulamento,
polimorfismo, herança, subclasses, relacionamento e multiplicidade e com isso
solidificamos mais o conhecimento sobre o Diagrama de Classes.
Para fechar, conhecemos algumas ferramentas que podem auxiliar na
criação desses diagramas e de outros que podem ser úteis para a POO.

25
REFERÊNCIAS

BEZERRA, E. Princípios de análise e projeto de sistemas com UML. 2. ed.


Rio de Janeiro: Elsevier, 2007.

BOOCH, G.; RUMBAUGH, J. JACOBSON, I. UML – Guia do usuário. 2. ed. Rio


de Janeiro: Campus, 2005.

FOWLER, M. UML essencial. 2. ed. Porto Alegre: Bookmann, 2000.

GUEDES, G. T. A. UML: uma abordagem prática. São Paulo: Novatec, 2004.

_____. UML 2, uma abordagem prática. 2. ed. São Paulo: Novatec, 2011

MELO, A. C. Desenvolvendo aplicações com UML. Rio de Janeiro: Brasport,


2002.

PENDER, T. UML Bible. Indianapolis: John Wiley & Sons, 2003.

26

Você também pode gostar