Diagrama de classes

O básico – Encapsulamento e tipos

Tomando este diagrama com uma única classe como base, podemos afirmar que:

NomeDaClasse é o nome da classe (uau)

atributo1 é um atributo público do tipo inteiro

atributo2 é um atributo privado do tip…


This content originally appeared on DEV Community and was authored by João Pedro V

O básico - Encapsulamento e tipos

Tomando este diagrama com uma única classe como base, podemos afirmar que:

  • NomeDaClasse é o nome da classe (uau)
  • atributo1 é um atributo público do tipo inteiro
  • atributo2 é um atributo privado do tipo coleção de Real (float). (obs: note que eu disse COLEÇÃO, generalizando mesmo, não cabe ao diagrama definir o tipo da coleção)
  • atributo3 é um atributo protegido do tipo string
  • atributo4 é um atributo público e estático do tipo boolean
  • metodo1() é um método público sem retorno e sem parâmetros
  • metodo2() é um método privado que recebe uma string como parâmetro e retorna um Real
  • metodo3() é um método estático e público que não recebe nenhum parâmetro e nem retorna nada

Especificamente sobre a notação de encapsulamento, e uma breve revisão do que cada um significa:

  • Privado - - Acessível no escopo da classe
  • Protegido # - Acessível no escopo da classe e descendentes
  • Público + - Acessível em qualquer escopo

Relacionamentos

"Relacionamentos" é o termo que usamos para descrever a forma como as classes se relacionam. Criativo, não? Por exemplo, você pode ter uma classe que instância um objeto de outra, ou que simplesmente usa algum método ou atributo dela, ou até mesmo classes herdando características umas das outras através de herança. A esmagadora maioria desses relacionamentos que você conseguir pensar, nós já definimos uma forma de ilustrar ele em um diagrama, sem precisar escrever o código pra explicar ele pra alguém.

Vamos ver um pouco dessas notações agora.

Associação

Usamos o termo associação para descrever o relacionamento entre duas classes que se dá da seguinte forma: uma classe tem um atributo do tipo de outra classe.

class Processador {
   String marca;
}

class Computador {
   Processador cpu;
}

Note duas coisas importantes:

  1. Eu não escrevi - cpu dentro de Computador, o nome do atributo (quando é um atributo) fica na setinha.

  2. A setinha está apontando de computador para processador, e não o contrário.

Importante

Apesar de você não colocar - cpu: Processador na definição dos atributos de Computador, você deve colocar a classe como tipo dessa forma (cpu: Processador) se e somente se ela for parâmetro ou retorno de algum método.

Também é possível definir a cardinalidade, da seguinte forma:

O * significa que esperamos que um objeto de Turma tenha uma quantidade de Aluno. Essa quantidade pode variar de 0 a n (é a mesma coisa que comentei anteriormente sobre coleção de objetos).

Outra coisa importante de ressaltar, é que nós não colocamos métodos getters e setters (getNome(): String, setIdade(int idade): void) no diagrama, já é de se esperar que as classes tenham esses métodos, portanto acrescentá-los no diagrama apenas polui visualmente e não nos trás nenhum benefício.

Dependência

Falamos em dependência quando uma classe precisa conhecer outra, pois precisa dela para a implementação de no mínimo um de seus métodos.

Por exemplo, se um método de uma classe depende da existência de um outro objeto para ser implementado.

[[falta exemplo]]

Herança

Quando falamos em herança estamos falando de uma classe base que herda características de uma classe derivada. Como no seguinte exemplo:

Composição e Agregação

Em associação vimos que podemos fazer uma classe ter outra como um atributo. Entretanto, ficaram em aberto algumas questões. Quem cria o objeto? É ela mesma? É outra classe?

Quando falamos em Agregação e Composição, estamos falando de um relacionamento onde uma classe pode até receber um objeto como atributo, entretanto, ela não é responsável pela criação desse objeto. Ao mesmo tempo que outra classe, essa sim é responsável pela criação.

No exemplo, temos um objeto de Seguro criado pela Seguradora e que é atribuído ao Motorista

[[exemplo de código]]

Todos as imagens de diagramas presentes neste artigo foram geradas com código através do Mermaid, quem tiver curiosidade em como fazer isso também, vejam a documentação.


This content originally appeared on DEV Community and was authored by João Pedro V


Print Share Comment Cite Upload Translate Updates
APA

João Pedro V | Sciencx (2025-11-18T01:24:31+00:00) Diagrama de classes. Retrieved from https://www.scien.cx/2025/11/18/diagrama-de-classes/

MLA
" » Diagrama de classes." João Pedro V | Sciencx - Tuesday November 18, 2025, https://www.scien.cx/2025/11/18/diagrama-de-classes/
HARVARD
João Pedro V | Sciencx Tuesday November 18, 2025 » Diagrama de classes., viewed ,<https://www.scien.cx/2025/11/18/diagrama-de-classes/>
VANCOUVER
João Pedro V | Sciencx - » Diagrama de classes. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/11/18/diagrama-de-classes/
CHICAGO
" » Diagrama de classes." João Pedro V | Sciencx - Accessed . https://www.scien.cx/2025/11/18/diagrama-de-classes/
IEEE
" » Diagrama de classes." João Pedro V | Sciencx [Online]. Available: https://www.scien.cx/2025/11/18/diagrama-de-classes/. [Accessed: ]
rf:citation
» Diagrama de classes | João Pedro V | Sciencx | https://www.scien.cx/2025/11/18/diagrama-de-classes/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.