Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouPedro Cruz Alterado mais de 9 anos atrás
1
JMario Equipe Augusto Cesar Neves Lima Filho
2
JMario Jogo usando Java2D Fiel ao clássico Mario para snes
3
Feature Model
5
public void init(){... imagemInterfacePontuacao = resourceManager.loadImage( "interfacePontuacao.png"); imagemInterfaceTotal = resourceManager.loadImage( "interfaceTotal.png"); imagemInterfacePausa = resourceManager.loadImage( "interfacePausa.png" ); } Feature - Language
7
privileged abstract aspect LanguageSupport {... private Image GameManager.loadImageLang (String name, String language) {... } pointcut resourceInit(GameManager gm) : execution(* *.init()) &&... protected abstract String getLanguageCode(); after(GameManager gm) returning : resourceInit(gm){ gm.imagemInterfacePontuacao = gm.loadImageLang("interfacePontuacao.png", getLanguageCode ());... }... aspect EnglishSupport extends LanguageSupport{ protected String getLanguage(){ return "US"; }
8
Feature Model
10
Feature - Language
11
Feature – Changeable Language
12
privileged aspect ChangeLanguageAspect... private LanguageStrategy GameManager.languageStrategy; private LanguageFactory GameManager.languageFactory = new LanguageFactory(); before(GameManager gm) : checkInput(gm){ if (gm.language.isPressed()) {... }... private void GameManager.changeLanguage() { languageStrategy = languageFactory.createLanguageStrategy(); imagemInterfacePontuacao = languageStratrategy.loadImageLang("interfacePontuacao.png");... }
13
Feature Model
14
public void loadCreatureSprites() {... Image[][] imagensBat = new Image[4][]; Image[][] imagensTurtle = new Image[4][]; Image[][] imagensMummyTurtle = new Image[4][]; Image[][] imagensBlueDragon = new Image[4][];... imagensFlyGoomba[1] = new Image[imagensFlyGoomba[0].length]; imagensFlyGoomba[2] = new Image[imagensFlyGoomba[0].length]; imagensFlyGoomba[3] = new Image[imagensFlyGoomba[0].length]; imagensGoomba[1] = new Image[imagensGoomba[0].length]; imagensGoomba[2] = new Image[imagensGoomba[0].length]; imagensGoomba[3] = new Image[imagensGoomba[0].length]; imagensGreenKoopa[1] = new Image[imagensGreenKoopa[0].length]; imagensGreenKoopa[2] = new Image[imagensGreenKoopa[0].length]; imagensGreenKoopa[3] = new Image[imagensGreenKoopa[0].length];... Feature Model
15
Gráfico de Clones
17
Feature Model
19
Técnica : Code Generation and Transformation (CGT)
20
Feature – Static Enemy
21
public void loadCreatureSprites() { #foreach($enemy in $enemys) Image[][] imagens$enemy.Name = new Image[4][]; #end... #foreach($enemy in $enemys) imagens$enemy.Name[ 1 ] = new Image[ imagens$enemy. Name[ 0 ].length ]; imagens$enemy.Name[ 2 ] = new Image[ imagens$enemy. Name[ 0 ].length ]; imagens$enemy.Name[ 3 ] = new Image[ imagens$enemy. Name[ 0 ].length ]; #end...
22
Feature – Static Enemy...
23
Gráfico de Clones
25
Redução : 54%
26
Feature Model Técnica : Adaptive Object Model (AOM)
27
Feature: User-Defined enemys
29
public void loadCreatureSprites() { XMLEnemyHandler handler = new XMLEnemyHandler();... List enemys = handler.getEnemys(); for (int i = 0; i < enemys.size(); i++) { EnemyDescription enemyDescription = enemys.get(i);... EnemyType enemyType = new EnemyType(enemyDescription.getCodigo(), enemyDescription.getName(), enemyDescription.getSpeed(), enemyDescription.isFlyer());... Feature: User-Defined enemys
30
//#ifdef aom import variations.EnemyType; //#endif //#ifdef aom public class Creature extends Sprite { //#else //@public abstract class Creature extends Sprite { //#endif Feature: User-Defined enemys
31
Dificuldades Uso de técnicas não definidas diretamente em decision models Flip-Pure-Variants
32
Atividades – Tempo AtividadeTécnica ou FerramentaTempo Identificação de featuresManualmente/CCFinder2 horas Desenho do modelo de features Captain Feature1 hora Configuração do ambiente e estudo de ferramentas Flip/Pure-Variants3 horas Extração da feature de Linguagem Flip2 horas Inclusão do ponto de variação para feature de inimigos Manualmente1 hora Extração da feature de StaticEnemys Flip/Manualmente3 horas Extração da feature de User-Defined enemys Manualmente6 horas Montagem do configuration knowledge Pure-Variants2 horas
33
Conclusões Uso de diversas técnicas em uma mesma variação Uso extensivo de AO
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.