/COM221_Martins

Repositório direcionado para armazenar, versionar e executar as listas propostas em Computação Orientada Objetos II (COM221)..

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Programação Orientada Objetos II - COM221


Objetivo 🎯

Este repositório visa armazenar, versionar e executar as atividades propostas na disciplina COM221 da Universidade Federal de Itajubá. Também, busca apresentar conceitos relacionados a componentes reutilizáveis com orientação a objetos e práticas ágeis de software.


Ambiente de desenvolvimento 💻

> Linguagem: Java 11 - OpenJDK

> SO: Manjaro Linux - 5.15.72-1-MANJARO

> Shell: zsh 5.9

> IDE: IntelliJ IDEA 2022.2.2 (Community Edition)

> Build: Maven 4.0

> Testes: JUnit 4.13.2

> Versionamento: Git 2.38 + Github

> Organization package: br.unifei.imc 

Design Patterns 🩹

Conforme problemas surgem, as soluções são necessárias! Esse é o papel dos design patterns! Alguém provavelmente já teve o mesmo problema que o seu e, após errar muito, pensou em como resolver de forma eficiente.

A disciplina abordará os seguintes design patterns:

  • Strategy;
  • Observer;
  • Command;
  • Singleton;
  • Static Factory;
  • State;
  • Decorator.

Strategy 🤔

Principais pontos para compreender o design:

  • Entender o problema do reuso pela herança;
  • Para encapsular comportamento utilizamos interfaces;
  • Identifique as partes que se alteram com frequência e separe das mais estáveis;
  • Programe para uma interface e não uma implementação concreta;

UML genérico do Strategy:

UMLStrategy

Observer 👁️ + 🗼

Principais pontos para compreender o design:

  • Define uma dependência “um para muitos”;
  • Quando um objeto mudar de estado (subject/observável), todos os seus dependentes são notificados automaticamente;
  • Busque acoplamento fraco(aceitável) entre objetos;
  • O Observável conhece apenas a interface do observador.

UML genérico do Observer:

UMLObserver

Command ⏮️ ⏯️ ⏭️

Principais pontos para compreender o design: