Você está na página 1de 87

UNVERSDADE FEDERAL DE SANTA CATARNA

Relatrio 1: Metodologia para Ensino de


Programao Orientada a Objetos com
Jogos 2D
Kalu Caminha
Florianpolis, 2 semestre de 2012
UNVERSDADE FEDERAL DE SANTA CATARNA
DEPARTAMENTO DE NFORMTCA E ESTATSTCA
CURSO DE SSTEMAS DE NFORMAO
Relatrio 1: Metodologia para Ensino de
Programao Orientada a Objetos com
Jogos 2D
Kalu Caminha
Trabalho de Concluso de Curso
apresentado como requisito parcial para a
obteno de grau de Bacharel em
Sistemas de nformao.
Florianpolis, 2 semestre de 2012
Kalu Caminha
Relatrio 1: Metodologia para Ensino de
Programao Orientada a Objetos com
Jogos 2D
Trabalho de Concluso de Curso apresentado
como requisito parcial para a obteno de grau
de Bacharel em Sistemas de nformao.
Orientador
Professor Doutor Ricardo Pereira e Silva
Banca Examinadora
Leandro Jos Komosinski
Patrcia Vilain
Para os avaliadores deste relatrio 1
Percebi ao finalizar este primeiro relatrio o grande nmero de pginas.
Acredito qe isto se deve ao alto nmero de ilstra!"es e listas
tilizados e tamb#m a m detal$amento %talvez desnecessrio de
lagns cap&tlos'.
(em dvida visalizo qe isso precisar ser corrigido para a vers)o
final de modo qe o trabal$o n)o fiqe por demais extenso* solicito
a+da para como tratar esta qest)o. ,ito Obrigado
(mrio
Lista de Redues.............................................................................................................................10
Resumo...............................................................................................................................................11
1 Introduo......................................................................................................................................12
1.1 Justificativa..............................................................................................................................13
1.2 Objetivo Geral..........................................................................................................................15
1.3 Objetivos Especficos..............................................................................................................15
1.4 Metodoloia de !es"uisa.........................................................................................................15
2 Fundamentao Terica................................................................................................................17
2.1 !rorama#$o Orie%tada a Objetos...........................................................................................1&
2.1.1 'o%ceitos !OO ...............................................................................................................1(
2.1.2 Estruturas )*sicas de !rorama#$o em Java...................................................................1(
2.2 Joos 2+..................................................................................................................................1,
2.2.1 +ese%-o de imae%s........................................................................................................2.
2.2.2 /%ima#0es........................................................................................................................2.
2.2.3 1iles e 'omposi#$o de 'e%*rios......................................................................................2.
2.2.4 !o%tos 2 !la%o 'artesia%o................................................................................................21
2.2.5 3prites...............................................................................................................................21
2.2.4 +ispositivos de E%trada ..................................................................................................21
2.2.& E5ecu#$o de so%s.............................................................................................................21
2.2.( 1a5a de 6uadros e atuali7a#$o do joo............................................................................22
2.2., /cumuladores de 1empo..................................................................................................22
2.2.1. Gravidade.......................................................................................................................22
2.2.11 +etec#$o e 1ratame%to de 'olis0es...............................................................................22
2.2.12 O Game 8oop.................................................................................................................23
2.2.13 Movime%ta#$o e Gravidade %os ce%*rios......................................................................23
2.3 9rame:or;s Orie%tado a Objetos............................................................................................23
2.3.1 9rame:or;s OO...............................................................................................................23
2.3.2 Metodoloias de +ese%volvime%to de 9rame:or;s OO.................................................24
2.3.3 <so de 9rame:or:or;s OO............................................................................................24
2.4 !adr0es !eda=icos................................................................................................................25
2.4.1 O Mais >mporta%te !rimeiro ?Earl@ )irdA........................................................................25
2.4.2 Espiral ?3piralA.................................................................................................................24
2.4.3 Met*fora 'o%siste%te ?'o%siste%t Matap-orA..................................................................24
2.4.4 'ai5a de )ri%"uedos ?1o@ )o5A.......................................................................................24
2.4.5 'ai5a de 9errame%tas ?1ool )o5A....................................................................................2&
2.4.4 +isposi#$o do territ=rio ?8a@ of t-e 8a%dA......................................................................2&
2.4.& 'orriir para cima ?9i5er <pperA.....................................................................................2(
2.4.( Maior "ue a Bida ?8arer t-a% 8ifeA................................................................................2(
2.4., 3pri%t de !rojeto dos Estuda%tes ?3tude%t +esi% 3pri%tA...............................................2(
2.4.1. E%a%o ?Mista;eA...........................................................................................................2(
2.4.11 'a%al de 1este ?1est 1ubeA.............................................................................................2,
2.4.12 !ree%c-a as 8acu%as ?9ill i% t-e )la%;sA.......................................................................2,
2.4.13 Estrela de Ouro ?Gold 3tarA...........................................................................................2,
2.4.14 /valie isto %ovame%te 3am ?Grade it aai% 3amA..........................................................2,
3 Experincia pr!"ia com ensino de #$$ e %o&os.........................................................................31
3.1 'o%teCdos trabal-ados.............................................................................................................31
3.2 Metodoloia.............................................................................................................................33
3.2.1 E5emplo 1 D Movime%ta%do uma bola............................................................................34
3.2.2 E5emplo 2 D 'o%strui%do o primeiro joo.......................................................................35
3.2.3 E5emplo 3 D Ete%s e fases.................................................................................................35
3.2.4 E5emplo 4 D Guerra Especial...........................................................................................34
3.2.5 D !erso%ae%s e 'e%*rios.................................................................................................3&
3.2.4 D Joo de 8uta..................................................................................................................3(
3.2.& D Fevis$o..........................................................................................................................3(
3.3 /valia#$o e Fesultados............................................................................................................3,
3.3.1 /valia#$o 1e=rica.............................................................................................................3,
3.3.2 /valia#$o da Motiva#$o...................................................................................................4.
3.3.3 /valia#$o !r*tica..............................................................................................................4.
3.3.3.1 Grupo 1 D !o:erMusic.............................................................................................4.
3.3.3.2 Grupo 2 D '-ampio%s 9i-ter..................................................................................41
3.3.3.3 Grupo 3 D G-omai%e................................................................................................41
3.3.3.4 Grupo 4 D >ce 'ro:% 'itadel...................................................................................41
3.3.3.5 Grupo 5 D Moluscatio%.............................................................................................41
3.3.3.4 Grupo 4 D 1errorist 3trate@.....................................................................................41
3.3.3.& Grupo & D God of Gorms.........................................................................................41
3.3.3.( Grupo ( D 3ami Game..............................................................................................41
3.3.4 Fesultado avalia#$o pr*tica..............................................................................................41
3.3.4 'o%clus$o ao fi%al do m=dulo.........................................................................................42
' Ensino de #ro&ramao $rientada a $()etos............................................................................'3
4.1 Metodoloias para E%si%o OO.................................................................................................43
4.1.1 >saias 'amilo )oratti........................................................................................................44
4.1.1.1 /%*lise Geral do MHtodo..........................................................................................44
4.1.1.2 !o%tos 9ortes ...........................................................................................................4&
4.1.1.3 !o%tos 9racos...........................................................................................................5.
4.1.1.4 'o%clus$o.................................................................................................................53
4.1.2 +avid J. )ar%es e Mic-ael IJlli%..................................................................................53
4.1.2.1 +iretri7es .................................................................................................................54
4.1.2.2 /%*lise eral do mHtodo...........................................................................................5(
4.1.2.3 !o%tos fracos............................................................................................................5,
4.1.2.4 'o%clus$o.................................................................................................................4.
4.1.3 )ru%o 9eij= et al...............................................................................................................4.
4.1.3.1 /%*lise eral do mHtodo...........................................................................................42
4.1.4 3telios Ki%oalos.............................................................................................................42
4.1.4.1 O <so de ambie%tes de prorama#$o.......................................................................43
4.1.4.2 +iretri7es para o E%si%o das li#0es propostas..........................................................44
4.1.4.3 /%*lise Geral do mHtodo..........................................................................................&.
4.1.5 Mic-ael 'asperse%...........................................................................................................&1
4.1.5.1 /s etapas da metodoloias.......................................................................................&2
4.1.5.2 O 9rame:or; co%ceitual..........................................................................................&3
4.1.5.3 O i%cio.....................................................................................................................&3
4.1.5.4 !adr0es de '=dio....................................................................................................&3
4.1.5.5 Outros eleme%tos da metodoloia............................................................................&4
4.1.5.4 /%*lise Geral da Metodoloia..................................................................................&4
4.3 +iretri7es para o E%si%o de OO .............................................................................................&4
4.3.1 !ri%cpios baseados %a pr*tica com o )lueJ....................................................................&4
4.3.2 Feprese%ta#0es visuais para todas as estruturas e co%ceitos trabal-ados........................&5
4.3.3 Opera#0es de abstra#$o e frame:or; co%ceitual.............................................................&5
4.3.4 /mbie%te educacio%al L /mbie%te profissio%al..............................................................&5
4.3.5 !rocesso sistem*tico de dese%volvime%to.......................................................................&5
4.3.4 / partir do 7ero.................................................................................................................&4
4.3.& 1odos os recursos usados devem ser e5plicados..............................................................&4
4.3.( Estilo de '=dioMfo%te.....................................................................................................&4
4.3., 8ista abra%e%te de e5erccios e desafios........................................................................&4
4.3.1. 1odos os e5emplos devem e%volver joos.....................................................................&4
* Frame+or, %a"a para %o&os 2-..................................................................................................77
5.1 /"uisi#$o do 'o%-ecime%to de +om%io................................................................................&&
5.2 Modelaem do 9rame:or;N.....................................................................................................&&
5.2.1 Ge%erali7a#$o...................................................................................................................&&
5.2.2 9le5ibili7a#$o...................................................................................................................&(
5.2.3 Modelaem das 'lasses...................................................................................................&,
5.3Balida#$o...................................................................................................................................&,
5.4 +ocume%ta#$o.........................................................................................................................&,
. /etodo0o&ia de Ensino..................................................................................................................10
4.1 M=dulo 1N Objetos !rimeiro....................................................................................................(.
4.2 M=dulo 2N Mi%iMGame.............................................................................................................(1
4.3 M=dulo 3N Joo 2+..................................................................................................................(1
4.4 /valia#$o da Metodoloia........................................................................................................(1
7 2onc0uso.......................................................................................................................................12
&.1 1rabal-os 9uturos....................................................................................................................(2
1 3i(0io&ra4ia.....................................................................................................................................13
(.1 8ivros.......................................................................................................................................(3
(.2 /rtios e +ocume%tos acadOmicos..........................................................................................(3
(.3 )ibliorafia para c=dioMfo%te e materiais did*ticos dese%volvidos pelo autor......................(4
(.4 )ibliorafia 'o%sultada...........................................................................................................(5
-ndice de ilstra!"es
>lustra#$o 1N 'e%*rio baseado em 1iles..............................................................................................2.
>lustra#$o 2N E5emplo de uma 3prite..................................................................................................21
>lustra#$o 3N Movime%ta%do uma bola %a tela....................................................................................34
>lustra#$o 4N E5emplo mais comple5o utili7a%do a bola criada a%teriorme%te..................................34
>lustra#$o 5N 1ela fi%al do joo dese%volvido com o au5lio do roteiro.............................................35
>lustra#$o 4N 1erceira fase do e5emplo com diversos ite%s %a tela.....................................................34
>lustra#$o &N Bers$o fi%al do joo Guerra Espacial............................................................................3&
>lustra#$o (N !erso%aem salta%do sobre um i%imio represe%tado por uma bola vermel-a.............3(
>lustra#$o ,N E5emplo joo de luta.....................................................................................................3(
>lustra#$o 1.N / 'o%stru#$o do modelo. 9o%teN )oratti.....................................................................4(
>lustra#$o 11N Feprese%ta#$o Bisual de Objetos. 9o%teN )oratti. /daptado por IalHu 'ami%-a.......4,
>lustra#$o 12N >mpleme%ta#$o de Objetos. 9o%teN )oratti. /daptado por IalHu 'ami%-a................5.
>lustra#$o 13N Feprese%ta#$o Bisual de um /rra@. 9o%teN )oratti. adaptado por IalHu 'ami%-a.....5.
>lustra#$o 14N >%sta%cia#$o de objeto e c-amada de mHtodo em c=dio............................................5,
>lustra#$o 15N Objetos %a ba%cada de objetos ?em vermel-oA e c-amada de mHtodo de um objeto. .5,
>lustra#$o 14N >%sta%cia#$o de um objeto %o objectIarel com a ajuda da i%terface r*fica...............45
>lustra#$o 1&N 'ria#$o de uma tarefa a partir dos mHtodos de um robP.............................................44
>lustra#$o 1(N E5ecu#$o de um prorama. Q direita a visuali7a#$o do robPR Q es"uerda a lista de
tarefas e abai5o a descri#$o do "ue ocorre %o i%terior do mHtodo em e5ecu#$o................................44
>lustra#$o 1,N 'ria#$o sistem*tica de um prorama orie%tado a objetos...........................................&2
-ndice de tabelas
1abela 1N 'o%ceitos !OO...................................................................................................................1(
1abela 2N +ocume%ta#$o de frame:or;s............................................................................................25
1abela 3N 1abela demo%stra%do os co%teCdos trabal-ados %a e5periO%cia prHvia com e%si%o de
orie%ta#$o a objetos baseado em joos...............................................................................................32
1abela 4N E%dice de acerto em cada um dos critHrios de avalia#$o do joo 2+..................................42
1abela 5N 'o%teCdos e E5emplos da metodoloia de )oratti.............................................................44
1abela 4N 'o%teCdos e e5emplos da metodoloia de )ar%es..............................................................54
1abela &N 'o%teCdos e e5mplos da metodoloia de 9eij=..................................................................42
1abela (N 'o%teCdos e ambie%te de prorama#$o %a metodoloia de Ki%oalos..............................44
.ista de /ed!"es
#$$ !rorama#$o Orie%tada a Objetos
$$ Orie%ta#$o a Objetos
2- +uas dime%s0es
/esmo
O presente trabalho busca o desenvolvimento de uma metodologia de ensino de
Programao Orientada a Objetos tendo como campo de prtica os jogos em duas
dimenses. So descritas as ferramentas, o roteiro de aulas com sua respectiva carga
horria, avaliaes e exerccios a serem utilizados na metodologia apresentada, bem
como um framework Java que abstrai os principais recursos especficos da plataforma e
algoritmos avanados, importantes para o desenvolvimento de jogos.
1 0ntrod!)o
Por volta de abril de 2011 o autor deste trabalho viveu a experincia de ensinar
Programao Orientao a Objetos para alunos entre 15 e 17 anos no curso tcnico de
programao no SENA de So Jos, em Santa Catarina.
Dentre muitas dificuldades, as que mais se destacaram eram a evidente
desmotivao dos alunos com o tema de programao, a dificuldade com a sintaxe e
recursos especficos do Java e a ausncia de mtodo para transformao de um
problema em um conjunto de classes que representariam sua respectiva soluo.
A partir desta constatao, iniciou-se na turma do semestre seguinte uma busca por
solues para estes problemas que culminou em duas grandes mudanas, a primeira foi a
adoo da metodologia de ensino criada por David J. Barnes e Michael Klling utilizando
o BlueJ como ambiente de programao e no semestre seguinte, com a mesma turma,
iniciou-se um trabalho de desenvolvimento de jogos em Java a partir dos materiais
desenvolvidos por Bruno Feij e Esteban Clua.
Ficou evidente aps a aplicao destas prticas que a motivao dos estudantes
aumentou e os problemas com certas sintaxes e recursos do Java tambm diminuram.
Entretanto, na anlise dos trabalhos finais de desenvolvimento de jogos, ficou evidente
que para metade da turma, ainda havia um grande abismo entre o que sabiam e o
domnio prtico dos principais conceitos de Programao Orientada a Objetos.
Acredita-se que a inexperincia e a falta de mtodo do autor que acarretaram nas
dificuldades percebidas nos alunos ao final do processo de ensino aprendizagem.
E este o ponto de partida para este trabalho, a busca por mtodos, prticas,
conceitos e ferramentas que auxiliem alunos principalmente os que possuem maiores
dificuldades com programao a modelarem e desenvolverem softwares que
solucionem problemas com os quais eles prprios venham a se deparar no seu dia-a-dia,
deste modo, que se aprenda no apenas a desenvolver cdigos orientado a objetos, mas
principalmente, conseguir "enxergar os objetos, como bem colocado pelo professor
Ricardo Pereira e Silva na primeira reunio de orientao.
1.1 Justificativa
Na Orientao a Objetos, as metodologias e ferramentas de ensino no so to
maduras quanto nos paradigmas mais antigos como a programao estruturada e
funcional (Xinogalos), de forma que muitos professores de cincia da computao
(Xinogalos, Proulx, Caspersen, Bennedsen, Rosenberg, Klling, Barnes, Boratti) que se
depararam diante da tarefa de ensinar orientao a objetos, iniciaram uma srie de
pesquisas em busca de diretrizes, ferramentas e metodologias que norteasse essa
importante tarefa.
O autor considera, pela experincia com ensino que a grande maioria dos
exemplos didticos em Java, mesmo em algumas metodologias recentes, trabalha com
softwares muito simples para serem interessantes ou fora da rea de interesse e
conhecimento da maioria dos jovens estudantes de programao.
Um exemplo o primeiro projeto apresentado no livro texto do ambiente BlueJ,
uma mquina de vender bilhetes de trem, algo completamente fora da realidade brasileira,
porm, mesmo que adaptssemos o projeto para, por exemplo, uma mquina de vender
caf, ainda teramos a distncia do aluno entre simular uma mquina de vender caf e
programar uma mquina de vender caf da vida real.
Esta a vantagem da rea de jogos, possvel que o estudante crie algo com o
qual ele efetivamente poder se divertir e alm disso, a maioria dos jovens com os quais
trabalhei, aos 15 e 16 anos, j possuem um grande nmero de horas de experincia com
jogos, permitindo que eles tragam um conhecimento prvio para a atividade de
programao, facilitando a fixao dos conceitos com situaes problema com as quais
eles j esto familiarizados.
Alm desta perspectiva, o uso de jogos para o ensino de programao um
recurso j utilizado por muitos instrutores na comunidade de educadores de cincia da
computao, no s pela sua capacidade de estimular os alunos, mas tambm por ser um
tipo de aplicao para o qual convergem os maiores desafios da computao (Feij)
independente do paradigma de programao utilizado.
Porm, livros com contedos nesta rea geralmente so complexos, utilizando
recursos das linguagens de programao que envolvem um grande nmero de conceitos
e regras de sintaxe, o que dificulta sua aplicao didtica em sala de aula. Por exemplo,
para que seja possvel desenhar uma imagem na tela (recurso essencial no
desenvolvimento de jogos) em Java preciso conhecer conceitos complexos como
herana e sobrecarga de mtodos.
A partir disto, percebe-se que o suporte ao desenvolvimento de jogos em fases
iniciais do ensino de programao exige o auxilio de ferramentas que tornem mais fcil o
desenvolvimento de recursos como uso de sons, imagens e cenrios.
Duas solues atuais foram encontradas, a primeira, um ambiente de programao
denominado Greenfoot (Klling, 2010) desenvolvido para permitir o ensino de
programao com interao e visualizao, permitindo uma incluso rpida e fcil de
imagens, sons e posicionamento de elementos em um cenrio. A segunda, o conjunto
de bibliotecas denominado JavaLib (Proulx, 2010), cujo objetivo permitir que o
estudante mantenha o foco no projeto do jogo, no seu comportamento e na representao
de cada cena atravs de formas geomtricas simples. Mais recentemente a biblioteca foi
ampliada para permitir o ensino de OO atravs da arte de escrever e tocar msicas com
abstraes de notas e arranjos musicais.
Para este projeto, foi escolhida uma abordagem prxima a de Proulx pois como
relata Xinogalos - que utilizou e ainda utiliza o ambiente BlueJ parcialmente em sua
metodologia - importante preparar os estudantes para serem profissionais usando
ferramentas profissionais de desenvolvimento, manter o aluno por muito tempo em
ambientes especificamente voltados para o ensino pode torn-lo por demais acostumado
aos recursos didticos e limitadores destes ambientes, no desenvolvendo plenamente as
habilidades de programao e abstrao, necessrias a um profissional.
Outro fator favorvel ao uso de bibliotecas e frameworks no ensino deriva do fato
de ser muito comum no desenvolvimento de software o aprendizado de novas bibliotecas
e frameworks. Sendo necessrio ao profissional de programao o domnio das
habilidades de compreenso da documentao e utilizao de tais bibliotecas e
frameworks.
Observa-se tambm que alguns conceitos como Interfaces e classes abstratas tem
sua aplicao observada mais frequentemente em frameworks, sendo a extenso de um
framework uma possvel forma de estudo de tais conceitos.
Deste modo, considera-se essencial para este trabalho o desenvolvimento de um
framework cuja responsabilidade abstrair as funes bsicas necessrias para jogos 2D
como construo de cenrios, execuo de sons, animaes, desenho de imagens e
demais necessidades dos jogos 2D de modo que o aluno possa se concentrar, no projeto
e construo das classes e de suas interaes.
A proposta da metodologia deve conter elementos de plano de aula, carga horria,
atividades prticas e avaliaes de modo que possa ser reproduzida em cursos
introdutrios de Programao Orientada a Objetos com durao de 72 horas/aula.
Tambm sugerida uma atividade prtica de longa durao a ser desenvolvida em
laboratrio com o auxlio do professor para cursos com uma carga horria mais extensa.
Por fim, justifica-se a escolha da linguagem Java em unssono com Feij que
caracteriza cinco vantagens para esta linguagem: 1) Permite aplicaes em um grande
nmero de plataformas; 2) Roda em mais de um Sistema Operacional e conta com um
bom ambiente de programao gratuito (NetBeans); 3) O Java uma linguagem
Orientada a Objetos; 4) Java um ponto de partida para a programao para internet; e
5) A prxima gerao de linguagens orientadas a objetos ser uma evoluo natural do
Java.
1.2 Objetivo Geral
Criar uma metodologia de ensino de Orientao a Objetos atravs do
desenvolvimento de jogos 2D.
1.3 Objetivos Especficos
Documentar a experincia do autor com ensino de orientao a objetos baseada
em jogos anterior a este estudo;
Apresentar e analisar algumas das principais metodologias de ensino de
programao orientada a objetos ressaltando seus pontos fortes e fracos segundo
a experincia do autor;
Definir diretrizes para o desenvolvimento da metodologia a partir das metodologias
estudadas e da experincia anterior do autor;
Elencar elementos pedaggicos que auxiliem a construo da metodologia;
Construir um framework Orientado a Objetos que atenda as principais
caractersticas de jogos 2D e esteja de acordo com as diretrizes definidas;
Documentar uma metodologia que atenda a um curso introdutrio de programao
orientada a objetos de 72 horas aula;
Definir uma atividade de longa durao a ser desenvolvida pelos estudantes em
perodo de aula para disciplinas cujo ano letivo seja superior 72 horas/aula;
1.4 Metodologia de Pesquisa
nicia-se com a fundamentao terica de alguns elementos considerados
essenciais ao trabalho como programao orientada a objetos, jogos em duas dimenses,
frameworks orientados a objeto e elementos pedaggicos para a cincia da computao.
Aps, considera-se essencial a documentao da metodologia utilizada para o
ensino de orientao a objetos baseados em jogos 2D na experincia que deu origem ao
tema do presente trabalho, de modo que as dificuldades e pontos fortes do ensino anterior
fortalea a nova metodologia que ser desenvolvida.
Aps, ser realizada uma pesquisa nas metodologias para ensino de orientao a
objetos, sendo escolhidas para detalhamento as consideradas pelo autor como mais
relevantes ao desenvolvimento deste trabalho. A partir deste detalhamento sero
definidas diretrizes para o ensino de OO que devero ser contempladas nesta
metodologia.
Com as diretrizes definidas, bem como os elementos de jogos em duas dimenses,
ser proposto um framework que atenda a estes elementos.
Em seguida, proposta a metodologia de ensino utilizando os elementos
apresentados nos captulos anteriores. Neste ponto, o framework poder ser revisto
diversas vezes at atingir uma verso final que suporte as diretrizes propostas.
1 2ndamenta!)o 3erica
Este captulo apresenta alguns elementos bsicos ao trabalho sem, entretanto,
apresentar um estrutura lgica sequencial entre estes elementos, de modo que servem
como base para os demais captulos e discusses.
2.1 Prograa!"o Orie#tada a Objetos
Biologia e matemtica. Esta era a formao base de Alan Kay quando ele criou a
Smalltalk, reconhecida como a primeira linguagem totalmente orientada a objetos, no
famoso laboratrio da Xerox PARC em Palo Alto, no final dos anos 60.
Observamos a influncia desta formao em dois dos princpios iniciais que
nortearam sua pesquisa, o primeiro era que ele inicialmente pensava em objetos como
clulas biolgicas e/ou computadores individuais em uma rede, apenas habilitados a se
comunicarem atravs de mensagens.. O segundo, que pode ter sido uma das origens s
modernas classes, derivado de sua raiz matemtica, que lhe fez perceber que cada
obeto poderia ter certas !lgebras relacionadas a ele, e "ue poderiam haver fam#lias
destas !lgebras, o "ue seria muito $til.
Alm disso, foi fortemente influenciado pela Sketchpad, Simula, Lisp, o projeto da
ARPAnet e a (segundo ele), quase inacreditvel arquitetura dos discos rgidos B500 da
Burroughs.
Estes princpios so compatveis com Boratti que coloca sobre o paradigma de
Programao Orientada a Objetos:
Esse paradigma procura abordar a resoluo de um problema atravs de uma
construo que represente, da melhor forma possvel, como as coisas acontecem no
mundo real.
O mundo real constitudo por entidades que interagem entre si. Uma entidade pode
ser definida como alguma coisa que tenha sua prpria e!ist"ncia, caractersticas e que
apresente alguma funo no mundo real...uma entidade pode ser denominada ob#eto e,
consequentemente a identificao do paradigma de programao orientada a ob#etos$.
Portanto Programao Orientada a Objetos corresponde um modo de programar no
qual so construdos objetos (entidades, clulas), pertencentes classes, que interagem
entre si (atravs de mensagens) e possuem caractersticas prprias.
1.1.1 4onceitos POO
Os conceitos relacionados POO que sero abordados pela metodologia foram
selecionados principalmente a partir da metodologia de Barnes. Para uma melhor
organizao, estes foram organizados em dois nveis de dificuldade segundo a
experincia do autor:
5&vel Bsico 5&vel Avan!ado
Classe;
Mtodos de acesso e mtodos
modificadores;
Variveis e Tipos;
Notao de ponto;
Varivel de nstncia / atributo;
Objetos / nstncias / instanciao de
objetos;
Parmetros;
Construtores;
Abstrao;
Encapsulamento / Modificadores de
acesso;
Associao / Composio;
Listas / terao;
Herana / Especializao /
Generalizao;
Classes abstratas;
nterfaces;
Polimorfismo: Variveis polimrficas /
Polimorfismo de mtodo;
Sobrescrita de mtodo;
Modificador static: contantes de classe /
mtodos estticos;
Tratamento de Erros / Try... Catch;
Design de responsabilidade, Princpio
da Responsabilidade nica;
Coeso, acoplamento e refatorao;
%abela &' (onceitos )OO
1.1.1 Estrtras Bsicas de Programa!)o em 6ava
De modo a permitir o uso desta metodologia em cursos introdutrios de
programao se faz fundamental o ensino de conceitos de determinadas estruturas
bsicas de controle e de repetio. as estruturas e conceitos bsicos que sero
abordadas na metodologia sero:
Estruturas condicionais (if, else e else if);
Estruturas de repetio (while, for);
Arrays / Matrizes unidimensionais e bimensionais;
nstruo de atribuio (%, &%, '%, etc);
Variveis Locais;
Comentrios;
Enum;
2.2 Jogos 2$
Esta seo apresenta os principais conceitos utilizados na arquitetura de jogos em
duas dimenses a partir do material desenvolvido por Perucia e que acompanha um
framework desenvolvido na linguagem de programao C++ para o desenvolvimento
destes jogos. Um jogo desenvolvido com este framework, pode apresentar, dentre outros
recursos:
Menu principal e de opes;
Personagem animado controlvel por teclado;
Cenrios com profundidade;
tens especiais de jogo;
nterao do personagem com cenrio e itens;
nimigos e interao do personagem com estes inimigos;
Controle de pontos de vida do personagem;
Execuo de sons;
A arquitetura de um jogo pode envolver diversos subsistemas, um jogo 2D sempre
apresentar pelo menos alguns dos subsistemas abaixo:
nterface grfica (menus, botes, controle, etc);
Tratador de eventos de teclado e/ou joystick;
Gerenciador de dados (fases, grficos, etc);
Gerenciador de fsica (velocidade, movimento, coliso, etc);
(ngine grfica (exibio de imagens, rotao, efeitos especiais, etc);
Engine sonora;
Engine lgica (o corao do jogo);
Camadas de abstrao de hardware;
Sistema de configurao do jogo (opes, nvel de dificuldade, salvamento, etc);
Sistema de menus;
Sistema de ajuda;
Sistema de msica;
A partir de )erucia et al, dos exemplos tratados por Feij e da experincia pessoal do
autor foram selecionados os principais conceitos envolvendo a arquitetura de jogos e que
sero indispensavelmente cobertos pelo framework que oferecer suporte a metodologia
1.1.1 7esen$o de imagens
O desenho de imagens na tela a partir de determinados arquivos-fonte uma
operao frequente e pode ser complementada com recursos desejveis como
transparncia, rotao, aumento ou reduo do tamanho original e espelhamento que
corresponde ao desenho da mesma imagem s que em posio invertida ou espelhada.
1.1.1 Anima!"es
Animaes so sequncias de imagens que se alternam em funo de um
determinado tempo. Em um jogo, importante que seja possvel aumentar e diminuir a
velocidade de uma animao (em casos por exemplo, da movimentao de um
personagem mais rpido ou devagar) e que assim como nas imagens, seja possvel
aplicar efeitos de transparncia, rotao, aumento ou reduo do tamanho e
espelhamento.
1.1.8 3iles e 4omposi!)o de 4enrios
*iles s+o imagens adicionadas em um cen!rio e divididas em peda,os iguais de
tamanho fi-o (Perucia et al). Tiles podem ser utilizados em conjunto com arquivos de
configurao para criar cenrios complexos. Segue abaixo uma demonstrao de
construo de um cenrio baseado em Tiles.
*lustrao &' (en+rio baseado em %iles
Na experincia de ensino de POO baseado em jogos, os alunos requisitaram em
vrios momentos recursos extras associados ao uso de cenrios com *iles, como por
exemplo: que os tiles possam ser escondidos e reexibidos (para casos por exemplo onde
existam passagens secretas), que possuam tratamento de coliso com o personagem e
demais objetos do jogo e que possam tambm serem movimentados
1.1.9 Pontos : Plano 4artesiano
Um jogo em duas dimenses ocorre em um plano cartesiano. importante que
existam abstraes para pontos neste plano e operaes entre estes pontos como calculo
da distncia e deteco de ponto mais prximo dentre um conjunto de pontos por
exemplo.
1.1.; (prites
"Sprites so estruturas com imagens prprias que permitem a criao de
animaes e o livre posicionamento na tela (Perucia). Uma sprite em geral
representada por um nico arquivo dividido em quadros de tamanho fixo, contendo cada
quadro uma imagem. A mesma sprite pode ser posicionada em um determinado ponto da
tela exibindo apenas um dos seus quadros internos por vez. A mudana da exibio
destes quadros ao longo do tempo resulta em uma animao.
1.1.< 7ispositivos de Entrada
A interao com o jogo ir ocorrer sempre atravs de um dispositivo. Os dois mais
comuns so teclado e mouse. No caso do teclado preciso que o desenvolver tenha
disponvel a informao de se uma (ou um conjunto) determinada tecla est ou no
pressionada em um determinado momento no tempo. No caso do mouse, as principais
necessidades so a posio do ponteiro do mouse e se o boto esquerdo foi pressionado.
Tambm importante que exista uma interface para um o.stick, ou seja, um
controle tradicional de video'game com 4 botes de ao e quatro botes direcionais.
*lustrao ,' E!emplo de uma -prite
1.1.= Exec!)o de sons
Os recursos de som disponveis para o desenvolvedor so apenas: 1)
carregamento dos arquivos de som; 2) tocar um som (com ou sem loop) e 3) parar um
som. O arquivo de udio pode ser no formato wave, comumente usado em jogos.
1.1.> 3axa de ?adros e ataliza!)o do +ogo
Representa o nmero de quadros de um jogo que uma aplicao consegue
executar em um segundo. O jogo ir sempre executar uma chamada de atualizao do
estado do jogo em loop. A taxa de quadros representa o nmero de repeties deste
quadro em um segundo.
1.1.@ Acmladores de 3empo
comum em jogos eletrnicos determinadas aes somente ocorrerem aps um
determinado tempo. Para realizar este clculo de tempo uma estrutura conhecida como
acumulador de tempo pode ser fornecida. Esta estrutura inicializa com o tempo que ir
controlar e, a cada atualizao do jogo, deve tambm ser atualizada. A estrutura fornece
uma interface para que o desenvolver identifique se o fim do tempo j chegou e a
possibilidade de reiniciar o acumulador.
1.1.1A Bravidade
A gravidade pode ser representada em um jogo por um nmero em pixels por
segundo que representa a acelerao da gravidade. Na vida real, a fora da gravidade
pode ser contrabalanceada pelo atrito com o ar. Em um jogo, ao invs de utilizar o atrito
com o ar, cada objeto recebe um nmero que representa a acelerao da gravidade sobre
ele. sso permite por exemplo, que um objeto passe a ter um salto maior, simplesmente se
a fora da gravidade sobre ele for diminuda.
No mundo real, existe um ponto em que o atrito com o ar se iguala a fora
gravitacional de modo que a velocidade de queda permanece constante. sto
reproduzido em um jogo, atravs de uma velocidade mxima que um objeto pode receber
quando est em queda.
1.1.11 7etec!)o e 3ratamento de 4olis"es
A deteco de colises ocorre verificando se duas formas geomtricas que
representam objetos do jogo, se tocam. Estas formas geomtricas so comumente
retngulos e/ou crculos, e a coliso ser verificada atravs de operaes matemticas
simples que verificam a interseco destas formas.
Aps a deteco ter ocorrido necessrio tratar a coliso. Ou seja, se o
personagem colidir com uma parede direita, ele no poder mais se mover para a
direita e dever ser reposicionado para o exato momento antes da coliso.
Uma das formas de dividir este tratamento tratando primeiro a coliso com o eixo
vertical e somente aps, com o eixo horizontal.
Tambm importante que o desenvolvedor tenha condies de saber para qual
direo ocorreu a coliso.
1.1.11 O Bame .oop
Todo jogo de computador ocorre dentro de um lao de repetio. Este lao realiza
trs operaes bsicas:
Entrada: onde so verificados os comandos emitidos pelos dispositivos de entrada,
mensagens via rede, etc;
Processamento: onde feito o clculo das posies dos objetos, coliso, etc;
7esen$o: onde os objetos so apresentados na tela do dispositivo.
1.1.18 ,ovimenta!)o e Bravidade nos cenrios
Os cenrios so um dos grandes ncleos do jogo. A grande maioria dos jogos
possuem cenrios grandes que podem ser percorridos por um jogador. Alm disso, o
efeito da gravidade deve parar de ocorrer quando um jogador encosta no cho,
geralmente definido em funo do cenrio.
2.3 %rae&or's Orie#tado a Objetos
Este captulo disserta sobre o desenvolvimento e uso de frameworks orientados a
objetos a partir do trabalho de Silva, esclarecendo as metodologias de desenvolvimento
existentes bem como as maneiras de document-la de modo a proporcionar o uso
adequado dos frameworks de acordo com as diferentes necessidades dos seus usurios.
1.8.1 2rameCorDs OO
Frameworks Orientados a Objetos correspondem a um conjunto de classes que se
adaptam ao desenvolvimento de aplicaes de um domnio especfico, oferecendo
estruturas flexveis para os pontos em que aplicaes de um mesmo domnio diferem
entre si.
Duas das principais caractersticas de um framework so alterabilidade e
extensibilidade:
Alterabilidade: Permite que os conceitos especficos das aplicaes sejam
suportados a partir de estruturas flexveis do framework;
Extensibilidade: Garante que o framework possa ser estendido no seu conjunto
de funcionalidades, ou seja, tenha sua manutenibilidade garantida;
Um framework sempre depende de outros artefatos de software para existir,
basicamente, as aplicaes especficas de um domnio que o originaram e as aplicaes
geradas a partir dele.
1.8.1 ,etodologias de 7esenvolvimento de 2rameCorDs OO
Muitos elementos do processo de desenvolvimento de um framework so comuns
diversas metodologias, podemos elencar estes elementos da seguinte forma:
Aqisi!)o de con$ecimento de dom&nio: A primeira etapa o estudo de
aplicaes desenvolvidas para o mesmo domnio do framework de modo a
identificar generalidades e especificidades dentro das aplicaes.
4onstr!)o da estrtra de classes: Aps a anlise, realizada a modelagem
de classes. Esta modelagem pode ser dividida em cinco etapas iterativas:
Beneraliza!)o: Criao de classes para as estruturas idnticas das aplicaes;
2lexibiliza!)o: Localizao das especificidades dos frameworks;
Aplica!)o de meta padr"es: Criao de mtodos template que podem ser
flexibilizados atravs de mtodos hooks para os pontos de flexibilizao
encontrados;
Aplica!)o de Padr"es de Pro+eto: ncluir classes de um padro (design
pattern) j catalogado e conhecido para uma determinada estrutura do
framework;
Aplica!)o de Princ&pios de OOE Aplicao de princpios especficos de
Orientao a Objetos como uso de herana e composio.
0mplementa!)o: Criao do framework em uma linguagem de programao;
Avalia!)o: O framework deve ser avaliado a partir do desenvolvimento de
aplicaes do domnio para o qual foi criado;
/efinamento: A partir do desenvolvimento de novas aplicaes, o conhecimento
sobre o domnio aumentar, possibilitando a melhoria do framework.
1.8.8 Fso de 2rameCorDs OO
Um framework deve facilitar o desenvolvimento de aplicaes de um domnio. Se
entender o framework for muito complexo, pode ser mais fcil desenvolver a aplicao
sem o framework.
Uma das formas de garantir uma documentao que atenda s necessidades dos
usurios do framework adaptando a documentao estas necessidades. Segue
abaixo uma proposta de documentao especfica para trs tipos de usurios comuns:
Tipo de 5su6rio Tipo de -ocumentao
!recisa decidir "ual frame.or/
utili7ar para o dese%volvime%to de
uma aplica#$o
+escri#$o do "ue pode e do "ue %$o pode ser feito com o
frame:or;.
!recisa descobrir como dese%volver
uma aplica#$o
Feceitas especficas de como utili7ar um determi%ado
recurso e2ou dese%volver uma aplica#$o ?'oo;boo;A.
!recisam co%-ecer em detal-es o
projeto do frame.or/ para o
dese%volvime%to de aplica#0es
comple5as
!odem ser utili7ados diaramasR descri#0es mais detal-adas
da estrutura das classesR c=dio fo%te e outras ferrame%tas.
/s "uest0es c-ave para este e%te%dime%to s$oN
7uais c0asses usar8 6uais classes co%cretas do
frame:or; podem ser utili7adas e "uais devem ser
criadas pelo dese%volvedorS
7uais m!todosN devem ser redefi%idos pelo
dese%volvedor ?mHtodos abstratosA e "uais devem
ser defi%idos pelo frame:or;. E%tra a"ui tambHm a
defi%i#$o dos mHtodos template0
$ 9ue os m!todos 4a:emN "ual o cmportame%to dos
mHtodos defi%idos pelo frame:or;.
%abela ,' 1ocumentao de frame.or/s
2.4 Padr(es Pedag)gicos
Como apoio s metodologias de ensino de programao orientada a objetos os
autores frequentemente recorrem padres pedaggicos que so projetados para
capturar as melhores prticas e a excelncia da arte de aprender e ensinar (THE
PEDAGOGCAL PATTERNS PROJECT) .
Para o ensino de cincias da computao, Joseph Bergin documentou catorze
padres pedaggicos. Os padres possuem vrios nveis de aplicao, desde a
organizao geral de uma disciplina at mesmo prticas em sala de aula. Os padres so
apresentados em ordem de escala, iniciando pelos que envolvem o planejamento de
cursos semestrais at atividades dirias em salas de aula.
1.9.1 O ,ais 0mportante Primeiro %EarlG Bird'
O curso organizado de modo que o mais importante deve ser apresentado
primeiro (e frequentemente), e caso isto seja impossvel, o quanto antes. Por exemplo, se
funes for mais importante que estruturas if, ensine funes primeiro, se objetos so
mais importantes que funes, ensine objetos primeiro.
Esta prtica importante porque os estudantes geralmente se lembram melhor do
que viram primeiro e importante que eles percebam desde o incio a ideia principal do
curso.
Alguns exemplos so:
Ensinar objetos primeiro;
Ensinar projeto primeiro;
Ensinar concorrncia primeiro em sistemas operacionais;
Ensinar requisitos de usurio primeiro em Banco de Dados;
Ensinar recurso antes de loops;
1.9.1 Espiral %(piral'
Quando um contedo trabalhado em sua ordem lgica, o instrutor precisa entrar
em muitos detalhes, tornando o ensino desgastante para os estudantes.
Uma soluo trabalhar os contedos em fragmentos que permitam que o
estudante resolva um determinado problema, posteriormente, mais fragmentos so
trabalhados de modo a resolver outros problemas, e assim, sucessivamente, trabalhando
o mesmo contedo mas em nvel de detalhe crescente.
Deste modo, desde cedo o estudante empoderado a construir aplicaes.
1.9.8 ,etfora 4onsistente %4onsistent ,atap$or'
Ao ensinar tpicos complexos, importante utilizar metforas cuja base seja
conhecida pelos estudantes, de modo que ele tenham clareza sobre como o sistema deve
se comportar e possam fazer conexes dos novos conceitos com conceitos que j so
bem conhecidos por eles.
1.9.9 4aixa de Brinqedos %3oG Box'
O objetivo deste padro permitir que desde cedo os estudantes possam entrar em
contato com o conhecimento da rea do curso atravs de ferramentas pedaggicas
ilustrativas, os brinquedos.
Estes brinquedos podem ser classes que abstraem parte da complexidade
envolvida no desenvolvimento de um software de maior escala, ferramentas que tornam a
programao mais acessvel, ou qualquer outro tipo de artefato que permita que os
estudantes desenvolvam projetos maiores e mais interessantes.
Um dos requisitos deste padro que os instrutores precisam preparar o material e
ter tempo disponvel para que os estudantes explorem os recursos disponibilizados.
1.9.; 4aixa de 2erramentas %3ool Box'
Desde o incio do curso os estudantes desenvolvem ferramentas que lhes sero
teis em fases avanadas do curso, funcionando tambm como ensino de reuso de
software.
Os exerccios do curso devem ter diversos nveis e nos nveis iniciais os estudantes
so estimulados a discutir e desenvolver seus componentes. importante tambm que o
projeto de software para reuso seja discutido e apresentado o quanto antes pelo instrutor.
Estes componentes desenvolvidos pelos alunos podem ser complementados por
bibliotecas fornecidas pelo instrutor. Um bom exemplo da aplicao deste padro o uso
de elementos construdos em disciplinas de estruturas de dados.
1.9.< 7isposi!)o do territrio %.aG of t$e .and'
Os estudantes devem examinar um artefato do domnio que esto estudando de
maior complexidade, de modo a ver a imagem real de um produto na sua rea de
atuao.
sto permite que eles faam conexes das diversas partes do sistema com os
conctedos que esto aprendendo, situando cada um deles no contexto de uma aplicao
real.
Exemplos podem ser:
Um software com vrias classes interagindo em Orientao a Objetos;
Um modelo entidade relacionamento com diversos relacionamentos em um curso
de bases de dados;
O projeto completo de um software em um curso de projeto orientado a objetos.
importante que o artefato seja algo semelhante ao que o instrutor deseja que o
estudante desenvolva ao final do curso. essencial tambm, que o artefato tenha um
design e utilize os conceitos do curso de forma excelente.
Assim, as diversas partes do artefato a suas interaes podem ser examinadas
pelos estudantes e posteriormente utilizadas como exemplo de um determinado conceito
do curso.
1.9.= 4orrigir para cima %2ixer Fpper'
Neste padro, um artefato de grande porte oferecido aos alunos com falhas
cuidadosamente preparadas. Este padro permite o ensino de novos conceitos e da
anlise e correo de erros.
As falhas devem ser bvias para a maioria dos leitores, contendo uma ou duas
falhas de maior complexidade.
A origem do nome do padro vem da expresso "Fixxer Upper que representa uma
casa vendida em condies ruins, de modo que o comprador precisar repar-la aps a
compra.
1.9.> ,aior qe a Hida %.arger t$an .ife'
Em cursos de literatura, sociologia e histria por exemplo, comum que os
estudantes trabalhem com textos que eles no teriam condies de criar.
E como ler mais fcil do que escrever, este padro fala sobre usar artefatos de
software de maior complexidade e bem escritos como exemplos a serem copiados.
Esta uma forma de estimular o conhecimento sobre o desenvolvimento de
softwares reais que os estudantes ainda no teriam condies de projetar e desenvolver.
Um exemplo so bibliotecas padro das linguagens de programao atuais.
1.9.@ (print de Pro+eto dos Estdantes %(tdent 7esign (print'
Ensinar a projetar softwares hoje reconhecido como necessidade por muitos
instrutores. Este padro sugere o uso de atividades que permitam que os estudantes
projetem solues para problemas, recebam feedback, projetem novamente, recebam
novo feedback, e assim sucessivamente.
Um exemplo de atividade separar os alunos em grupos de dois ou trs e solicitar
o projeto para um determinado problema. Ao final, so levantadas questes que no
podem ser respondidas com um design inadequado e os estudantes so organizados em
grupos de 4 ou 5 de modo que cada grupo tem pelo menos duas propostas de projeto.
Eles so desafiados a criarem uma nova proposta, ao final, mais questes podem ser
levantadas e alguns projetos discutidos. O processo pode continuar enquanto o professor
desejar.
1.9.1A Engano %,istaDe'
Os estudantes so estimulados a criarem artefatos com erros propositais, de modo
a ensin-los como reconhecer erros e suas consequncias.
Todos cometemos erros, profissionais experientes geralmente conseguem
reconhecer um erro quando visualizam as consequncias de um, estudantes no sabem
reconhecer estes erros.
1.9.11 4anal de 3este %3est 3be'
Tambm conhecido como "teste e veja, este padro fora que os estudantes
testem suas prprias perguntas para questes do tipo "O que aconteceria se eu... Desde
que exista acesso a um computador, eles podem testar suas hipteses.
importante que o instrutor fornea listas de exerccios levando em conta as
principais dvidas apresentadas colocando em diversos pontos questes do tipo "O que
aconteceria se voc....
sto pode ser usado para testar as regras de sintaxe de uma linguagem por
exemplo e/ou o uso de operadores.
Um bom exemplo o ensino de loops, onde a simples mudana de algumas
variveis podem gerar impresses na tela diferentes, de 1 at 10 ou mesmo um loop
infinito.
1.9.11 Preenc$a as .acnas %2ill in t$e BlanDs'
muito difcil e o tempo gasto seria muito alto para estudantes iniciantes
desenvolverem softwares complexos, porm, o que eles podem fazer com as habilidades
iniciais geralmente muito chato.
A soluo proposta disponibilizar um software complexo que os estudantes
possam analisar e deixar pequenas lacunas no software a serem implementadas pelos
alunos com os conhecimentos que possuem. Um exemplo simples uma definio de
classe em Java onde o corpo de um mtodo foi deixado em branco.
1.9.18 Estrela de Oro %Bold (tar'
Os estudantes devem ser recompensados pelo que eles fazem bem e jamais os
deprecia por ainda no terem atingido as competncias almejadas.
1.9.19 Avalie isto novamente *a %Brade it again (am'
Permita que trabalhos e atividades sejam enviados posteriormente para
reavaliao. sso estimula os estudantes a criarem erros e os motiva a melhorarem seus
trabalhos para melhorar suas notas.
8 ExperiIncia pr#via com ensino de POO e 6ogos
No primeiro semestre de 2012, no curso Tcnico em Programao articulado com o
Ensino Mdio do SENA So Jos em Santa Catarina, na disciplina de Programao
Orientada a Objetos , foi trabalhado um mdulo de desenvolvimento de jogos com Java.
A turma trabalhada possui 33 alunos entre 16 e 18 anos.
Esta disciplina est presente no terceiro semestre do curso. Os estudantes j
chegam a esta disciplina com uma base sobre alguns conceitos bsicos de OO como
construo de classes, mtodos, atributos e parmetros, bem como conceitos bsicos de
estruturas de programao como if, while, switch, dentre outros. Entretanto, por ser um
curso paralelo ao ensino mdio e pelo perfil do pblico, comum que eles cheguem na
terceira fase aps o perodo de frias sem se lembrar com exatido dos contedos
trabalhados nos semestres anteriores, sendo necessrio relembr-los.
Este mdulo teve durao de 76 horas/aula. Destas, 40 horas/aula foram utilizadas
para o ensino dos conceitos de Programao e Jogos 2D. As demais 28 horas foram
utilizadas pelos alunos em sala com orientao do professor para o desenvolvimento do
jogo.
3.1 +o#te,dos trabal-ados
O contedo foi dividido em duas categorias, Programao Orientada a Objetos
(foco da disciplina) e Jogos 2D. Alm destes contedos, questes como uso de controle
de verso e uma DE de programao tambm foram abordados, porm, por no fazerem
parte deste estudo, no sero citados.
Segue abaixo tabela com os contedos trabalhados e um identificador para cada
um:
2onte;dos #$$ 2onte;dos %o&os 2-
C1) Composio;
C2) Encapsulamento;
C3) Herana;
C4) Polimorfismo;
C5) sobrecarga e sobreescrita de mtodos e
construtores;
C6) Classes abstratas,
C7) nterfaces;
C8) Enum;
C9) Mtodos e atributos estticos
C10) Tratamento de Exceo
C11) Padres de desenvolvimento (frameworks);
C20) Sprites;
C21) TileMaps;
C22) Animao;
C23) Desenho 2D;
C23) Captura Eventos Teclado;
C24) Captura Eventos Mouse.
%abela 2' %abela demonstrando os conte3dos trabalhados na e!peri"ncia prvia com ensino de
orientao a ob#etos baseado em #ogos.
Para melhor entendimento, segue abaixo uma descrio breve de como cada um
dos contedos foi trabalhado:
41' 4omposi!)o: Para formar objetos de um jogo, como personagens de luta, era preciso
ter uma classe composta de outras que representassem imagens, 'magias' dos
personagens, etc;
41' Encapslamento: Alguns recursos como coliso de personagens com o cenrio foi
encapsulado pelo professor e fornecido atravs de classes, como forma de passar o
conceito, depois, no desenvolvimento do jogo e dos exemplos em aula eles foram sembre
lembrados de encapsular a lgica de alguns elementos do jogo dentro de sua respectiva
classe;
48' Jeran!a: Todos os objetos do jogo precisavam estender uma classe chamada
GameObject que j possua caractersticas bsicas de um objeto, como a posio inicial,
mtodos de acesso e mtodos modificadores a estes atributos;
49' Polimorfismo: comum termos itens em jogos 2D, estes itens podem aumentar a
vida do personagem, deix-lo mais rpido ou mais lento, dentre outras caractersticas.
Uma das formas de se trabalhar o polimorfismo foi com classes que representavam itens,
estas classes estendiam uma classe tem, e todos os itens, representados com subclasses
abstratas eram referenciados no projeto como objetos da classe tem, para permitir
extenso do software. Tambm foi visto polimorfismo de mtodo com mtodos de coliso
que podiam receber diferentes parmetros.
4;' (obrescrita de m#todos e constrtores: A maioria dos mtodos implementados
pelos estudantes eram da prpria classe ou abstratos. A sobrescrita foi trabalhada apenas
quando os estudantes estendiam uma classe que representava um objeto com gravidade.
A lgica responsvel por parar o objeto em caso de queda se ele colidisse com um cho
era um comportamento padro que os estudantes precisavam sobrescrever quando
haviam especificidades nos seus objetos, sempre lembrando de chamar o mtodo
sobrescrito da classe superior para no perder o efeito da gravidade;
4<' 4lasses abstratas: A classe GameObject, da qual todos os objetos do jogo devem
herdar, abstrata e exige a implementao de dois mtodos, um para execuo da lgica
do objeto e outro para desenh-lo.
4=' 4lasses 0nterface: Cada fase do jogo era representada por uma classe que
implementava uma interface. Esta interface apresentava mtodos para quando uma fase
iniciava, era carregada, desenhada ou estava em execuo;
4>' Enm: Quando foram trabalhados jogos de luta, um enum foi utilizado para controlar o
estado do personagem, ou seja, se ele estava pulando, apanhando ou em estado normal;
4@' ,#todos e atribtos estticos: O framework utilizado apresentava diversos mtodos
estticos, principalmente para recuperar a referncia aos objetos que capturam aes dos
perifricos e realizam operaes de desenho. Os atributos estticos foram trabalhados
para representar as teclas do teclado;
41A' 3ratamento de Exce!)o: Sempre que uma imagem era carregada para o jogo,
corria-se o risco dela no existir. Neste caso, uma exceo era gerada internamente pelo
software e o estudante deveria trat-la. nfelizmente neste ponto, apenas era exibida uma
mensagem de erro ao usurio e o tratamento de exceo no foi visto em sua plenitude,
quando o programador usa excees para manter o software funcionando mesmo em caso
de falhas.
411' Padr"es de desenvolvimento %frameCorDs': Foi utilizado durante toda a disciplina
o framework ava)la. (Feij et al), de modo que o conceito de framework foi trabalhado
constantemente;
41A' (prites: Em um jogo onde o jogador precisava mover uma nave pelo cenrio, foi
utilizada uma sprite com a imagem da nave em todas as direes. Como suporte, foi
fornecida uma classe que desenhava os quadros de uma sprite, adaptada do framework
ava)la.;
411' 3ile,aps: Cada cenrio era representado por um conjunto de *iles e um arquivo de
configurao que dizia como posicionar os tiles no cenrio. Uma classe que desenhava o
cenrio a partir do arquivo de configurao foi fornecida;
411' Anima!)o: Foi usado o efeito de bombas explodindo, onde a cada fatia de tempo era
preciso mudar a imagem da bomba desenhada na tela;
418' 7esen$o 17: Nos exemplos iniciais foram utilizados somente figuras geomtricas
simples como crculos e linhas. Todas desenhadas pela AP /raphics do prprio Java;
419' 4aptra de Eventos 3eclado: Atravs da classe 0e.board fornecida pelo framework
ava)la. com mtodos para saber se uma determinada tecla estava pressionada;
41;' 4aptra de Eventos ,ose: Atravs da classe 1ouse fornecida pelo framework
ava)la. com mtodos para saber se o boto esquerdo ou direito do mouse estava
pressionado e qual a posio do cursor na tela;
3.2 Metodologia
O principal elemento da metodologia foi o uso de exemplos, no qual era aplicado
um determinado conjunto de conceitos na construo de um jogo e, a seguir, atividades
prticas de melhoria do exemplo apresentado de modo a permitir que o estudante tivesse
um contato com o conceito e a sua implementao.
Apenas em um nico momento iniciaram o desenvolvimento com uma tela vazia,
neste caso, tinham em mos um script que os guiaria pelos conceitos e recursos bsicos
do ava)la..
Antes do incio deste mdulo com jogos houve uma reviso breve dos conceitos de
classe, mtodos, atributos, e outros conceitos bsicos de OO.
Todos os exemplos foram desenvolvidos tendo como base o framework ava)la.
(Feij). E, aps um perodo de aulas tericas, os alunos puderam desenvolver seu prprio
jogo, com tema livre. Seguem abaixo o relato dos exemplos utilizados:
8.1.1 Exemplo 1 K ,ovimentando ma bola
No primeiro momento, foi apresentado um exemplo de uma bola se movimentando
horizontalmente na tela a partir do movimento do teclado (Caminha, Exemplo 1). Esta
lio demonstrou o uso bsico do framework, como acessar o teclado e como criar um
objeto de jogo, no caso, a bola.
Aps a apresentao, os estudantes receberam a tarefa de permitir o movimento
vertical da bola no eixo vertical sem perder o movimento horizontal existente. Ao final, um
exemplo de um jogo mais complexo (Caminha, Exemplo 2) utilizando o objeto da bola foi
mostrado para exemplificar o potencial do que eles estavam aprendendo. Tambm foi
disponibilizado um tempo para que eles fizessem alteraes neste exemplo mais
complexo, agora porm, de forma livre.
*lustrao 2' 4ovimentando uma bola na tela
*lustrao 5' E!emplo mais comple!o utili6ando a bola criada
anteriormente
8.1.1 Exemplo 1 K 4onstrindo o primeiro +ogo
No segundo momento, era importante que os estudantes iniciassem o
desenvolvimento de um jogo simples, porm, passando por todas as etapas do processo
de desenvolvimento, j que na etapa anterior, haviam apenas realizado uma modificao.
Para auxili-los foi fornecido um roteiro de 10 passos (Caminha, javaPlay em 10
passos)que guiava a construo de um jogo (Caminha, Exemplo 3) no qual o personagem
controla um jogador em formato de bola (verde) que deve fugir de alguns inimigos (bolas
amarelas e vermelhas) at um elemento de chegada, uma estrela.
8.1.8 Exemplo 8 K -tens e fases
Passamos agora a melhorar o jogo desenvolvido com o auxlio do roteiro. A
primeira atividade foi o uso do framework para poder realizar a passagem de fases.
Ento, foi construdo um jogo com trs fases.
1. A primeira fase corresponde ao jogo j criado na etapa anterior;
2. Na segunda fase o personagem tambm pode capturar itens. Um dos itens
representado por um quadrado verde e aumenta a velocidade do jogador. O
segundo um quadrado vermelho e inverte a movimentao. Para a construo
dos itens foi criada uma classe abstrata que obriga o programador a implementar
um mtodo de ao quando o personagem tem coliso com alguns dos itens.
Antes de avanar para a terceira fase, os estudantes so orientados a criar um
novo tipo de item;
3. Na terceira fase, uma nica lista utilizada para armazenar os diversos itens do
jogo. Quando existe coliso com algum deles o mtodo definido na classe abstrata
*lustrao 7' %ela final do #ogo desenvolvido com o au!lio do roteiro
executado.
8.1.9 Exemplo 9 K Berra Especial
A partir deste ponto, iniciou-se o trabalhando com o uso de imagens e a criao de
novos objetos a partir de objetos j existentes. Decidi utilizar uma metfora similar aos
projetos anteriores e escolhi um jogo no qual o jogador controla uma nave que se move
pelo cenrio e precisa destruir as naves inimigas (Caminha, Guerra Espacial).
Como este projeto era complexo, ele foi divido em 4 etapas:
Etapa 1: apenas foi desenhada uma nave que se movimentava livremente pelo
cenrio, de modo a trabalhar o uso das classes para desenho de imagens;
Etapa 1: a nave foi capaz de atirar. Os tiros eram criados pela nave, de modo a
trabalhar que um objeto era capaz de criar outros objetos ao longo da execuo do
software. Estes tiros so armazenados em uma lista, trabalhando a capacidade
dinmica de armazenamento das listas;
Etapa 8: uma nave inimiga criada e o objetivo , com os tiros, eliminar a nave
inimiga. Este mdulo trabalha principalmente a interao entre trs objetos
diferentes em tempo de execuo. Tambm adicionada uma classe que gerencia
a exploso que ocorre quando o tiro acerta a nave.
Etapa 9: um segundo jogador adicionado e exploses especiais so adicionadas
quando uma nave inimiga atinge um dos jogadores. Vrias naves inimigas so
criadas e os tiros de ambos os jogadores podem acertar as naves. sto cria um
ambiente complexo que s pode ser gerenciado atravs do uso de listas. Cada
*lustrao 8' %erceira fase do e!emplo com diversos itens na tela
jogador construdo com uma classe de modo a estimular os estudantes na
identificao de cdigo duplicado e possibilidade de herana.
8.1.; K Personagens e 4enrios
Nesta etapa, era importante demonstrar os mesmos conceitos abordados em outro
contexto. Foi escolhido o contexto de jogos com cenrios e gravidade. Nestes jogos um
personagem se movimenta por um cenrio que possui uma estrutura considerada como
cho e pode saltar sobre obstculos, plataformas e outros. Como este projeto envolvia
grande complexidade, foi dividido em 2 etapas:
Etapa 1: Apenas um personagem (chamado Ryu) se movimentando por um
cenrio construdo a partir de um arquivo de configurao. Toda a coliso com o
cenrio feita por uma classe que encapsula a lgica. Os alunos no so
instrudos sobre a lgica utilizada pela classe devido a sua complexidade. Os
estudantes so instrudos sobre como controlar os pulos do personagem
(Caminha, Exemplo Ryu);
Etapa 1: Aps, so adicionados inimigos na fase representados por bolas
vermelhas que rolam em direo ao jogador, semelhante as naves inimigas no jogo
Guerra Espacial (Caminha, Exemplo Ryu 2).
*lustrao 9' :erso final do #ogo ;uerra Espacial
8.1.< K 6ogo de .ta
Como exemplo final foi trabalhado um jogo de luta utilizando o mesmo personagem
anterior contra outro personagem (chamado Vegeta). Neste jogo os personagens
possuem golpes e um deles pode atingir o outro. Este material serviu principalmente
como estmulo ao desenvolvimento dos jogos dos alunos no projeto final e demonstrou
comportamentos mais complexos de interao entre os objetos (Caminha, Ryu vs
Vegeta).
8.1.= K /evis)o
Ao final foi preparado um material de reviso de todos os conceitos relembrando os
tpicos abordados e todos os conceitos apresentados (Caminha, Reviso jogos 2D).
*lustrao <' )ersonagem saltando sobre um inimigo
representado por uma bola vermelha
*lustrao =' E!emplo #ogo de luta
3.3 .valia!"o e /esultados
A avaliao da disciplina foi feita atravs de conhecimentos e habilidades. Por
conhecimento entende-se as capacidades tericas, avaliadas com trs provas de curta
durao e uma de reviso sobre todo o contedo. Por habilidades entende-se a
capacidade prtica de desenvolver um jogo utilizando os conceitos aprendidos.
Para avaliar o nvel de motivao com a disciplina, principalmente ao trabalharmos
o tema de jogos, foram includas questes sem peso avaliativo e de resposta voluntria
nas provas tericas.
8.8.1 Avalia!)o 3erica
As trs primeiras provas avaliaram diferentes aspectos ao longo das 40 horas/aula
trabalhadas e ao final do contedo, houve uma prova com todo o contedo abordado
durante o ensino. As trs primeiras provas foram divididas em duas partes, a primeira
parte era sempre aplicada no incio das atividades e a segunda ao final. Segue a
descrio de cada uma e a mdia de pontuao obtida.
Primeira prova: foi aplicada logo aps a construo do primeiro jogo e abordou
conceitos complexos como classes abstratas, interface e herana. A mdia geral da
prova em uma escala de 0 a 100 foi de 66 pontos e meio (Caminha, Prova 2
a
e
Prova 2b).
(egnda prova: Aps este resultado baixo os mesmos conceitos foram
retrabalhados nos exemplos posteriores e a segunda prova foi aplicada aps o
exemplo com uso de itens e diversas fases, de modo que polimorfismo foi includo
com os demais contedos na prova. A mdia geral da turma foi de 90 pontos em
uma escala de 0 a 105 (Caminha, Prova 3
a
e Prova 3b).
3erceira Prova: A terceira prova teve como foco o reuso de cdigo com
composio e herana, acrescido de alguns poucos tpicos sobre jogos 2D. A
mdia geral foi de 73 em uma escala de 0 a 100 (Caminha, Prova 4a e 4b).
Prova de /evis)o: A prova reviso foi aplicada a todos os alunos aps a reviso
com o objetivo de verificar de forma ampla o entendimento terico da disciplina
aps todo o contedo trabalhado. Esta prova teve pelo menos um tpico sobre
cada contedo trabalhado e a mdia geral da turma foi de 72 pontos em uma
escala de 0 a 100 (Caminha, Prova de Reviso).
Aps a anlise da prova percebi que as questes envolvendo os conceitos de
herana, composio, polimorfismo, classes abstratas e classes interface foram
devidamente absorvidos.
Porm, tive ndice de erro de quase 50% em uma questo que envolvia a
identificao e classificao de algumas estruturas bsicas como atributos, mtodos e
construtores (questo 3 da prova de reviso). Porm, no momento de correo da prova
praticamente todos percebiam e compreendiam o erro aps este ter sido identificado.
A hiptese levantada que esta dificuldade ocorreu poque foi trabalhado muito com
estruturas bsicas j prontas que eles apenas copiavam, colavam e modificavam para a
sua necessidade, at mesmo quando era criada uma aplicao do zero, eles tinham um
roteiro com cdigos fonte de apoio.
Como trabalhamos neste modelo por dois meses e a disciplina anterior de
Orientao a Objetos havia sido ministrada no ano anterior, acredito que eles acabaram
esquecendo o nome de algumas estruturas simples.
8.8.1 Avalia!)o da ,otiva!)o
Na primeira prova, logo aps a construo do primeiro jogo os estudantes foram
perguntados se estava sendo interessante aprender Orientao a Objetos com Jogos.
82% disseram que sim, 9% no responderam e 9% disseram que no fazia diferena.
Havia uma opo para o caso de no estar gostando, nenhum estudante marcou esta
opo.
Ficou claro tambm na relao de convivncia que o interesse havia aumentado
muito em relao disciplina de Programao Orientada a Objetos onde havamos
trabalhado com softwares Desktop e com exemplos proposto por Barnes.
Ao final, pelo menos 5 alunos demonstraram grande interesse em seguir a carreira
de programador de jogos.
8.8.8 Avalia!)o Prtica
Ao final das 40 horas aula tericas, os estudantes tiveram 28 horas aula para
desenvolver o prprio jogo. Os 33 alunos se organizaram em 8 grupos e desenvolveram
os seguintes trabalhos:
3.3.3.1 Grupo 1 0 Po&erMusic
Jogo similar ao popular GuitarHero onde o jogador simula que est tocando uma
guitarra no acompanhamento da msica e deve pressionar os botes correspondendo a
nota da guitarra no momento exato indicado por uma animao na tela.
3.3.3.2 Grupo 2 0 +-apio#s %ig-ter
Jogo de luta como o apresentado no exemplo para a turma com personagens
clssicos de diferentes desenhos animados e jogos de vdeo-game. Cada personagem
pode dar socos, chutes e alguns contm um especial.
3.3.3.3 Grupo 3 0 G-oai#e
Jogo de luta como o apresentado no exemplo para a turma com personagens
clssicos de diferentes desenhos animados e jogos de vdeo-game com o diferencial de
cada personagem contm de 2 3 ataques especiais especficos.
3.3.3.4 Grupo 4 0 1ce +ro&# +itadel
Jogo com muitas fases onde trs jogadores unem habilidades distintas para
derrotar diversos inimigos. Cada inimigo representa uma fase no jogo.
3.3.3.2 Grupo 2 0 Moluscatio#
Um personagem criado pelos estudantes deve percorrer um cenrio pulando por
obstculos e bombas. A cada fase possvel ganhar alguns poderes especiais.
3.3.3.3 Grupo 3 0 4errorist *trateg5
Jogo no estilo do clssico Bomberman onde dois personagens disputam entre si
lanando bombas em um cenrio com obstculos.
3.3.3.6 Grupo 6 0 God of 7ors
Disputa entre duas minhocas realizado em turnos. Cada minhoca, no seu turno,
pode lanar um tiro sobre a outra escolhendo um ngulo e uma fora.
3.3.3.8 Grupo 8 0 *ai Gae
Jogo similar a um futebol de boto no qual cada personagem um crculo que
precisa acertar uma bola e jog-la para dentro do gol adversrio.
8.8.9 /esltado avalia!)o prtica
A avaliao tcnica do jogo contou com diversos critrios para verificar se os
conceitos de Orientao a Objetos foram aprendidos corretamente, segue abaixo os
critrios, o respectivo ndice de acerto mdio dos grupos e o nmero de grupos que
atenderam perfeitamente ao critrio:
2rit!rio #orcenta&em de
<certo
=;mero de >rupos com
acerto m6ximo
Uso de Composio ,.T 4
Uso de Herana (1T 4
Uso de Polimorfismo 3(T 3
Classes Enum 3(T 3
Classes Abstratas 3(T 3
Uso de Listas (ArrayList) ((T 5
%abela 5' >ndice de acerto em cada um dos critrios de avaliao do #ogo ,1
A avaliao mostrou de forma clara que os estudantes no conseguiram identificar
em seus projetos oportunidades para uso de recursos mais avanados de programao
como polimorfismo e classes abstratas.
Foi identificado na maioria dos projetos oportunidades do uso destes recursos, de
modo que as restries no foram decorrentes dos jogos projetados.
Outros conceitos mais bsicos como herana e composio foram absorvidos com
tranquilidade e implementados com qualidade pela maioria dos grupos. No caso de
herana, apesar de todos terem utilizado pelo menos alguma classe com herana,
existiam muitos lugares no cdigo onde a herana seria adequada e o grupo no
percebeu. Por isso que apenas metade dos grupos atingiram aproveitamento perfeito
neste quesito, tendo, todos os outros, aproveitamento parcial.
8.8.9 4oncls)o ao final do mdlo
Ficou evidente o grande aumento da motivao dos alunos, principalmente pela
qualidade de muitos dos jogos apresentados ao final da disciplina.
Porm, a nfase em um grande conjunto de cdigos previamente elaborados que
eles apenas modificavam acabou por gerar dificuldade em reconhecer quando e como
aplicar um determinado conceito aprendido para um problema novo. Por exemplo, eles
tinham facilidade em entender quando usar herana para os casos semelhantes aos
apresentados em sala, mas no em casos diferentes.
Acredito que a metodologia aqui adotada carece de maturidade na elaborao de
atividades e exemplos que permita aos estudantes adquirirem maturidade no processo de
desenvolvimento e identificarem adequadamente onde cada conceito pode ser aplicado.
9 Ensino de Programa!)o Orientada a Ob+etos
O ensino de programao em Java implica em grandes desafios para o ensino de
programao orientada a objetos. segundo Barnes, um programa mnimo em java possui
numerosos obstculos de sintaxe tas como: escrever uma classe; escrever um mtodo
main; a criao de um objeto utilizando a palavra-chave new2 uma atribuio a uma
varivel, a declarao de uma varivel, incluindo o tipo; uma chamada de mtodo;
utilizando a notao de ponto; possivelmente, uma lista de parmetros.
Podemos somar a isso o excesso de conhecimento necessrio para realizar
operaes bsicas de input e output, o grande nmero de termos como instncia,
herana, mtodo com os quais os estudantes no esto familiarizados e a dificuldade
adicional para os estudantes cuja lngua nativa no o ingls (Clark).
Por fim, alguns autores (Barnes, Feij) identificaram a necessidade de ensinar
atravs de projetos, para que os conceitos possam ser vistos em aplicaes reais.
Esta seo visa apresentar algumas metodologias para o ensino de Orientao a
Objetos com Java e extrair ao final, um conjunto de diretrizes guia para o presente
trabalho.
4.1 Metodologias para E#si#o OO
Para a elaborao deste trabalho foram escolhidas cinco metodologias de ensino
de Orientao a Objetos. Os critrios para a escolha foram a sua relevncia entre os
instrutores de programao e a experincia prtica do autor deste trabalho com cada
metodologia.
A primeira metodologia a desenvolvida pelo professor do Departamento de
nformtica e Estatstica da Universidade Federal de Santa Catarina, sais Camilo Boratti.
Metodologia responsvel pelo primeiro contato do autor com Orientao a Objetos.
A segunda a de maior abrangncia internacional, principalmente por ter sido a
primeira metodologia a vir acompanhada de um livro texto e de uma ferramenta que
oferecesse suporte total a ela. a metodologia construda por David J. Barnes e Michael
Kolling utilizando o BlueJ como ambiente de programao. Esta metodologia foi utilizada
parcialmente pelo autor para um curso de Programao Orientada a Objetos de 90 horas
aula.
A terceira escolhida foi a metodologia de introduo cincia da computao com
jogos que deu origem ao curso apresentado no captulo trs, baseada no trabalho de
Bruno Feij do VisionLab da PUC do Rio de Janeiro.
A quarta, a metodologia desenvolvida por Stelios Xinogalos ao longo de quatro
anos de ensino de programao orientada a objetos. Xinogalos tambm trabalhou com a
metodologia de Barnes e Kolling, porm com o tempo, passou a adot-la apenas
parcialmente no projeto do seu curso, utilizando um conjunto mais abrangente de
ferramentas.
Por fim, para atender uma necessidade observada pelo autor deste trabalho, foi
adotada a metodologia de Caspersen, que trabalha com uma abordagem baseada na
modelagem do problema a ser resolvido antes de trabalhar como produzir o cdigo para
um determinado problema.
Para cada metodologia apresentada a sequencia de sees da metodologia com
os respectivos contedos e exemplos trabalhados. Aps, feita uma descrio geral do
mtodo, uma anlise dos pontos fortes e fracos de cada metodologia e uma reviso final.
9.1.1 0saias 4amilo Boratti
Esta metodologia foi vivenciada pelo autor como aluno no primeiro semestre de
2007, no curso de Sistemas de nformao da Universidade Federal de Santa Catarina,
na disciplina de Programao Orientada a Objetos .
A disciplina foi ministrada pelo prprio professor saias Camilo Boratti que, no
mesmo ano, em agosto, publicou o livro que documenta a metodologia intitulado
"Programao Orientada a Objetos em Java.
O livro est organizado em oito captulos conforme tabela abaixo:
'aptulo E5emplos de !rojetos +ese%volvidos !ri%cipais 'o%ceitos abordados
'aptulo 1 ?enhum pro#eto desenvolvido
Fela#$o !OO com o mu%do
realS
!rocesso de /bstra#$oS
Opera#0es de /bstra#$o.
'aptulo 2 ?enhum pro#eto desenvolvido
Objetos e 'lassesS
Feprese%ta#$o visual de objetos
e classesS
8i%uaem JavaS
'aptulo 3
>mprimir %a tela uma li%-a de te5toS
'alcular a soma de dois %CmerosS
Escrever um prorama "ue determi%e a *rea
de um crculoS
MHtodo mai%S
>de%tificadoresS
1ipaem de valoresS
Bari*veisS
'ria#$o de objetosS
3tri% 2 se"uO%cia de caracteresS
+eclara#$o de atributosS
+eclara#$o de mHtodosS
'o%strutoresS
!arUmetros e /rume%tosS
'ompila#$o JavaS
!rocesso de modelaem de um
soft:are a partir de um problemaS
'aptulo 4
Escrever uma aplica#$o "ue determi%e a
distU%cia e%tre dois po%tosS
>mpleme%ta#$o de mHtodosS
MHtodos de acesso e mHtodos
modificadoresS
>mpleme%ta#$o de co%strutoresS
EscopoS
'ome%t*riosS
!arUmetrosS
>mpleme%ta#$o de objetos 2
referO%cia para um espa#o de
mem=riaS
1ipaem de valoresS
/tribui#$oS
'o%vers$o e5plcita de tipoS
E5press0es aritmHticasS
E5press0es 8=icasS
'aptulo 5
Escrever um prorama "ue determi%e a
idade mHdia de um rupo de pessoasS
Escrever um prorama "ue determi%e a
mHdia de idade das pessoas do se5o masculi%o e
tambHm a mHdia de idade das pessoas do se5o
femi%i%o de um rupo de pessoasS
'lasse /lu%oS
'lasse 1riU%uloS
!rocessos de repeti#$o 2 loopsS
!rocessos de tomada de decis$o.
E5N ifR s.itch0
E%capsulame%toS
Modificadores de acessoS
!alavra c-ave thisS
Berificar se um %Cmero H primoS
'aptulo 4
+ese%volver uma aplica#$o "ue fa#a uma
a%*lise do desempe%-o de alu%os em
determi%ada discipli%a. / aplica#$o deve
determi%arR para cada um dos alu%osR a sua
mHdia fi%alR ju%tame%te com uma i%forma#$o
di7e%do se o alu%o foi aprovado ou %$o.
'o%siderar "ue o alu%o te%-a reali7ado trOs
avalia#0esR todas com o mesmo pesoS
Em um determi%ado joo de dados
participam dois joadores. 'ada joador deve
la%#ar o dado e computar para si os po%tos
obtidos. 3er* co%siderado ve%cedor o joador
"ue ati%ir um total de 1.. po%tos ou mais.
3empre "ue %o la%#ame%to do dadoR o joador
obter o valor 1 ou 4R este ter* direito a um %ovo
la%#ame%toS
Modelaem das classes @uncionarioR (hefe
e ApoioR se%do as duas Cltimas subclasses de
@uncionarioS
Modelaem da classe abstrata 'o%tribui%te e
das subclasses @isico e Buridico.
Vera%#aS
/ palavraMc-ave superS
Feutili7a#$o de c=dioS
3obreposi#$o de mHtodosS
!olimorfismoS
!olimorfismo de mHtodoS
3obrecara de mHtodosS
'lasses abstratasS
'aptulo &
W+ese%volver uma aplica#$o "ue avalie o
desempe%-o de um rupo de estuda%tes em
determi%ada discipli%a..."ue prevO a reali7a#$o
de v*rios testes e uma prova fi%al...a mHdia dos
testes ter* peso de 4.T e a prova fi%al peso de
4.T.... X
/rra%jos 2 ArraCs0
ArraCs Multidime%sio%aisS
Opera#0es com arraCs.
'aptulo (
/tributos de classeS
MHtodos de classeS
MHtodos da classe 4athS
Ma%ipula#$o de 3tri%sS
'lasse (haracterS
%abela 7' (onte3dos e E!emplos da metodologia de Doratti
4.1.1.1 .#9lise Geral do M:todo
A metodologia inicia demonstrando que o mundo real constitu#do por entidades
"ue interagem entre si, e que tais entidades possuem caractersticas e funes, podendo
tambm serem chamadas de objetos.
Dessa forma, a construo de um software orientado a objetos passa pelo processo
de identificao dos objetos envolvidos e de como estes objetos iro se relacionar entre si
para a resoluo de um determinado problema.
A partir disto, Boratti conduz o estudante pelo conceito de abstrao, que
corresponde:
Wao processo utili7ado %a a%*lise de determi%ada situa#$oR atravHs da "ual observaMse
uma realidadeR te%doMse por objetivo a determi%a#$o dos aspectos e fe%Pme%os
co%siderados esse%ciaisR e5clui%doMse todos os aspectos co%siderados irreleva%tes.X
E a partir de problemas simples como determinar o raio de um c#rculo demonstra
como o problema pode ser modelado em termos de objetos com caractersticas e funes
interagindo entre si, modela as classes que representam estes objetos e apresenta sua
respectiva implementao em Java.
Os conceitos chave so demonstrados na medida em que so teis para resolver
problemas mais complexos e sub sees complementares se encarregam de
determinados aspectos da linguagem Java como operadores matemticos e detalhes de
sintaxe, sem necessariamente, serem parte da soluo dos problemas apresentados.
Ao final de cada seo, apresentado um resumo dos conceitos e conhecimentos
trabalhados, uma lista de exerccios, geralmente extensa e abrangente, nos casos que
apresentem contedo prtico, diversos exerccios resolvidos tambm so fornecidos.
Por fim, ressalta-se que todos os cdigos construdos por Boratti so em lngua
portuguesa e sempre que apresentam recursos novos, so comentados com descries
detalhadas do seu comportamento.
4.1.1.2 Po#tos %ortes
9.1.1.1.1 Opera!"es de Abstra!)o
No captulo introdutrio da metodologia, Boratti traz o conceito de operaes de
abstrao que mostram como o ser humano mentali3a, organi3a e modela o mundo ao
seu redor. Estas operaes so teis na medida em que definem uma taxionomia para
as interaes entre as entidades no mundo real e podem ser representadas diretamente
atravs de cdigo orientado a objetos. Logo, o processo de analisar uma interao entre
entidades no mundo real e o cdigo que deve ser construdo para resolver problemas
envolvendo esta interao pode ser mais adequadamente identificado.
As Operaes de abstrao so demonstradas utilizando representaes parecidas
com o utilizado pelo diagrama de classes da UML para as classes identificadas.
Segue abaixo as quatro operaes de abstrao:
4lassifica!)o : 0nstancia!)o: Classificao corresponde a determinar um
conjunto de caractersticas de um determinado grupo de objetos de modo a
classific-los em uma categoria ou classe. nstanciao o processo inverso, no
qual exemplos (instncias) de determinadas categorias so ressaltados. Por
exemplo a Classe 4arro e nstncia carro vermelho do os;
Beneraliza!)o e Especializa!)o: Generalizao ocorre quando determinamos
caractersticas comuns a conjunto de classes e assim, criamos uma classe mais
genrica. Especializao o inverso, quando a partir de uma classe genrica,
determinamos classes especialistas. Por exemplo, a classe genrica 1dico
poderia ser especializada em 5bstetra, )ediatra e 5rnitolaringologista;
Agrega!)o : 7ecomposi!)o: A Agregao caracterizada pela relao de "
composto por entre duas classes. A decomposio quando dizemos que um
objeto " parte de outro objeto. Por exemplo, a classe 4arro composta por
objetos da classe 1otor. J um objeto da classe Motor parte de um objeto da
classe 4arro;
Associa!)o: Ocorre quando dois objetos possuem algum tipo de ligao entre si
mas podem existir independentemente do outro, Por exemplo, na relao que
ocorre entre objetos das classes Professor e Aluno.
9.1.1.1.1 Processo de ,odelagem
Boratti coloca que o modelo de resoluo de um problema, ou seja, o software, o
resultado de um processo de abstrao que em orientao a objetos corresponde
identificao dos objetos com suas caractersticas e funes e a respectiva modelagem
das suas classes.
9.1.1.1.8 /epresenta!)o Hisal de Ob+etos
Aps a identificao dos objetos necessrio represent-los visualmente pelo
projetista de software. A visualizao proposta por Boratti utiliza um crculo para
representar um objeto com um texto dentro representando o identificador deste objeto.
*lustrao &E' A (onstruo do modelo. @onte' Doratti
Quando um objeto composto por outros objetos estes so representados como crculos
dentro do crculo maior. No caso de atributos simples de um objeto como nmeros e
textos, estes objetos so representados com um retngulo.
9.1.1.1.9 0mplementa!)o de Ob+etos
Recordo, como estuante do professor saas Boratti, que fortaleceu muito o meu
aprendizado no momento que compreendi que cada objeto ocupava um espao na
memria e que uma varivel, na verdade, era um apontador para este espao na
memria.
Este aspecto da implementao de objetos tratada na seo 4.8 onde Boratti
coloca que a identifica,+o de um obeto constitui'se em uma posi,+o na memria
6portanto, uma vari!vel7 "ue arma3ena o endere,o do espa,o de memria ocupado por
a"uele obeto.
Para exemplificar este conceito o seguinte cdigo apresentado:
Ponto umPonto, outroPonto; // Um ponto contm um atributo inteiro x e um y
umPonto = new Ponto();
outroPonto = new Ponto();
outroPonto.redefina_se(2., !.); // este mtodo a"tera os #a"ores de x e y
E a partir do cdigo acima, utilizada uma adaptao da visualizao de objetos
demonstrando que as variveis so apenas apontadores para os objetos:
*lustrao &&' Fepresentao :isual de Ob#etos. @onte' Doratti. Adaptado por Galu (aminha
9.1.1.1.; /epresenta!)o Hisal de m ArraG
Arranjos, como so chamados os tradicionais Arrays por Boratti so "elementos que
armazenam vrios valores. Para facilitar o ensino foi criado um modelo visual para o uso
de arrays. Para exemplificar o modelo usaremos o seguinte cdigo:
int$% numeros = new int$&%;
int cont = 2;
numeros$'% = !(;
numeros$cont% = ');
numeros$cont*'% = numeros$cont% + ';
O cdigo acima apresentaria a seguinte representao visual:
4.1.1.3 Po#tos %racos
9.1.1.8.1 0n&cio pelo m#todo main com Jello Lorld
Aps os dois primeiros captulos de introduo, com uma explicao detalhada e
abrangente sobre orientao a objetos e o processo de modelagem, o primeiro programa
mostrado tem como problema "mprimir uma linha na tela e o seguinte cdigo-fonte:
*lustrao &,' *mplementao de Ob#etos. @onte'
Doratti. Adaptado por Galu (aminha
*lustrao &2' Fepresentao :isual de um
ArraC. @onte' Doratti. adaptado por Galu
(aminha
pub"ic c"ass Pro,rama'
-
//.ec"ara/0o do mtodo main
pub"ic static #oid main(1trin,$% parametro)
-
1ystem.out.print"n(2Primeiro Pro,rama34);
5
5
O programa que resolve este problema no envolve a criao de nenhum objeto, e
o nico mtodo chamado um mtodo acessado atravs de um atributo esttico da
classe System, usando notao de ponto.
E isto feito dentro do mtodo main, um mtodo esttico que exige como
parmetro um array de strings, contedos que somente sero trabalhado nos captulos
sete e oito.
evidente que esta abordagem se torna necessria na medida em que Boratti, por
no adotar nenhuma ferramenta que suporte a execuo de cdigo sem a criao do
mtodo main, no tem sada a no ser iniciar por ele.
Esta abordagem porm, no interessante pois a primeira poro de cdigo que o
estudante enxerga algo absolutamente incompreensvel para ele, devido a grande
quantidade de conceitos envolvidos (Kolling e Rosemberg).
9.1.1.8.1 Primeiro o cdigo* depois o conceito
Em diversos exemplos, certas regras de sintaxe so apresentadas, cujos conceitos
envolvidos somente so trabalhados em sees ou captulos posteriores.
Um exemplo a primeira classe com a qual os alunos tem contato. A classe
4#rculo, apresentada como o terceiro trecho de cdigo com o qual os estudantes tem
contato.
pub"ic c"ass 6ircu"o
-
//.ec"ara/0o do atributo
protected doub"e raio;
//.ec"ara/0o dos mtodos
pub"ic 6ircu"o()
-
raio = .;
5
pub"ic doub"e fornece7rea()
-
doub"e area;
area = !.'(')8raio8raio;
return area;
5
pub"ic #oid receba9a"or:aio(doub"e #:aio)
-
raio = #:aio;
5
5
Esta classe apresenta mais de 10 conceitos: comentrios, declarao de atributos,
tipagem de variveis, declarao de mtodo com retorno, declarao de mtodo sem
retorno, declarao de um construtor, assinatura de classe, parmetros, atribuies,
operaes matemticas e uso de modificadores de acesso.
A maioria destes conceitos s sero trabalhados posteriormente, por exemplo,
atribuies sero detalhadas no captulo 4 enquanto modificadores de acesso somente
sero vistos no captulo 5.
Percebe-se que esta abordagem tem como inteno demonstrar a modelagem
completa de uma classe adequadamente escrita para resolver um problema. sto fica
claro pelo uso de modificadores de acesso desde o incio, com a inteno de evitar que
estudantes declarem atributos como pblicos.
sto causa, porm, uma sobrecarga de conceitos apresentados sem a devida
possibilidade do estudante experimentar cada um deles e suas consequncias para o
programa, sem saber qual a funo de cada palavra-chave.
9.1.1.8.8 ,#todos estticos desde o in&cio
Para complementar o exemplo do captulo 3 no qual preciso determinar a rea de
um crculo a partir do seu raio, apresentada uma classe chamada nterface (que no
tem nenhuma relao com o conceito de interfaces em Java) responsvel por solicitar ao
usurio um nmero que ir representar o raio do crculo.
O principal mtodo desta classe chamado "pegaValorRaio contm 4 linhas,
conforme apresentado abaixo:
;
1trin, #a"or<ido;
#a"or<ido = =optionPane.s>ow?mput.ia"o,(2.i,ite o raio@ 4);
doub"e #a"or = .oub"e.parse.oub"e(#a"or<ido);
return #a"or;
;
O problema deste mtodo que as principais instrues so mtodos estticos de
classes especficos da biblioteca do Java. sso nada ensina sobre orientao a objetos,
sendo necessrios apenas para que o programa seja minimamente interessante.
Construes como esta so utilizadas em outros pontos como no captulo 4 com o
uso do mtodo s"rt da classe 1ath, responsvel por recuperar a raiz quadrada de um
nmero.
A grande crtica a esta abordagem que mtodos e atributos estticos so
ensinados apenas no captulo 8, de modo que o estudante precisa simplesmente ignorar
o fato da sintaxe ser diferente de outros objetos com os quais ele trabalha.
O autor j presenciou, como professor, estudantes que foram ensinados sob
metodologias parecidas chamando mtodos diretamente das classes, sem diferenciar se
um mtodo era ou no esttico.
4.1.1.4 +o#clus"o
A metodologia se mostra muito interessante ao tornar claro para o estudante o
processo de construo de um software, a sua respectiva modelagem de objetos e
classes e as diversas representaes visuais do programa.
Tambm se mostra interessante a forma de abordar os conceitos sempre que
possvel a partir de problemas do mundo real. Observa-se porm que a complexidade dos
problemas tratados muito pequena como por exemplo, calcular a mdia de um grupo de
alunos ou determinar a rea de um crculo.
Um dos motivos para o uso de exemplos triviais a dificuldade em utilizar recursos
avanados de programao em funo da complexidade destes recursos conforme
apresentado pela linguagem Java. De forma mais clara isto visto na modelagem da
classe nterface que para recuperar um valor digitado pelo usurio precisa de mtodos
estticos logo no incio da metodologia.
Este ponto ressalta que alguns dos pontos fracos observados na metodologia
poderiam ser melhor trabalhados com o apoio de um ferramental adequado como um
editor que no exigisse a criao de um mtodo main para executar cdigo ou uma
ferramenta que permitisse executar mtodos diretamente dos objetos.
9.1.1 7avid 6. Barnes e ,ic$ael MNlling
"Partindo de Objetos em Java. Esta a primeira frase do livro-texto para a
metodologia. A metodologia utiliza o ambiente de programao BlueJ e possui como
algumas de suas linhas guia:
Fma abordagem iterativa: A partir do uso do padro "Early Bird, documentado na
seo 2.4 os principais conceitos so apresentados primeiro de uma forma
simplificada para que um determinado problema seja resolvido. Posteriormente no
curso, os mesmos conceitos so retomados segundo outro ponto de vista e o
conhecimento aprofundado;
(em completa cobertra da lingagem: em funo do foco do livro ser em POO,
detalhes especficos da linguagem java no so abordados a menos que sejam
necessrios para a resoluo de um determinado problema;
Abordagem baseada em pro+eto: ao invs de introduzir uma nova construo e
ento fornecer exerccios para aplicar a construo aprendida, primeiro fornecido
um objetivo e um problema. A anlise do problema determina o que ser
necessrio e ento, os recursos da linguagem e os conceitos so apresentados;
(eqencia dos conceitos em vez de constr!"es de lingagem: prefervel,
sempre que existe conflito entre trabalhar construes de linguagem ou os
conceitos, trabalhar os conceitos e o mnimo possvel das construes de
linguagem que auxiliem a implementar o conceito.
A metodologia est organizada em duas partes: 1) Fundamentos da Orientao a
Objetos e 2) Estruturas de aplicao. Na primeira parte so abordados os conceitos
bsicos como classes, objetos, mtodos, etc. Na segunda, conceitos importantes para o
desenvolvimento de aplicaes e reuso como herana, polimorfismo e interfaces so
abordados.
O livro-texto da metodologia possui 13 captulos, sendo os 7 primeiros reservados
para a primeira parte e os seis ltimos para a segunda. O ltimo captulo reservado para
um estudo de caso de uma aplicao de maior porte.
Segue abaixo descrio dos exemplos e contedos trabalhados em cada captulo:
'aptulo E5emplos de !rojetos +ese%volvidos !ri%cipais 'o%ceitos
abordados
2ap?tu0o 1
Objetos e
'lasses
+ese%-os simples de alumas formas
eomHtricasS
E5emplo utili7a%do um objetos do projeto
a%terior para dese%-ar uma fiuraS
E5emplo simples com classes de alu%os "ue
participam de aulas de laborat=rio.
ObjetosS
'lassesS
MHtodosS
!arUmetros.
2ap?tu0o 2
E%te%de%do as
defi%i#0es de
classe
3imula#$o uma m*"ui%a de ve%der bil-etes
de tremS
/rma7e%ame%to de i%forma#0es sobre um
livro.
'amposS
'o%strutoresS
!arUmetrosS
MHtodos de acesso e
modificadoresS
/tribui#$o e i%stru#$o
co%dicio%al.
2ap?tu0o 3
>%tera#$o e%tre
objetos
>mpleme%ta#$o de um mostrador de um
rel=io diital com -oras e mi%utosS
<ma simula#$o simples de um correio
eletrP%ico.
/bstra#$oS
Modulari7a#$oS
'ria#$o de objetoS
+iaramas de objetoS
c-amadas de mHtodoS
depuradores.
2ap?tu0o '
/rupa%do
objetos
>mpleme%ta#$o simples de um bloco de
a%ota#0es eletrP%icoS
<m sistema de leil$oS
<m a%alisador de reistros de acesso a uma
p*i%a :eb.
>teradoresS
'ole#0esS
/rra@sS
8oops.
2ap?tu0o *
'omportame%to
mais sofisticado
>mpleme%ta#$o de um prorama de di*loo
semel-a%te ao Eli7a utili7ado para for%ecer um
Wsuporte tHc%icoX para clie%tesS
/%ima#$o r*fica com bolas "ue "uicam.
<tili7a%do classes de
bibliotecaS
8e%do a docume%ta#$oS
Escreve%do a
docume%ta#$o.
2ap?tu0o .
Objetos bemM
comportados
Est*ios i%iciais de um di*rio "ue arma7e%a
compromissosS
>mpleme%ta#$o de uma calculadora de mesaS
1estesS
+epura#$oS
/utoma#$o de testes.
2ap?tu0o 7
+esi% de
'lasses
<m joo iterativo de ave%tura baseado em
te5toS
+esi% baseado %a
respo%sabilidadeS
/coplame%toS
'oes$oS
Fefatora#$o.
2ap?tu0o 1
Vera%#a
<m ba%co de dados de '+s e vdeosS Vera%#aS
3ubtipaemS
3ubstitui#$oS
Bari*veis polim=rficas.
2ap?tu0o @
'o%ti%ua#$o do joo iterativo do captulo &S !olimorfismo de mHtodoS
Mais sobre
-era%#a
'o%ti%ua#$o do ba%co de dados de '+s e
vdeos do captulo (S
tipo est*tico e di%UmicoS
3obrescri#$oS
Escol-a di%Umica de
mHtodo.
2ap?tu0o 10
1Hc%icas
adicio%ais de
abstra#$o
<ma simula#$o de ca#adorMca#a co%-ecida como
WraposaMcoel-oX.
'lasses abstratasS
>%terfaces.
2ap?tu0o 11
1ratame%to de
erros
>mpleme%ta#$o de um cat*loo de e%dere#osS !rorama#$o defe%sivaS
8a%#ame%to e tratame%to
de e5ce#$oS
>%forme de erroS
!rocessame%to de
ar"uivos simples.
2ap?tu0o 12
+esi% de
aplica#0es
3istema de reserva de luares em um ci%emaS +escobri%do classesS
'art0es 'F'S
!adr0esS
+esi% de i%terfaces.
2ap?tu0o 13
Estudo de caso
'ombi%a#$o de um sistema de reserva de
t*5is com um sistema de ere%ciame%to e de
simula#$o.
+ese%volvime%to i%teral
de aplica#$o.
%abela 8' (onte3dos e e!emplos da metodologia de Darnes
4.1.2.1 $iretri;es
De forma complementar, para que obtenha uma boa compreenso da metodologia,
segue-se o trabalho de KLLNG e ROSENBERG, que, a partir da experincia com o
desenvolvimento de diversos cursos utilizando o ambiente BlueJ elencaram oito diretrizes
adequadas para o ensino de programao orientada a objetos:
9.1.1.1.1 Ob+etos primeiro
consenso entre muitos professores de Programao Orientada a Objetos que
melhor ensinar a criar e manipular objetos antes de qualquer outra coisa. Esta atividade,
porm, difcil nos ambientes tradicionais, pois para executar o mtodo de um objeto
preciso:
1. Uma classe contendo um mtodo main esttico com um arra. de Strings como
parmetro;
2. Uso de uma varivel tipada;
3. Uma atribuio de um objeto uma varivel;
4. A instanciao de um objeto;
5. A sintaxe de chamada de um mtodo;
6. A visualizao do resultado da chamada do mtodo.
Com BlueJ a primeira atividade abrir um projeto existente e criar objetos a partir
das classes, em seguida, os estudantes podem chamar mtodos destes objetos e
visualizar seu estado. Tudo isso sem escrever nenhuma linha de cdigo.
9.1.1.1.1 5)o inicie com ma tela em branco.
Um dos maiores erros em programao OO iniciar com uma tela vazia.
Escrever projetos OO envolvem a definio de quais classes o programa ter e
quais mtodos cada classe dever ter, e este, um exerccio extremamente difcil para
estudantes novatos.
Ao invs disso, pode-se iniciar com pequenas modificaes e adies em cdigo
existente.
9.1.1.1.8 .eia cdigo
Muitos estudantes so forados a comear a programar sem terem lido
praticamente nenhum cdigo. sso no acontece em nenhuma outra disciplina.
Estudantes aprendem mais quando tem acesso a cdigos bem escritos que eles
possam utilizar como base para os seus projetos.
9.1.1.1.9 Fse pro+etos grandes
Programas curtos dificilmente deixam claro as vantagens em se utilizar Orientao
a Objetos.
A sugesto que sejam utilizados programas bem escritos com um nmero maior
de classes e mtodos que permitam aos estudantes compreenderem as vantagens do
uso de OO, assimilarem a importncia de um cdigo limpo e comentado, pratiquem a
leitura de cdigo e estudem a interao entre as classes.
9.1.1.1.; 5)o inicie com o m#todo main
O mtodo main exige muitos conceitos para ser compreendido. O ideal que os
estudantes s sejam apresentados a ele aps terem se envolvido com os conceitos
principais como a criao de objetos e chamada de mtodos.
9.1.1.1.< 5)o se OJello CorldP
Para se fazer um "Hello World em Java preciso iniciar do mtodo main, que por
sua vez significa: 1) construir uma classe da qual nenhum objeto criado. 2) construir um
mtodo (o main) que no age sobre um objeto.
sso no Programao OO e fere outras diretrizes j apresentadas.
9.1.1.1.= ,ostre a estrtra do programa
Classes e seus relacionamentos so muito importantes. essencial que os
estudantes possam visualizar a estrutura dos programas nos quais trabalham.
O BlueJ exibe a estrutura do programa em um diagrama semelhante ao diagrama
de classes da UML. Quando o BlueJ no estiver sendo utilizado importante que o
professor encontre meios de mostrar claramente esta estrutura.
9.1.1.1.> 3en$a cidado com a interface do srio
importante ensinar uma forma de realizar a interface com o usurio para
fornecimento de parmetros e para a impresso de resultados do software.
Em Java, podemos fazer isso com 8pplets, com a AP de entrada e sada ou com
frameworks GU como o 9wing.
Porm, nenhuma destas alternativas simples o suficiente para ser utilizada em
cursos introdutrios. So sugeridos ento, dois caminhos para lidar com este problema:
1. Especfico no BlueJ, so as janelas pop-up que solicitam ao usurio os valores
para os parmetros dos mtodos e as janelas que exibem os retornos dos
mtodos;
2. Um projeto maior com classes que encapsulem a interface com o usurio e que os
estudantes apenas precisem aprender a utilizar seus mtodos.
4.1.2.2 .#9lise geral do :todo
No sem mrito que esta metodologia est sendo adotada por um grande nmero
de instrutores de programao orientada a objetos em todo o mundo. Sem dvida que a
metodologia trouxe grandes contribuies e dentre os pontos fortes podemos destacar: 1)
a abordagem baseada em projetos que permite ao estudante aprender a resolver
problemas; 2) a priorizao do conceito antes das estruturas de construo da linguagem,
dando sentido ao que o aluno est aprendendo; 3) O rico acervo de projetos trabalhados,
trazendo diversas dimenses importantes da computao; 4) O uso do Bluej que permite
que se inicie a tarefa de ensinar diretamente atravs de objetos e escrita de seus
mtodos.
Alm destes, na prtica com a metodologia foi possvel perceber que os estudantes
que em geral possuem mais dificuldade com programao se sentiam mais seguros e
confiantes ao verem os objetos na tela e poder manipul-los. visvel que muitos alunos
no se sentem a vontade quando se deparam diariamente nas aulas de programao
com telas repletas de cdigo-fonte, sem outras representaes visuais do trabalho que ele
est realizando.
4.1.2.3 Po#tos fracos
Apesar do inmero sucesso, importante ressaltar algumas dificuldades geradas
pela metodologia. Estas dificuldades foram percebidas em prtica do autor com a mesma
e atravs da pesquisa de Xinogalos.
9.1.1.8.1 Qnfase nas t#cnicas de visaliza!)o e manipla!)o direta do Ble6
Em funo do BlueJ disponibilizar interface grfica para instanciao de objetos e
chamada de mtodos, alguns alunos ficam por demais "acomodados a esta maneira de
trabalhar, o que gera dificuldades com instanciao de objetos e chamadas de mtodos
direto do cdigo-fonte. sso porque no BlueJ, a diferena entre a forma de manter objetos
em variveis e chamar mtodos destas variveis (lustrao 14) muito diferente da
forma como a mesma ao feita no BlueJ (lustrao 15).
*lustrao &7' Ob#etos na bancada de ob#etos Hem
vermelhoI e chamada de mtodo de um ob#eto
*lustrao &5' *nstanciao de ob#eto e chamada de
mtodo em cdigo
Outra crtica a que mtodos que possuem retorno so chamados da mesma
forma que mtodos sem retorno. Esta questo causa confuso ao tentar passar
para os estudantes que mtodos com retorno devem ser sempre atribudos a uma
varivel. Mtodos com retorno, no BlueJ, imprimem o valor retornado na tela.
Quando, posteriormente o autor trabalhou mtodos com retorno sem o uso do
BlueJ, uma das dvidas apresentas foi questionando se, quando se retornava um
valor, este valor no deveria ser impresso na tela?
9.1.1.8.1 Qnfase em pro+etos existentes
Em funo da utilizao de projetos com uma boa quantidade de cdigo pronto, a
dificuldade em iniciar projetos do zero se mostrou muito maior. Alm disso, mtodos get e
set, bem como construtores, so geralmente fornecidos pelos projetos e os alunos
raramente os implementam.
9.1.1.8.8 Ensino posterior do m#todo ai#E
O ensino apenas no final do curso do mtodo main exige que os alunos utilizem
apenas o BlueJ para testar cdigo, potencializando as dificuldades comentadas no item 1.
4.1.2.4 +o#clus"o
Percebe-se que o BlueJ apesar de suas inmeras qualidades, no pode ser visto
como a nica soluo, pois, em concordncia com Xinogalos, "mais de uma ferramenta
necessrio para suportar as diferentes necessidades cognitivas no ensino de
programao, de modo que esta metodologia apesar de sua qualidade, pode ser
complementada com atividades e prticas em ambientes profissionais de
desenvolvimento.
9.1.8 Brno 2ei+ et al
A metodologia apresentada por Feij visa segundo ele prprio apresentar os
conceitos e os bons h!bitos da arte de programar. Seu material aborda no apenas a
programao orientada a objetos mas tambm a programao estruturada e brevemente
a programao guiada a eventos.
Apesar do foco no ser orientao a objetos, sua metodologia e o framework que o
acompanha serviram de base e inspirao para a metodologia descrita no captulo trs e
consequentemente, base e inspirao para o presente trabalho.
O livro-texto da metodologia apresenta 9 captulos que segundo sugesto da
metodologia poderia ser trabalhado em uma disciplina de 64 h/aula em 16 aulas de 4
h/aula cada, conforme modelo abaixo:
Semana 1: apresentao e captulo 1;
Semana 2: Captulo 2;
Semana 3: Captulo 3;
Semana 4 a 6: Captulo 4;
Semana 7: Captulo 5;
Semana 8: Captulo 6;
Semanas 9 a 11: Captulo 7;
Semanas 12 a 14: Captulo 8;
Semanas 15 e 16: Captulo 9;
Segue abaixo organizao dos captulos, exemplos e contedos apresentados.
'aptulo E5emplos de !rojetos +ese%volvidos !ri%cipais 'o%ceitos
abordados
2ap?tu0o 1
'omputadores
?enhum e!emplo trabalhado0
2ap?tu0o 2
Bari*veisR 1ipos
de +ados e
E5press0es
!e"ue%os e5emplos did*ticos demo%stra%do
os co%ceitosS
'ome%t*riosS
Bari*veisS
E%trada de +adosS
3ada de +adosS
E5press0esS
2ap?tu0o 3
'o%troles de
9lu5o por
coma%dos de
sele#$o
!e"ue%os e5emplos did*ticos demo%stra%do
os co%ceitosS
estruturas de tomada de
decis$o ifMelse e s:itc-.
2ap?tu0o '
MHtodos e
3olu#0es
!e"ue%os e5emplos did*ticos demo%stra%do
os co%ceitosS
MHtodosS
MHtodos Est*ticosS
3obrecara de mHtodosS
8oops.
2ap?tu0o *
+ados
compostos como
vetores
!e"ue%os e5emplos did*ticos demo%stra%do
os co%ceitosS
Betores u%idime%sio%aisS
Betores bidime%sio%aisS
2ap?tu0o .
<sa%do mais
objetos e classes
simples
Joo similar ao tradicio%al !o%S 'lassesS
3tri%sS
8eitura e rava#$o de
ar"uivosS
'lasses abstratas e
i%terfaces.
2ap?tu0o 7
'lassesR objetosR
-era%#a
'o%ti%ua#$o do joo similar ao tradicio%al
!o%S
'lasses e objetosS
Modificador staticS
E%capsulame%toS
Vera%#aS
'lasses abstratas.
2ap?tu0o 1
!rorama#$o
Gr*fica
Joo especfico dese%volvido para o livro e
co%ti%ua#$o do joo similar ao tradicio%al po%S
'o%ceitos de joos 2+S
2ap?tu0o @
!rorama#$o
uiada a eve%tos
Joo especfico dese%volvido para o livro. 'aptura de dados do
teclado e do mouse.
%abela 9' (onte3dos e e!mplos da metodologia de @ei#
4.1.3.1 .#9lise geral do :todo
A proposta muito abrangente, segundo Feij, pretende-se do captulo 1 ao 6
trabalhar com programao estruturada, no 7 e no 8 orientao a objetos e no captulo 9,
programao guiada a eventos.
Em funo at mesmo deste grande conjunto de paradigmas, o livro no oferece
um bom suporte para os conceitos de orientao a objetos, os exemplos so poucos,
muito limitados e as explicaes dos conceitos no acompanham boas referncias
visuais.
Em contrapartida, oferece um rico material sobre como unir conceitos de jogos em
duas dimenses com tcnicas de programao, tanto estruturada quanto orientada a
objetos.
Um grande mrito est no uso do framework para trabalhar classes abstratas e
interfaces, pois, para que o aluno possa criar uma fase, deve implementar uma interface e
para criar um objeto no jogo, deve estender uma classe abstrata que j fornece os
atributos de posicionamento de um objeto na tela.
9.1.9 (telios Rinogalos
Ao fim de 4 anos de avaliaes e modificaes, Xinogalos chegou a uma
metodologia que utiliza trs ambientes de programao: objectKarel (Satratzemi ), BlueJ e
Jcreator (um ambiente profissional de programao simplificado). O material didtico
utilizado baseado no material que acompanha o objectKarel e na metodologia de
Barnes com o BlueJ, descrita na seo 2.4.2.
O curso estruturado por Xinogalos possui 12 lies de 4 horas aula semanais, duas
tericas e duas em laboratrio. As aulas so divididas na seguinte estrutura:
<u0a Temas tra(a0Aados <m(iente
1 Ob#etos, classes, heranaN objetoR co%stru#$o e i%iciali7a#$o de um
objetoR me%sae%s2mHtodosR atributos e comportame%tos de um
objetoR -era%#aR superclasseR subclasseR -ierar"uia de -era%#aR
diarama de classe <M8
ob#ectGarel
2 Jerana em v+rios nveis, polimorfismo e sobrescrita. ob#ectGarel
3 1efinio de (lasseN camposR co%strutoresR mHtodos de acessoR
mHtodos modificadoresR estrutura de retor%oR parUmetrosR escopo de
vari*veisR estruturas co%dicio%ais.
DlueB
4 *nterao com ob#etoN abstra#$oR modulari7a#$oR objetos cria%do
objetosR mCltiplos co%strutoresR diarama de classeR diarama de
objetosR tipos primitivosR tipos de objetosR c-amadas de mHtodos
i%ter%os e e5ter%os.
DlueB
5 4todos est+ticosN mHtodos de i%stU%cia vs mHtodos de classeR o
mHtodo mai%R e5ecu#$o sem o )lueJR b@te codeR Java Birtual
Mac-i%e.
DlueB, B(reator
4R & Agrupando ob#etos em coleKesN 'ole#0es de tama%-o fle5vel
?/rra@8istAR cole#0es de tama%-o fi5o ?arra@sAR classes e%HricasR
iteradoresR loops ?:-ileR forR forMeac-A.
DlueB, B(reator
( Usando bibliotecas de classeN 'lasses padr$o do JavaR leitura de
docume%ta#$oR i%terface vs impleme%ta#$o de uma classeR e5plora%do
e usa%do classes ?Vas-MapR Fa%domR Vas-3etAR modificadores de
acesso ?publicR privateAR i%forma#0es esco%didasR vari*veis de classe
?est*ticasA.
DlueB, B(reator
, )ro#eto de (lassesN acoplame%toR coes$oR e%capsulame%toR duplica#$o
de c=dioR projeto diriido Q respo%sabilidadeR reuso de c=dio.
DlueB, B(reator
1. 4elhorando a estrutura com heranaN -ierar"uia de classesR
superclasseR subclasseR co%strutor da superclasseR subtCping$R
substitui#$oR autobo!ing$.
DlueB, B(reator
11 )olimorfismo, sobrescrita' tipos di%Umicos e est*ticosR busca
di%Umica de mHtodoR superR acesso proteido.
DlueB, B(reator
12 (lasses abstratas e *nterface. DlueB, B(reator
%abela <' (onte3dos e ambiente de programao na metodologia de Linogalos
4.1.4.1 O <so de abie#tes de prograa!"o
A escolha do ambiente de programao que ser utilizado difcil e importante.
Ambientes profissionais so inadequados para trabalhar aspectos introdutrios,
ambientes de micro-mundos como o objectKarel so interessantes para trabalhar
conceitos mas no uma linguagem especfica, j ambientes educacionais so
interessantes para transferir os conceitos para uma determinada linguagem, porm, sem
a transio para uma DE profissional os estudantes ficam condicionados s
caractersticas especficas das ferramentas educacionais.
A dinmica de 4 anos no curso apresentado mostrou que mais de uma ferramenta
necessria para que os diversos aspectos cognitivos possam ser trabalhados. Esta
dinmica gerou as seguintes diretrizes sobre o uso de ambientes de programao:
Fse m ambiente de microSmndo para ma introd!)o crta dos principais
aspectos de programa!)o orientada a ob+etos: o ambiente escolhido deve
suportar o ensino dos principais conceitos de OO sem preocupaes com a
sintaxe. O conceito de objeto deixa de ser abstrato pois agora os objetos podem
ser manipulados, os estudantes tambm ganham confiana na sua capacidade de
programao;
Fse m ambiente edcacional para apresentar os conceitos vistos no microS
mndo para a sa implementa!)o em 6ava: a transio para um ambiente
educacional mais suave do que para um ambiente profissional pois ambientes
especficos para o ensino eliminam a complexidade permitindo que os estuantes
possam se dedicar a sintaxe dos conceitos fundamentais. essencial que estes
ambientes tenham ferramentas de visualizao e manipulao direta de classes e
objetos e permitam a invocao dinmica de mtodos. O tempo com o um
ambiente educacional no deve se estender muito para evitar falsas percepes,
principalmente sobre os aspectos dinmicos da Orientao a Objetos.
Fse m ambiente profissional para preparSlos para o ftroE inevitvel que
esta transio acontea, a maior preocupao deve ser quando realiz-la. Neste
curso foi decidido realizar esta transio na quinta lio dando nfase para as
caractersticas destes ambientes que poderiam ajudar os estudantes como 1)
Viso das classes em rvore; 2) Navegao rpida dentro de uma classe; 3) auto-
completar de cdigo; 4) o destaque de sintaxe. Ao realizar esta transio os
estudantes se sentem mais confiantes com o seu conhecimento.
4.1.4.2 $iretri;es para o E#si#o das li!(es propostas
As lies so baseadas como j mencionado no livro-texto que acompanha o
BlueJ., seguindo suas principais diretrizes.
Concomitantemente, utilizada a abordagem "modelo primeiro de Bennedsen e
Caspersen (2004) conforme documentada na seo 4.1.5.
Abaixo, seguem as diretrizes relacionadas a cada lio trabalhada. As lies
utilizam projetos do livro-texto que acompanha o BlueJ.
9.1.9.1.1 .i!)o 1E Ob+etos* classes e $eran!a no ob+ectMarel
Na primeira lio, so apresentados os conceitos bsicos de classe, objeto e
mtodo. Os estudantes iniciam criando um novo objeto da classe "Robo com a ajuda da
interface Grfica (lustrao 16), depois, devem utilizar os mtodos do rob (como
"mover, "virar para a esquerda, etc) para realizar tarefas especficas como completar um
determinado percurso.
O programa vai sendo construdo a partir de botes onde o estudante seleciona os
mtodos que ir executar, criando uma sequencia que no objectKarel chamada de
tarefa (lustrao 17).
*lustrao &8' *nstanciao de um ob#eto no ob#ectGarel com a a#uda da interface gr+fica
Aps, podem executar o programa e observar qual o comportamento do rob para
cada mtodo e o que isso significa na linguagem dos robs (por exemplo, virar para a
esquerda significa mudar a frente do rob em 90 graus negativos.), estas informaes so
fornecidas na forma de texto no rodap do ambiente (lustrao 18).
Em uma segunda atividade, problemas mais complexos so apresentados de modo
que necessrio utilizar herana para a criao de uma nova classe com mtodos que
iro facilitar a realizao da tarefa.
Xinogalos ressalta que essencial durante o processo explicar que cada mtodo
muda o estado interno do objeto (mesmo que os alunos no possam ver as variveis de
instncia). Tambm importante utilizar exemplos que utilizem vrios objetos da mesma
*lustrao &9' (riao de uma tarefa a partir dos mtodos de um
robM
*lustrao &<' E!ecuo de um programa. N direita a visuali6ao do robM, N esquerda a lista de
tarefas e abai!o a descrio do que ocorre no interior do mtodo em e!ecuo.
classe para evitar que os estudantes considerem os dois conceitos como a mesma coisa.
9.1.9.1.1 .i!)o 1E Jeran!a em vrios n&veis* polimorfismo e sobrescrita.
A didtica se mantm a mesma e agora os problemas apresentados exigem a
construo de uma hierarquia de classes. Tambm so utilizados exemplos que
trabalhem a necessidade da sobrescrita de mtodos como por exemplo, robs mais
velozes que no mtodo "move, andam mais rpido que os robs utilizados nos exerccios
anteriores. O polimorfismo, tambm trabalhado com cuidado por se uma das principais
dificuldades observadas nos estudantes.
9.1.9.1.8 .i!)o 8E 7efini!)o de classe
A definio de uma classe apresentada aos alunos utilizando o exemplo de uma
mquina de vender bilhetes (TicketMachine no livro texto que acompanha o BlueJ). Os
estudantes criam instncias desta classe, chamam seus mtodos, observam a
implementao em Java da classe e por fim, tem a oportunidade de realizar pequenas
modificaes nela.
No primeiro ano do curso foram identificadas as dificuldades mais comuns
referentes ao ensino do paradigma de POO, importante que o instrutor esteja atento a
elas desde o incio do ensino para reforar o entendimento destes tpicos. Segue abaixo
as principais dificuldades encontradas:
A compreenso e uso de mltiplos construtores;
O uso do this de difcil compreenso e em geral os estudantes o evitam;
A inicializao dos campos no construtor;
Costumam declarar o tipo de retorno de mtodos "set;
Tentam acessar valores de campos privados diretamente, sem o uso de mtodos
get;
Outras dificuldades so atribudas mais especificamente ao uso dos recursos do
BlueJ, so elas:
5)o declara!)o do tipo das variveis qe armazenam os ob+etos. sso pode
ser trabalhado dando nfase na janela de instanciao de um objeto varivel
onde o objeto ser armazenado e o tipo desta varivel. O BlueJ j apresenta estas
informaes, porm, comumente passam despercebidas.
4$amada de m#todos. Frequentemente mtodos com retorno so chamados da
mesma maneira que mtodos void. No BlueJ, possvel chamar ambos os tipos de
mtodos da mesma forma, de modo qque o resultado de mtodos com retorno
frequentemente interpretado como "impresso do valor na tela;
Por fim, essencial verificar se os conceitos aprendidos no objectKarel foram
efetivamente transportados para o Java. sso pode ser feito solicitando que os estudantes
representem em Java os modelos dos robs criados nas ltimas duas lies.
9.1.9.1.9 .i!)o 9E 0ntera!)o entre ob+etos
Estudantes so apresentados aos conceitos de modularizao, abstrao e
interao entre objetos utilizando o exemplo de um relgio digital com duas classes, uma
representando um relgio digital e outra que representa um mostrador de dois nmeros. O
Relgio composto por dois mostradores, um para as horas e outro para os minutos.
As dificuldades observadas nesta etapa foram:
Os estudantes no tem certeza onde devem inicializar os campos;
No sabem como manipular este novo tipo;
Tem dificuldades com a notao de ponto.
Para estas dificuldades recomendado o uso de diagramas de objetos e atividades
onde os estudantes identifiquem chamadas de mtodo internas e externas;
9.1.9.1.; .i!ao ;E O m#todo main
nesta aula apresentado como executar cdigo Java sem o :lueJ. Uma introduo
sobre uso de mtodos estticos versus mtodos de instncia feita utilizando o :lueJ.
Aps, os estudantes criam seu prprio mtodo main no Jcreator para um projeto
que eles j tenham conhecimento como o TicketMachine.
Esta lio tambm aproveitada para falar sobre compilao, "byte code e
mquina virtual.
As principais dificuldades encontradas foram:
Uso de parmetros formais da chamado do construtor (Ex: neC 4lasse%3Gpe param'T );
O tipo das variveis dos objetos so esquecidos;
Esquecem argumentos em chamadas de mtodos;
Esquecem os parnteses em chamadas de mtodos sem argumentos;
Para lidar com estas questes sugerido:
Atividades que so de alguma forma "silenciadas pelo BlueJ como o tipo das
variveis que armazenam os objetos so demonstrados utilizando as caixas de
dilogo do BlueJ e seu paralelo em sintaxe Java;
Exemplos e tarefas so realizados em cima de projetos j conhecidos;
Um programa contendo erros comuns apresentado e os estudantes so
ensinados a reconhecer os erros e trat-los.
9.1.9.1.< .i!)o <E Agrpando ob+etos em m ArraG.ist
Uso de colees em programao comum e necessrio mesmo em programas de
baixa complexidade. Alguns autores j colocam o uso de ArrayList como prioridade sobre
Arrays por ser uma estrutura mais adequada para representar listas continuas.
Durante os quatro anos de curso os autores identificaram diversas dificuldades
envolvendo o uso de ArrayList`s e chegaram s seguintes concluses:
1. O uso dos diagramas de objetos so fundamentais desde o incio do projeto. Os
estudantes so estimulados a criar um diagrama de objetos para um dado
programa e simular operaes de remoo e incluso no diagrama de objetos.
2. So oferecidos exerccios para com cdigo incompleto para que os estudantes
preencham os espaos vazios com determinados comandos.
3. Aps, so construdos programas do zero.
9.1.9.1.= .i!)o =E Agrpando ob+etos em cole!"es %ArraG.ist vs ArraG'
O uso de Arrays apresentado e o mesmo projeto no qual foi trabalhado o uso de
ArrayList agora modificado para funcionar com Arrays.
9.1.9.1.> .i!)o >E Ftilizando bibliotecas de classe
Nesta aula os estudantes so apresentados documentao das classes Java,
com nfase nas classes String e HashMap. A aula tambm apresenta a estrutura de
pacotes.
9.1.9.1.@ .i!)o @E Pro+eto de 4lasses
O projeto de classes algo difcil de ser realizado e a simples exposio dos
principais conceitos tericos para uma soluo bem projetada no causa um grande
impacto no aprendizado. importante que os estudantes entendam atravs de uma
aplicao os problemas de um mau projeto de classes.
A maior dificuldade encontrada foi a limitao do tempo que impossibilita o
desenvolvimento de uma soluo completa, na qual, o entendimento dos principais
conceitos de um bom projeto de classes seria trabalhado.
9.1.9.1.1A .i!)o 1AE ,el$orando a estrtra com Jeran!a
O projeto desta lio uma biblioteca multimdia de CD's e DVD`s. A primeira
verso do projeto no usa herana, de modo que muito cdigo acaba sendo duplicado.
Quando os alunos so perguntados sobre como resolver o problema, eles se
recordam da apresentao feita com o objectKarel e facilmente compreendem o uso de
herana.
A maior dificuldade percebida a chamada do construtor da superclasse atravs da
subclasse. Uma sugesto utilizar o debugger para ver a execuo do cdigo passo a
passo e os campos sendo preenchidos.
9.1.9.1.11 .i!)o 11E Polimorfismo e (obrescrita
Atravs de uma continuao do exemplo visto anteriormente, realizado um
exemplo onde cada subclasse sobrescreve o comportamento de um mtodo na classe
pai.
9.1.9.1.11 .i!)o 11E 4lasses abstratas e 0nterface
Nesta aula o uso de classes abstratas e interface so utilizados para expandir a
simulao de um ambiente com raposas e coelhos para conter diversos tipos de animais.
Percebeu-se que no difcil para os estudantes compreenderem o conceito e o
implementarem, porm, demonstram grande dificuldade em perceber quando uma classe
deve ser declarada como concreta, abstrata ou interface.
4.1.4.3 .#9lise Geral do :todo
As duas principais concluses de Xinogalos so 1) a necessidade de avaliao
continua dos cursos de modo a validar as pesquisas e dar continuidade aos processos de
melhoria e que 2) mais de uma ferramenta necessrio para suportar as diferentes
necessidades cognitivas no ensino de programao.
O artigo tambm clarifica como integrar alguns dos diferentes tipos de ambientes
de ensino de programao desenvolvidos at o momento de modo a garantir um ensino
eficaz ao mesmo tempo em que prepara os estudantes para o mercado.
muito rica a descrio detalhada de todas as aulas realizadas e das principais
dificuldades em cada tema, de modo que o instrutor, sabendo de antemo as dificuldades
mais comuns, pode atac-las logo no incio das atividades.
A partir do material apresentado no foi possvel identificar pontos fracos na
metodologia proposta por Xinogalos, na medida em que copia os pontos fortes da
metodologia de Barnes e adiciona ela o aspecto de modelagem e uso de ferramentas
profissionais de programao.
9.1.; ,ic$ael 4aspersen
Caspersen prope um mtodo baseado muito no fornecimento aos estudantes do
modelo conceitual, antes de iniciar a codificao, bem como em um processo sistemtico
de transformao de um modelo para cdigo-fonte.
Segundo Caspersem, modelagem conceitual a definio de caractersticas de
orientao a objetos e prov uma perspectiva unificada e uma aproximao pedaggica
com foco sobre o aspecto de modelagem da orientao a objetos.
Esta viso contempla um dos papis da linguagens de programao segundo
Knudsen & Madsen (1988, citado por Caspersen) que justamente o uso da linguagem
de programao para expressar conceitos e fenmenos.
Para que seja possvel a sistematizao do processo de desenvolvimento, foram
identificadas tcnicas para a criao sistemtica de programas orientado a objetos em 4
diferentes nveis de abstrao:
Domnio do Problema U modelagem conceital: Criar um diagrama de classes
UML do domnio do problema, focando nas classes e nas relaes entre as
classes;
Domnio do problema U modelagem dinVmica: Criar um diagrama de estados
UML que captura a dinmica do comportamento;
Modelagem conceitual e modelagem dinmica U modelagem da especifica!)o:
Propriedades especficas e distribuio das responsabilidades entre as classes;
Modelagem da especificao implementa!)o:
0mplementa!)o das estrtras entre as classes: cria um esqueleto para o
programa utilizando padres de cdigo para as diferentes relaes entre as
classes;
0mplementa!)o da estrtra interna das classes: Cria estruturas de classe
descrevendo os elementos internos que tem de ser estabelecidos antes e
depois de cada chamada de mtodo;
0mplementa!)o dos m#todos: Uso padres de algoritmo para os problemas
tradicionais de algoritmo por exemplo varredura e busca.
A modelagem do software pode ser vista em diferentes nveis de detalhes
caracterizados por diferentes degraus de formalidade:
um um modelo conceitual informal descrevendo os conceitos chave do domnio do
problema e suas relaes;
um modelo de classes mais detalhado dando uma viso mais detalhada da
soluo;
e a implementao em uma linguagem orientada a objetos.
Este foco na perspectiva da modelagem conceitual, enfatiza que orientao a
objetos no meramente um conjunto de solues e tecnologias, mas uma forma de
entender, descrever e comunicar sobre o domnio de um problema e uma implementao
concreta deste domnio.
4.1.2.1 .s etapas da etodologias
Na primeira metade do curso, de forma grosseira, o foco paralelamente sobre o
entendimento e uso de um modelo conceitual como um "blue print para programao
real. Na segunda metade do curso o foco primrio na qualidade interna do software.
Codificar e entender o modelo o conceitual so feitos de mos dadas, de forma que
o modelo sempre vem primeiro, trazendo o cdigo-fonte. A ntroduo s diferentes
construes da linguagem so subordinadas s necessidades da implementao de um
dado conceito do modelo conceitual.
*lustrao &=' (riao sistem+tica de um programa orientado a ob#etos
4.1.2.2 O %rae&or' co#ceitual
So trabalhados com nfase trs modelos conceituais bsicos: 1) associao, 2)
composio e 3) especializao. O ponto de partida uma classe, propriedades desta
classe e o relacionamento entre a classe e os objetos criados a partir dela. Uma das
propriedades de uma classe pode ser uma associao com outra classe;
consequentemente o prximo tpico associao. sto correlacionado com o fato que
uma associao (referncia) o tipo mais comum de estrutura entre classes (objetos).
Composio um caso especial de associao, sendo trabalhado logo em seguida
A ltima estrutura a ser coberta especializao. Especializao faz a ponte com a
segunda metade do curso onde o foco a qualidade do projeto onde especializao
frequentemente utilizada como um modo de obter projetos mais flexveis.
4.1.2.3 O i#cio
Os estudantes iniciam por aprenderem os conceitos bsicos de classes e objetos
bem como noes bsicas de modelagem atravs de um diagrama de classes
semelhante ao diagrama da UML. Depois de terem usado classes e objetos, ns nos
voltamos para uma viso interna e comeamos a escrever classes; ns fazemos isso
introduzindo o primeiro padro de cdigo: mplementao de uma classe.
4.1.2.4 Padr(es de +)digo
Um padro de cdigo uma descrio geral da implementao de um elemento do
framework conceitual.
Atravs de um nmero progressivo de exemplos ns mostramos que uma
associao uma propriedade de uma classe, uma classe tem mais que uma associao
e uma relao dinmica.
O ensino inicia com associaes recursivas de cardinalidade 1. Para poder
implementar estas associaes, os estudantes precisam aprender sobre referncias e o
valor null, bem como a chamada de mtodos entre diferentes objetos.
A partir de diversos exemplos (1) e dos conceitos trabalhados construda uma
abstrao (2) que corresponde ao modelo conceitual trabalhado. Para esta abstrao,
apresentado um padro de codificao (3) que permite transform-la em cdigo fonte
funcional.
Este mesmo processo utilizado para composio e especializao, dando
confiana e instrumentos para que os estudantes passem a identificar e implementar os
mesmos conceitos em seus projetos
4.1.2.2 Outros elee#tos da etodologia
Ns usamos BlueJ como ferramenta de programao.
O foco em um modo sistemtico de programar. sto implica em trs coisas 2)
alguns exemplos so exibidos para os estudantes; 2) uso explcito da UML e 3) um foco
no processo de programao.
Uma vez que ns percebemos a importncia do foco no processo de programao
e no apenas no produto final, ns passamos a usar muita codificao ao vivo. O
propsito disto mostrar aos estudantes como um profissional de programao ataca os
problemas.
4.1.2.3 .#9lise Geral da Metodologia
As duas grades contribuies de Caspersen so o processo sistemtico de
desenvolvimento de software e o framework conceitual e suas respectivas abstraes. Em
contrapartida, no possvel avaliar outros aspectos da metodologia apenas com o
material consultado.
4.3 $iretri;es para o E#si#o de OO
A partir dos trabalhos acima, foram identificadas e definidas 10 diretrizes base para
guiar o presente trabalho, so elas:
9.8.1 Princ&pios baseados na prtica com o Ble6
A metodologia deve seguir todos os princpios e diretrizes que servem como base
para a metodologia de Barnes que so:
Abordagem iterativa;
Abordagem baseada em projetos;
Sequencia dos conceitos em vez de construes de linguagem;
Sem cobertura completa da linguagem.
Alm destes quatro princpios, so norteadoras tambm as 8 diretrizes
apresentadas por KLLNG e ROSENBERG, documentadas na seo 4.1.2.1
9.8.1 /epresenta!"es visais para todas as estrtras e conceitos
trabal$ados
Todos os exemplos desenvolvidos e apresentados aos estudantes devem vir
acompanhados de suas respectivas visualizaes. Estas visualizaes devem utilizar a
UML como base, com nfase para o diagrama de classes e diagrama de objetos.
Estruturas de controle e repetio podem se valar de diagramas de atividades e
estruturas que no possuam uma representao adequada na UML, como o caso dos
arrays, pode ser utilizada uma outra representao especfica, como por exemplo, a
sugerida por Boratti e documentada na seo 4.2.1.2.5.
9.8.8 Opera!"es de abstra!)o e frameCorD conceital
Sempre que um novo conceito de relao entre dois ou mais objetos deve ser
acompanhado de sua respectiva operao de abstrao segundo Boratti e do modelo
conceitual conforme Caspersen. Estas representaes devem ser utilizadas com
frequncia de modo que os estudantes aprendam a enxerg-las nos problemas com
facilidade.
9.8.9 Ambiente edcacional W Ambiente profissional
At a metade do curso, os estudantes devem ser guiados do ambiente educacional
BlueJ para um ambiente de desenvolvimento profissional de preferncia do instrutor.
necessrio entretanto, que pelo menos uma aula seja dedicada exclusivamente ao uso do
novo ambiente, com exerccios e prticas que demonstrem as vantagens do novo
ambiente.
9.8.; Processo sistemtico de desenvolvimento
Desde as primeiras aulas os estudantes devem ser guiados sobre as etapas do
processo de desenvolvimento de software, atravs de mtodos sistemticos de
desenvolvimento e tambm "live coding, que corresponde ao professor resolver
problemas e tarefas de codificao ao vivo diante dos estudantes (Caspersen).
9.8.< A partir do zero.
To logo os estudantes adquiram confiana com um determinado conjunto de
recursos e conceitos, estes devem ser colocados em situaes de resoluo de
problemas a partir de uma tela vazia ou de um projeto em branco. nclusive o processo de
buscar classes de bibliotecas utilizadas em outros projetos importante para o
desenvolvimento profissional.
9.8.= 3odos os recrsos sados devem ser explicados
Todos os recursos utilizados pelos alunos devem ser previamente trabalhados,
mesmo que de forma breve. Desde modo, importante que sejam evitados o uso de
mtodos e/ou atributos estticos logo no incio do projeto sem uma devida explicao.
Esse tipo de abordagem pode causar confuso sobre a possibilidade de chamar um
mtodo diretamente da classe ou do objeto.
9.8.> Estilo de 4digoSfonte
Estudantes geralmente no se preocupam com nomes de classes e variveis, bem
como edentao. importante que desde o incio o estilo do cdigo seja padronizado pois
conforme observaes do autor, os prprios estudantes acabam por se perderem em
cdigos mal formatados e variveis e classes sem diferenciao de maisculas e
minsculas.
9.8.@ .ista abrangente de exerc&cios e desafios
Cada aula deve vir acompanhada de uma lista abrangente de atividades em nveis
crescentes de dificuldade para estimular s estudantes e permitir a aplicao dos conceitos
vistos em contextos diferentes.
9.8.1A 3odos os exemplos devem envolver +ogos
Todos os exemplos desta metodologia devem envolver jogos, de preferncia, com
regras amplamente conhecidas, de modo que no seja necessrio investir tempo para
explicar regras de um jogo ao invs de programao orientada a objetos. sto tambm
objetiva criar um acervo de atividades cujos estudantes geralmente se motivam a
desenvolver.
; 2rameCorD 6ava para 6ogos 17
Esta seo apresentar os conceitos bsicos de construo de um framework e o
desenvolvimento do framework utilizado no tutorial.
2.1 .quisi!"o do +o#-ecie#to de $o#io
Para realizar o estudo do domnio, sero utilizados os oito jogos produzidos na
primeira verso da disciplina conforme apresentado anteriormente. Os temas dos jogos
foram escolhidos livremente e classes foram desenvolvidas pelo professor para auxiliar o
desenvolvimento.
A primeira verso da disciplina j utilizava um framework base, de modo que muito
se aprendeu sobre o domnio e as necessidades de jogos 2D a partir do desenvolvimento
dos exemplos e das necessidades dos estudantes.
2.2 Modelage do %rae&or'=
Para a definio do framework foi utilizado o processo conforme demonstrado por
Silva (2000).
;.1.1 Beneraliza!)o
As principais generalidades dos projetos pesquisados foram identificadas e
agrupadas em pacotes lgicos. Algumas das generalidades apresentadas eram
solicitaes dos estudantes que no puderam ser atendidas na primeira verso do curso:
Pacote Entrada:
Uso de informaes de teclas pressionadas do teclado;
Uso de informaes do mouse;
Captao de informaes do usurio com campos de texto como nome,
nmeros, etc.
Pacote (a&da:
Desenho de formas geomtricas e imagens em janelas;
Criao de animaes a partir de uma sequencia de imagens;
Execuo e pausa de sons;
Pacote ,otor:
Criao de cenrios complexos;
Coliso com o cenrio;
Coliso com outros objetos;
Troca de fases;
Uso dos mesmos objetos em fases distintas;
Comunicao entre objetos de uma mesma fase;
Mapa de navegao de fases;
Menus de opes;
Pacote Fsica:
Acelerao, gravidade, fora e vetores.
;.1.1 2lexibiliza!)o
De forma geral, existem os seguintes pontos de flexibilizao nos jogos
pesquisados.
2ases: Os jogos apresentaram fases onde jogadores realizam uma luta, saltam
sobre objetos, atiram uns nos outros baseado em turnos e outros. Na verso
anterior do framework, o conceito de fase tambm era utilizado para mapas de
navegao em um cenrio e menus de opes.
Ob+etos do 6ogo: Objetos de um jogo so todos os elementos que exercem
influncia direta sobre o jogo como inimigos, o prprio jogador, obstculos na tela,
itens para recuperao de vida, fora ou energia, pontos de chegada, tiros, golpes
especiais, etc.
4enrios: Muitos cenrios apresentavam necessidades especificas como exibir ou
esconder determinados blocos como por exemplo para liberar uma passagem
secreta, plataformas mveis e outros.
;.1.8 ,odelagem das 4lasses
Apresentar aqui propostas de diagramas de classes para as questes de
generalizao e flexibilizao acima aplicando metapadres, padres de projeto e
princpios de Orientao a Objetos.
%(e!)o ainda incompleta* a ser desenvolvida aps o relatrio 1'
2.3>alida!"o
%(e!)o ainda incompleta* a ser desenvolvida aps o relatrio 1'
2.4 $ocue#ta!"o
%(e!)o ainda incompleta* a ser desenvolvida aps o relatrio 1'
< ,etodologia de Ensino
%(e!)o ainda incompleta* a ser desenvolvida aps o relatrio 1. (egem
abaixo apenas algmas ideias ainda imatras'
A Metodologia proposta baseada em projetos. Os estudantes so guiados para
nveis cada vez mais complexos de conceitos OO em trs mdulos distintos, produzindo
ao final de cada mdulo um produto adequado ao nvel de complexidade trabalhado:
1. Ob+etos Primeiro: Na primeira etapa, realizada no ambiente BlueJ, os estudantes
devem criar um objeto da classe Jogo2D e executar os mtodos deste objeto. Em
um segundo momento, os estudantes criam diversas instncias de uma mesma
classe pertencente a um projeto previamente desenvolvido de modo a
compreender o conceito de instncia, de variveis e mtodos de instncia. Ao final,
os estudantes criam a sua primeira classe que ir representar um jogo simples.
2. ,iniSgame: Nesta etapa, os estudantes desenvolvem seu primeiro jogo ainda
utilizando o BlueJ, construindo seus prprios objetos de jogo, aprendendo a usar
os mtodos que envolvem receber informaes do teclado e a desenhar imagens e
animaes. Esta seo dever utilizar o livro de receitas do framework. Este
projeto deve envolver pelo menos um classe para o jogo e mais duas classes para
representar objetos do jogo;
3. 6ogo17: Desenvolvimento de um jogo 2D com mais de uma fase e uso de
recursos avanados de orientao a objetos como polimorfismo, herana e classes
interface. Esta etapa ir usar a documentao detalhada do framework e deve ser
desenvolvida em um ambiente profissional de programao. Este projeto deve
possuir no menos que trs fases e 5 objetos de jogo diferentes.
Segue detalhamento de cada mdulo da metodologia.
3.1 M)dulo 1= Objetos Prieiro
Classe representando um jogo no BlueJ
2ar&a Aor6ria terica 3 -oras2aulas
2ar&a Aor6ria pr6tica 4 -oras2aula
#roduto <ma 'lasse Feprese%ta%do um Joo
=o"os 2onceitos $$ Classe; mtodo; varivel de instncia / atributo; objetos /
instncias; parmetros; construtores; abstrao;
<m(iente de #ro&ramao )lueJ
3.2 M)dulo 2= Mi#i?Gae
Tutorial apresentando um jogo bsico.
2ar&a Aor6ria terica K -oras2aulas
2ar&a Aor6ria pr6tica 2K -oras2aula
#roduto <m joo co%te%do pelo me%os 3 classes
=o"os 2onceitos $$ Encapsulamento; composio; coeso; design de
responsabilidade.
<m(iente de #ro&ramao )lueJ

3.3 M)dulo 3= Jogo 2$
Tutorial apresentando um jogo mais avanado com recursos como polimorfismo...
2ar&a Aor6ria terica Y -oras2aulas
2ar&a Aor6ria pr6tica 2Y -oras2aula
#roduto <m Joo com pelo me%os 3 fases e 5 classes represe%ta%do objetos
do joo.
2onceitos $$ Herana; composio; classes abstratas; classes interface;
polimorfismo / variveis polimrficas; mtodos sobrescritos;
modificador static; tratamento exceo;
<m(iente de #ro&ramao /mbie%te profissio%al
3.4 .valia!"o da Metodologia
O ideal que a metodologia seja avaliada a partir de sua aplicao em um
semestre de programao orientada a objetos em cursos introdutrio. Em funo do
tempo disponvel para o TCC no foi possvel validar a metodologia at o momento,
sendo esta atividade, uma recomendao para trabalhos futuros.
= 4oncls)o
Concluso...
6.1 4rabal-os %uturos
Ensino de Biologia, Qumica, Fsica, etc atravs da programao com o auxlio de
frameworks...
> Bibliografia
8.1 @ivros
Feij, Bruno e Clua, Esteban. 0ntrod!)o X ciIncia da compta!)o com +ogos: aprendendo a programar
com entretenimento. Rio de Janeiro. Elsevier, 2010.
BARNES, David J.; KOLLNG, Michael. Programa!)o Orientada a Ob+etos com 6ava: Uma introduo
prtica usando o BlueJ. So Paulo: Pearson Prentice Hall, 2004. 368 pg.
KLLNG, Michael. 0ntrodction to Programming Cit$ BreenfootE Object-Oriented Programming in Java
With Games and Simulations. Upper Saddle River, New Jersey: Prentice Hall, 2010. 190 p.
BORATT, saias Camilo. Programa!)o Orientada a Ob+etos com 6ava. Florianpolis: Visual Books, 2007.
308 p.
8.2 .rtigos e $ocue#tos acadAicos
KAY, Alan. 7r. Alan MaG on t$e ,eaning of OOb+ectSOriented ProgrammingP. Email de 23 de julho de
2003. Disponvel em: <http://www.purl.org/stefan_ram/pub/doc_kay_oop_en>. Acesso em: 24 jun. 2012.
PROULX, Viera K.(2010). ,sic in 0ntrodctorG Ob+ect Oriented ProgrammingE Music and sound library
for a novice Java programmer.. Constructionism 2010. Disponvel em:
<http://www.ccs.neu.edu/home/vkp/Papers/Music-Constructionism2010.pdf>. Acesso em: 20 jun. 2012.
PROULX, Viera K. (2009).3$e PedagogG of Program 7esignE Design Recipe throughout BOOTSTRAP,
TeachScheme!, ReachJava.. DDNFO 2009. Disponvel em:
<http://www.ccs.neu.edu/home/vkp/Papers/PPD-didinfo2009.pdf>. Acesso em: 20 jun. 2012.
PROULX, Viera K.(2003). Ob+ects 2rom t$e Beginning S Lit$ BF0sE nteractive GU-based labs for
introducing objects first.. TiCSE 2003. Disponvel em: <http://www.ccs.neu.edu/home/vkp/Papers/GUs-
iticse2002.pdf>. Acesso em: 20 jun. 2012.
CASPERSEN, M.E. e Christensen, H.B. (2008): 4(1E Betting (tartedE Reflections on the Teaching of
Programming, LNCS 4821, Springer-Verlag, 2008, pp. 130-141.
BENNEDSEN, J.B. e Caspersen, M.E. (2008): ,odelS7riven Programming: Reflections on the Teaching of
Programming, LNCS 4821, Springer-Verlag, 2008, pp. 116-129.
KLLNG, Michael e ROSENBERG, John. 2001. Bidelines for teac$ing ob+ect orientation Cit$ 6ava. n
Proceedings of the 6th annual conference on nnovation and technology in computer science education
(TiCSE '01). ACM, New York, NY, USA, 33-36. DO=10.1145/377435.377461
http://doi.acm.org/10.1145/377435.377461
XNOGALOS, Stelios (2009). Bidelines for 7esigning and 3eac$ing an Effective Ob+ectSOriented
7esign and Programming 4orse, Advanced Learning, Raquel Hijn-Neira (Ed.), SBN: 978-953-307-010-0,
nTech, Disponvel em: http://www.intechopen.com/books/advanced-learning/guidelines-for-designing-and-
teaching-an-effective-object-oriented-design-and-programming-course. Acesso em 20 de junho de 2012.
M. Satratzemi, and S. Xinogalos, and V. Dagdidelis. An environment for teaching object-
oriented programming: ObjectKarel. Proceedings of The 3rd IEEE International conference on
Adanced !earning Technologies "I#A!T $3), 3%&''3%3.
THE PEDAGOGCAL PATTERNS PROJECT (Org.).Pedagogical Patterns. Disponvel em:
<http://www.pedagogicalpatterns.org/>. Acesso em: 24 jun. 2012.
Clark, David; MacNish, Cara and Royle, Gordon F.. 6ava as a teac$ing langage S opportnities* pitfalls
and soltions, in Proceedings of the Third Autralasian Conference on Computer Science Education, ACM,
Brisbane, Australia, July 1998.
8.3 Bibliografia para c)digo?fo#te e ateriais did9ticos
dese#volvidos pelo autor
4digoSfonte
CAMNHA, Kalu. Exemplo 1: movimentando uma bola. Disponvel em:
<https://github.com/kaleucaminha/javaPlay2Examples/tree/master/src/exemplo1>. Acesso em: 24 jun. 2012.
CAMNHA, Kalu. Exemplo 1: um primeiro jogo com o framework javaPlay. Disponvel em:
<https://github.com/kaleucaminha/javaPlay2Examples/tree/master/src/exemplo2>. Acesso em: 24 jun. 2012.
CAMNHA, Kalu. Exemplo 8: jogo que acompanha o roteiro de 10 passos sobre o javaPlay. Disponvel em:
<https://github.com/kaleucaminha/javaPlay2Examples/tree/master/src/exemplo3>. Acesso em: 24 jun. 2012.
CAMNHA, Kalu. Berra Espacial. Disponvel em: <https://github.com/kaleucaminha/Guerra-Espacial>.
Acesso em: 24 jun. 2012.
CAMNHA, Kalu. Exemplo /G: Etapa 1. Disponvel em: <https://github.com/kaleucaminha/Ryu-Versus-
Vegeta/tree/master/src/ryuversusvegeta_2>. Acesso em: 24 jun. 2012.
CAMNHA, Kalu. Exemplo /G 1: Etapa 2. Disponvel em: <https://github.com/kaleucaminha/Ryu-Versus-
Vegeta/tree/master/src/ryuversusvegeta_3>. Acesso em: 24 jun. 2012.
CAMNHA, Kalu. Exemplo /G vs Hegeta. Disponvel em: <https://github.com/kaleucaminha/Ryu-Versus-
Vegeta/tree/master/src/ryuversusvegeta_final>. Acesso em: 24 jun. 2012.
,aterial didtico
CAMNHA, Kalu. 6avaPlaG em 1A passosE Tutorial para desenvolvimento de um jogo simples utilizando o
framework javaPlay. Disponvel em: <http://www.slideshare.net/kaleu/tutorial-1-javaplay-em-10-passos>.
Acesso em: 24 jun. 2012.
CAMNHA, Kalu. /evis)o 6ogos 17E Orientao a Objetos com Jogos 2D. Disponvel em:
<http://www.slideshare.net/kaleu/conceitos-de-oo-aplicados-ao-desenvolvimento-de-jogos-2d>. Acesso em:
24 jun. 2012.
Provas
CAMNHA, Kalu. Prova 1a. Disponvel em: <http://www.slideshare.net/kaleu/prova-2a>. Acesso em: 24 jun.
2012.
CAMNHA, Kalu. Prova 1b. Disponvel em: <http://www.slideshare.net/kaleu/prova-2b-2012>. Acesso em:
24 jun. 2012.
CAMNHA, Kalu. Prova 8b. Disponvel em: <http://www.slideshare.net/kaleu/prova-3a-2012>. Acesso em:
24 jun. 2012.
CAMNHA, Kalu. Prova 8b. Disponvel em: <http://www.slideshare.net/kaleu/prova-3b>. Acesso em: 24 jun.
2012.
CAMNHA, Kalu. Prova 9a. Disponvel em: <http://www.slideshare.net/kaleu/prova-4>. Acesso em: 24 jun.
2012.
CAMNHA, Kalu. Prova 9b. Disponvel em: <http://www.slideshare.net/kaleu/prova-4b>. Acesso em: 24 jun.
2012.
CAMNHA, Kalu. Prova de /evis)o. Disponvel em: <http://www.slideshare.net/kaleu/prova-de-reviso>.
Acesso em: 24 jun. 2012.
8.4 Bibliografia +o#sultada
Esta seo corresponde ao conjunto de materiais que no compe o ncleo do
trabalho, mas que contriburam, de forma menor, para a realizao deste trabalho.
6ava
ALVES, William Pereira. 6ava 1E Programao Multiplataforma. So Paulo: rica, 2006. 286 p.
MECENAS, van. 6ava 1 S 2ndamentos* (Cing e 67B4E Programao Multiplataforma. 2. ed. Rio de
Janeiro: rica, 2006. 306 p.
DETEL, Harvey; DETEL, Paul. 6ava 4omo Programar. 6. ed. So Paulo: Pearson Prentice Hall, 2005.
1100 p.
HORSTMANN, Cay S.; L., Gary Cornell. 4ore 6avaE Holme 0 K 2ndamentos. 7. ed. Rio de Janeiro: Alta
Books, 2005. 568 p.
HORSTMANN, Cay S.; L., Gary Cornell. 4ore 6avaE Holme 00 S /ecrsos Avan!ados. So Paulo:
Pearson Prentice Hall, 2003. 823 p.
?alidade de (oftCare
MARTN, Robert C.. 4digo .impoE Habilidades Prticas do Agile Software. So Paulo: Alta Books, 2009.
440 p.
KOSCANSK, Andr; SOARES, Michel Dos Santos. ?alidade de (oftCareE Aprenda as metodologias e
tcnicas mais modernas para o desenvolvimento de software. 2. ed. So Paulo: Novatec, 2007. 394 p.

Você também pode gostar