junto com a UML do código fonte.
Seguindo o padrão MVC Model View Control, e os exemplos do Prof. Jadison Almeida, acompanhando o vídeo dele refiz toda a programação de Arquitetura de Software Padrões de Projetos com o STRATEGY, e fiz também toda a UML com seus diagramas como vou explicar a seguir.
figura 1
Aqui nesta figura 2, segue um modelo criado do midmap em UML,
Figura 2
Ao criar no padrão UML da figura 3 do Diagrama de Classe Pai (PATO) e as classes filhos (BORRACHA, COMUM e MADEIRA).
Figura 3
A classe pai "Pato.java" aqui criada servira como um padrão para as outras classes que será herdada. Pato.java
package pato;A classe filho "PatoBorracha.java" aqui criada herdada tudo da classe pai "Pato.java".
import compSom.CompSom;
import compVoo.CompVoo;
public class Pato {
private String nome;
private String cores;
private CompVoo voo;
private CompSom som;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCores() {
return cores;
}
public void setCores(String cores) {
this.cores = cores;
}
public CompVoo getCompVoo() {
return voo;
}
public void setCompVoo(CompVoo voo) {
this.voo = voo;
}
public CompSom getCompSom() {
return som;
}
public void setCompSom(CompSom som) {
this.som = som;
}
public void voo() {
voo.CompVoo();
}
public void som(){
som.CompSom();
} }
PatoBorracha.java
package pato;A classe filho "PatoComum.java" aqui criada herdada tudo da classe pai "Pato.java".
import compSom.SomBorracha;
import compVoo.VooSem;
public class PatoBorracha extends Pato {
public PatoBorracha(){
setCompSom(new SomBorracha());
setCompVoo(new VooSem());
}
}
PatoComum.java
package pato;A classe filho "PatoMadeira.java" aqui criada herdada tudo da classe pai "Pato.java".
import compSom.SomComum;
import compVoo.VooComum;
public class PatoComum extends Pato {
public PatoComum(){
setCompSom(new SomComum());
setCompVoo(new VooComum());
}
}
PatoMadeira.java
package pato;
import compSom.SomMudo;
import compVoo.VooSem;
public class PatoMadeira extends Pato {
public PatoMadeira(){
setCompSom(new SomMudo());
setCompVoo(new VooSem());
}
}
Como classe principal criada para os complementos foi o Diagrama de Classe da Interface que envia para as classes dele herdada o método chamado "CompSom" que é simplesmente a classe que tem as implementações que emitem som ou não.
Figura 4
pato.java
package pato;
import compSom.CompSom;
import compVoo.CompVoo;
public class Pato {
private String nome;
private String cores;
private CompVoo voo;
private CompSom som;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCores() {
return cores;
}
public void setCores(String cores) {
this.cores = cores;
}
public CompVoo getCompVoo() {
return voo;
}
public void setCompVoo(CompVoo voo) {
this.voo = voo;
}
public CompSom getCompSom() {
return som;
}
public void setCompSom(CompSom som) {
this.som = som;
}
public void voo() {
voo.CompVoo();
}
public void som(){
som.CompSom();
}
}
PatoBorracha.java
package pato;
import compSom.SomBorracha;
import compVoo.VooSem;
public class PatoBorracha extends Pato {
public PatoBorracha(){
setCompSom(new SomBorracha());
setCompVoo(new VooSem());
}
}
PatoComum.java
package pato;
import compSom.SomComum;
import compVoo.VooComum;
public class PatoComum extends Pato {
public PatoComum(){
setCompSom(new SomComum());
setCompVoo(new VooComum());
}
}
PatoMadeira.java
package pato;
import compSom.SomMudo;
import compVoo.VooSem;
public class PatoMadeira extends Pato {
public PatoMadeira(){
setCompSom(new SomMudo());
setCompVoo(new VooSem());
}
}
Como classe principal criada para os complementos foi o Diagrama de Classe da Interface que envia para as classes dele herdada o método chamado "CompVoo" que é simplesmente a classe que tem as implementações que voa ou não.
Figura 5
compVoo.java
package compVoo;
public interface CompVoo { public void CompVoo();
}
VooComum.java
package compVoo;
public class VooComum implements CompVoo {
@Override
public void CompVoo() {
System.out.println("Voei normalmente, ~o~ ");
}
}
VooSem.java
package compVoo;
public class VooSem implements CompVoo {
@Override
public void CompVoo() {
System.out.println("Não sei voar. \\o/ ");
}
}
Foi criado a classe que inicia o programa, este o Diagrama de Classe main que é responsavel pela classe inicial.
Figura 6
inicio.java
package main;
import pato.Pato;
public class inicio {
public static void main(String[] args) {
Pato PatoComum = new pato.PatoComum();
Pato PatoBorracha = new pato.PatoBorracha();
Pato PatoMadeira = new pato.PatoMadeira();
PatoComum.som();
PatoComum.voo();
PatoBorracha.som();
PatoBorracha.voo();
}
}