# Knowledge Representation + DDD + MDD = :heart:
---
“Um modelo é uma simplificação da realidade”
---
Modelos são usados em atividades de desenvolvimento de software para desenhar *blueprints* do sistema e facilitar a **comunicação** entre **diferentes pessoas da equipe** em **diferentes níveis de abstração**.
---
## DDD - Domain-Driven Design
* Principal foco de um projeto de software deve ser o **conhecimento de domínio** e não os detalhes técnicos.
* Projetos de domínio complexos devem ser baseados em um modelo.
---
## MDD - Model-Driven Development
🤔 o **modelo de domínio** pode ser usado não apenas para representar o domínio (estrutura, regras, dinâmica etc.)... mas também para gerar ou manter a consistência do **software real** que será usado para gerenciá-lo.
---
<img src="https://modeling-languages.com/wp-content/uploads/2017/09/img_59b60889c0c4d.png">
---
## UML
- Linguagem de formalização
- Decrever **Estrutura** e **Comportamento**
---
### Estrutural
Estrutura **estática** do sistema e suas partes em diferentes níveis de abstração/implementação e como eles estão relacionados entre si
---
### Comportamental
**Comportamento dinâmico** dos objetos em um sistema, que pode ser descrito como intenção, propósito e temporalidade de ações e interações entre componentes.
---
#### Classificação
<img src="https://www.uml-diagrams.org/uml-25-diagrams.png" height="600px">
---
# Estrutural
---
#### Diagrama de Classe
```mermaid
classDiagram
Animal <|-- Duck
Animal <|-- Fish
Animal <|-- Zebra
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}
```
---
##### Diagrama de Classe
<img src="https://www.uml-diagrams.org/class-diagrams/class-diagram-domain-overview.png" height="600px">
---
- Tipos
- Relações
- Herança, composição
---
##### Diagrama de Componentes

---
##### Diagrama de Objetos/Instâncias

---
# Comportamental
---
###### Diagrama de Casos de Uso

---
###### Diagrama de Atividades

---
<iframe src="https://real-world-plantuml.com/umls/6325587836665856" width="800px" height="640">
</iframe>
---
###### Diagrama de Sequência

---
###### Diagrama de Estado
<iframe src="https://real-world-plantuml.com/umls/5362931583680512" width="800px" height="640">
</iframe>
---
###### Diagrama de Comunicação/Colaboração

---
### Ferramentas e Links interessantes
- https://www.uml-diagrams.org/
- https://plantuml.com/
- https://real-world-plantuml.com/
{"metaMigratedAt":"2023-06-15T02:43:51.024Z","metaMigratedFrom":"YAML","title":"Battlefield - Minitalk","breaks":true,"description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"f68e4433-ed93-4564-a6f2-82501df0c6ce\",\"add\":4574,\"del\":3531}]"}