JayCesar / java-springboot

[📚 Study ] This repository was created to add files and my notes from the course POO of Java ( + spring);
2 stars 0 forks source link

Seção 13: Enumerações, composição #19

Closed JayCesar closed 1 year ago

JayCesar commented 1 year ago

🏁 Visão geral do capítulo Enumerações e Composição

Enumerações Enumerações servem para representar vários tipos que compõem CONSTANTES relacionadas! Os estados de um pedido pode ser representados por uma enumeração ou tipo enumerado!

Composição de objetos: Como consigo compor objetos para construir/desenvolver modelos mais complexos.

JayCesar commented 1 year ago

Enumerações

Checklist • Definição / discussão • Exemplo: estados de um pedido • Conversão de string para enum • Representação UML


Enumerações: É um tipo especial que serve para especificar de forma literal um conjunto de constantes relacionadas!

2023-04-25_14h59_09

2023-04-25_14h59_48


Convertendo uma String para enum:

É importante porque uma apliação irá pedir o estado de um pedido e o usuário muito certamente poderá colocar em forma de String.

2023-04-25_15h10_10

Uitlizando o método valueOf() converte para string!

Notação UML

2023-04-25_15h14_07

JayCesar commented 1 year ago

Vamos falar um pouco de design

Views: telas do sistema

Controllers: O cara que faz o meio de campo entre a tela e o sistema;

Entities: Entidades do produto;

Repositories: Objetos responsáveis por acessar dados de um banco de dados qualquer;

Haverão outros tipos de classes no decorrer do curso!

Examples: 2023-04-25_19h29_43

2023-04-25_19h29_38

JayCesar commented 1 year ago

Composição

Vantagens:

Nota: Embora o símbolo UML para composição (todo-parte) seja o diamente preto, neste contexto estamos chamando de composição qualquer associação tipo "tem-um" e "tem-vários";

2023-04-25_19h34_22

2023-04-25_19h37_27

Um pedido tem vários ítens (é o asterisco). A seta que começa com diamante preto indica que a calsse do lado do diamente preto é o lado do TODO - ou seja - a classe "ORDER". Logo ele é um TODO e ele contém as partes que são os itens. Ou seja, isso é uma representação de uma composição!

As outras setinhas também indicam uma relação de composição!

JayCesar commented 1 year ago

Exercício resolvido

Quando eu tiver uma composição "tem muitos", ou seja, uma lista, eu não devo incluir essa lsita no construtor, eu devo cirar ela vazia!

2023-04-25_20h00_03

JayCesar commented 1 year ago

Exercício resolvido 2 (demo StringBuilder)

2023-04-26_17h42_59

Se eu montar uam String GIGANTE/ ENORME somente com contatenação- funciona! Mas o programa fica lento!

Por isso eu utilizo a classe String Builder porque ela é muito mais otimizada! Ou seja, usada quando eu preciso montar uam string grande a partir de strings pequenas

O StringBuilder vai recebendo vários dados e depois converte tudo de uma vez para String. Isso é melhor e mais eficiente do que ficar contatenando - o que deixa mais lento.

JayCesar commented 1 year ago

🛠️Exercise Solution

2023-04-27_08h54_20

Obs: É importante que o programador consiga enxergar as estruturas dados que ele está criando!

Quando eu faço isso:

Product p = new Product("TV", 1000.00);
OrdemItem oi1 = new OrderItem(1, 1000.00, p);

Eu to dizendo isso para a memória: 2023-04-27_09h07_35

Ou seja, eu crio um OrdemItem com uma referência para um produto para esse OrdemItem!

Dessa forma eu consigo navegar entre eles, ou seja, os objetos:

2023-04-27_09h09_56

sdf.format("String date") → converte para String! sdf.parse("Date date") → converter para Data!

IMPORTANTE ⚠️ Cada item dentro da Lista OrderItem List é do tipo OrdemItem, ou seja, cada um possui quantidade, preço e um produto associado a essa quantidade e preço

O StringBuilder vai recebendo vários dados e depois converte tudo de uma vez para String. Isso é melhor e mais eficiente do que ficar contatenando - o que deixa mais lento.