From 66b128e783d596cf1ec90e25cf5bb7000a819128 Mon Sep 17 00:00:00 2001 From: Leandro Costa Date: Wed, 26 Apr 2023 21:10:38 -0300 Subject: [PATCH] sync --- .vuepress/public/avatar.jpg | Bin 4726 -> 35155 bytes .../images/icons/android-chrome-192x192.png | Bin 12731 -> 33084 bytes .../images/icons/android-chrome-384x384.png | Bin 49792 -> 83655 bytes .vuepress/public/img/icon/chrome192.png | Bin 6763 -> 27110 bytes .vuepress/public/img/icon/chrome512.png | Bin 0 -> 77711 bytes .vuepress/styles/palette.scss | 1 + posts/00_links_uteis.md | 10 +- posts/01_apresentacao_disciplina.md | 38 - posts/01_revisao_poo.md | 1181 ++++++++++++ posts/02_revisao_poo2.md | 1667 +++++++++++++++++ posts/03_SOLID.md | 608 ++++++ posts/04_Strategy.md | 327 ++++ posts/XX_Modelo.md | 170 ++ posts/code/poo/AutenticadorDeUsuario.java | 5 + posts/code/poo/Cliente.java | 3 + posts/code/poo/Funcionario.java | 3 + posts/code/poo/Gerente.java | 6 + posts/code/poo/PessoaFisica.java | 3 + posts/code/poo/PessoaJuridica.java | 6 + posts/code/poo/Seguranca.java | 3 + posts/code/poo/Usuario.java | 3 + posts/ementa.md | 71 +- posts/exercicios/01_estrutura_c.md | 41 - posts/exercicios/01_padroes_criacao.md | 24 + posts/exercicios/02_condicional.md | 58 - 25 files changed, 4042 insertions(+), 186 deletions(-) create mode 100644 .vuepress/public/img/icon/chrome512.png delete mode 100644 posts/01_apresentacao_disciplina.md create mode 100644 posts/01_revisao_poo.md create mode 100644 posts/02_revisao_poo2.md create mode 100644 posts/03_SOLID.md create mode 100644 posts/04_Strategy.md create mode 100644 posts/XX_Modelo.md create mode 100644 posts/code/poo/AutenticadorDeUsuario.java create mode 100644 posts/code/poo/Cliente.java create mode 100644 posts/code/poo/Funcionario.java create mode 100644 posts/code/poo/Gerente.java create mode 100644 posts/code/poo/PessoaFisica.java create mode 100644 posts/code/poo/PessoaJuridica.java create mode 100644 posts/code/poo/Seguranca.java create mode 100644 posts/code/poo/Usuario.java delete mode 100644 posts/exercicios/01_estrutura_c.md create mode 100644 posts/exercicios/01_padroes_criacao.md delete mode 100644 posts/exercicios/02_condicional.md diff --git a/.vuepress/public/avatar.jpg b/.vuepress/public/avatar.jpg index b02186781a09f23d784ab5304018127cacae06ed..5902534aad447163c4938cc1884af94ba4606b99 100644 GIT binary patch literal 35155 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 PLxO=KRC(0+_t^gdmpg7@ literal 4726 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 RETXJJ=jfLp-sNKEzW|8PQ2hV^ diff --git a/.vuepress/public/images/icons/android-chrome-192x192.png b/.vuepress/public/images/icons/android-chrome-192x192.png index 9b6a3215f7cc5fde6e8374b80454be720bb6f6fd..f248788778c7f1ee41543d41b8b6179521c8f44e 100644 GIT binary patch literal 33084 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

eeuYV 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 literal 12731 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 diff --git a/.vuepress/public/images/icons/android-chrome-384x384.png b/.vuepress/public/images/icons/android-chrome-384x384.png index 30b26a7eb5411baec39ba6205cc95fde4d92e153..db9f6d5ffec1a93d586a3f7393fa6841548a1c0f 100644 GIT binary patch literal 83655 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 literal 49792 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 diff --git a/.vuepress/public/img/icon/chrome192.png b/.vuepress/public/img/icon/chrome192.png index c40e5818af1a14ba8712ce93dc1f007796b60149..d8b640783e5067938fa6d4c75c30a646d6a629ae 100644 GIT binary patch literal 27110 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 literal 6763 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 EKVGhY&j0`b diff --git a/.vuepress/public/img/icon/chrome512.png b/.vuepress/public/img/icon/chrome512.png new file mode 100644 index 0000000000000000000000000000000000000000..2aadddf201ebd70780ac88d59362318f8d8b8263 GIT binary patch literal 77711 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 literal 0 HcmV?d00001 diff --git a/.vuepress/styles/palette.scss b/.vuepress/styles/palette.scss index 7ea49e63..9274071b 100644 --- a/.vuepress/styles/palette.scss +++ b/.vuepress/styles/palette.scss @@ -1 +1,2 @@ $content-width: 100%; +$theme-color: #FCE89f; \ No newline at end of file diff --git a/posts/00_links_uteis.md b/posts/00_links_uteis.md index 5064c2bf..2f43055a 100644 --- a/posts/00_links_uteis.md +++ b/posts/00_links_uteis.md @@ -1,6 +1,6 @@ --- icon: edit -date: 2023-04-11 20:40:00.00 -3 +date: 2023-04-04 17:40:00.00 -3 tag: - links category: @@ -8,7 +8,11 @@ category: order: 0 star: true --- +# Links Úteis + +- [Material Complementar](https://github.com/20231-ifba-saj-ads-ppr/material-complementar/blob/main/README.md) +- [Repl IT IDE Java Online](https://replit.com/languages/java10) +- [sourcemaking Design Patterns](https://sourcemaking.com/design_patterns) +- [Padrões de Projeto - Prof. Diogo D. Moreira](https://diogomoreira.gitbook.io/padroes-de-projeto/) -# Links -- [Material Estudo](https://github.com/20231-ifba-saj-ads-ppr/material-complementar/blob/main/README.md) diff --git a/posts/01_apresentacao_disciplina.md b/posts/01_apresentacao_disciplina.md deleted file mode 100644 index e6c050a6..00000000 --- a/posts/01_apresentacao_disciplina.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -icon: edit -date: 2023-03-28 17:40:00.00 -3 -tag: - - chatgpt - - apresentação -category: - - Aula -order: 1 ---- - -# Apresentação - -Apresentação das orientações apresentadas no Livro __Aprendendo Inteligência: Manual de instruções do cérebro para estudantes em geral__ do Prof Pierluigi Piazzi - -## Conversa sobre o ChatGPT - -### Revolução da Inteligência Artificial - - - -### Destaques -- 💰 Empresas investem bilhões em programas de Inteligência Artificial, como o chatbot GPT. -- 💻 GPT é um modelo de processamento de linguagem natural que aprende a processar o que falamos. -- 🤖 Chatbots e programas de IA permitem se comunicar com entidades além dos humanos. -- 🌎 Empresas como Google buscam entender e dominar a revolução da IA. -- 🔎 Google é líder em buscas na internet há mais de 20 anos graças a seus algoritmos e tecnologias. -- 📈 Chat GPT é um dos sinais de que muita coisa mudou na inteligência artificial e seus impactos. -- 🗞️ Jornais criam sessões de inteligência artificial para discutir o futuro da tecnologia e de nossa sociedade. - -## Aprendendo programação - - - - -## Ementa - -[Ementa](ementa.md) diff --git a/posts/01_revisao_poo.md b/posts/01_revisao_poo.md new file mode 100644 index 00000000..34fc7459 --- /dev/null +++ b/posts/01_revisao_poo.md @@ -0,0 +1,1181 @@ +--- +icon: edit +date: 2023-03-30 20:10:00.00 -3 +tag: + - revisao + - poo +category: + - aula +order: 1 +--- +# Revisão POO +[^caelumoo] [^Deitel] +## Objeto + +- Um objeto é cada uma das entidades identificáveis num dado domínio de aplicação +- Em um sistema Bancário teríamos objetos do tipo: Cliente, Conta, Conta Corrente, Dependente, etc. +- Um objeto também pode ser visto como um agregado de outros objetos (suas partes) + +

+ +```plantuml +@startuml +rectangle "Apartamento"{ + rectangle "Sala" as s + rectangle "Quarto" as q + rectangle "Cozinha" as c + rectangle "Banheiro" as b +s -[hidden]> q +q -[hidden]> c +c -[hidden]> b +} +@enduml +``` + +
Um objeto como um conjuto de outros objetos.
+
+ + +- Um Objeto é uma entidade independente que armazena dados, encapsula serviços, troca mensagens com outros objetos e é modelado para executar as funções do sistema +- Um Objeto pode ser descrito pela identificação de dois elementos básicos: estrutura e comportamento + +::: tip Exemplo +Objeto do tipo **Pessoa** +- **Estrutura** : nome, cpf, idade +- **Comportamento** : trabalhar, descansar +::: + +::: tip Exemplo +Objeto do tipo **Conta** +- **Estrutura:** titular, código, saldo +- **Comportamento:** debitarValor, adicionarValor +::: + +### Mensagens + +- São estímulos enviados aos objetos solicitando que alguma operação seja realizada por um dado objeto + - Nome da mensagem + - Parâmetros +- Especifica O QUE deve ser feito +- O comportamento de um objeto é dado pelo conjunto de mensagens que ele pode responder + +### Características dos Objetos +- Único +- Possui atributos que definem caraterísticas e/ou estado +- Possuem capacidade de realizar ações que chamamos de métodos ou funções +- Normalmente se diz que um objeto é uma instância de uma Classe. +- O que é uma Classe ? + +## Classe + +### Origem do termo +- A palavra classe vem da taxonomia da biologia. + - Todos os seres vivos de uma mesma classe biológica têm uma série de atributos e comportamentos em comum, mas não são iguais, podem variar nos valores desses atributos e como realizam esses comportamentos. +- Homo Sapiens define um grupo de seres que possuem características em comum + - Homo Sapiens é um ser humano? + - Tudo está especificado na classe Homo Sapiens, mas se quisermos mandar alguém correr, comer, pular, precisaremos de uma instância de Homo Sapiens, ou então de um objeto do tipo Homo Sapiens. +### Analogias +- Uma receita de bolo. + - Você come uma receita de bolo? + - Precisamos instaciá-la, criar um objeto bolo a partir dessa especificação (a classe) para utilizá-la. + - Podemos criar centenas de bolos a partir dessa classe (a receita, no caso), eles podem ser bem semelhantes, alguns até idênticos, mas são objetos diferentes. +- A planta de uma casa é uma casa?... +### Conceito +- Uma classe é uma descrição de um conjunto que compartilham os mesmos atributos(características), operações, relacionamentos e semântica +- Todos os objetos são instâncias de classes, onde a classe descreve as propriedades e comportamentos daquele objeto +- **Atributos** são propriedades de uma classe, que descreve um intervalo de valores que as instâncias podem apresentar. Uma Classe pode ter qualquer número de atributos ou nenhum +- **Operações** correspondem aos processos que a classe pode realizar + +
+ +```plantuml +@startuml +left to right direction +map "Especificação \nde uma conta" as conta{ +} +map conta1{ + numero =>1 + cliente => Fulano + saldo =>100 + limite =>0 +} +map conta2{ + numero =>2 + cliente =>Beltrano + saldo =>90 + limite =>10 +} +map conta3{ + numero =>3 + cliente =>Cicrano + saldo =>900 + limite =>0 +} + +conta --> conta1 : new +conta --> conta2 : new +conta --> conta3 : new +@enduml +``` + +
Representação de vários objetos de uma mesma estrutura.
+
+ + - Estrutura (molde) que define os atributos e/ou estados de um conjunto de objetos com características similares. + - Define o comportamento de seus objetos (ações que o objeto pode fazer) através de métodos. + - Descreve os serviços (ações) providos por seus objetos + - Quais informações eles podem armazenar + +```java +class Conta{ + int numero; + String cliente; + double saldo; + double limite; +} +``` + +#### Usando a classe + +```java +class Programa{ + public static void main(String[] args){ + new Conta(); + } +} +``` + +- Objeto criado, mas como acessar? + + +```java +class Programa{ + public static void main(String[] args){ + Conta minhaConta; + minhaConta = new Conta(); + } +} +``` +- Através da variável minhaConta, podemos acessar o objeto recém criado para alterar seu cliente, seu saldo, etc + +```java +class Programa{ + public static void main(String[] args){ + Conta minhaConta; + minhaConta = new Conta(); + + minhaConta.cliente = "Leandro"; + minhaConta.saldo = 10.0; + + System.out.println("Saldo atual: "+minhaConta.saldo); + } +} +``` + + +### Atributos de uma Classe + + +- Caraterísticas e/ou estado de uma classe +- Após a classe ser instanciada em um objeto os atributos vão receber valores (caraterísticas e/ou estados) que definem o objeto + +```java{2-5} +class Conta{ + int numero;//atributo + String cliente;//atributo + double saldo;//atributo + double limite;//atributo +} +``` + + +### Métodos de uma Classe + + +- Conjunto de ações que um determinado objeto pode executar +- Definem o que um objeto pode fazer +- São acionados por outros objetos + - Os objetos se comunicam através de métodos + - Troca de mensagens + +- Um método que saca uma determinada quantidade e não devolve nenhuma informação para quem acionar esse método + +```java{7-10} +class Conta{ + int numero; + String cliente; + double saldo; + double limite; + + void saca(double quantidade){//método + double novoSaldo = this.saldo - quantidade; + this.saldo = novoSaldo; + } +} +``` + + - Fazer um depósito +```java{7-10,12-14} +class Conta{ + int numero; + String cliente; + double saldo; + double limite; + + void saca(double quantidade){//método + double novoSaldo = this.saldo - quantidade; + this.saldo = novoSaldo; + } + + void deposita(double quantidade){//método + this.saldo += quantidade; + } +} +``` + + +```java +class Programa{ + public static void main(String[] args){ + Conta minhaConta; + minhaConta = new Conta(); + + minhaConta.cliente = "Leandro"; + minhaConta.saldo = 100.0; + + //saca 20 + minhaConta.saca(20); + //deposita 50 + minhaConta.deposita(50); + + System.out.println("Saldo atual: "+minhaConta.saldo); + } +} +``` + + +- Método com retorno + - No caso do nosso método saca, podemos devolver um valor booleano indicando se a operação foi bem sucedida. + + +```java +class Conta{ + //... + + boolean saca(double valor){ + if(this.saldo + +```plantuml +@startuml +rectangle "Memoria"{ + rectangle "Conta" as c2m + rectangle "Conta" as c1m + rectangle "c2" as c2 + rectangle "c1" as c1 + c2m<--c2 + c1m<--c1 +} +@enduml +``` + +
Representação da memória com duas instancias de Conta.
+ + + +```java +class Programa{ + public static void main(String[] args){ + Conta c1; + c1 = new Conta(); + Conta c2 = c1; + } +} +``` + +
+ +```plantuml +@startuml +rectangle "Memoria"{ + rectangle "Conta" as c1m + rectangle "c1" as c1 + rectangle "c2" as c2 + c1m<--c1 + c1m<--c2 +} +@enduml +``` + +
Representação da memória com apenas uma instancia de Conta.
+
+ +::: warning ? +Como seria a transferência de valores entre duas contas? +::: + +#### Comparando + +```java +public static void main(String args[]) { + Conta c1 = new Conta(); + c1.cliente = "Leandro"; + c1.saldo = 100.0; + Conta c2 = new Conta(); + c2.cliente = "Leandro"; + c2.saldo = 100.0; + if (c1 == c2) { + System.out.println("Contas iguais"); + } +} +``` + +- O operador `==` compara o conteúdo das variáveis + - variáveis não guardam o objeto, e sim o endereço em que ele se encontra (referência) + - As contas podem ser equivalentes no nosso critério de igualdade, porém elas não são o mesmo objeto. + + +##### equals + +```java +public static void main(String args[]) { + Conta c1 = new Conta(); + c1.cliente = "Leandro"; + c1.saldo = 100.0; + Conta c2 = new Conta(); + c2.cliente = "Leandro"; + c2.saldo = 100.0; + if (c1.equals(c2)) { + System.out.println("Contas iguais"); + } +} +``` + +```java +class Conta { + //... + public boolean equals(Conta outraConta) { + return this.cliente.equals(outraConta.cliente) && this.saldo == outraConta.saldo; + } + //... + +} +``` + + +## Construtor + +- Método especial definido na classe e executado no momento que o objeto é instanciado +- Diferente de outro método pois não possui retorno +- Deve ter o mesmo nome da classe. +- Pode receber parâmetros + - Normalmente utilizados para inicializar os valores dos atributos do objeto + +```java{7-9} +class Conta{ + int numero; + String cliente; + double saldo; + double limite; + + Conta(){ + + } + + void saca(double quantidade){ + double novoSaldo = this.saldo - quantidade; + this.saldo = novoSaldo; + } + + void deposita(double quantidade){ + this.saldo += quantidade; + } +} +``` + +### O que o new faz? + +- A classe chamada é instanciada +- Memória é alocada +- Os passos definidos dentro do método construtor da classe são executados + - Construtor é um método especial para criar e inicializar novas instâncias da classe. + - Construtores podem ser sobrecarregados + + +```java +class Conta{ + //... + Conta(){ + this.limite = 100; + } + //... +} +``` + + +### Sobrecarga + +- É a capacidade de definir métodos com o mesmo nome + - Assinatura seja diferente. + - A mudança na assinatura ocorre alterando a quantidade e/ou tipo de parâmetros que um método recebe + + +- Sobrecarga é a capacidade de um objeto responder à mesma mensagem, com comportamentos (métodos) distintos, a depender dos tipos dos parâmetros recebidos + - aplicarInjecao() + - aplicarInjecao(String nomeRemedio) + + +```java +//... +public int somar(int v1, int v2){ + return v1 + v2; +} + +public int operar(int v1, int v2){ + return operar('+', v1, v2); +} + +public int operar(char op, int v1, int v2){ + switch(op){ + case '+': + return somar(v1, v2); + break; + case '-': + return subtrair(v1, v2); + } +} +//... +``` + + +```java +class Conta{ + //... + Conta(int numero, String cliente){ + this.numero = numero; + this.cliente = cliente; + this.saldo = 0; + this.limite = 0; + } + Conta(int numero, String cliente, double saldo, double limite){ + this(numero, cliente); + this.saldo = saldo; + this.limite = limite; + } + + //... +} +``` + +```java +class Programa{ + public static void main(String[] args){ + Conta minhaConta1; + minhaConta1 = new Conta(1, "Leandro1"); + minhaConta1.saldo = 100; + Conta minhaConta2; + minhaConta2 = new Conta(2, "Leandro2", 100, 0); + } +} +``` + +## Estereótipo de uma Classe em UML + +
+ +```plantuml +@startuml +class NomeDaClasse{ + atributos + metodos() +} +@enduml +``` + +
Modelo de uma classe em UML.
+
+ + +### Estrutura básica de uma classe + +```java{3-5,7-11,13-18} +public class Carro { + + private String cor; + private String marca; + private int velocidade; + + public Carro(String cor, String marca){ + this.cor = cor; + this.marca = marca; + velocidade = 0; + } + + public void acelerar(){ + velocidade++; + } + public void parar(){ + velocidade = 0; + } +} + +``` + +```java +class Programa{ + public static void main(String[] args){ + Carro c1 = new Carro("vermelha","BMW"); + //Carro c2 = new Carro();// ERRO + } +} + +``` + +### Representação UML + +
+ +```plantuml +@startuml +class Carro { + + -String cor + -String marca + -int velocidade + + +Carro(String cor, String marca) + +void acelerar() + +void parar() +} +@enduml +``` + +
UML da classe carro.
+
+ +- A UML é uma notação que podemos utilizar para representar classes e objetos em modelos computacionais + +- Linguagem para representação de modelos visuais com um significado especifico e padronizado + +- UML não é uma linguagem de programação + +- Os modelos são representados através de diagramas que possuem semântica própria +O diagrama que representa a descrição das classes é o **Diagrama de Classes** + + +### Domínio de Aplicação + +- Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. +- Uma aplicação pode ser desenvolvida para automatizar ou tornar factível as tarefas de um domínio. +- Portanto, uma aplicação é basicamente o "reflexo" de um domínio. +- Para exemplificar, suponha que estamos interessados em desenvolver uma aplicação para facilitar as tarefas do cotidiano de um banco. Podemos identificar clientes, funcionários, agências e contas como entidades desse domínio. Assim como podemos identificar as informações e os processos relacionados a essas entidades. + +#### Outras classes do domínio de um sistema bancário + +
+ +```plantuml +@startuml + +class Cliente { + String nome + int codigo +} + +class CartaoDeCredito { + int numero + String dataDeValidade +} + +class Agencia{ + int numero +} + +class Conta{ + int numero + String cliente + double saldo + double limite +} +@enduml +``` + +
UML de classes do domínio bancários.
+
+ + +## Membros de instância e Membros de classes + + +- Variáveis de Classe + - Quando um número de objetos são criados a partir de uma mesma classe, cada um tem suas próprias cópias distintas de variáveis de instância. + - No caso de a classe de bicicleta, são as variáveis de instância engrenagem e velocidade. Cada objeto de bicicleta tem seus próprios valores para essas variáveis, armazenadas em diferentes locais de memória. +- Às vezes, é necessário ter variáveis que são comuns a todos os objetos. +- Isto é conseguido com o modificador `static`. +- Os campos que têm o modificador `static` em sua declaração são chamados de **campos estáticos ou variáveis de classe.** +- Eles estão associados com a classe. Cada instância compartilha uma variável de classe, que está em um local fixo na memória. +- Qualquer objeto pode alterar o valor de uma variável de classe, mas variáveis de classe também pode ser manipulado sem criar uma instância da classe. + - exemplo: + - Caso seja necessário criar um número de objetos de bicicleta e atribuir a cada um número de série, começando com 1 para o primeiro objeto. + - Esse número de identificação é única para cada objeto e é, portanto, uma variável de instância. + - Ao mesmo tempo, você precisa de um campo para manter o controle de quantos objetos bicicletas foram criadas para que você saiba o ID para atribuir ao próximo. + - Esse campo não está relacionada a qualquer objeto individual, mas para a classe como um todo. + - Para isso, você precisa de uma variável de classe, numeroDeBicicletas: + +```java +public class Bicicleta { + private int engrenagem; + private int velocidade; + private int id; + private static int numeroDeBicicletas = 0; + ... +} +``` +- Variáveis de classe são referenciados pelo próprio nome da classe: + ```java + Bicicleta.numeroDeBicicletas + ``` +- Também é possível consultar a campos estáticos com uma referência de objeto como: + ```java + Bicicleta minhaBicicleta = new Bicicleta(); + minhaBicicleta.numeroDeBicicletas; + ``` + mas isso não deixa claro que é um atributo de classe e não de instancia, é recomendado que sempre que for acessar um atributo de classe acessar pela classe. + +- No construtor da Bicicleta pode ser setado o valor do atributo ID incrementar a variável de classe numeroDeBicicletas: +```java +public class Bicicleta { + ... + private static int numeroDeBicicletas = 0; + public Bicicleta(){ + this.id = ++numeroDeBicicletas; + } + public int getID() { + return id; + } +} +``` + +```java +public class Main { + public static void main (String arg[]) { + Bicicleta bicicleta1 = new Bicicleta(); + bicicleta1.setVelocidade(1); + Bicicleta bicicleta2 = new Bicicleta(); + bicicleta2.setVelocidade(2); + } +} +``` + +
+ +```plantuml +@startuml + +label "new Bicicleta()" + +rectangle "classe" #palegreen;line:green;text:green{ + label "numeroDeBicicletas:2" #palegreen;text:green + rectangle "instância1" #aliceblue;line:blue;text:blue{ + label "id:1\nvelocidade:1" #aliceblue;text:blue + } + rectangle "instância:2" #aliceblue;line:blue;text:blue{ + label "id:2\nvelocidade:2" #aliceblue;text:blue + } +} + +@enduml +``` + +
Atributos de classe e de instância.
+
+ +### Métodos estáticos +- A linguagem de programação Java suporta métodos estáticos, bem como variáveis estáticas. +- Os métodos estáticos, que têm o modificador static em suas declarações, deve ser chamado com o nome da classe, sem a necessidade de criação de uma instância da classe + +```java +ClassName.methodName(args) +``` + +- Um uso comum para métodos estáticos é acessar campos estáticos. Por exemplo, nós poderíamos adicionar um método estático para a classe de bicicleta para acessar o campo estático numeroDeBicicletas: + +```java{10-12} +public class Bicicleta { + //... + private static int numeroDeBicicletas = 0; + public Bicicleta(){ + this.id = ++numeroDeBicicletas; + } + public int getID() { + return id; + } + public static int getNumeroDeBicicletas() { + return numeroDeBicicletas; + } +} + +``` +- Nem todas as combinações de variáveis e métodos de classe e de instância são permitidas: + - Métodos de instância podem acessar variáveis de instância e métodos de instância diretamente. + - Métodos de instância podem acessar variáveis de classe e métodos de classe diretamente. + - Métodos de classe podem acessar variáveis de classe e métodos de classe diretamente. + - Métodos de classe não podem acessar variáveis de instância ou métodos de instância diretamente, eles devem usar uma referência de objeto. Além disso, métodos de classe não pode usar a palavra-chave `this`. + +### Constantes + +- O modificador *static,* em combinação com o modificador *final,* é também usado para definir constantes. +- O modificador *final* indica que o valor deste campo não pode mudar. + +#### Static final + +- Por exemplo, a seguinte declaração variável define uma constante chamada PI, cujo valor é uma aproximação do pi + +```java +static final double PI = 3.141592653589793; +``` + +- Constantes definidas desta forma não pode ser alteradas, um erro de compilação ocorrerá caso seu programa tenta fazer isso. +- Por convenção, os nomes das constantes estão escritas em letras maiúsculas. +- Se o nome for composto por mais de uma palavra, as palavras são separadas por um sublinhado (_). + + +## Associações +- Forma como uma classe se relaciona com outra classe +- Uma classe pode conter atributos que geram instâncias de outra classe + - Uma classe pode conter outra classe como atributo + - Quando isto ocorre dizemos que uma classe possui outra classe associada a ela + + +
+ +```plantuml +@startuml + +class Carro{ + - String cor + - String marca + - String velocidade + - Motor motor + + Carro(String cor, String marca, Motor motor) + + void acelerar() + + void parar() +} + +class Motor{ + - int cavalos + - int rotacoes + + void diminuirGiros() + + void aumentarGiros() + + int trabalhoDoMoror() +} + +Carro -> Motor +@enduml +``` + +
Exemplo de Associação.
+
+ +### Agregação +- A classe contida não é instanciada no escopo da classe principal + - Não depende da principal para existir + - Normalmente é passada por parâmetro + +- Agregação é uma associação em que um objeto é parte de outro, de tal forma que a parte pode existir sem o todo. +- Em mais baixo nível, uma agregação consiste de um objeto contendo referências para outros objetos, de tal forma que o primeiro seja o todo, e que os objetos referenciados sejam as partes do todo. + +
+ +```plantuml +@startuml + +class Produto{ + - String nome + - Fornecedor fornecedor +} + +class Fornecedor{ + - String nome + +} + +Produto -o Fornecedor +@enduml +``` + +
Exemplo de Agregação.
+
+ + +### Composição +- A classe contida é instanciada pela classe principal +- Quando uma classe principal é retirada da memória, as outras classes também são. +- O todo contém as partes (e não referências para as partes). Quando o todo desaparece, todas as partes também desaparecem. + +
+ +```plantuml +@startuml + +class ItemCompra{ + - Produto produto + - int quantidade + - Carrinho carrinho +} + +class Carrinho{ + - float valorTotal + - List itens + +} + +ItemCompra -* Carrinho +note on link +Composição +end note +ItemCompra --o Produto +note left on link +Agregação +end note +@enduml +``` + +
Exemplo de Composição.
+
+ + +## Encapsulamento + +- Separar o programa em partes, tornando cada parte mais isolada possível uma da outra +- A ideia é tornar o software mais flexível, fácil de modificar e de criar novas implementações +- Permite utilizar o objeto de uma classe sem necessariamente conhecer sua implementação +- Protege o acesso direto aos atributos de uma instância fora da classe onde estes foram criados +- Uma grande vantagem do encapsulamento é que toda parte encapsulada pode ser modificada sem que os usuários da classe em questão sejam afetados + +### Pacotes +- Forma de organizar classes dentro de uma estrutura de árvores. +- Podemos entender a estrutura de árvores como os diretórios do sistema operacional. +- O nome completo de uma classe é definido pelo seu pacote e o nome. +- Organiza suas classes e bibliotecas + - Os diretórios estão diretamente relacionados aos chamados pacotes e costumam agrupar classes de funcionalidade parecida +- No pacote java.util por exemplo, temos as classes Date, SimpleDateFormat e GregorianCalendar; todas elas trabalham com datas de formas diferentes + - Significa que essas classes estão no diretório java/util/ + +
+ +```plantuml +@startuml +@startsalt + +{ + {T + + java + ++ util + +++ Date + } +} + +@endsalt +@enduml +``` + +
Representação da estrutura de diretório.
+
+ +- A palavra chave *package* indica qual pacote que contém a classe + +```java +package java.util; +``` + +- Para usar uma classe ou um pacote você precisa usar a import palavra-chave: + +```java +import pacote.Class; // Importa uma única classe +import pacotenovo.*; // Importa todas as classes do pacote +``` +
+
+ +```plantuml +@startuml +package java { + package util { + } +} +@enduml +``` +```plantuml +@startuml +package java.util { +} +@enduml +``` + +
+
Visualizações diferentes de subpacotes
+
+ +- O nome da classe na verdade para o compilador é + - java.util.Date + - java.util.SimpleDateFormat + - java.util.GregorianCalendar + - java.io.File + +
+ +```plantuml +@startuml +package java { + package util { + } + package io { + } +} +class java.util.Date +class java.util.SimpleDateFormat +class java.util.GregorianCalendar +class java.io.File +@enduml +``` + +
Representação de classes em seus pacotes.
+
+ +### Importar uma classe + +Se você encontrar uma classe que deseja usar, por exemplo, a classe *Scanner*, que é usada para obter a entrada do usuário, escreva o seguinte código: + +```java +import java.util.Scanner; +``` +No exemplo acima, *java.util* é um pacote, enquanto *Scanner* é uma classe do pacote *java.util*. + +Para usar a classe *Scanner*, crie um objeto da classe e use qualquer um dos métodos disponíveis encontrados na documentação da classe *Scanner*. Em nosso exemplo, usaremos o método *nextLine()*, que é usado para ler uma linha completa: + +```java +import java.util.Scanner; + +class Main { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + System.out.println("Informe o nome"); + + String nome = scanner.nextLine(); + System.out.println("nome é : " + nome); + } +} +``` +#### Usar uma classe sem import + +Para utilizar uma classe sem a palavra reservada `import` você pode referenciar a classe pelo nome completo (pacote.nomeClasse). Exemplo: + +```java{3} +class Main { + public static void main(String[] args) { + java.util.Scanner scanner = new java.util.Scanner(System.in); + System.out.println("Informe o nome"); + + String nome = scanner.nextLine(); + System.out.println("nome é : " + nome); + } +} +``` + + +### Modificadores de acesso +- private +- protected +- public +- (package, quando não é especificado nenhum dos 3 acima) + +
+ +```plantuml + +@startuml +class A { +-int atributoA +#int atributoB +~int atributoC ++int atributoD +-int metodoA() +#int metodoB() +~int metodoC() ++int metodoD() +} + +note left of A::atributoA + private +end note +note left of A::atributoB + protected +end note +note left of A::atributoC + package +end note +note left of A::atributoD + public +end note +note right of A::metodoA + private +end note +note right of A::metodoB + protected +end note +note right of A::metodoC + package +end note +note right of A::metodoD + public +end note +@enduml +``` + +
Modificadores de acesso.
+
+ +- São aplicados a atributos, métodos, construtores e classes +- As classes só podem ser declaradas como public ou padrão + - Uma classe com acesso padrão só pode ser detectada por classes do mesmo pacote + - Uma classe com acesso público pode ser detectada por classes de todos os pacotes + +- Private + - Os membros privados só podem ser acessados por um código da mesma classe +- Protected + - Os membros protegidos podem ser acessados por outras classes do mesmo pacote, além de subclasses independente do pacote +- Public + - Os membros públicos podem ser acessados por todas as outras classes, mesmo de pacotes diferentes +- Padrão + - Os membros padrão só podem ser acessados por outras classes do mesmo pacote + +#### Métodos de acesso (get e set) + +Como os atributos/métodos privados ​​só podem ser acessadas dentro da mesma classe (uma classe externa não tem acesso a ela) é possível acessá-los se fornecermos métodos públicos *get* e *set*. + +O *get* retorna o valor da variável e o *set* define o valor. + +A sintaxe para ambos é que eles começam com *get* ou *set* seguido pelo nome do atributo com a primeira letra em maiúscula: + +```java +public class Pessoa { + private String nome; // private = acesso restrito + // Get + public String getNome() { + return nome; + } + // Set + public void setNome(String novoNome) { + if(novoNome!= null && !novoNome.isEmpty() && !novoNome.isBlank()){ + this.nome = novoNome; + } + } +} +``` +O método *get* retorna o valor da variável name. + +O método *set* pega um parâmetro ( novoNome) e o atribui ao atributo *nome*. + +A palavra-chave `this` é usada para se referir ao objeto atual. + +No entanto, como o atributo `name` é declarada como `private`, não podemos acessá-la de fora desta classe: + +```java +public class Main { + public static void main(String[] args) { + Pessoa pessoa = new Pessoa(); + pessoa.nome = "João"; // error + System.out.println(pessoa.nome); // error + } +} +``` + +Se o atributo foi declarada como *public,* esperaríamos a seguinte saída: +```shell + João +``` + +No entanto, ao tentar acessar um atributo *private,* obtemos um erro: + +```shell + Main.java:4: error: nome has private access in Pessoa + pessoa.nome = "João"; + ^ + Main.java:5: error: nome has private access in Pessoa + System.out.println(pessoa.nome); + ^ + 2 errors +``` + +Em vez disso, usamos os métodos getNome()e setNome()para acessar e atualizar a variável: + +Exemplo +```java +public class Main { + public static void main(String[] args) { + Pessoa pessoa = new Pessoa(); + pessoa.setNome("João"); // Seta o valor do atributo nome para "João" + System.out.println(pessoa.getNome()); + } +} +``` +saida + +```shell + "João" +``` + + +### Por que encapsulamento? + +- Melhor controle dos atributos e métodos da classe +- Os atributos de classe podem ser somente leitura (se você usar apenas o método *get*) ou somente gravação (se você usar apenas o método *set*) +- Flexível: o programador pode alterar uma parte do código sem afetar outras partes +- Maior segurança de dados + + +## Referências + + \ No newline at end of file diff --git a/posts/02_revisao_poo2.md b/posts/02_revisao_poo2.md new file mode 100644 index 00000000..7f9073c1 --- /dev/null +++ b/posts/02_revisao_poo2.md @@ -0,0 +1,1667 @@ +--- +icon: edit +date: 2023-03-30 21:00:00.00 -3 +tag: + - revisao + - poo +category: + - aula +order: 2 +--- +# Revisão POO parte 2 + +## Herança + +[^Takenami] + +- É a capacidade de uma classe definir o seu comportamento e sua estrutura aproveitando definições de outra classe, normalmente conhecida como classe base ou classe pai + - As subclasses herdam tudo o que a classe pai possui e acrescenta as suas características particulares + - Através do mecanismo de herança é possível definirmos classes genéricas que agreguem um conjunto de definições comuns a um grande número de objetos(Generalização) + - A partir destas especializações genéricas podemos construir novas classes, mais específicas, que acrescentem novas características e comportamentos aos já existentes (Especialização) + +- Capacidade que uma classe tem de herdar as características e comportamentos de outra classe +- Classe pai é chamada de superclasse e a filha de subclasse +- Em Java só é permitido herdar de uma única classe, ou seja, não permite herança múltipla +- O objetivo da herança é especializar o entendimento de uma classe criando novas características e comportamentos que vão além da superclasse +- Ao mesmo tempo que a especialização amplia o entendimento de uma classe, a generalização vai no sentido inverso e define um modelo menos especializado e mais genérico + + +```java +public class Mamifero{ + private int altura; + private double peso; + public void mamar(){ + System.out.println("Mamifero mamando"); + } +} +``` + +```java +public class Morcego extends Mamifero{ + private double tamanhoPresa; + public void voar(){ + System.out.println("Morcego voando"); + } +} +``` +- Classe Morcego + - Quais as características de morcego? + - altura + - peso + - tamanhoPresa + - Quais ações o morcego pode fazer? + - mamar + - voar +- Se usarmos os princípios de lógica podemos dizer que todo morcego é mamífero porém NÃO podemos afirmar que todo mamífero é morcego + +```java +Mamifero animalMamifero = new Morcego(); +Morcego batman = new Mamifero();//erro +``` + +- Com base no que foi dito até aqui podemos deduzir que o item 2 deve causar um erro já que não é possível garantir que todo mamífero seja um morcego +- Já o item 1 pode parecer estranho, pois a variável é do tipo Mamífero e o objeto para o qual a variável se refere é do tipo Morcego + - Devemos saber que toda variável pode receber um objeto que seja compatível com o seu tipo e neste caso todo Morcego CERTAMENTE **é um** Mamífero + +```java +Mamifero animalMamifero = new Morcego(); +animalMamifero.mamar(); +animalMamifero.voar();//erro +``` +- Todo `Morcego` **é um** `Mamifero`, porem não pode realizar todas as ações de um `morcego` +- A variável `animalMamifero` que recebe o objeto é do tipo `Mamifero` +- Para o `Morcego` `voar` é necessário criar uma nova variável do tipo `Morcego` e atribuir o objeto que estava na variável `animalMamifero` +```java +Mamifero animalMamifero = new Morcego(); +animalMamifero.mamar(); +Morcego batman = (Morcego)animalMamifero; +batman.voar(); +``` +- Este tipo de operação recebe o nome de **TYPE CAST** + +
+ +```plantuml +@startuml + +class Mamifero{ + -int altura + -double peso + +void mamar() +} + +class Morcego{ + -double tamanhoPresa + +void voar() +} + +Mamifero <|-- Morcego +@enduml +``` + +
UML Herança Morcego e Mamifero.
+
+ +
+ +```plantuml +@startuml Criando um objeto a partir da subclasse + +label "new Morcego()" + +rectangle "Morcego" #palegreen;line:green;text:green{ +label "tamanhoPresa\nvoar()" #palegreen;text:green +rectangle "Mamifero" #aliceblue;line:blue;text:blue{ +label "altura\npeso\nmamar()" #aliceblue;text:blue +} +} + +@enduml +``` + +
Criando um objeto a partir da subclasse.
+
+ + + ### Outros exemplos + + +#### Caelum + +[^caelumoo] + +Como toda empresa, nosso Banco possui funcionários. Vamos modelar a classe `Funcionario`: + +```java +class Funcionario { + String nome; + String cpf; + double salario; + // métodos devem vir aqui +} +``` + +Além de um funcionário comum, há também outros cargos, como os gerentes. Os gerentes guardam a mesma informação que um funcionário comum, mas possuem outras informações, além de ter funcionalidades um pouco diferentes. Um gerente no nosso banco possui também uma senha numérica que permite o acesso ao sistema interno do banco, além do número de funcionários que ele gerencia: + + +```java{2-4} +class Gerente { + String nome; + String cpf; + double salario; + int senha; + int numeroDeFuncionariosGerenciados; + public boolean autentica(int senha) { + if (this.senha == senha) { + System.out.println("Acesso Permitido!"); + return true; + } else { + System.out.println("Acesso Negado!"); + return false; + } + } + // outros métodos +} +``` + +::: warning Precisamos mesmo de outra classe? +Poderíamos ter deixado a classe `Funcionario` mais genérica, mantendo nela senha de acesso, e o número de funcionários gerenciados. Caso o funcionário não fosse um gerente, deixaríamos estes atributos vazios. + +Essa é uma possibilidade, porém podemos começar a ter muito atributos opcionais, e a classe ficaria estranha. E em relação aos métodos? A classe Gerente tem o método autentica, que não faz sentido existir em um funcionário que não é gerente +::: + +Se tivéssemos um outro tipo de funcionário que tem características diferentes do funcionário comum, precisaríamos criar uma outra classe e copiar o código novamente! + +Além disso, se um dia precisarmos adicionar uma nova informação para todos os funcionários, precisaremos passar por todas as classes de funcionário e adicionar esse atributo. O problema acontece novamente por não centralizarmos as informações principais do funcionário em um único lugar! + +Existe um jeito, em Java, de relacionarmos uma classe de tal maneira que uma delas **herda** tudo que a outra tem. Isto é uma relação de classe mãe e classe filha. No nosso caso, gostaríamos de fazer com que o `Gerente` tivesse tudo que um `Funcionario` tem, gostaríamos que ela fosse uma **extensão** de `Funcionario`. Fazemos isto através da palavra chave `extends`. + +```java +class Gerente extends Funcionario { + int senha; + int numeroDeFuncionariosGerenciados; + public boolean autentica(int senha) { + if (this.senha == senha) { + System.out.println("Acesso Permitido!"); + return true; + } else { + System.out.println("Acesso Negado!"); + return false; + } + } + // setter da senha omitido +} +``` + +Em todo momento que criarmos um objeto do tipo Gerente, este objeto possuirá também os atributos definidos na classe Funcionario, pois um Gerente **é um** Funcionario: + +
+ +```plantuml +@startuml +Funcionario <|-- Gerente +@enduml +``` + +
Herança entre Funcionario e Gerente.
+
+ + +
+ +```plantuml +@startuml Criando um objeto a partir da subclasse + +label "new Gerente()" + +rectangle "Gerente" #palegreen;line:green;text:green{ +label "senha\nnumeroDeFuncionariosGerenciados\nautentica()" #palegreen;text:green +rectangle "Funcionario" #aliceblue;line:blue;text:blue{ +label "nome\ncpf\nsalario" #aliceblue;text:blue +} +} + +@enduml +``` + +
Criando um objeto a partir da subclasse.
+
+ + +```java +class TestaGerente { + public static void main(String[] args) { + Gerente gerente = new Gerente(); + // podemos chamar métodos do Funcionario: + gerente.setNome("João da Silva"); + // e também métodos do Gerente! + gerente.setSenha(4231); + } +} +``` + +Dizemos que a classe `Gerente` **herda** todos os atributos e métodos da classe mãe, no nosso caso, a `Funcionario`. Para ser mais preciso, ela também herda os atributos e métodos privados, porém não consegue acessá-los diretamente. Para acessar um membro privado na filha indiretamente, seria necessário que a mãe expusesse um outro método visível que invocasse esse atributo ou método privado. + + +::: tip Super e Sub classe +A nomenclatura mais encontrada é que `Funcionario` é a superclasse de `Gerente`, e `Gerente` é a subclasse de `Funcionario`. Dizemos também que todo `Gerente` **é um** `Funcionario`. Outra forma é dizer que `Funcionario` é classe mãe de `Gerente` e `Gerente` é classe filha de `Funcionario`. +::: + +E se precisamos acessar os atributos que herdamos? Não gostaríamos de deixar os atributos de `Funcionario` **public**, pois dessa maneira qualquer um poderia alterar os atributos dos objetos deste tipo. Existe um outro modificador de acesso, o **protected**, que fica entre o **private** e o **public**. Um atributo **protected** só pode ser acessado (visível) pela própria classe e por suas subclasses (e mais algumas outras classes, mas veremos isso mais adiante). +```java +class Funcionario { + protected String nome; + protected String cpf; + protected double salario; + // métodos devem vir aqui +} +``` + +::: tip Sempre usar protected? + +Então porque usar private? Depois de um tempo programando orientado a objetos, você vai começar a sentir que nem sempre é uma boa ideia deixar que a classe filha acesse os atributos da classe mãe, pois isso quebra um pouco a ideia de que só aquela classe deveria manipular seus atributos. Essa é uma discussão um pouco mais avançada. + +Além disso, não só as subclasses, mas também as outras classes, podem acessar os atributos protected, que veremos mais a frente (mesmo pacote). +::: + + +Da mesma maneira, podemos ter uma classe `Diretor` que estenda `Gerente` e a classe `Presidente` pode estender diretamente de `Funcionario`. + +Fique claro que essa é uma decisão de negócio. Se `Diretor` vai estender de `Gerente` ou não, vai depender se, para você, `Diretor` **é um** `Gerente`. + +Uma classe pode ter várias filhas, mas pode ter apenas uma mãe, é a chamada herança simples do java. + + +
+ +```plantuml +@startuml +Funcionario <|-- Engenheiro +Funcionario <|-- Secretario +Funcionario <|-- Gerente +Gerente <|-- Diretor + +@enduml +``` + +
Herança de Diretor, Engenheiro, Secretario, Gerente com Funcionario
+
+ + +#### K19 + +[^k19oo] + +##### Reutilização de Código +Um banco oferece diversos serviços que podem ser contratados individualmente pelos clientes. Quando um serviço é contratado, o sistema do banco deve registrar quem foi o cliente que contratou o serviço, quem foi o funcionário responsável pelo atendimento ao cliente e a data de contratação. + +Com o intuito de ser produtivo, a modelagem dos serviços do banco deve diminuir a repetição de código. A ideia é reaproveitar o máximo do código já criado. Essa ideia está diretamente relacionada ao conceito Don’t Repeat Yourself. Em outras palavras, devemos minimizar ao máximo a utilização do "copiar e colar". O aumento da produtividade e a diminuição do custo de manutenção são as principais motivações do DRY. + +Em seguida, vamos discutir algumas modelagens possíveis para os serviços do banco. Buscaremos seguir a ideia do DRY na criação dessas modelagens. + +##### Uma classe para todos os serviços + +Poderíamos definir apenas uma classe para modelar todos os tipos de serviços que o banco oferece. + +```java +class Servico { + private Cliente contratante ; + private Funcionario responsavel ; + private LocalDate dataDeContratacao ; + // métodos +} +``` + +###### Empréstimo + +O empréstimo é um dos serviços que o banco oferece. Quando um cliente contrata esse serviço, são definidos o valor e a taxa de juros mensal do empréstimo. Devemos acrescentar dois atributos na classe `Servico`: um para o valor e outro para a taxa de juros do serviço de empréstimo. + +```java +class Servico { + // GERAL + private Cliente contratante; + private Funcionario responsavel; + private LocalDate dataDeContratacao; + // EMPRÉSTIMO + private double valor; + private double taxa; + // métodos +} +``` + +###### Seguro de veículos + +Outro serviço oferecido pelo banco é o seguro de veículos. Para esse serviço devem ser definidas as seguintes informações: veículo segurado, valor do seguro e a franquia. Devemos adicionar três atributos na classe `Servico`. + +```java +class Servico { + // GERAL + private Cliente contratante ; + private Funcionario responsavel ; + private LocalDate dataDeContratacao ; + // EMPRÉSTIMO + private double valor ; + private double taxa ; + // SEGURO DE VEICULO + private Veiculo veiculo ; + private double valorDoSeguroDeVeiculo ; + private double franquia ; + // métodos +} +``` + +Apesar de seguir a ideia do DRY, modelar todos os serviços com apenas uma classe pode dificultar o desenvolvimento. Supondo que dois ou mais desenvolvedores são responsáveis pela implementação dos serviços, eles provavelmente modificariam a mesma classe concorrentemente. Além disso, os desenvolvedores, principalmente os recém chegados no projeto do banco, ficariam confusos com o código extenso da classe `Servico`. + +Outro problema é que um objeto da classe `Servico` possui atributos para todos os serviços que o banco oferece. Na verdade, ele deveria possuir apenas os atributos relacionados a um serviço. Do ponto de vista de performance, essa abordagem causaria um consumo desnecessário de memória. + +##### Uma classe para cada serviço + +Para modelar melhor os serviços, evitando uma quantidade grande de atributos e métodos desnecessários, criaremos uma classe para cada serviço. + +```java +class SeguroDeVeiculo { + // GERAL + private Cliente contratante ; + private Funcionario responsavel ; + private LocalDate dataDeContratacao ; + // SEGURO DE VEICULO + private Veiculo veiculo ; + private double valorDoSeguroDeVeiculo ; + private double franquia ; + // métodos +} +``` + +```java +class Emprestimo { + // GERAL + private Cliente contratante ; + private Funcionario responsavel ; + private LocalDate dataDeContratacao ; + // EMPRÉSTIMO + private double valor ; + private double taxa ; + // métodos +} +``` + + +Criar uma classe para cada serviço torna o sistema mais flexível, pois qualquer alteração em um determinado serviço não causará efeitos colaterais nos outros. Mas, por outro lado, essas classes teriam bastante código repetido, contrariando a ideia do DRY. Além disso, qualquer alteração que deva ser realizada em todos os serviços precisa ser implementada em cada uma das classes. + +##### Uma classe genérica e várias específicas + +Na modelagem dos serviços do banco, podemos aplicar um conceito de orientação a objetos chamado Herança. A ideia é reutilizar o código de uma determinada classe em outras classes. + +Aplicando herança, teríamos a classe `Servico` com os atributos e métodos que todos os serviços devem ter e uma classe para cada serviço com os atributos e métodos específicos do determinado serviço. + +As classes específicas seriam "ligadas" de alguma forma à classe `Servico` para reaproveitar o código nela definido. Esse relacionamento entre as classes é representado em UML pelo diagrama abaixo + +
+ +```plantuml +@startuml +Servico <|-- SeguroDeVeiculo +Servico <|-- Emprestimo +@enduml +``` + +
Árvore de herança dos serviços
+
+ + +Os objetos das classes específicas `Emprestimo` e `SeguroDeVeiculo` possuiriam tanto os atributos e métodos definidos nessas classes quanto os definidos na classe `Servico`. + +```java +Emprestimo e = new Emprestimo() ; +// Chamando um método da classe Servico +e.setDataDeContratacao(LocalDate.of(2020, Month.JANUARY, 8)) ; +// Chamando um método da classe Emprestimo +e.setValor(10000) ; +``` + +As classes específicas são vinculadas a classe genérica utilizando o comando extends. Não é necessário redefinir o conteúdo já declarado na classe genérica. + +```java +class Servico { + private Cliente contratante; + private Funcionario responsavel; + private LocalDate dataDeContratacao; +} +``` + +```java{1} +class Emprestimo extends Servico { + private double valor; + private double taxa; +} +``` +```java{1} +class SeguroDeVeiculo extends Servico { + private Veiculo veiculo; + private double valorDoSeguroDeVeiculo; + private double franquia; +} +``` + +A classe genérica é denominada super classe, classe base ou classe mãe. As classes específicas são denominadas sub classes, classes derivadas ou classes filhas. + +Quando o operador `new` é aplicado em uma sub classe, o objeto construído possuirá os atributos e métodos definidos na sub classe e na super classe. + +
+ +```plantuml +@startuml Criando um objeto a partir da subclasse + +label "new Emprestimo()" + +rectangle "Emprestimo" #palegreen;line:green;text:green{ +label "valor\ntaxa" #palegreen;text:green +rectangle "Servico" #aliceblue;line:blue;text:blue{ +label "contratante\nresponsavel\ndataDeContratacao" #aliceblue;text:blue +} +} + +@enduml +``` + +
Criando um objeto a partir da subclasse.
+
+ + +### Sobrecrita de Métodos + +#### Caelum + +[^caelumoo] + +Todo fim de ano, os funcionários do nosso banco recebem uma bonificação. Os funcionários comuns recebem 10% do valor do salário e os gerentes, 15%. + +Vamos ver como fica a classe Funcionario: + +```java +class Funcionario { + protected String nome; + protected String cpf; + protected double salario; + public double getBonificacao() { + return this.salario * 0.10; + } + // métodos +} +``` + +Se deixarmos a classe `Gerente` como ela está, ela vai herdar o método `getBonificacao`. + +```java +Gerente gerente = new Gerente(); +gerente.setSalario(5000.0); +System.out.println(gerente.getBonificacao()); +``` + +O resultado aqui será `500`. Não queremos essa resposta, pois o gerente deveria ter `750` de bônus nesse caso. Para consertar isso, uma das opções seria criar um novo método na classe Gerente, chamado, por exemplo, `getBonificacaoDoGerente`. O problema é que teríamos dois métodos em Gerente, confundindo bastante quem for usar essa classe, além de que cada um da uma resposta diferente. + +No Java, quando herdamos um método, podemos alterar seu comportamento. Podemos reescrever (reescrever, sobrescrever, override) este método: + +```java +class Gerente extends Funcionario { + int senha; + int numeroDeFuncionariosGerenciados; + public double getBonificacao() { + return this.salario * 0.15; + } + // ... +} +``` + +Agora o método está correto para o `Gerente`. Refaça o teste e veja que o valor impresso é o correto `750`: +```java +Gerente gerente = new Gerente(); +gerente.setSalario(5000.0); +System.out.println(gerente.getBonificacao()); +``` + +:::tip A anotação @Override +Há como deixar explícito no seu código que determinador método é a reescrita de um método da sua classe mãe. Fazemos isso colocando `@Override` em cima do método. Isso é chamado **anotação**. Existem diversas anotações e cada uma vai ter um efeito diferente sobre seu código. + +```java +@Override +public double getBonificacao() { + return this.salario * 0.15; +} +``` + +Perceba que, por questões de compatibilidade, isso não é obrigatório. Mas caso um método esteja anotado com `@Override`, ele necessariamente precisa estar reescrevendo um método da classe mãe. +::: + +##### Invocando o método reescrito +Depois de reescrito, não podemos mais chamar o método antigo que fora herdado da classe mãe: realmente alteramos o seu comportamento. Mas podemos invocá-lo no caso de estarmos dentro da classe. + +Imagine que para calcular a bonificação de um Gerente devemos fazer igual ao cálculo de um `Funcionario` porem adicionando R$ 1000. Poderíamos fazer assim: +```java +class Gerente extends Funcionario { + int senha; + int numeroDeFuncionariosGerenciados; + public double getBonificacao() { + return this.salario * 0.10 + 1000; + } + // ... +} +``` + +Aqui teríamos um problema: o dia que o `getBonificacao` do `Funcionario` mudar, precisaremos mudar o método do `Gerente` para acompanhar a nova bonificação. Para evitar isso, o `getBonificacao` do `Gerente` pode chamar o do `Funcionario` utilizando a palavra chave **super**. + +```java +class Gerente extends Funcionario { + int senha; + int numeroDeFuncionariosGerenciados; + public double getBonificacao() { + return super.getBonificacao() + 1000; + } + // ... +} +``` + +Essa invocação vai procurar o método com o nome `getBonificacao` de uma super classe de `Gerente`. No caso ele logo vai encontrar esse método em `Funcionario`. + +Essa é uma prática comum, pois muitos casos o método reescrito geralmente faz "algo a mais" que o método da classe mãe. Chamar ou não o método de cima é uma decisão sua e depende do seu problema. Algumas vezes não faz sentido invocar o método que reescrevemos. + +#### K19 + +[^k19oo] + +Suponha que o valor da taxa administrativa do serviço de empréstimo é diferente dos outros serviços, pois ele é calculado a partir do valor emprestado ao cliente. Como esta lógica é específica para o serviço de empréstimo, devemos acrescentar um método para implementar esse cálculo na classe `Emprestimo`. +```java +class Emprestimo extends Servico { + // ATRIBUTOS + public double calculaTaxaDeEmprestimo(){ + return this.valor * 0.1; + } +} +``` + +Para os objetos da classe `Emprestimo`, devemos chamar o método `calculaTaxaDeEmprestimo()`. +Para todos os outros serviços, devemos chamar o método `calculaTaxa()`. + +Mesmo assim, nada impediria que o método `calculaTaxa()` fosse chamado em um objeto da +classe `Emprestimo`, pois ela herda esse método da classe `Servico`. Dessa forma, existe o risco de alguém erroneamente chamar o método incorreto. + +Seria mais seguro "substituir" a implementação do método `calculaTaxa()` herdado da classe +`Servico` na classe `Emprestimo`. Para isso, basta escrever o método `calculaTaxa()` também na classe `Emprestimo` com a mesma assinatura que ele possui na classe `Servico`. +```java +class Emprestimo extends Servico { + // ATRIBUTOS + public double calculaTaxa(){ + return this.valor * 0.1; + } +} +``` + +Os métodos das classes específicas têm prioridade sobre os métodos das classes genéricas. Em outras palavras, se o método chamado existe na classe filha ele será chamado, caso contrário o método será procurado na classe mãe. + +Quando definimos um método com a mesma assinatura na classe base e em alguma classe derivada, estamos aplicando o conceito de Reescrita de Método. + +##### Fixo + Específico + +Suponha que o preço de um serviço é a soma de um valor fixo mais um valor que depende do tipo +do serviço. Por exemplo, o preço do serviço de empréstimo é 5 reais mais uma porcentagem do valor emprestado ao cliente. O preço do serviço de seguro de veículo é 5 reais mais uma porcentagem do valor do veículo segurado. Em cada classe específica, podemos reescrever o método `calculaTaxa()`. + +```java +class Emprestimo extends Servico { + // ATRIBUTOS + public double calculaTaxa(){ + return 5 + this.valor * 0.1; + } +} +``` + +```java +class SeguraDeVeiculo extends Servico { +// ATRIBUTOS + public double calculaTaxa(){ + return 5 + this.veiculo.getTaxa()* 0.05; + } +} +``` + +Se o valor fixo dos serviços for atualizado, todas as classes específicas devem ser modificadas. Outra alternativa seria criar um método na classe `Servico` para calcular o valor fixo de todos os serviços e chamá-lo dos métodos reescritos nas classes específicas. + +```java +class Servico { + public double calculaTaxa(){ + return 5 ; + } +} +``` + +```java +class Emprestimo extends Servico { +// ATRIBUTOS + public double calculaTaxa(){ + return super.calculaTaxa()+ this.valor * 0.1; + } +} +``` + +Dessa forma, quando o valor padrão do preço dos serviços é alterado, basta modificar o método +na classe `Servico`. + +### Construtores e Herança + +Quando temos uma hierarquia de classes, as chamadas dos construtores são mais complexas do que o normal. Pelo menos um construtor de cada classe de uma mesma sequência hierárquica deve ser chamado ao instanciar um objeto. Por exemplo, quando um objeto da classe Emprestimo é criado, pelo menos um construtor da própria classe Emprestimo e um da classe Servico devem ser executados. Além disso, os construtores das classes mais genéricas são chamados antes dos construtores das classes específicas. + +```java +class Servico { + // ATRIBUTOS + public Servico(){ + System.out.println("Servico"); + } +} +``` + +```java +class Emprestimo extends Servico { + // ATRIBUTOS + public Emprestimo(){ + System.out.println("Emprestimo"); + } +} +``` + +Por padrão, todo construtor chama o construtor sem argumentos da classe mãe se não existir nenhuma chamada de construtor explícita. + +```java +class TesteConstrutor { + public static void main(String[] args) { + new Emprestimo(); + } +} +``` + +
+
+ +```plantuml +@startuml +Servico <|-- Emprestimo +@enduml +``` + +```plantuml +@startuml +hide footbox +actor Clinte + +create Emprestimo +Clinte -> Emprestimo : new +activate Emprestimo + + +Emprestimo -> Servico +ref over Servico + System.out.println("Servico"); +end ref +Emprestimo -> Emprestimo +ref over Emprestimo + System.out.println("Emprestimo"); +end ref +@enduml +``` +
+
Execução do construtor com Herança
+
+ + + +## Polimorfismo + +- É a possibilidade de se solicitar um serviço a um objeto, cuja execução vai depender do tipo de objeto instanciado + +
+ +```plantuml + +@startuml +class Figura{ + desenhar() +} +class Circulo{ + desenhar() +} +class Retangulo{ + desenhar() +} +class Quadrado{ + desenhar() +} +Figura <|-- Circulo +Figura <|-- Retangulo +Figura <|-- Quadrado +@enduml +``` + +
UML da relação entre Figura, Circulo, Retangulo e Quadrado.
+
+ +- `Círculo`, `Retangulo` e `Quadrado` são do tipo `Figura`. + - Método desenhar() +- O resultado depende do tipo de figura que receber a mensagem + +- O polimorfismo permite escrever programas que processam objetos que compartilham a mesma superclasse em uma hierarquia de classe como se todas fossem objetos da superclasse. + +- Sistema de simulação de movimento de Animais + +
+ +```plantuml +@startuml +class Animal{ + Ponto inicio + Ponto fim + mover() +} +class Peixe{ + mover() +} +class Anfibio{ + mover() +} +class Passaro{ + mover() +} +Animal <|-- Peixe +Animal <|-- Anfibio +Animal <|-- Passaro +@enduml +``` + +
UML da relação entre Animal, Peixe, Anfíbio e Pássaro.
+
+ +- Peixes, Anfíbios, Pássaros + - Superclasse Animal + - Método mover + - Localização x,y + - Todas as subclasses implementam o método mover +- O programa envia a mensagem "mover" para os 3 objetos + +```java +//... +Animal animal[] = new Animal[3]; +//... +for(int i = 0; i < 3 ; i++){ + animal[i].mover();//como será o movimento desse animal? +} +//... +``` + +- Cada animal responde ao método mover de uma maneira diferente + - O peixe pode nadar 2 metros + - Anfíbio pular 1 metro + - Pássaro voar 3 metros +- Cada objeto irá responder a mensagem "mover" de acordo com sua instancia +- Apesar de todos serem Animais o fato do método "mover" ter "muitas formas" é a chave do polimorfismo + - Polimorfismo vem de Polimorfo, "Que é sujeito a mudar de forma" + + +::: tip Definição +Polimorfismo possibilita tratar objetos de tipos mais especializados de forma genérica +::: + +### Caelum + +[^caelumoo] + +O que guarda uma variável do tipo `Funcionario`? Uma referência para um `Funcionario`, nunca o objeto em +si. + +Na herança, vimos que todo `Gerente` **é um** `Funcionario`, pois é uma extensão deste. Podemos nos referir a um `Gerente` como sendo um `Funcionario`. Se alguém precisa falar com um `Funcionario` do banco, pode falar com um `Gerente`! Porque? Pois `Gerente` **é um** `Funcionario`. Essa é a semântica da herança. + +```java +Gerente gerente = new Gerente(); +Funcionario funcionario = gerente; +funcionario.setSalario(5000.0); +``` + +
+ +```plantuml +@startuml +rectangle Memoria{ + card gerente + card funcionario + + + agent agent [ + Gerente + ---- + String nome + String cpf + double salario + int senha + int numeroDeFuncionariosGerenciados + ---- + boolean autentica(int senha) + ] + + gerente --> agent + funcionario --> agent + +} +@enduml +``` + + +
Representação da memória de duas variáveis para a mesmo referência.
+
+ + +Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas. (cuidado, polimorfismo não quer dizer que o objeto fica se transformando, muito pelo contrário, um objeto nasce de um tipo e morre daquele tipo, o que pode mudar é a maneira como nos referimos a ele). + +Até aqui tudo bem, mas e se eu tentar: + +```java +funcionario.getBonificacao(); +``` + +Qual é o retorno desse método? `500` ou `750`? No Java, a invocação de método sempre vai ser **decidida em tempo de execução**. O Java vai procurar o objeto na memória e, aí sim, decidir qual método deve ser chamado, sempre relacionando com sua classe de verdade, e não com a que estamos usando para referenciá-lo. Apesar de estarmos nos referenciando a esse `Gerente` como sendo um `Funcionario`, o método executado é o do `Gerente`. O retorno é `750`. + +Parece estranho criar um gerente e referenciá-lo como apenas um funcionário. Por que faríamos isso? Na verdade, a situação que costuma aparecer é a que temos um método que recebe um argumento do tipo `Funcionario`: +```java +class ControleDeBonificacoes { + private double totalDeBonificacoes = 0; + public void registra(Funcionario funcionario) { + this.totalDeBonificacoes += funcionario.getBonificacao(); + } + public double getTotalDeBonificacoes() { + return this.totalDeBonificacoes; + } +} +``` + +E, em algum lugar da minha aplicação (ou no main, se for apenas para testes): +```java +ControleDeBonificacoes controle = new ControleDeBonificacoes(); + +Gerente funcionario1 = new Gerente(); + +funcionario1.setSalario(5000.0); +controle.registra(funcionario1); +Funcionario funcionario2 = new Funcionario(); +funcionario2.setSalario(1000.0); +controle.registra(funcionario2); +System.out.println(controle.getTotalDeBonificacoes()); +``` + + +Perceba que conseguimos passar um `Gerente` para um método que recebe um `Funcionario` como argumento. Pense como numa porta na agência bancária com o seguinte aviso: "“Permitida a entrada apenas de Funcionários”". Um gerente pode passar nessa porta? Sim, pois `Gerente` **é um** `Funcionario`. + +Qual será o valor resultante? Não importa que dentro do método registra do `ControleDeBonificacoes` receba `Funcionario`. Quando ele receber um objeto que realmente é um `Gerente`, o seu método reescrito será invocado. Reafirmando: não importa como nos referenciamos a um objeto, o método que será invocado é sempre o que é dele. + +No dia em que criarmos uma classe `Secretaria`, por exemplo, que é filha de `Funcionario`, precisaremos mudar a classe de `ControleDeBonificacoes`? Não. Basta a classe `Secretaria` reescrever os métodos que lhe parecerem necessários. É exatamente esse o poder do polimorfismo, juntamente com a reescrita de método: diminuir o acoplamento entre as classes, para evitar que novos códigos resultem em modificações em inúmeros lugares. + +Perceba que quem criou `ControleDeBonificacoes` pode nunca ter imaginado a criação da classe `Secretaria` ou `Engenheiro`. Contudo, não será necessário reimplementar esse controle em cada nova classe: reaproveitamos aquele código + + +::: warning Herança versus acoplamento +Note que o uso de herança aumenta o acoplamento entre as classes, isto é, o quanto uma classe depende de outra. A relação entre classe mãe e filha é muito forte e isso acaba fazendo com que o programador das classes filhas tenha que conhecer a implementação da classe pai e vice-versa. Fica difícil fazer uma mudança pontual no sistema. + +Por exemplo, imagine se tivermos que mudar algo na nossa classe Funcionario, mas não quiséssemos que todos os funcionários sofressem a mesma mudança. Precisaríamos passar por cada uma das filhas de Funcionario verificando se ela se comporta como deveria ou se devemos sobrescrever o tal método modificado. + +Esse é um problema da herança, e não do polimorfismo, que resolveremos mais tarde com a +ajuda de Interfaces. +::: + + +#### Um outro exemplo + +Imagine que vamos modelar um sistema para a faculdade que controle as despesas com funcionários e professores. Nosso funcionário fica assim: +```java +class EmpregadoDaFaculdade { + private String nome; + private double salario; + double getGastos() { + return this.salario; + } + String getInfo() { + return "nome: " + this.nome + " com salário " + this.salario; + } + // métodos de get, set e outros +} +``` + +O gasto que temos com o professor não é apenas seu salário. Temos de somar um bônus de 10 reais por hora/aula. O que fazemos então? Reescrevemos o método. Assim como o `getGastos` é diferente, o `getInfo` também será, pois temos de mostrar as horas/aula também. +```java +class ProfessorDaFaculdade extends EmpregadoDaFaculdade { + private int horasDeAula; + double getGastos() { + return this.getSalario() + this.horasDeAula * 10; + } + String getInfo() { + String informacaoBasica = super.getInfo(); + String informacao = informacaoBasica + " horas de aula: " + this.horasDeAula; + return informacao; + } + // métodos de get, set e outros que forem necessários +} +``` + +A novidade, aqui, é a palavra chave super. Apesar do método ter sido reescrito, gostaríamos de acessar o método da classe mãe, para não ter de copiar e colocar o conteúdo desse método e depois concatenar com a informação das horas de aula. + +Como tiramos proveito do polimorfismo? Imagine que temos uma classe de relatório: +```java +class GeradorDeRelatorio { + public void adiciona(EmpregadoDaFaculdade f) { + System.out.println(f.getInfo()); + System.out.println(f.getGastos()); + } +} +``` + +Podemos passar para nossa classe qualquer `EmpregadoDaFaculdade`! Vai funcionar tanto para professor, quanto para outros funcionários. + +Um certo dia, muito depois de terminar essa classe de relatório, resolvemos aumentar nosso sistema, e colocar uma classe nova, que representa o `Reitor`. Como ele também é um `EmpregadoDaFaculdade`, será que vamos precisar alterar algo na nossa classe de `Relatorio`? Não. Essa é a ideia! Quem programou a classe `GeradorDeRelatorio` nunca imaginou que existiria uma classe `Reitor` e, mesmo assim, o sistema funciona. + +```java +class Reitor extends EmpregadoDaFaculdade { + // informações extras + String getInfo() { + return super.getInfo() + " e ele é um reitor"; + } + // não sobrescrevemos o getGastos!!! +} +``` + +### K19 + +[^k19oo] + +#### Controle de Ponto + +O sistema do banco deve possuir um controle de ponto para registrar a entrada e saída dos funcionários. O pagamento dos funcionários depende dessas informações. Podemos definir uma classe para implementar o funcionamento de um relógio de ponto. +```java +class ControleDePonto { + public void registraEntrada(Gerente g) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/ yyyy HH:mm:ss") ; + Date agora = new Date(); + System.out.println("ENTRADA:"+g.getCodigo()); + System.out.println("DATA:"+sdf.format(agora)); + } + public void registraSaida(Gerente g) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/ yyyy HH:mm:ss") ; + Date agora = new Date() ; + System.out.println("SAÍDA:"+g.getCodigo()); + System.out.println("DATA:"+sdf.format(agora)); + } +} +``` +A classe acima possui dois métodos: o primeiro para registrar a entrada e o segundo para registrar a saída dos gerentes do banco. Contudo, esses dois métodos não são aplicáveis aos outros tipos de funcionários. + +Seguindo essa abordagem, a classe `ControleDePonto` precisaria de um par de métodos para cada cargo. Então, a quantidade de métodos dessa classe seria igual a quantidade de cargos multiplicada por dois. Imagine que no banco exista 30 cargos distintos. Teríamos 60 métodos na classe `ControleDePonto`. + +Os procedimentos de registro de entrada e saída são idênticos para todos os funcionários. Consequentemente, qualquer alteração na lógica desses procedimentos implicaria na modificação de todos os métodos da classe `ControleDePonto`. + +Além disso, se o banco definir um novo tipo de funcionário, dois novos métodos praticamente +idênticos aos que já existem teriam de ser adicionados na classe `ControleDePonto`. Analogamente, se um cargo deixar de existir, os dois métodos correspondentes da classe `ControleDePonto` deverão ser retirados. + +#### Modelagem dos funcionários + +Com o intuito inicial de reutilizar código, podemos modelar os diversos tipos de funcionários do banco utilizando o conceito de herança. + +```java +class Funcionario { + private int codigo ; + // GETTERS AND SETTERS +} +``` +```java +class Gerente extends Funcionario { + private String usuario ; + private String senha ; + // GETTERS AND SETTERS +} +``` +```java +class Telefonista extends Funcionario { + private int ramal ; + // GETTERS AND SETTERS +} +``` + +##### É UM (extends) + +Além de gerar reaproveitamento de código, a utilização de herança permite que objetos criados a partir das classes específicas sejam tratados como objetos da classe genérica. + +Em outras palavras, a herança entre as classes que modelam os funcionários permite que objetos criados a partir das classes `Gerente` ou `Telefonista` sejam tratados como objetos da classe `Funcionario`. + +No código da classe `Gerente` utilizamos a palavra **extends**. Ela pode ser interpretada como a +expressão: **É UM** ou **É UMA**. + +```java +class Gerente extends Funcionario +// TODO Gerente É UM Funcionario +``` + +Como está explícito no código que todo gerente é um funcionário então podemos criar um objeto da classe `Gerente` e tratá-lo como um objeto da classe `Funcionario` também. +```java +// Criando um objeto da classe Gerente +Gerente g = new Gerente(); +// Tratando um gerente como um objeto da classe Funcionario +Funcionario f = g ; +``` + +Em alguns lugares do sistema do banco será mais vantajoso tratar um objeto da classe `Gerente` como um objeto da classe `Funcionario`. + +##### Melhorando o controle de ponto + +O registro da entrada ou saída não depende do cargo do funcionário. Não faz sentido criar um método que registre a entrada para cada tipo de funcionário, pois eles serão sempre idênticos. Analogamente, não faz sentido criar um método que registre a saída para cada tipo de funcionário. + +Dado que podemos tratar os objetos das classes derivadas de `Funcionario` como sendo objetos dessa classe, podemos implementar um método que seja capaz de registrar a entrada de qualquer funcionário independentemente do cargo. Analogamente, podemos fazer o mesmo para o procedimento de saída. +```java +class ControleDePonto { + public void registraEntrada(Funcionario f) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/ yyyy HH:mm:ss") ; + Date agora = new Date() ; + System.out.println("ENTRADA:"+f.getCodigo()); + System.out.println("DATA:"+sdf.format(agora)); + } + public void registraSaida(Funcionario f) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/ yyyy HH:mm:ss") ; + Date agora = new Date() ; + System.out.println("SAÍDA:"+f.getCodigo()); + System.out.println("DATA:"+sdf.format(agora)); + } +} +``` + +Os métodos `registraEntrada()` e `registraSaida()` recebem referências de objetos da classe `Funcionario` como parâmetro. Consequentemente, podem receber referências de objetos de qualquer classe que deriva direta ou indiretamente da classe Funcionario. + +A capacidade de tratar objetos criados a partir das classes específicas como objetos de uma classe genérica é chamada de polimorfismo. + +Aplicando a ideia do polimorfismo no controle de ponto, facilitamos a manutenção da classe `ControleDePonto`. Qualquer alteração no procedimento de entrada ou saída implica em alterações em métodos únicos. + +Além disso, novos tipos de funcionários podem ser definidos sem a necessidade de qualquer alteração na classe `ControleDePonto`. Analogamente, se algum cargo deixar de existir, nada precisará ser modificado na classe `ControleDePonto`. + + +## Classes Abstratas + + +- Classes abstratas são classes que não produzem instâncias. Elas agrupam características e comportamentos que serão herdados por outras classes +- Fornecem padrões de comportamento que serão implementados nas suas subclasses +- Podem ter métodos com implementação definida +- Não pode ser instanciada diretamente (`new`). +- Uma classe abstrata possui características que devem ser implementadas por classes filhas +- Os métodos abstratos são obrigatoriamente implementados pelas classes filhas concretas, quando a mesma herda de uma classe abstrata. + +```java +public abstract class Pessoa { + int matricula; + String nome; + public abstract void estacionar(); + public void entrar(){ + System.out.println("Entrando na Faculdade"); + } +} +``` + +```java +public class Aluno extends Pessoa { + double media; + + public void estacionar(){ + System.out.println("Estacionando na área para estudante..."); + } +} +``` + +```java +public class Professor extends Pessoa { + double salario; + public void estacionar(){ + System.out.println("Estacionando nas vagas de professor"); + } +} +``` + +
+ +```plantuml +@startuml + + abstract class Pessoa { + -int matricula; + -String nome; + +{abstract} void estacionar(); + +void entrar(); +} + + class Aluno extends Pessoa { + -double media; + +void estacionar(); +} + + class Professor extends Pessoa { + -double salario; + +void estacionar(); +} + +@enduml +``` + +
UML Classe abstrata Pessoa e classes concretas Aluno e Professor.
+
+ +### Outros Exemplos + +#### Caelum + +[^caelumoo] + +Vamos recordar em como pode estar nossa classe `Funcionario`: + +```java +class Funcionario { + protected String nome; + protected String cpf; + protected double salario; + public double getBonificacao() { + return this.salario * 1.2; + } + // outros métodos aqui +} +``` + +Considere o nosso `ControleDeBonificacao`: + +```java +class ControleDeBonificacoes { + private double totalDeBonificacoes = 0; + public void registra(Funcionario f) { + System.out.println("Adicionando bonificação do funcionario: " + f); + this.totalDeBonificacoes += f.getBonificacao(); + } + public double getTotalDeBonificacoes() { + return this.totalDeBonificacoes; + } +} +``` + +Nosso método `registra` recebe qualquer referência do tipo `Funcionario`, isto é, podem ser objetos do tipo `Funcionario` e qualquer de seus subtipos: `Gerente`, `Diretor` e, eventualmente, alguma nova subclasse que venha ser escrita, sem prévio conhecimento do autor da `ControleDeBonificacao`. + +Estamos utilizando aqui a classe `Funcionario` para o polimorfismo. Se não fosse ela, teríamos um grande prejuízo: precisaríamos criar um método `registra` para receber cada um dos tipos de `Funcionario`, um para `Gerente`, um para `Diretor`, etc. Repare que perder esse poder é muito pior do que a pequena vantagem que a herança traz em herdar código. + +Porém, em alguns sistemas, como é o nosso caso, usamos uma classe com apenas esses intuitos: de economizar um pouco código e ganhar polimorsmo para criar métodos mais genéricos, que se encaixem a diversos objetos. + +Faz sentido ter uma referência do tipo `Funcionario`? Essa pergunta é diferente de saber se faz sentido ter um objeto do tipo `Funcionario:` nesse caso, faz sim e é muito útil. + +Referenciando `Funcionario` temos o polimorfismo de referência, já que podemos receber qualquer objeto que seja um `Funcionario`. Porém, dar `new` em `Funcionario` pode não fazer sentido, isto é, não queremos receber um objeto do tipo `Funcionario`, mas sim que aquela referência seja ou um `Gerente`, ou um `Diretor`, etc. Algo mais **concreto** que um `Funcionario`. + +```java +ControleDeBonificacoes cdb = new ControleDeBonificacoes(); +Funcionario f = new Funcionario(); +cdb.adiciona(f); // faz sentido? +``` + +Vejamos um outro caso em que não faz sentido ter um objeto daquele tipo, apesar da classe existir: imagine a classe `Pessoa` e duas filhas, `PessoaFisica` e `PessoaJuridica`. Quando puxamos um relatório de nossos clientes (uma `array` de `Pessoa` por exemplo), queremos que cada um deles seja ou uma `PessoaFisica`, ou uma `PessoaJuridica`. A classe `Pessoa`, nesse caso, estaria sendo usada apenas para ganhar o polimorfismo e herdar algumas coisas: não faz sentido permitir instanciá-la. + +Para resolver esses problemas, temos as *classes abstratas*. + + +##### Classe abstrata + +O que, exatamente, vem a ser a nossa classe `Funcionario`? Nossa empresa tem apenas Diretores, Gerentes, Secretárias, etc. Ela é uma classe que apenas idealiza um tipo, define apenas um rascunho. + +Para o nosso sistema, é inadmissível que um objeto seja apenas do tipo `Funcionario` (pode existir um sistema em que faça sentido ter objetos do tipo Funcionario ou apenas `Pessoa`, mas, no nosso caso, não). + +Usamos a palavra chave *abstract* para impedir que ela possa ser instanciada. Esse é o efeito direto de se usar o modificador `abstract` na declaração de uma classe: + +```java +abstract class Funcionario { + protected double salario; + public double getBonificacao() { + return this.salario * 1.2; + } + // outros atributos e métodos comuns a todos Funcionarios +} +``` + +E, no meio de um código: + +```java +Funcionario f = new Funcionario(); // não compila!!! +``` + +O código acima não compila. O problema é instanciar a classe - criar referência, você pode. Se ela não pode ser instanciada, para que serve? Serve para o polimorfismo e herança dos atributos e métodos, que são recursos muito poderosos, como já vimos. + +Vamos então herdar dessa classe, reescrevendo o método `getBonificacao` + +```java +class Gerente extends Funcionario { + public double getBonificacao() { + return this.salario * 1.4 + 1000; + } +} +``` + +
+ +```plantuml +@startuml + +abstract class Funcionario +class Gerente extends Funcionario +class Presidente extends Funcionario +class Diretor extends Gerente + +@enduml +``` + +
UML da classe abstrata Funcionario e das classes concretas Gerente, Presidente e Diretor.
+ +
+ +Mas qual é a real vantagem de uma classe abstrata? Poderíamos ter feito isto com uma herança comum. Por enquanto, a única diferença é que não podemos instanciar um objeto do tipo `Funcionario`, que já é de grande valia, dando mais consistência ao sistema. + +Fique claro que a nossa decisão de transformar `Funcionario` em uma classe abstrata dependeu do nosso domínio. Pode ser que, em um sistema com classes similares, faça sentido que uma classe análoga a `Funcionario` seja concreta. + +##### Métodos abstratos +Se o método `getBonificacao` não fosse reescrito, ele seria herdado da classe mãe, fazendo com que devolvesse o salário mais 20%. + +Levando em consideração que cada funcionário em nosso sistema tem uma regra totalmente diferente para +ser bonificado, faz algum sentido ter esse método na classe `Funcionario`? Será que existe uma bonificação +padrão para todo tipo de `Funcionario`? Parece que não, cada classe filha terá um método diferente de bonificação pois, de acordo com nosso sistema, não existe uma regra geral: queremos que cada pessoa que escreve +a classe de um `Funcionario` diferente (subclasses de `Funcionario`) reescreva o método `getBonificacao` de +acordo com as suas regras. + +Poderíamos, então, jogar fora esse método da classe `Funcionario`? O problema é que, se ele não existisse, +não poderíamos chamar o método apenas com uma referência a um `Funcionario`, pois ninguém garante +que essa referência aponta para um objeto que possui esse método. Será que então devemos retornar um +código, como um número negativo? Isso não resolve o problema: se esquecermos de reescrever esse método, +teremos dados errados sendo utilizados como bônus. + +Existe um recurso em Java que, em uma classe abstrata, podemos escrever que determinado método será +sempre escrito pelas classes filhas. Isto é, um **método abstrato**. + +Ele indica que todas as classes filhas (concretas, isto é, que não forem abstratas) devem reescrever esse método +ou não compilarão. É como se você herdasse a responsabilidade de ter aquele método. + +::: tip Como declarar um método abstrato +Às vezes, não fica claro como declarar um método abstrato. + +Basta escrever a palavra chave *abstract* na assinatura do mesmo e colocar um ponto e vírgula +em vez de abre e fecha chaves! +::: + +```java +abstract class Funcionario { + abstract double getBonificacao(); + // outros atributos e métodos +} +``` + + +#### K19 + +[^k19oo] + + +##### Classes Abstratas + +No banco, todas as contas são de um tipo específico. Por exemplo, conta poupança, conta corrente ou conta salário. Essas contas poderiam ser modeladas através das seguintes classes utilizando o conceito de herança: + +```java +class Conta { + // Atributos + // Construtores + // Métodos +} +``` + +```java +class ContaPoupanca extends Conta { + // Atributos + // Construtores + // Métodos +} +``` + +```java +class ContaCorrente extends Conta { + // Atributos + // Construtores + // Métodos +} +``` + +Para cada conta do domínio do banco devemos criar um objeto da classe correspondente ao tipo da conta. Por exemplo, se existe uma conta poupança no domínio do banco devemos criar um objeto da classe `ContaPoupanca`. + +```java +ContaPoupanca cp = new ContaPoupanca(); +``` + +Faz sentido criar objetos da classe `ContaPoupanca` pois existem contas poupança no domínio do banco. Dizemos que a classe `ContaPoupanca` é uma classe concreta pois criaremos objetos a partir dela. + +Por outro lado, a classe `Conta` não define uma conta que de fato existe no domínio do banco. Ela apenas serve como "base" para definir as contas concretos. + +Não faz sentido criar um objeto da classe `Conta` pois estaríamos instanciado um objeto que não é suficiente para representar uma conta que pertença ao domínio do banco. Mas, a princípio, não há nada proibindo a criação de objetos dessa classe. Para adicionar essa restrição no sistema, devemos tornar a classe `Conta` **abstrata**. + +Uma classe concreta pode ser diretamente utilizada para instanciar objetos. Por outro lado, uma classe abstrata não pode. Para definir uma classe abstrata, basta adicionar o modificador abstract. + +```java +abstract class Conta { + // Atributos + // Construtores + // Métodos +} +``` + +Todo código que tenta criar um objeto de uma classe abstrata não compila. + +```java +// Erro de compilação +Conta c = new Conta(); +``` + +##### Métodos Abstratos +Suponha que o banco ofereça extrato detalhado das contas e para cada tipo de conta as informações e o formato desse extrato detalhado são diferentes. Além disso, a qualquer momento o banco pode mudar os dados e o formato do extrato detalhado de um dos tipos de conta. + +Neste caso, parece não fazer sentido ter um método na classe `Conta` para gerar extratos detalhados pois ele seria reescrito nas classes específicas sem nem ser reaproveitado. + +Poderíamos, simplesmente, não definir nenhum método para gerar extratos detalhados na classe `Conta`. Porém, não haveria nenhuma garantia que as classes que derivam direta ou indiretamente da classe `Conta` implementem métodos para gerar extratos detalhados. + +Mas, mesmo supondo que toda classe derivada implemente um método para gerar os extratos que desejamos, ainda não haveria nenhuma garantia em relação as assinaturas desses métodos. As classes derivadas poderiam definir métodos com nomes ou parâmetros diferentes. Isso prejudicaria a utilização dos objetos que representam as contas devido a falta de padronização das operações. + +Para garantir que toda classe concreta que deriva direta ou indiretamente da classe `Conta` tenha uma implementação de método para gerar extratos detalhados e além disso que uma mesma assinatura de método seja utilizada, devemos utilizar o conceito de métodos abstratos. + +Na classe `Conta`, definimos um método abstrato para gerar extratos detalhados. Um método abstrato não possui corpo (implementação). + +```java +abstract class Conta { + // Atributos + // Construtores + // Métodos + public abstract void imprimeExtratoDetalhado(); +} +``` + +As classes concretas que derivam direta ou indiretamente da classe Conta devem possuir uma implementação para o método `imprimeExtratoDetalhado()`. + +```java +class ContaPoupanca extends Conta { + private int diaDoAniversario ; + public void imprimeExtratoDetalhado(){ + System.out.println("EXTRATO DETALHADO DE CONTA POUPANÇA") ; + SimpleDateFormat sdf = new SimpleDateFormat ("dd/MM/yyyy HH:mm:ss") ; + Date agora = new Date(); + System.out.println("DATA:"+sdf.format(agora)); + System.out.println("SALDO:"+this.getSaldo()); + System.out.println("ANIVERSÁRIO:"+this.diaDoAniversario); + } +} +``` + +Se uma classe concreta derivada da classe `Conta` não possuir uma implementação do método `imprimeExtratoDetalhado()` ela não compilará. + +```java +// ESSA CLASSE NÃO COMPILA +class ContaPoupanca extends Conta { +} +``` + +### Interface + +##### Padronização + +No dia a dia, estamos acostumados a utilizar aparelhos que dependem de energia elétrica. Esses aparelhos possuem um plugue que deve ser conectado a uma tomada para obter a energia necessária. + +Diversas empresas fabricam aparelhos elétricos com plugues. Analogamente, diversas empresas fabricam tomadas elétricas. Suponha que cada empresa decida por conta própria o formato dos plugues ou das tomadas que fabricará. Teríamos uma infinidade de tipos de plugues e tomadas que tornaria a utilização dos aparelhos elétricos uma experiência extremamente desagradável. + +Inclusive, essa falta de padrão pode gerar problemas de segurança aos usuários. Os formatos dos plugues ou das tomadas pode aumentar o risco de uma pessoa tomar um choque elétrico. + +Com o intuito de facilitar a utilização dos consumidores e aumentar a segurança dos mesmos, o governo através dos órgãos responsáveis estabelece padrões para os plugues e tomadas. Esses padrões estabelecem restrições que devem ser respeitadas pelos fabricantes dos aparelhos e das tomadas. + +Em diversos contextos, padronizar pode trazer grandes benefícios. Inclusive, no desenvolvimento de aplicações. Mostraremos como a ideia de padronização pode ser contextualizada nos conceitos de orientação a objetos. + +##### Contratos +Num sistema orientado a objetos, os objetos interagem entre si através de chamadas de métodos (troca de mensagens). Podemos dizer que os objetos se “encaixam” através dos métodos públicos assim como um plugue se encaixa em uma tomada através dos pinos. + +Para os objetos de uma aplicação “conversarem” entre si mais facilmente é importante padronizar o conjunto de métodos oferecidos por eles. Assim como os plugues encaixam nas tomadas mais facilmente graças aos padrões definidos pelo governo. + +Um padrão é definido através de especificações ou contratos. Nas aplicações orientadas a objetos, podemos criar um “contrato” para definir um determinado conjunto de métodos que deve ser implementado pelas classes que “assinarem” este contrato. Em orientação a objetos, um contrato é chamado de interface. Um interface é composta basicamente por métodos abstratos. + + + +##### Exemplo +No sistema do banco, podemos definir uma interface (contrato) para padronizar as assinaturas dos métodos oferecidos pelos objetos que representam as contas do banco. + +```java +interface Conta { + void deposita ( double valor ) ; + void saca ( double valor ) ; +} +``` + +Os métodos de uma interface não possuem corpo (implementação) pois serão implementados nas classes vinculadas a essa interface. Todos os métodos de uma interface devem ser públicos e abstratos. Os modificadores public e **abstract** são opcionais. + +As classes que definem os diversos tipos de contas que existem no banco devem implementar (assinar) a interface Conta. + +```java +class ContaPoupanca implements Conta { + public void deposita ( double valor ) { + // implementacao + } + public void saca ( double valor ) { + // implementacao + } +} +``` + +```java +class ContaCorrente implements Conta { + public void deposita ( double valor ) { + // implementacao + } + public void saca ( double valor ) { + // implementacao + } +} +``` + +As classes concretas que implementam uma interface são obrigadas a possuir uma implementação para cada método declarado na interface. Caso contrário, ocorrerá um erro de compilação. + +```java +// Esta classe não compila porque ela não implementou o método saca () +class ContaCorrente implements Conta { + public void deposita ( double valor ) { + // implementacao + } +} +``` + +A primeira vantagem de utilizar uma interface é a padronização das assinaturas dos métodos oferecidos por um determinado conjunto de classes. A segunda vantagem é garantir que determinadas classes implementem certos métodos. + +##### Polimorfismo + +Se uma classe implementa uma interface, podemos aplicar a ideia do polimorfismo assim como quando aplicamos herança. Dessa forma, outra vantagem da utilização de interfaces é o ganho do polimorfismo. + +Como exemplo, suponha que a classe ContaCorrente implemente a interface Conta. Podemos guardar a referência de um objeto do tipo ContaCorrente em uma variável do tipo Conta. + +```java +Conta c = new ContaCorrente(); +``` + +Além disso, podemos passar uma variável do tipo ContaCorrente para um método que o parâmetro seja do tipo Conta. + +```java +class GeradorDeExtrato { + public void geraExtrato ( Conta c ) { + // implementação + } +} +``` + +```java +GeradorDeExtrato g = new GeradorDeExtrato(); +ContaCorrente c = new ContaCorrente(); +g.geraExtrato(c) ; +``` + +O método `geraExtrato()` pode ser utilizado para objetos criados a partir de classes que implementam direta ou indiretamente a interface Conta. + + +##### Interface e Herança + +As vantagens e desvantagens entre interface e herança, provavelmente, é um dos temas mais discutido nos blogs, fóruns e revistas que abordam desenvolvimento de software orientado a objetos. + +Muitas vezes, os debates sobre este assunto se estendem mais do que a própria importância desse tópico. Muitas pessoas se posicionam de forma radical defendendo a utilização de interfaces ao invés de herança em qualquer situação. + +Normalmente, esses debates são direcionados na análise do que é melhor para manutenção das aplicações: utilizar interfaces ou aplicar herança. + +A grosso modo, priorizar a utilização de interfaces permite que alterações pontuais em determinados trechos do código fonte sejam feitas mais facilmente pois diminui as ocorrências de efeitos colaterais indesejados no resto da aplicação. Por outro lado, priorizar a utilização de herança pode diminuir a quantidade de código escrito no início do desenvolvimento de um projeto. + +Algumas pessoas propõem a utilização de interfaces juntamente com composição para substituir totalmente o uso de herança. De fato, esta é uma alternativa interessante pois possibilita que um trecho do código fonte de uma aplicação possa ser alterado sem causar efeito colateral no restante do sistema além de permitir a reutilização de código mais facilmente. + +Em Java, como não há herança múltipla, muitas vezes, interfaces são apresentadas como uma alternativa para obter um grau maior de polimorfismo. + +Por exemplo, suponha duas árvores de herança independentes + + +
+ +```plantuml +@startuml +class Cliente +class PessoaFisica extends Cliente +class PessoaJuridica extends Cliente + +class Funcionario +class Gerente extends Funcionario +class Seguranca extends Funcionario + +@enduml +``` + +
Duas árvores de herança independentes.
+
+ +Suponha que os gerentes e as empresas possam acessar o sistema do banco com um nome de usuário e uma senha. Seria interessante utilizar um único método para implementar a autenticação desses dois tipos de objetos. Mas, qual seria o tipo de parâmetro deste método? Lembrando que ele deve aceitar gerentes e empresas. + +```java +class AutenticadorDeUsuario { + public boolean autentica (??? u ) { + // implementação + } +} +``` + +De acordo com as árvores de herança, não há polimorfismo entre objetos da classe Gerente e da classe Empresa. Para obter polimorfismo entre os objetos dessas duas classes somente com herança, deveríamos colocá-las na mesma árvore de herança. Mas, isso não faz sentido pois uma empresa não é um funcionário e o gerente não é cliente. Neste caso, a solução é utilizar interfaces para obter o polimorfismo desejado + + +
+ +```plantuml +@startuml +class Cliente +class PessoaFisica extends Cliente +class PessoaJuridica extends Cliente implements Usuario + +class Funcionario +class Gerente extends Funcionario implements Usuario +class Seguranca extends Funcionario + +interface Usuario + +@enduml +``` + +
Obtendo mais polimorfismo.
+
+ + +Agora, conseguimos definir o que o método autentica() deve receber como parâmetro para trabalhar tanto com gerentes quanto com empresas. Ele deve receber um parâmetro do tipo Usuario. + + +@[code](./code/poo/Usuario.java) +@[code](./code/poo/Cliente.java) +@[code](./code/poo/PessoaFisica.java) +@[code](./code/poo/PessoaJuridica.java) +@[code](./code/poo/Funcionario.java) +@[code](./code/poo/Gerente.java) +@[code](./code/poo/Seguranca.java) +@[code](./code/poo/AutenticadorDeUsuario.java) + + +###### Mais sobre herança e interface + +```java +public interface Conta { + public double getSaldo(); + public void deposita(double valor); + public void saca(double valor); + public void atualiza(double taxaSelic); +} + +class ContaCorrente implements Conta { +// ... +} +class ContaPoupanca implements Conta { +// ... +} +``` + +Às vezes, é interessante criarmos uma interface que herda de outras interfaces: essas, são chamadas subinterfaces. Essas, nada mais são do que um agrupamento de obrigações para a classe que a implementar + +```java +interface Tributavel { + //... + public void calcularTributo(); +} +``` + +```java +interface ContaTributavel extends Conta, Tributavel { + +} +``` +Dessa maneira, quem for implementar essa nova interface precisa implementar todos os métodos herdados das suas superinterfaces (e talvez ainda novos métodos declarados dentro dela): + +```java +class ContaInvestimento implements ContaTributavel { +// métodos +} + +``` + +```java +ContaTributavel ct = new ContaInvestimento(); +Conta c = new ContaInvestimento(); +Tributavel t = new ContaInvestimento(); +``` + +Perceba que o código pode parecer estranho, pois a interface não declara método algum, só herda os +métodos abstratos declarados nas outras interfaces. Ao mesmo tempo que uma interface pode herdar de mais de uma outra interface, classes só podem possuir uma classe mãe (herança simples). + +
+ +```plantuml +@startuml +interface Conta +interface Tributavel +interface ContaTributavel extends Conta, Tributavel +class ContaInvestimento implements ContaTributavel +@enduml +``` + +
Representação da herança entre interfaces.
+
+ +#### Interfaces = Classe Abstratas + +Em algumas linguagens de programação não existe o conceito de `interface`. + +A `interface` é um tipo específico de classe abstrata onde existe apenas as definições de comportamentos. + + + +## Referências + + \ No newline at end of file diff --git a/posts/03_SOLID.md b/posts/03_SOLID.md new file mode 100644 index 00000000..21a63b10 --- /dev/null +++ b/posts/03_SOLID.md @@ -0,0 +1,608 @@ +--- +icon: edit +date: 2023-04-04 20:10:00.00 -3 +tag: + - solid +category: + - aula +order: 3 +--- + +# Princípios SOLID + +Adaptado de [^JoaoRobertoSOLID]. + +SOLID são cinco princípios da programação orientada a objetos que facilitam no desenvolvimento de softwares, tornando-os fáceis de manter e estender. Esses princípios podem ser aplicados a qualquer linguagem de Programação Orientada a Objetos. + +Michael Feathers criou esse acrônimo após observar cinco princípios da orientação a objetos e design de código criados por Robert C. Martin (a.k.a. Uncle Bob) e abordados no artigo The Principles of OOD + + +S.O.L.I.D: Os 5 princípios da POO +1. S — Single Responsiblity Principle (Princípio da responsabilidade única) +1. O — Open-Closed Principle (Princípio Aberto-Fechado) +1. L — Liskov Substitution Principle (Princípio da substituição de Liskov) +1. I — Interface Segregation Principle (Princípio da Segregação da Interface) +1. D — Dependency Inversion Principle (Princípio da inversão da dependência) + +Esses princípios ajudam o programador a escrever códigos mais limpos, separando responsabilidades, diminuindo acoplamentos, facilitando na refatoração e estimulando o reaproveitamento do código. + +## Princípio da Responsabilidade Única (SRP) + +Adaptado de [^RobsonSRP] e [^JoaoRobertoSOLID]. + +Este princípio nada mais é do que uma perspectiva diferente para um dos mais fundamentais princípios da orientação a objetos: a coesão. + +Esse princípio declara que uma classe deve ser especializada em um único assunto e possuir apenas uma responsabilidade dentro do software, ou seja, a classe deve ter uma única tarefa ou ação para executar. + +::: tip Princípio da Responsabilidade Única +Uma classe deve ter um, e somente um, motivo para mudar. +::: + +Vamos tentar entender o que isso significa e eventuais problemas causados pela violação deste princípio. + +### Alguns Problemas + + +Quando estamos aprendendo programação orientada a objetos, sem sabermos, damos a uma classe mais de uma responsabilidade e acabamos criando classes que fazem de tudo (*God Class*). Num primeiro momento isso pode parecer eficiente, mas como as responsabilidades acabam se misturando, quando há necessidade de realizar alterações nessa classe, será difícil modificar uma dessas responsabilidades sem comprometer as outras. Toda alteração acaba sendo introduzida com um certo nível de incerteza em nosso sistema — principalmente se não existirem testes automatizados! + +Alguns problemas decorrentes da utilização de *God Class*: + +- Dificuldade de compreensão e, portanto, dificuldade de manutenção. +- Dificuldade de reuso. +- Com responsabilidades entrelaçadas em uma mesma classe, pode ficar difícil alterar uma dessas responsabilidades sem comprometer as outras (rigidez) e pode acabar quebrando outras partes do software (fragilidade). +- Acoplamento alto, ou seja, a classe tem um número excessivo de dependências, e portanto fica mais sujeita a mudanças em decorrência de alterações em outras classes (novamente a fragilidade). + +### Exemplos Comuns de Violação + +Imaginem uma classe de negócio Pedido: + +```java +public class Pedido{ + public void adicionarProduto(Produto produto, int quantidade){} + public double calcularTotal(){} + public void gerarPlanilhaExcel(){} +} +``` + +No exemplo acima, temos uma quebra do SRP de uma forma bem explícita, uma vez que temos responsabilidades que deveriam ser de componentes distintos do software. Enquanto os dois primeiros métodos fazem sentido para o domínio do qual Pedido faz parte, o último está relacionado à exibição de dados em um formato específico, o que faz mais sentido em camadas superiores, como de Aplicação ou de UI. + +Em um projeto com várias classes seguindo esse “padrão”, fica difícil – ou impossível – manter a coesão em um nível mais alto: em nível de componentes. Em outras palavras, o software acaba sendo um emaranhado de classes sem um divisão clara de camadas. + +De forma mais prática: chega um momento onde fica impossível separar determinadas classes em uma class library devido à referência circular. Também fica complicado fazer o deploy de componentes isolados por haver dependências demais entre eles. + +Outros exemplos comuns são: + 1. Classes que misturam negócio e persistência (Pedido, por exemplo, contém métodos que sabem incluir, alterar e excluir pedidos, fazendo com o que mesmo seja acoplado com classes como SqlConnection ou ainda algum ORM); + 1. *View models* que apresentam regras de negócio; + +### Um Exemplo Menos Óbvio + +Nem sempre é fácil identificar várias responsabilidades em uma mesma classe. Eu diria que na maioria das vezes não é. Aliás, atribuir responsabilidades é uma das principais tarefas de um programador OO. + +Mesmo que uma classe de negócio esteja fazendo apenas tarefas relacionadas ao seu domínio, ela pode estar fazendo coisas demais. + +Vejamos o seguinte exemplo: +```java +public class Cliente{ + // dados do cliente, como Nome, CPF, etc. + // outros métodos + + public double calcularDescontoPara(Venda venda) { + if (FormaDePagamento.AVista.equals(venda.getFormaDePagamento()){ + if (venda.getTotal() > 2000) + return venda.getTotal() * 0.2; + return venda.getTotal() * 0.1; + } + return 0; + } +} +``` +Observem acima que o método `calcularDescontoPara` não manipula nenhum dado da classe `Cliente`, ou seja, nenhuma informação do cliente é necessária para se determinar o valor do desconto. + +Sendo assim, esta classe possui pelo menos duas razões para mudar: uma quando houver alteração na lógica de negócio referente a um `Cliente` e outra quando houver alguma alteração na lógica de uma `Venda`. + +Certamente, faz mais sentido que este método seja da classe `Venda`! + +### Outro exemplo + +```java +public class Order{ + public double calculateTotalSum(){/*...*/} + public List getItems(){/*...*/} + public int getItemCount(){/*...*/} + public void addItem(Item item){/*...*/} + public void deleteItem(Item item){/*...*/} + + public void printOrder(){/*...*/} + public void showOrder(){/*...*/} + + public void load(){/*...*/} + public void save(){/*...*/} + public void update(){/*...*/} + public void delete(){/*...*/} +} +``` + +A classe `Order` viola o SRP porque realiza 3 tipos distintos de tarefas. Além de lidar com as informações do pedido, ela também é responsável pela exibição e manipulação dos dados. Lembre-se, o princípio da responsabilidade única preza que uma classe deve ter um, e somente um, motivo para mudar. + +A violação do _Single Responsibility Principle_ pode gerar alguns problemas, sendo eles: +- Falta de coesão — uma classe não deve assumir responsabilidades que não são suas; +- Alto acoplamento — Mais responsabilidades geram um maior nível de dependências, deixando o sistema engessado e frágil para alterações; +- Dificuldades na implementação de testes automatizados — É difícil de "mockar" esse tipo de classe; +- Dificuldades para reaproveitar o código; +Aplicando o SRP na classe Order, podemos refatorar o código da seguinte forma: + +```java +public class Order{ + public double calculateTotalSum(){/*...*/} + public List getItems(){/*...*/} + public int getItemCount(){/*...*/} + public void addItem(Item item){/*...*/} + public void deleteItem(Item item){/*...*/} +} + +public class OrderRepository{ + public Order load(double orderId){/*...*/} + public Order save(Order order){/*...*/} + public Order update(Order order){/*...*/} + public void delete(Order order){/*...*/} +} + +public class OrderViewer{ + public void printOrder(Order order){/*...*/} + public void showOrder(Order order){/*...*/} +} +``` + +Perceba no exemplo acima que agora temos 3 classes, cada uma cuidando da sua responsabilidade. + +O princípio da responsabilidade única não se limita somente a classes, ele também pode ser aplicado em métodos e funções, ou seja, tudo que é responsável por executar uma ação, deve ser responsável por apenas aquilo que se propõe a fazer. + + +### Conclusão + +O SRP é um dos princípios mais importantes que existe na orientação a objetos. Quando falamos de responsabilidades e coesão estamos tocando em dois pontos-chave da OO, que nos ajudam a criar classes menores, de mais fácil entendimento, manutenção e reuso. + + +## Princípio Aberto-Fechado (OCP) + +Adaptado de [^RobsonOCP] e [^JoaoRobertoSOLID]. + +O OCP é mais um daqueles princípios de orientação a objetos que nos ajudam a eliminar *design smells,* possibilitando que nosso código ganhe em facilidade de manutenção e extensão. + +::: tip Princípio Aberto-Fechado +Entidades de software (classes, módulos, funções, etc.) devem ser abertas para extensão mas fechadas para modificação. +::: + +A moral da história é a seguinte: quando eu precisar estender o comportamento de um código, eu crio código novo ao invés de alterar o código existente. + +Objetos ou entidades devem estar abertos para extensão, mas fechados para modificação, ou seja, quando novos comportamentos e recursos precisam ser adicionados no software, devemos estender e não alterar o código fonte original. + +### Exemplo prático do OCP: +Em um sistema hipotético de RH, temos duas classes que representam os contratos de trabalhos dos funcionários de uma pequena empresa, contratados e estagiários. Além de uma classe para processar a folha de pagamento. + +```java +public class ContratoClt{ + public double salario(){ + //... + } +} + +public class Estagio{ + public double bolsaAuxilio(){ + //... + } +} + +public class FolhaDePagamento{ + private double saldo; + + public double calcular(ContratoClt contratoClt ){ + this.saldo = contratoClt.salario(); + } + public double calcular(Estagio estagio ){ + this.saldo = estagio.bolsaAuxilio(); + } +} +``` + +A classe `FolhaDePagamento` precisa verificar o funcionário para aplicar a regra de negócio correta na hora do pagamento. Supondo que a empresa cresceu e resolveu trabalhar com funcionários PJ, obviamente seria necessário modificar essa classe! Sendo assim, estaríamos quebrando o princípio Aberto-Fechado do SOLID. + + +Qual o problema de se alterar a classe FolhaDePagamento? + +Não seria mais fácil apenas acrescentar mais um IF (ou criar um novo método) e verificar o novo tipo de funcionário PJ aplicando as respectivas regras? Sim, e provavelmente essa seria a solução que programadores menos experientes iriam fazer. Mas, esse é exatamente o problema! *Alterar uma classe já existente para adicionar um novo comportamento, corremos um sério risco de introduzir bugs em algo que já estava funcionando.* + +::: tip Lembre-se +OCP preza que uma classe deve estar fechada para alteração e aberta para extensão. +::: + + +Como adicionamos um novo comportamento sem alterar o código fonte já existente? + +O guru Uncle Bob resumiu a solução em uma frase: + +> Separate extensible behavior behind an interface, and flip the dependencies. + +Em tradução direta, seria: + +> Separe o comportamento extensível por trás de uma interface e inverta as dependências. + +O que devemos fazer é concentrar nos aspectos essências do contexto, abstraindo-os para uma interface. Se as abstrações são bem definidas, logo o software estará aberto para extensão. + +### Aplicando OCP na prática + +Voltando para o nosso exemplo, podemos concluir que o contexto que estamos lidando é a remuneração dos contratos de trabalho, aplicando as premissas de se isolar o comportamento extensível atrás de uma interface, podemos criar uma interface com o nome `Remuneravel` contendo o método `remuneracao()`, e fazer com que nossas classes de contrato de trabalho implementem essa interface. Além disso, iremos colocar as regras de calculo de remuneração para suas respectivas classes, dentro do método `remuneracao()`, fazendo com que a classe `FolhaDePagamento` dependa somente da interface `Remuneravel` que iremos criar. + +Veja o código refatorado abaixo: + +```java + +public interface Remuneravel{ + public double remuneracao(); +} + +public class ContratoClt implements Remuneravel{ + public double remuneracao(){ + return salario(); + } +} + +public class Estagio implements Remuneravel{ + public double remuneracao(){ + return bolsaAuxilio(); + } +} + +public class FolhaDePagamento{ + protected double saldo; + + public double calcular(Remuneravel funcionario){ + this.saldo = funcionario.remuneracao(); + } +} +``` + +Agora a classe `FolhaDePagamento` não precisa mais saber quais métodos chamar para calcular. Ela será capaz de calcular o pagamento corretamente de qualquer novo tipo de funcionário que seja criado no futuro (`ContratoPJ`) — desde que ele implemente a interface `Remuneravel` — sem qualquer necessidade de alteração do seu código fonte. Dessa forma, acabamos de implementar o princípio de Aberto-Fechado do SOLID em nosso código! + +Open-Closed Principle também é base para o padrão de projeto Strategy + +### Outro Exemplo de violação (OCP) + +```java +public class Arquivo{ +} + +public class ArquivoWord extends Arquivo{ + public void gerarDocX(){ + // codigo para geracao do arquivo + } +} + +public class ArquivoPdf extends Arquivo{ + public void gerarPdf(){ + // codigo para geracao do arquivo + } +} + +public class GeradorDeArquivos{ + public void gerarArquivos(List arquivos){ + for(Arquivo arquivo : arquivos){ + if (arquivo instanceof ArquivoWord){ + ((ArquivoWord)arquivo).gerarDocX(); + }else if (arquivo instanceof ArquivoPdf){ + ((ArquivoPdf)arquivo).gerarPdf(); + } + } + } +} +``` + +No exemplo acima temos classes que geram arquivos do Word e PDFs. E temos uma classe `GeradorDeArquivos` que recebe uma lista de arquivos e gera todos eles (por _gerar_, entenda criar um arquivo novo no formato especificado e salvá-lo em disco). + +Suponha agora que tenhamos que estender a aplicação para dar suporte a arquivos em outro formato, como, por exemplo, arquivos texto (.txt) e precisamos que o método `gerarArquivos` também gere arquivos no novo formato. + +Além da nova classe, que poderíamos chamar de `ArquivoTxt`, seríamos obrigados a alterar o método `gerarArquivos` para atender a esse requisito. O mais óbvio seria colocar mais um `else if`, checando pelo novo tipo (txt) e chamando o método correspondente: `((ArquivoTxt)arquivo).gerarTxt()`. Esse padrão seguiria sucessivamente a cada necessidade de um novo formato de arquivo. + +Sendo assim, podemos afirmar que o método `gerarArquivos` não está em conformidade com o OCP para mudanças do tipo _preciso de um novo formato de arquivo_, uma vez que o método não está fechado para essas mudanças. + +Vamos pensar na situação onde existam outras partes da aplicação que também fazem as verificações por tipo vistas no método `gerarArquivos` para invocar outros métodos específicos de cada classe concreta. Para piorar, algumas dessas partes estão em outros componentes da aplicação. + +O que acontece quando precisamos de um novo formato de arquivo? + +Além de criarmos nosso novo arquivo, como `ArquivoTxt`, teríamos que: + +1. Alterar todos os métodos que precisem fazer uso do novo formato (certamente aqueles com vários `if/else if` ou um belo `switch..case`). +1. Recompilar e fazer o deploy de todos os componentes que foram impactados. + +Quando uma mudança dessas acaba causando uma série de mudanças em cascata, fica claro que nosso design não está bom pois, além de mais trabalho para alterarmos, ainda podemos nos esquecer de algumas dessas partes do código. + +Além disso, quanto mais código para alterar, que já estava pronto e funcionando, mais chances de introduzir bugs. + +#### Atendendo OCP + +para atender o OCP o código poderia ser alterado da seguinte forma: + +```java + +public abstract class Arquivo{ + public abstract void gerar(); +} + +public class ArquivoWord extends Arquivo{ + @Override + public void gerar(){ + // codigo para geracao do arquivo + } +} + +public class ArquivoPdf extends Arquivo{ + @Override + public void gerar(){ + // codigo para geracao do arquivo + } +} + +public class ArquivoTxt extends Arquivo{ + @Override + public void gerar(){ + // codigo para geracao do arquivo + } +} + +public class GeradorDeArquivos{ + public void gerarArquivos(IList arquivos){ + for(Arquivo arquivo : arquivos){ + arquivo.gerar(); + } + } +} +``` + +Algumas pequenas mudanças foram realizadas para melhorar a estruturação do código: + +1. A classe `Arquivo` foi transformada em uma classe abstrata, já que não há a intenção de instanciá-la diretamente. +2. Foi criado um método abstrato para a geração de arquivos na classe base, denominado de `gerar`. +3. As classes derivadas foram modificadas para implementar o método `gerar`. +4. Um novo requisito foi introduzido, ou seja, um novo tipo de arquivo (`ArquivoTxt`), que também herda da classe `Arquivo` e implementa o método `gerar`. +5. As verificações de tipo presentes no método `gerarArquivos` foram eliminadas e o polimorfismo foi utilizado em seu lugar. + +Em resumo, agora sempre que um novo formato de arquivo surgir, é possível estender o comportamento do método `gerarArquivos` para lidar com ele, sem a necessidade de modificá-lo. Basta criar o novo tipo de arquivo e ele estará pronto para ser gerado. Simples e eficiente! + +### Conclusão + +O Princípio do Aberto/Fechado nos atenta para a aplicação de abstrações e polimorfismo, de forma consciente, garantindo que tenhamos um software mais flexível e, portanto, mais fácil de ser mantido. + +## Princípio da substituição de Liskov + +[^STACKIFY_LSP] + +O Princípio de Substituição de Liskov é uma ferramenta essencial para a identificação de conceitos semelhantes sendo representados por classes diferentes. Ele é baseado na ideia de que uma classe derivada deve ser capaz de substituir sua classe base sem afetar o comportamento do programa. Isso significa que, se um programa pode utilizar objetos de tipos diferentes de maneira intercambiável, então esses objetos deveriam ser de classes que possuem uma relação de herança. + +Ao aplicar o LSP, os desenvolvedores podem garantir que suas classes derivadas respeitem as mesmas regras e comportamentos que suas classes base. Isso ajuda a manter a coerência e consistência do código, bem como a facilitar a manutenção e a evolução do software. + +Por exemplo, imagine que um programa possui uma classe `Forma` que representa a forma geométrica básica e dela são derivadas duas outras classes `Retângulo` e `Triângulo`. Se o programa tem uma função que calcula a área de uma forma, é importante que essa função funcione de maneira consistente para todas as formas, independentemente de serem retângulos ou triângulos. + +Imagine agora que o sistema possui uma classe `Circulo` e essa classe não faça parte da família `Forma`. Durante a execução do programa o comportamento de `Circulo` é muito semelhante aos dos filhos de `Forma`. `Circulo` pode ser desenhado na tela, ter suas características de tamanho e cor alteradas e ter uma formula para o calculo de area. Assim como os objetos da família `Circulo`. + +### Definição + +O Princípio de Substituição de Liskov leva esse nome por ter sido criado por Barbara Liskov, em 1988. A definição formal de Liskov diz que: + +::: tip Definição +Se para cada objeto `o1` do tipo `S` há um objeto `o2` do tipo `T` de forma que, para todos os programas `P` definidos em termos de `T`, o comportamento de `P` é inalterado quando `o1` é substituído por `o2` então `S` é um subtipo de `T` +::: + + + +## Princípio da Segregação de Interface (ISP) + +[^JACKHISTON] [^MACORATTI_ISP] + + +## O que é uma interface? + +Uma interface define um contrato que uma classe deve seguir, especificando quais métodos ela deve implementar. Quando `Cliente` deseja interagir com `ServicoA`, v se comunicará por meio da interface `Servico`, para a qual `ServicoA` e `Cliente` se entendem mutuamente. + +
+ +```plantuml +class Cliente +class ServicoA implements Servico + +Cliente . Servico +``` + +
Uso de interface pela classe Cliente
+
+ +Interfaces são úteis para polimorfismo. o objeto `Cliente` apenas entende ou sabe sobre a interface `Servico`, o que significa que ele não sabe que o objeto `ServicoA` existe. Isso significa que pode ocorrer polimorfismo - ou seja, o objeto `Servico` pode ser substituído por muitas implementações diferentes, sem afetar o objeto `Cliente` + +## Definição + +O Princípio da Segregação de Interface trata da coesão de interfaces e diz que + +::: tip Definição +Clientes não devem ser forçados a depender de métodos que não usam. +::: + +Este princípio afirma que os clientes não devem ser forçados a depender das interfaces que eles não usam. Quando temos interfaces não coesas, o ISP nos orienta a criar múltiplas interfaces menores e coesas. + + +::: warning +Coesão é o nível de integralidade interna de uma classe e mede o grau em que uma classe ou seus métodos fazem sentido, ou seja, quão claro é o entendimento do que a classe ou método possui. Uma alta coesão indica responsabilidades bem definidas. +::: + +Quando você aplica o ISP, a classe e suas dependências se comunicam usando interfaces fortemente focadas, minimizando as dependências de membros não utilizados e reduzindo o acoplamento de acordo. + +Interfaces menores são mais fáceis de implementar, melhorando a flexibilidade e a possibilidade de reutilização. Como menos classes compartilham interfaces, o número de alterações necessárias em resposta a uma modificação da interface é reduzido, e, isso aumenta a robustez. + +```java + public interface Pedido{ + void compra(); + void processarCartaoCredito(); + } + + public class PedidoOnline implements Pedido{ + public void compra(){ + //código da compra + } + public void processarCartaoCredito(){ + //processo do cartão + } + } + + public class PedidoPresencial implements Pedido{ + public void compra(){ + //código da compra + } + public void processarCartaoCredito(){ + //Não precisa para boleto + throw new UnsupportedOperationException(); + } + } +``` + +Neste código temos a interface `Pedido` sendo implementada pelas classes PedidoOnline e `PedidoPresencial`. + +Aparentemente tudo esta correto e o código vai funcionar. + +Mas este código esta violando o princípio ISP pois a interface `Pedido` esta sendo implementada pela classe `PedidoPresencial` mas esta classe não esta implementando o método `ProcessarCartaoCredito`. + +Assim a classe esta sendo forçada a depender do método `ProcessarCartaoCredito` que ela não precisa usar. + +Para adequar o código ao princípio ISP podemos fazer assim: + + +```java + public interface Pedido{ + void compra(); + } + public interface PagamentoCartao{ + void processarCartaoCredito(); + } + + public class PedidoOnline implements Pedido, PagamentoCartao{ + public void compra(){ + //código da compra + } + public void processarCartaoCredito(){ + //processo do cartão + } + } + + public class PedidoPresencial implements Pedido{ + public void compra(){ + //código da compra + } + } +``` + +Agora temos interfaces específicas `Pedido` e `PagamentoCartao`, e, nenhuma classe esta sendo obrigada a implementa um método que não utiliza. + + +## Princípio da Inversão de Dependência (DIP) + +[^MACORATTI_DIP] + +::: tip Definição + +- Dependa de abstrações e não de implementações +- Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações +- Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações + +::: + +que, basicamente significam *Programe para uma interface/classe abstrata e não para uma classe concreta*. + + + +A dependência em tempo de compilação da maioria dos aplicativos flui na direção da execução do runtime, o que resulta em um gráfico de dependência direta. Por exemplo, se um módulo A chama uma função/método no módulo B, que por sua vez chama uma função/método no módulo C, então em tempo de compilação, A dependerá de B, que dependerá de C, criando uma cadeia de dependência como mostrado abaixo: + +
+ +```plantuml +package "Tempo de compilação" { + class ClassA + class ClassB + class ClassC + ClassA ..> ClassB :" Referência" + ClassB ..> ClassC :" Referência" + + +} + +package "Tempo de execução" { + class ClassA + class ClassB + class ClassC + ClassA ..> ClassB :" Controle de Fluxo" + ClassB ..> ClassC :" Controle de Fluxo" +} + +``` + +
Dependência direta
+
+ +A aplicação do princípio de inversão de dependência permite que a `ClasseA` chame métodos em uma abstração implementada por `ClasseB`, possibilitando que `ClasseA` chame `ClasseB` em tempo de execução, mas que `ClasseB` dependa de uma interface controlada por `ClasseA` em tempo de compilação (invertendo assim a dependência em tempo de compilação). + +Em tempo de execução, o fluxo de execução do programa permanece inalterado, mas a introdução de interfaces significa que diferentes implementações dessas interfaces podem ser facilmente conectadas. + +
+ +```plantuml + +package "Tempo de compilação" { + class ClassA + class ClassB + interface InterfaceB + class ClassC + interface InterfaceC + ClassA .. InterfaceB :" Referência" + InterfaceB <|. ClassB + InterfaceC <|. ClassC + InterfaceB -[hidden]- InterfaceC + ClassB .. InterfaceC :" Referência" + +} + +package "Tempo de execução" { + class ClassA + class ClassB + class ClassC + ClassA --> ClassB :" Controle de Fluxo" + ClassB --> ClassC :" Controle de Fluxo" +} +``` + +
Inversão da Dependência
+
+ + +Assim a inversão de dependência é uma parte essencial da construção de aplicativos fracamente acoplados, pois os detalhes da implementação podem ser escritos para depender e implementar abstrações de nível superior, e não o contrário. + +Os aplicativos resultantes são mais testáveis, modulares e sustentáveis como resultado. + +Os principais motivos para programar para uma interface/classe abstrata são: + +- *Facilidade de manter o código* - As alterações ficam mais isoladas, não precisa mudar tudo que aceitava uma classe concreta para aceitar outra necessária. È possível mudar a implementação sem quebrar a aplicação. +- *Fica fácil estender o código* - Permite que novas implementações sejam feitas sem alterar tudo que esperava determinado objeto; certos comportamentos se tornam mais genéricos podendo manipular objetos que ele desconhece desde que contenha o contrato esperado; +- *Fica mais fácil realizar testes* - É fácil substituir um objeto real de produção por um falso que facilite o teste; + +Além disso interfaces facilitam a redução do acoplamento do código e ajudam a encapsular o código. + +### Como podemos obter a inversão da dependência? + +Uma das formas de obter a inversão da dependência e usar o padrão de projeto da injeção da dependência. Dessa forma injetamos a dependência para obter a inversão da dependência. + +Como exemplo temos Jakarta Contexts and Dependency Injection (CDI) que é um framework para injeção de dependência em Java. Ele fornece um conjunto de anotações e uma infraestrutura para criar e gerenciar objetos de maneira mais fácil e flexível. O CDI é parte da especificação Jakarta EE. + +Outras opções são de CDI em java são: + +- *Spring Framework*: é uma das alternativas mais populares ao CDI, oferecendo injeção de dependência, controle transacional, gerenciamento de segurança, entre outras funcionalidades. O Spring possui uma comunidade grande e ativa, além de uma ampla documentação. +- *Google Guice*: é um framework de injeção de dependência leve e fácil de usar, que utiliza anotações para definir as dependências entre classes. O Guice foi criado pela Google e é usado em alguns projetos internos da empresa. +- *PicoContainer*: é um framework de injeção de dependência que oferece uma solução simples e eficiente para gerenciamento de objetos. O PicoContainer é leve e fácil de usar, e permite a criação de aplicativos modulares e escaláveis. + +## Referências + + \ No newline at end of file diff --git a/posts/04_Strategy.md b/posts/04_Strategy.md new file mode 100644 index 00000000..2de1ff6c --- /dev/null +++ b/posts/04_Strategy.md @@ -0,0 +1,327 @@ +--- +icon: edit +date: 2023-04-13 20:10:00.00 -3 +tag: + - strategy + - gof +category: + - aula +order: 4 +excerpt: Apresentação do Padrão de Projeto Strategy +--- + +# Strategy (GOF) + +[^GAMMA] + +## Intenção + +Definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam + +## Também conhecido como + +Policy + +## Motivação + +Existem muitos algoritmos para quebrar um stream de texto em linhas. Codificar de maneira fixa e rígida tais algoritmos nas classes que os utilizam não é desejável, por várias razões: + +- clientes que necessitam de quebras de linhas se tornam mais complexos se incluirem o código de quebra de linhas. Isso os torna maiores e mais difíceis de manter, especialmente se suportam múltiplos algoritmos de quebra de linhas; +- diferentes algoritmos serão apropriados em diferentes situações. Não queremos suportar múltiplos algoritmos de quebra de linhas se não usarmos todos eles; +- é difícil adicionar novos algoritmos e variar os existentes quando a quebra de linha é parte integrante de um cliente. + +Podemos evitar esses problemas definindo classes que encapsulam diferentes algoritmos de quebra de linhas. Um algoritmo encapsulado dessa maneira é chamado **strategy** (estratégia). + +
+ +```plantuml +@startuml +class Composition{ +traverse() +repair() +} + +interface Compositor{ +compose() +} + +Composition o- Compositor:compositor + +note left of Composition::repair + compositor.compose() +end note + +class SimpleCompositor{ + compose() +} +class TexCompositor{ + compose() +} +class ArrayCompositor{ + compose() +} +Compositor <|-- SimpleCompositor +Compositor <|-- TexCompositor +Compositor <|-- ArrayCompositor + +hide empty attributes +hide empty methods + +@enduml +``` + +
Exemplo Strategy.
+
+ +Suponha que uma classe Composition seja responsável pela manutenção e atualização das quebras de linhas de texto exibidas num visualizador de texto. As estratégias de quebra de linhas não são implementadas pela classe Composition. Em vez disso, são implementadas separadamente por subclasses da classe abstrata Compositor. Subclasses de Compositor implementam diferentes estratégias: + +- **SimpleCompositor**: Implementa uma estratégia simples que determina quebras de linha, uma por vez. +- **TeXCompositor**: Implementa o algoritmo TEX para encontrar quebras de linhas. Esta estratégia tenta otimizar globalmente as quebras de linhas, ou seja, um parágrafo por vez. +- **ArrayCompositor**: Implementa uma estratégia que seleciona quebras de maneira que cada linha tenha um número fixo de itens. Por exemplo, é útil para quebrar uma coleção de ícones em linhas. + +Uma Composition mantém uma referência para um objeto Compositor. Sempre que uma Composition reformata seu texto, repassa essa responsabilidade para o seu objeto Compositor. O cliente de Composition especifica qual Compositor deveria ser usado pela instalação do Compositor que ele deseja em Composition. + +## Aplicabilidade + +Use o padrão Strategy quando: + +- muitas classes relacionadas diferem somente no seu comportamento. As estratégias fornecem uma maneira de configurar uma classe com um dentre muitos comportamentos; +- você necessita de variantes de um algoritmo. Por exemplo, pode definir algoritmos que refletem diferentes soluções de compromisso entre espaço/ tempo. As estratégias podem ser usadas quando essas variantes são implementadas como uma hierarquia de classes de algoritmos [HO871]; +- um algoritmo usa dados dos quais os clientes não deveriam ter conhecimento. Use o padrão Strategy para evitar a exposição das estruturas de dados complexas, específicas do algoritmo; +- uma classe define muitos comportamentos, e estes aparecem em suas operações como múltiplos comandos condicionais da linguagem. Em vez de usar muitos comandos condicionais, mova os ramos condicionais relacionados para a sua própria classe Strategy. + + +## Estrutura + +
+ +```plantuml +@startuml +class Context{ +contextinterface() +} + +interface Strategy{ +algorithminterface() +} + +Context o- Strategy:strategy + +class ConcreteStrategyA{ + algorithminterface() +} +class ConcreteStrategyB{ + algorithminterface() +} +class ConcreteStrategyC{ + algorithminterface() +} +Strategy <|-- ConcreteStrategyA +Strategy <|-- ConcreteStrategyB +Strategy <|-- ConcreteStrategyC + +hide empty attributes +hide empty methods + +@enduml +``` + +
Estrutura Strategy.
+
+ + +## Participantes + +- **Strategy** (Compositor) + - define uma interface comum para todos os algoritmos suportados. Context usa esta interface para chamar o algoritmo definido por uma Concrete Strategy +- **ConcreteStrategy** (SimpleCompositor, TexCompositor, ArrayCompositor) + - implementa o algoritmo usando a interface de Strategy. +- **Context** (Composition) + - é configurado com um objeto Concrete Strategy; + - mantém uma referência para um objeto Strategy, + - pode definir uma interface que permite a Strategy acessar seus dados. + +## Colaborações + +- Strategy e Context interagem para implementar o algoritmo escolhido. Um contexto pode passar todos os dados requeridos pelo algoritmo para a estratégia quando o algoritmo é chamado. Alternativamente, o contexto pode passar a si próprio como argumento para operações de Strategy. Isto permite à estratégia chamar de volta o contexto conforme requerido. +- Um contexto repassa solicitações dos seus clientes para sua estratégia. Os clientes usualmente criam e passam um objeto Concrete Strategy para o contexto; após isso, interagem exclusivamente com o contexto. Freqüentemente existe uma família de classes Concrete Strategy para um cliente fazer sua escolha. + +## Consequências + +O padrão Strategy tem os seguintes benefícios e desvantagens: + +1. Famílias de algoritmos relacionados. Hierarquias de classes Strategy definem uma família de algoritmos e comportamentos para os contextos reutilizarem. A herança pode ajudar a fatorar a funcionalidade comum dos algoritmos. +1. Uma alternativa ao uso de subclasses. A herança oferece uma outra maneira de suportar uma variedade de algoritmos ou comportamentos. Você pode especializar uma classe Context para lhe dar diferentes comportamentos. Mas isso congela o comportamentoem Context, misturando a implementação do algoritmo coma de Context, tornando Context mais difícil de compreender, manter e estender. E não se pode variar de algoritmo dinamicamente. Você acaba tendo muitas classes relacionadas cuja única diferença é o algoritmo ou comportamento que elas empregam. Encapsular os algoritmos em classes Strategy separadas permite variar o algoritmo independentemente do seu contexto, tornando mais fácil trocá-los, compreendê-los e estendê-los. +1. Estratégias eliminam comandos condicionais da linguagem de programação. O padrão Strategy oferece uma alternativa ao uso de comandos condicionais para a seleção de comportamentos desejados. Quando diferentes comportamentos são agrupados em uma classe é difícil evitar o uso de comandos condicionais para a seleção do comportamento correto. O encapsulamento do comportamento em classes Strategy separadas elimina estes comandos condicionais. Por exemplo, sem usar estratégias, o código para quebrar o texto em linhas se pareceria com +```java +void repair () { + switch (breakingStrategy) { + case SimpleStrategy: + composeWithSimpleCompositor(); + break; + case TexStrategy: + composeWithTexCompositor(); + break; + } +// junta os resultados com a composição existente, se necessário +} +``` +O padrão Strategy elimina este comando case pela delegação da tarefa de quebra de linhas para um objeto Strategy: + +```java +void repair () { + compositor.compose(); + // junta os resultados com a composição existente, se necessário +} +``` +Um código que contém muitos estados freqüentemente indica a necessidade de aplicar o padrão Strategy. + +4. A possibilidade de escolha de implementações. As estratégias podem fornecer diferentes implementações do mesmo comportamento. O cliente pode escolher entre estratégias com diferentes compromissos entre tempo e espaço. +5. Os clientes devem conhecer diferentes Strategies. O padrão tem uma deficiência potencial no fato de que um cliente deve compreender como Strategies diferem, antes que ele possa selecionar o mais apropriado. Os clientes podem ser expostos a detalhes e aspectos de implementação. Portanto, você deveria usar o padrão Strategy somente quando a variação em comportamento é relevante para os clientes. +6. Custo de comunicação entre Strategye Context. A interface de Strategy é compartilhada por todas as classes Concrete Strategy, quer os algoritmos que elas implementem sejam triviais ou complexos. Daí ser provável que alguns Concrete Strategy nãousem toda a informação passada através desta interface; Concrete Strategies simples podem não usar quaisquer dessas informações! Isso significa que existirão situações em que o contexto criará e iniciará parâmetros que nunca serão usados. Se esse forum problema, você necessitará de um acoplamento maior entre Strategy e Context. +7. Aumento do número de objetos. Strategies aumentam o número de objetos numa aplicação. Algumas vezes, você pode reduzir esse custo pela implementação de estratégias como objetos sem estados que os contextos possam compartilhar. Qualquer estado residual é mantido pelo contexto, que o passa em cada solicitação para o objeto Strategy. + +## Implementação + +Considere os seguintes aspectos de implementação: + +1. Definindo as interfaces de Strategy e Context. As interfaces de Strategy e Context podem fornecer a uma Concrete Strategy um acesso eficiente a quaisquer dados que necessite de um contexto, e vice-versa. Uma solução é fazer com que context passe dados através de parâmetros para as operações de Strategy - em outras palavras, levar os dados para a estratégia. Isso mantém Strategy e Context desacoplados. Por outro lado, Context pode passar dados de que Strategy não necessita. Uma outra técnica é fazer um contexto passar a si próprio como um argumento, e então a estratégia solicitar dados do contexto explicitamente. Alternativamente, a estratégia pode armazenar uma referência para o seu contexto, eliminando de todo a necessidade de passar qualquer coisa. De ambas as maneiras, a estratégia pode solicitar exatamente o que ela necessita. Porém, agora, Context deve definir uma interface mais elaborada para os seus dados, o que acopla Strategy e Context mais fortemente. As necessidades de um algoritmo específico e seus requisitos de dados determinarão qual a melhor técnica. +2. Estratégias como parâmetros template. Em C++, templates podem ser usados para configurar uma classe com uma estratégia. Esta técnica somente é aplicável se: (1) Strategy pode ser selecionada em tempo de compilação e (2) ela não tem que ser mudada em tempo de execução. Nesse caso, a classe a ser configurada (por exemplo, Context) é definida como uma classe template que tem como parâmetro uma classe *Strategy:* +```objectivec +template +class Context + void Operation () { theStrategy.DoAlgorithm(); } + // ... +private: + Astrategy theStrategy; +); +``` +A classe é então configurada com uma classe Strategy quando é instanciada: +```objectivec +class MyStrategy { +public: + void DoAlgorithm(); +}; +Context acontext; +``` +Com *templates,* não há necessidade de definir uma classe abstrata que defina a interface para Strategy. Usar Strategy como um parâmetro de template também permite vincular uma Strategy ao seu context estaticamente, o que pode melhorar a eficiência. + +3. Tornando os objetos Strategy opcionais. A classe Context pode ser simplificada se fizer sentido não ter um objeto Strategy. Context verifica se ele tem o objeto Strategy antes de acessá-lo. Se existir um, então Contexto utiliza normalmente. Se não houver uma estratégia, então Context executa o comportamento-padrão. O benefício dessa solução é que os clientes não têm que lidar com nenhum objeto Strategy a menos que eles não queiram o comportamento padrão. + +## Exemplo de código + +Daremos o código de alto nível para o exemplo da seção Motivação, o qual está baseado na implementação das classes Composition e Compositor em Inter Views [LCI+92]. + +A classe Composition mantém uma coleção de Component, a qual representa texto e elementos gráficos num documento. Uma composição arruma os objetos componentes em linhas usando uma instância da subclasse Compositor, a qual encapsula uma estratégia de quebra de linhas. Cada componente tem associados um tamanho natural, uma extensibilidade e uma compressibilidade. A extensibilidade define quanto o componente pode crescer além do seu tamanho natural;compressibilidade é quanto ele pode ser comprimido. A composição passa esses valores para um compositor, o qual os utiliza para determinar a melhor localização para quebras de linha. + +```java +public class Composition { + private Compositor compositor; + private List components;// a lista de componentes + private int componentCount; // o número de componentes + private int lineWidth; // largura da linha + private int lineBreaks: // posição das quebras das linhas em componentes + private int lineCount; // número de linhas + + public Composition (Compositor compositor){ + this.compositor = compositor; + } + void repair(){} +} +``` +Quando um novo layout é requerido, a composição solicita ao seu compositor determinar onde colocar as quebras de linha. A composição passa para o compositor três vetores que definem tamanhos naturais, extensibilidades e compressibilidades dos componentes. Ela também passa o número de componentes, a largura da linha e um vetor que o compositor preenche com a posição de cada quebra de linha. O compositor devolve o número de quebras calculadas. + +A interface de Compositor permite à composição passar ao compositor toda a informação de que ele necessita. Isso é um exemplo da abordagem do tipo "levando os dados para a estratégia": + +```java +public interface Compositor { +public int compose(Coord natural[], Coord stretch[], Coord shrink[], int componentCount, int lineWidth, int breaks[]); +``` +Note que compositor é uma classe abstrata (ou interface). As subclasses concretas definem estratégias específicas de quebras de linha. + +A composição chama a operação *repair* do seu compositor. *repair* primeiramente inicia vetores com tamanho, extensibilidade e compressibilidade naturais de cada componente (cujos detalhes omitiremos). Então, ela chama o compositor para obter as quebras de linha e finalmente estabelece o layout dos componentes de acordo com as quebras (também omitido): +```java +void repair(){ + Coord[] natural; + Coord[] stretchability: + Coord[] shrinkability; + int componentCount; + int[] breaks; + // prepara os arrays com os tamanhos desejados dos componentes + //... + // determina onde estão as quebras: + int breakCount; + breakCount = compositor.compose(natural, stretchability, shrinkability,componentCount, this.lineWidth, breaks); + // dispõe os componentes de acordo com as quebras +} +``` +Examinemos agora as subclasses de Compositor. A classe SimpleCompositor examina componentes uma linha por vez para determinar onde as quebras deveriam ser colocadas: + +```java +public class SimpleCompositor implements Compositor{ + public SimpleCompositor{ + } + public int compose(Coord natural[], Coord stretch[], Coord shrink[], int componentCount, int lineWidth, int breaks[]){ + //... + }; +}; +``` + +O *TexCompositor* utiliza uma estratégia mais global. Ele examina um parágrafo por vez, levando em conta o tamanho dos componentes e sua extensibilidade. Ele também tenta dar um "aspecto" uniforme ao parágrafo através da minimização dos espaços em branco entre componentes. + +```java +public class TexCompositor implements Compositor{ + public TexCompositor{ + } + public int compose(Coord natural[], Coord stretch[], Coord shrink[], int componentCount, int lineWidth, int breaks[]){ + //... + }; +}; +``` + +ArrayCompositor quebra os componentes em linhas a intervalos regulares. + +```java +public class ArrayCompositor implements Compositor{ + public ArrayCompositor{ + } + public int compose(Coord natural[], Coord stretch[], Coord shrink[], int componentCount, int lineWidth, int breaks[]){ + //... + }; +}; +``` + +Essas classes não utilizam toda a informação passada em `Compose`. O `SimpleCompositor` ignora a extensibilidade dos componentes, levando em conta somente suas larguras naturais. O `TeXCompositor` utiliza toda a informação passada para ela, enquanto que `ArrayCompositor` ignora todas. + +Para instanciar composition, você passa a ela o compositor que deseja usar: +```java +Composition quick = new Composition (new SimpleCompositor()); +Composition slick = new Composition (new TexCompositor()); +Composition iconic = new Composition (new ArrayCompositor (100)); +``` + +A interface de Compositor é cuidadosamente projetada para suportar todos os algoritmos de layout que as subclasses possam implementar. Você não deseja ter que mudar esta interface a cada nova subclasse introduzida porque isso exigirá mudar subclasses existentes. Em geral, as interfaces de Strategy eContext determinam também qual padrão consegue o seu intento. + +## Usos conhecidos + +Tanto ET++ [WGM88] como InterViews usam estratégias para encapsular diferentes algoritmos de quebras de linhas na forma como descrevemos. + +No sistema RTL destinado a otimização de código gerado por compiladores [JML92], estratégias definem diferentes esquemas de alocação de registradores (Register Allocator) e procedimentos de utilização (scheduling) do conjunto de instruções (RISCscheduler, CISCscheduler). Isso fornece flexibilidade no direcionamento do otimizador para diferentes arquiteturas de máquina. + +O framework para calculadoras *(calculation engine)* do SwapsManager de ET++ computa preços para diferentes instrumentos financeiros [EG92]. Suas abstrações-chave são Instrumente YieldCurve (instrumento e curva de rendimentos, respectivamente). Diferentes instrumentos são implementados como subclasses de Instrument. YieldCurve calcula coeficientes de desconto que determinam o valor presente de fluxos de caixa futuros. Ambas as classes delegam algum comportamento para objetos Strategy. O framework fornece uma família de classes Concrete Strategy para gerar fluxos de caixa, avaliar permutas (swaps) e calcular coeficientes de desconto. Você pode criar novas calculadoras através da configuração de Instrument e YieldCurve com diferentes objetos Concrete Strategy. Esta abordagem suporta a combinação e casamento de implementações existentes de Strategy, bem como a definição de novas implementações. + +Os componentes de Booch usam estratégias como argumentos-template. As classes de coleção de Booch suportam três tipos diferentes de estratégias de alocação de memória: administrada (alocação dentro de um pool), controlada (alocações/ desalocações são protegidas por travamentos (locks), e não-administradas (o alocador de memória normal). Essas estratégias são passadas como argumentos-template para uma classe de coleção quando ela é instanciada. Por exemplo, uma Unbounded- Collection que usa a estratégia não-administrada é instanciada como UnboundedCollection, + +RApp é um sistema para o layout de circuitos integrados [GA89,AG90]. RAPP deve estabelecer o layout e as rotas dos condutores que conectam subsistemas do circuito. Algoritmos para determinação de rotas no RApp são definidos como subclasses de uma classe abstrata Router. A Router é uma classe Strategy. + +ObjectWindows da Borland [Bor94] utiliza estratégias em caixas de diálogo para assegurar que os usuários forneçam dados válidos. Por exemplo, os números devem estar em um certo intervalo, e um campo de entrada numérica deve aceitar somente dígitos. Validar que uma string está correta pode exigir uma pesquisa numa tabela + +ObjectWindows utiliza objetos Validator para encapsular estratégias de validação. Validators são exemplos de objetos Strategy. Campos de entrada de dados delegam a estratégia de validação para um objeto Validator opcional. O cliente associa um validator a um campo, se for necessária uma validação (isto é, um exemplo de uma estratégia opcional). Quando o diálogo é fechado, os campos de entrada solicitam aos seus validators para validarem os dados. A biblioteca de classes fornece validators para casos comuns, tal como um RangeValidator (um validator de intervalo) para números. Novas estratégias de validação, específicas do cliente, podem ser definidas facilmente, criando subclasses da classe Validator. + +## Padrão relacionados +[Flyweight]: objetos Strategy geralmente são bons flyweights. + + +## Referências + + \ No newline at end of file diff --git a/posts/XX_Modelo.md b/posts/XX_Modelo.md new file mode 100644 index 00000000..2526d899 --- /dev/null +++ b/posts/XX_Modelo.md @@ -0,0 +1,170 @@ +--- +icon: edit +date: 2023-04-20 20:10:00.00 -3 +tag: + - XX + - gof +category: + - aula +order: 10 +excerpt: Apresentação do Padrão de Projeto XX +--- + +# XX (Modelo) + +[^GAMMA] + +## Intenção + +... + + +## Também conhecido como + +... + +## Motivação + +Cenário onde o padrão pode ajusadar +
+ +```plantuml +@startuml + +class BBBB +interface BBBB +abstract class CCCC + +AAAA . BBBB +BBBB .. CCCC +AAAA .[norank]. CCCC + +class AAAA1 extends AAAA +class BBBB1 implements BBBB +class CCCC1 extends CCCC + + +class Composition{ +traverse() +repair() +} + +interface Compositor{ +compose() +} + +Composition o- Compositor:compositor + +note left of Composition::repair + compositor.compose() +end note + +class SimpleCompositor{ + compose() +} +class TexCompositor{ + compose() +} +class ArrayCompositor{ + compose() +} +Compositor <|-- SimpleCompositor +Compositor <|-- TexCompositor +Compositor <|-- ArrayCompositor + +hide empty attributes +hide empty methods + +@enduml +``` + +
Apresentação cenário.
+
+ +elementos dos cenário: + +- **aaa**:aaa +- **bbb**:bbb +- **ccc**:ccc + +## Aplicabilidade + +Use o padrão XXX quando: +## Estrutura + +
+ +```plantuml +@startuml +class Context{ +contextinterface() +} + +interface Strategy{ +algorithminterface() +} + +Context o- Strategy:strategy + +class ConcreteStrategyA{ + algorithminterface() +} +class ConcreteStrategyB{ + algorithminterface() +} +class ConcreteStrategyC{ + algorithminterface() +} +Strategy <|-- ConcreteStrategyA +Strategy <|-- ConcreteStrategyB +Strategy <|-- ConcreteStrategyC + +hide empty attributes +hide empty methods + +@enduml +``` + +
Estrutura do XX.
+
+ + +## Participantes + +- **XX** (aaa) + - define ... +- **YY** (bbb) + - implementa ... +- **ZZZ** (ccc) + - é... + +## Colaborações + +- XX e Outro padrão interagem para... +- +## Consequências + +O padrão XX tem os seguintes benefícios e desvantagens: + +## Implementação + +Outro exemplo de aplicação do padrão... + +```java +public class XX{ + //... +} +``` + + +### Usos Conhecidos + +Frameworks onde o padrão é aplicado + +## Padrão relacionados +[Flyweight]: objetos Strategy geralmente são bons flyweights. + + +## Referências + + diff --git a/posts/code/poo/AutenticadorDeUsuario.java b/posts/code/poo/AutenticadorDeUsuario.java new file mode 100644 index 00000000..44fa473d --- /dev/null +++ b/posts/code/poo/AutenticadorDeUsuario.java @@ -0,0 +1,5 @@ +public class AutenticadorDeUsuario { + public boolean autentica ( Usuario u ) { + // implementação + } +} diff --git a/posts/code/poo/Cliente.java b/posts/code/poo/Cliente.java new file mode 100644 index 00000000..8af70468 --- /dev/null +++ b/posts/code/poo/Cliente.java @@ -0,0 +1,3 @@ +public class Cliente { + //... +} \ No newline at end of file diff --git a/posts/code/poo/Funcionario.java b/posts/code/poo/Funcionario.java new file mode 100644 index 00000000..18c2fb66 --- /dev/null +++ b/posts/code/poo/Funcionario.java @@ -0,0 +1,3 @@ +public class Funcionario { + //... +} diff --git a/posts/code/poo/Gerente.java b/posts/code/poo/Gerente.java new file mode 100644 index 00000000..7e47a4bd --- /dev/null +++ b/posts/code/poo/Gerente.java @@ -0,0 +1,6 @@ +public class Gerente extends Funcionario implements Usuario { + //... + public boolean autenticar(){ + return true; + } +} diff --git a/posts/code/poo/PessoaFisica.java b/posts/code/poo/PessoaFisica.java new file mode 100644 index 00000000..7f5d61b3 --- /dev/null +++ b/posts/code/poo/PessoaFisica.java @@ -0,0 +1,3 @@ +public class PessoaFisica extends Cliente { + //... +} diff --git a/posts/code/poo/PessoaJuridica.java b/posts/code/poo/PessoaJuridica.java new file mode 100644 index 00000000..41c9ed88 --- /dev/null +++ b/posts/code/poo/PessoaJuridica.java @@ -0,0 +1,6 @@ +public class PessoaJuridica extends Cliente implements Usuario { + //... + public boolean autenticar(){ + return true; + } +} diff --git a/posts/code/poo/Seguranca.java b/posts/code/poo/Seguranca.java new file mode 100644 index 00000000..158d11c3 --- /dev/null +++ b/posts/code/poo/Seguranca.java @@ -0,0 +1,3 @@ +public class Seguranca extends Funcionario { + //... +} diff --git a/posts/code/poo/Usuario.java b/posts/code/poo/Usuario.java new file mode 100644 index 00000000..5a9d1212 --- /dev/null +++ b/posts/code/poo/Usuario.java @@ -0,0 +1,3 @@ +public interface Usuario { + boolean autenticar(); +} diff --git a/posts/ementa.md b/posts/ementa.md index bae7746b..814c1606 100644 --- a/posts/ementa.md +++ b/posts/ementa.md @@ -1,6 +1,6 @@ --- icon: edit -date: 2023-03-24 17:40:00.00 -3 +date: 2023-03-24 tag: - ementa category: @@ -8,8 +8,10 @@ category: star: true index: false --- + # Plano de Curso de Disciplina do Ensino Superior + **CURSO:** Tecnologia em Análise e Desenvolvimento de Sistemas **CAMPUS:** Santo Antônio de Jesus @@ -18,11 +20,11 @@ index: false **PERÍODO LETIVO:** 2023.1 -**Código Disciplina:** COM07 Linguagem de Programação +**Código Disciplina:** PRG09 Padrões de projetos -**Pré-requisitos da disciplina:** COM04 - Lógica de Programação +**Pré-requisitos da disciplina:** PRG04 - Programação Orientada a Objetos -**Pré-requisito para:** COM11 - Programação Orientada a Objetos +**Pré-requisito para:** - **Créditos** | Teóricos | Práticos | Estágio | Total | @@ -37,42 +39,18 @@ index: false ## Ementa -- Modularização -- Funções -- Estruturas -- Recursividade -- Passagem de parâmetros por valor -- Passagem de parâmetros por referência -- Ponteiros -- Alocação dinâmica -- Arquivos. +- Técnicas para construção de software fracamente acoplado e reutilizável; Padrões de Projeto; Técnicas de refatoração de código; Padrões de projeto para frameworks. ## Objetivos -- Continuar o desenvolvimento dos conceitos básicos de lógica de programação, estimulando o raciocínio lógico e estruturado para resolver problemas e desenvolver algoritmos, praticando conceitos com uso de uma linguagem de programação estruturada. -- Habilitar o aluno a desenvolver algoritmos mais elaborados. +- Fornecer as técnicas necessárias para que o aluno possa desenvolver habilidade de programação, Empregando as boas práticas de programação com o intuito de tornar o código mais flexível e reutilizável. ## Conteúdo programático -1. Introdução - 1. Lógica e Lógica de Programação - 1. Algoritmos – Definição e estratégias de construção de algoritmos - 1. Representação de algoritmos - Fluxogramas - 1. Armazenamento de dados – variáveis - 1. Decisão em Fluxogramas -1. Introdução à linguagem C - 1. Linguagens de programação, compiladores, interpretadores - 1. Tipos de dados e operadores da linguagem - 1. Entrada e saída de dados - 1. Estruturas de seleção - 1. Estruturas de repetição - 1. Vetores e matrizes -1. Modularização - 1. Funções com retorno - 1. Funções sem retorno -1. Estruturas -1. Recursão -1. Ponteiros -1. Alocação dinâmica de memória -1. Arquivos +- SOLID +- Definição de padrão de projeto (GOF) +- Padrões Criacionais +- Padrões Estruturais +- Padrões Comportamentais +- Jakarta EE ## Metodologia @@ -80,20 +58,21 @@ Aulas teóricas e demonstração de casos reais que ajudem na assimilação dos ## Avaliação -O processo de avaliação dar-se-á ao longo do desenvolvimento da disciplina. Categorias de análise, tais como, o aproveitamento individual e a capacidade de interação do educando serão cruciais para avaliar o seu aproveitamento em todas as etapas da disciplina. De modo específico, serão realizadas atividades para casa, provas práticas e trabalho em grupo. +O processo de avaliação dar-se-á ao longo do desenvolvimento da disciplina. Categorias de análise, tais como, o aproveitamento individual e a capacidade de interação do educando serão cruciais para avaliar o seu aproveitamento em todas as etapas da disciplina. De modo específico, serão realizadas atividades para casa, provas práticas, seminários e trabalho em grupo. ## Bibliografia básica: -- BACKES, A. **Linguagem C: Completa e Descomplicada**. Elsevier-Campus, 2013. -- PEREIRA, S. L. **Algoritmos e Lógica de Programação Em C -Uma Abordagem Didática**. Érica, 2010. -- SHILDT, H. **C - Completo e Total**. 3.ed. Makron Books, 2010. +- GAMMA, E.; HELM, R.; JOHNSON, K.; VLISSIDES, J. **Padrões de projeto – Soluções reutilizáveis de software orientado a objetos.** Porto Alegre: Bookman, 2000. +- FOWLER, M. **Refatoração: Aperfeiçoando o Projeto de Código Existente.** Porto Alegre: Bookman, 2011. +- FREEMAN, E.; FREEMAN, E. **Use a Cabeça! Padrões de Projetos.** Rio de Janeirio: Alta Books, 2007. ## Bibliografia complementar: -- ALBANO, R. S.; ALBANO, S. G. **Programação em Linguagem C**. Ciência Moderna, 2010. -- DAMAS, L. **Linguagem C**. LTC, 2007. -- FORBELLONE, A. L. **Introdução a Lógica de Programação.** 3.ed. Pearson Brasil, 2005. -- LOPES, A.; GARCIA, G. **Introdução à Programação: 500 Algoritmos Resolvidos.** Campus, 2002. -- ZIVIANI, N. **Projeto de Algoritmos –com implementação em Pascal e C**. 3.ed. Cengage Learning, 2010. - +- LARMAN, C. **Utilizando UML e Padrões – Uma Introdução à Análise ao Projeto Orientado a Objetos.** 3. ed. Porto Alegre: Bookmann, 2007. +- BRAUDE, E. **Projeto de Software: da programação à arquitetura - Uma abordagem baseada em Java.** Bookman, 2005. +- HORSTMANN, C. **Padrões e Projeto Orientado a Objetos.** 2. ed. Bookman, 2007. +- MARINESCU, F. **Padrões de Projeto EJB: Padrões Avançados, Processos e Idiomas.** Bookman, 2004. +- SANDERS, W. **Aprendendo Padrões de Projeto em PHP: Programação Orientada a Objetos para Projetos Dinâmicos.** Novatec, 2013. +- SHALLOWAY, Alan; TROTT, James R. **Explicando padrões de projeto Uma nova perspectiva em Projeto orientado a objeto.** Bookman, 2004. +- SHVETS, Alexander. **Dive Into Design Patterns.** (https://refactoring.guru/pt-br/design-patterns) diff --git a/posts/exercicios/01_estrutura_c.md b/posts/exercicios/01_estrutura_c.md deleted file mode 100644 index 9b829dd1..00000000 --- a/posts/exercicios/01_estrutura_c.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -icon: edit -date: 2023-04-05 18:30:00.00 -3 -tag: - - c - - entrada - - saida -category: - - exercicio ---- - -# Exercícios Entrada e Saida em C - -[^SOFFNER] - - -1. Escreva um programa que receba dois números e mostre a soma, a subtração, a multiplicação e a divisão desses números. -1. Escreva um programa que receba um número qualquer e mostre o seu dobro -1. Dadas as medidas de uma sala, informe sua área. -1. Dado um valor em reais e a cotação do dólar, converta esse valor para dólares. -1. Escrever um programa que receba o valor do peso (em quilos) e altura (em metros) de uma pessoa e calcule seu IMC pela fórmula - $$IMC = \frac{peso}{altura^2}$$ - Exibir o valor do IMC calculado considerando a tabela abaixo: - - | RESULTADO | SITUAÇÃO | - | ------------------ | ----------------------- | - | Abaixo de 17 | Muito abaixo do peso | - | Entre 17 e 18,49 | Abaixo do peso | - | Entre 18,5 e 24,99 | Peso normal | - | Entre 25 e 29,99 | Acima do peso | - | Entre 30 e 34,99 | Obesidade I | - | Entre 35 e 39,99 | Obesidade II (severa) | - | Acima de 40 | Obesidade III (mórbida) | - -## Link para atividade - -https://classroom.github.com/a/B9SdQ_ej - -## Referências - - diff --git a/posts/exercicios/01_padroes_criacao.md b/posts/exercicios/01_padroes_criacao.md new file mode 100644 index 00000000..2d6587f9 --- /dev/null +++ b/posts/exercicios/01_padroes_criacao.md @@ -0,0 +1,24 @@ +--- +icon: edit +date: 2023-04-13 20:10:00.00 -3 +tag: + - criacao +category: + - exercicio +order: 1 +--- + +# Seminários 1 + +Elaborar uma apresentação do padrão seguindo o modelo do [^GAMMA] e utilizando o [template](../XX_Modelo.md) + +| Tarefa | aluno | link | +| ------------------------------- | -------------------------- | --------------------------------------------------------------------- | +| Criar postagem Factory Method | @SarahPithon | https://github.com/20231-ifba-saj-ads-ppr/blog-material-aula/issues/4 | +| Criar postagem Abstract Factory | @FabricioLuisdeSousaSantos | https://github.com/20231-ifba-saj-ads-ppr/blog-material-aula/issues/5 | +| Criar postagem Builder | @GabrielCoffee9 | https://github.com/20231-ifba-saj-ads-ppr/blog-material-aula/issues/6 | +| Criar postagem Prototype | @LuisADS8 | https://github.com/20231-ifba-saj-ads-ppr/blog-material-aula/issues/7 | +| Criar postagem Object Pool | @AmandaSerpa | https://github.com/20231-ifba-saj-ads-ppr/blog-material-aula/issues/8 | +## Referências + + \ No newline at end of file diff --git a/posts/exercicios/02_condicional.md b/posts/exercicios/02_condicional.md deleted file mode 100644 index ef16802d..00000000 --- a/posts/exercicios/02_condicional.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -icon: edit -date: 2023-04-12 18:30:00.00 -3 -tag: - - c - - condicional -category: - - exercicio ---- - -# Exercícios Condicional - -Crie um arquivo q\.c para cada questão - -1. Faça um programa que leia dois números e mostre qual deles é o maior. -1. Faça um programa que leia dois números e mostre o maior deles. Se, por acaso, os dois números forem iguais, imprima a mensagem "Números iguais". -1. Faça um programa que leia um número inteiro e verifique se esse número é par ou ímpar. -1. Faça um programa que leia o salário de um trabalhador e o valor da prestação de um empréstimo. Se a prestação: - - For maior que 20\% do salário, imprima: "Empréstimo não concedido." - - Caso contrário, imprima: "Empréstimo concedido." -1. Faça um programa que leia um número e, caso ele seja positivo, calcule e mostre: - - O número digitado ao quadrado. - - A raiz quadrada do número digitado. -1. Faça um programa que receba a altura e o sexo de uma pessoa e calcule e mostre seu peso ideal, utilizando as seguintes fórmulas (em que "h" corresponde à altura): - - Homens: $(72,7 * h) – 58$ - - Mulheres: $(62,1 * h) – 44,7$ -1. Uma empresa vende o mesmo produto para quatro diferentes estados. Cada estado possui uma taxa diferente de imposto sobre o produto. Faça um programa em que o usuário entre com o valor e o estado de destino do produto e o programa retorne o preço final do produto acrescido do imposto do estado em que ele será vendido. Se o estado digitado não for válido, mostrará uma mensagem de erro. - | Estado | MG | SP | RJ | MS | - | ------- | --- | ---- | ---- | --- | - | Imposto | 7\% | 12\% | 15\% | 8\% | -1. Escreva um programa que, dada a idade de um nadador, o classifique em uma das seguintes categorias: - | Categoria | Idade | - | ---------- | ------------------ | - | Infantil A | 5-7 | - | Infantil B | 8-10 | - | Juvenil A | 11-13 | - | Juvenil B | 14-17 | - | Sênior | maiores de 18 anos | -1. Usando o comando switch, escreva um programa que leia um inteiro entre 1 e 7 e imprima o dia da semana correspondente a esse número. Isto é, domingo, se 1, segunda-feira, se 2, e assim por diante. -1. Faça um programa que mostre ao usuário um menu com quatro opções de operações matemáticas (as operações básicas, por exemplo). O usuário escolhe uma das opções, e o seu programa pede dois valores numéricos e realiza a operação, mostrando o resultado. - - -::: tabs#fruit - -@tab apple#apple - -Apple - -@tab banana#banana - -Banana - -::: - -## Link para atividade - -https://classroom.github.com/a/GdvmYRaz -