Buscar

Análise do Ensino de Programação Orientada a Objeto

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 141 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 141 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 141 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Dissertação de Mestrado Profissional apresentada por Elias Vidal Bezerra Junior à 
Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade 
Federal de Pernambuco, sob o título, Análise da prática docente no processo de 
ensino de programação orientada a objeto mediado por meio de rede social 
educativa , orientada pelo Professor Alex Sandro Gomes e aprovada pela Banca 
Examinadora formada pelos professores: 
 
 
 
__________________________________________ 
Prof. Márcio Lopes Cornélio 
Centro de Informática / UFPE 
 
 
 
______________________________________________ 
Profª. Ayla Débora Dantas de Souza Rebouças 
Universidade Federal da Paraíba 
 
 
 
_______________________________________________ 
Prof. Alex Sandro Gomes 
Centro de Informática / UFPE 
 
 
 
 
 
 
 
 
 
 
 
Visto e permitida a impressão. 
Recife, 14 de junho de 2013. 
 
___________________________________________________ 
Profª. EDNA NATIVIDADE DA SILVA BARROS 
Coordenadora da Pós-Graduação em Ciência da Computação do 
Centro de Informática da Universidade Federal de Pernambuco. 
 
 
 
 
Agradeço, primeiramente, a Deus pela vida, pela saúde, pelas oportunidades e 
proteção durante toda a caminhada do início até o fim do curso. 
Aos meus pais Elias Vidal Bezerra e Vanda Silveira Vidal, e meus irmãos por todo 
apoio e incentivo ao longo dessa caminhada. 
Ao Instituto Federal de Educação, Ciência e Tecnologia - IFTO campus Porto 
Nacional pelo apoio e incentivo na realização desse curso. 
Ao Instituto Federal de Educação, Ciência e Tecnologia IFPE campus Recife, 
por fornecer o seu alojamento para hospedagem durante as aulas do curso. 
Agradeço ao meu orientador e amigo Prof. Dr. Alex Sandro Gomes, por toda a 
paciência, ensinamentos, críticas e aprendizado durante toda essa caminhada. 
Agradeço a minha co-orientadora e amiga Profa. Dra. Flavia Veloso Costa Souza, 
por todos os apontamentos, correções e sugestões durante esse trabalho. 
Agradeço aos colegas do grupo de pesquisa do CCTE da UFPE, pela 
colaboração e sugestões durante esse trabalho. 
A professora Rosinete Libanio, minha colega de trabalho, de mestrado e de 
alojamento no IFPE e pela companhia durante as aulas e as longas e cansativas 
viagens até a UFPE em Recife. 
Ao colega Wesley Vieira por diversas vezes acordou de madrugada para me 
transportar ao aeroporto de Palmas. 
A Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - Capes, pelo 
incentivo proporcionado para realização deste mestrado. 
 
 
Ao Programa Institucional de Bolsa de Iniciação à Docência - PIBID, pelo 
incentivo proporcionado para realização deste mestrado. 
Agradeço a todos meus amigos que torceram por mim, para que eu concluísse 
com êxito esse desafio. 
A todos que participaram direta e indiretamente da realização deste trabalho. 
 
 
Só sei que nada sei 
Sócrates 
Este trabalho tem como objetivo analisar a efetividade do ensino de 
Programação Orientada a Objeto (POO) mediado por plataforma social educacional 
para propor melhorias dos estilos de interação de colaboração e percepção visando 
aprimorar a experiência dos usuários nessas atividades. Como método corresponde às 
etapas de progresso que consistem na fase exploratória, a delimitação do estudo, a 
preparação das atividades, a análise sistemática e a elaboração do relatório. Para 
amostragem proposital será estudantes da disciplina de Programação Orientada a 
Objeto do curso presencial de Licenciatura em Computação. 
 
Os resultados do estudo mostram que a combinação da ferramenta colaborativa 
para o ensino de programação orientada a objeto é apresentado como uma nova 
metodologia de ensino para que o professor reflita sua prática de ensino, passando de 
transmissor do conteúdo para mediador do processo de obtenção do conhecimento. 
Estes resultados permitiram propor novos requisitos funcionais que venham a melhorar 
a Rede Social Educacional REDU, que favoreça uma educação mais colaborativa por 
meio da mediação dos docentes e estudantes na execução de suas atividades de 
ensino. 
 
 programação orientada a objeto; aprendizagem colaborativa; rede social 
educacional. 
 
 
This dissertation aims at analyzing the effectiveness of teaching Object Oriented 
Programming (OOP) mediated by social educational platform to propose improvements 
of styles of interaction and collaboration aiming to improve the perception of the user 
experience on these activities. The method corresponds to the stages of progress 
involving the exploratory phase, the delimitation of the study, preparation activities, 
systematic analysis and reporting. Purposive sampling will be students of the discipline 
of Object Oriented Programming Course attendance Degree in Computing. 
The results of the study show that the combination of collaborative tool for 
teaching object-oriented programming is presented as a new teaching methodology for 
the teacher to reflect their teaching practice, from the content to the transmitter 
mediating the process of obtaining knowledge . These results allowed to propose new 
functional requirements that will improve the Educational Social Network - REDU, to 
promote a more collaborative education through the mediation of teachers and students 
in carrying out their teaching activities. 
object-oriented programming, collaborative learning, educational social 
network.
 
 
 
 
 
 
 
 
 
 
 
 
POO Programação Orientada a Objeto 
REDU Rede Social Educacional 
SCA Sistemas Companheiro de Aprendizagem 
IDE Interfase de Desenvolvimento 
iPOO Introdução a Programação Orientada a Objetos 
EAD Educação a Distância 
LCM Learning Cycle Mode 
LMS Learning Management System 
SGA Sistema de Gestão do Aprendizado 
UA Universidade Aberta 
OOAD object-Oriented Analysis and Design 
TIC Tecnologia da Informação e comunicação 
PBL Project-based Learning 
CSAC Computer Supported Aprendizagem Colaborativa 
STI Sistema de Tutoria Inteligente 
IFTO Instituto Federal de Educação, Ciência e Tecnologia do Tocantins 
13 
 
 
1. Introdução 
 
Os cursos de Computação são constituídos de conhecimentos diversos e 
interligados, que buscam desenvolver diferentes competências e habilidades 
necessárias para exercício da profissão (JUNIOR, 2010). De acordo com a Sociedade 
Brasileira de Computação (2013) os egressos dos cursos de Licenciatura em Ciência 
da Computação têm a opção de escolher entre o ensino de computação nos níveis 
básico, técnico ou tecnológico; a formação de docentes para o uso de tecnologias na 
educação; ou o desenvolvimento de tecnologias educacionais. Dessa forma o curso 
tem como objetivo desenvolver a construção de conhecimentos relacionados à 
computação interligados aos conhecimentos da área de educação, buscando 
desenvolver nos egressos competências tecnológicas e pedagógicas para o ensino de 
computação e/ou desenvolvimento de tecnologias educacionais. 
 
Dentro da matriz curricular do curso de Licenciatura em Computação a 
Programação Orientada a Objeto (POO) é uma disciplina que busca desenvolver nos 
estudantes habilidades específicas para solucionar problemas de origem complexa 
contidas no mundo real. A análise orientada a objetos tem se demonstrado mais 
completa, no sentido de ser empregada no desenvolvimento de sistemas complexos e 
de grande porte. Ela também possibilita uma maior integração entre os objetos do 
mundo real, bem como permite representar os vários aspectos do problema, através de 
14 
 
 
modelos intuitivos que reduzem as explicações textuais, muito utilizadas em outras 
metodologias. Neste sentido, a POO torna-se um conhecimento importante e 
fundamental para os estudantes da área de Computação, engenharia eletrônica, 
telecomunicações e telemática (FRANÇA, 2012). Notas históricasrelativas à evolução 
desta tecnologia podem ser obtidas em (BOOCH, 1994, pp. 473-490) e (GUERRAOUI 
et al., 1996, p. 692). 
 
1.1 Justificativa 
 
Linguagens de programação são um conteúdo presente nos cursos das áreas 
correlatas à Computação. Disciplinas de linguagem de programação exigem dos 
estudantes o desenvolvimento de habilidades de raciocínio lógico, resolução de 
problemas e abstração (DOUBE, 2000). Segundo Vahldick (2007) o paradigma de 
Programação Orientada a Objetos (POO) é um tópico fundamental na Ciência da 
Computação, pois é o mais presente nas diversas linguagens e ambientes de 
programação utilizados na atualidade (C++, Java, C#, Python, Ruby, PHP, Perl). A 
POO tem sido vista como um conteúdo fundamental não só dos cursos de computação 
mas também de cursos da área de tecnologia como as engenharias (ANQUAN, LI, 
JIHUA, JIE, 2012). 
 
Segundo Sheard e Hagan (2009), estudantes iniciantes em POO enfrentam 
grandes dificuldades na compreensão de conceitos abstratos presentes nesse 
paradigma, como os conceitos de classe, herança, objeto, polimorfismo dentre outros. 
Os maiores desafios para eles são as tarefas de resolução de problemas concretos 
com conhecimento de orientação a objeto como resultado. Outro estudo realizado por 
Rais, Sulaiman e Syed-Mohamad (2011) identificou as fraquezas de cada conceito de 
POO. O resultado mostra que os estudantes apresentam grande dificuldade de 
compreender conceitos de herança, abstração e polimorfismo. Diante disso, o índice de 
abandono e repetência nessas disciplinas tem sido muito alto. Para Hinterholz Jr 
(2009), essas disciplinas costumam ter altos índices de evasão e reprovação, 
dificultando ou impedindo a continuidade dos estudantes no curso. 
 
Segundo Kölling (1999) um dos principais problemas relacionados à POO não 
são as dificuldades do conceito e sim a falta de ferramentas disponíveis para apoiar a 
prática docente. Ferramentas e ambientes disponíveis para o ensino de POO 
15 
 
 
geralmente são muito complexos, deixando os estudantes confusos e dificultando 
assim a aprendizagem dos conceitos de POO. 
 
1.2 Problema 
 
Várias questões sobre a metodologia de ensino de POO têm sido levantadas 
com o objetivo de se obter uma melhor prática de ensino de seus conceitos 
(RUMBAUGH, 1994). Algumas pesquisas têm demonstrado que a introdução do 
paradigma estruturado pode ser prejudicial ao entendimento dos conceitos de POO 
(ROWE, 2002). Também é importante que no ensino de POO os docentes busquem 
inovar a forma de expor os conteúdos, buscando novas formas de ajudar os estudantes 
em suas dificuldades de aprendizagem e compreensão do conteúdo. Segundo Liu et 
al., (2009) uma abordagem tradicional para ensino de POO, que pense em transmitir o 
conhecimento para aceitação passiva do estudante, seria uma falha de metodologia de 
ensino do conceito. Logo, novos métodos de ensino de programação Orientada a 
Objeto buscam desenvolver concepções de ensino que motivem os estudantes a 
serem cada vez mais ativos e autônomos. Alguns exemplos desses métodos são os 
jogos para simulação e o uso de ambientes colaborativos no processo de ensino e 
aprendizagem da disciplina. 
 
1.3 Hipótese 
 
O presente trabalho parte da hipótese que a promoção de colaboração entre 
estudantes e professores por exemplo, pelo uso de uma rede social educativa - pode 
melhorar a prática de ensino de POO. Um ambiente colaborativo poderia melhorar o 
desempenho do docente uma vez que possibilita uma exposição dos conteúdos, 
disponibiliza recursos para utilizar a linguagem de programação dentro do próprio 
ambiente, e apresenta a possibilidade de aplicação de testes com exercícios para fixar 
o conteúdo, dentre outros recursos. Dessa forma o uso de uma plataforma desse tipo 
poderia beneficiar a prática de ensino do professor por proporcionar aos estudantes e 
professor a interação entre as partes ultrapassando o ambiente escolar, sendo avaliado 
através de uma pesquisa qualitativa. 
 
 
16 
 
 
1.4 Objetivo Geral 
 
Analisar a efetividade da prática docente no processo de ensino de programação 
orientada a objeto mediado por meio de rede social educativa. 
 
 
1.5 Objetivos Específicos 
 
 Identificar as limitações do ensino de Programação Orientada a Objeto através 
de ambiente virtual de ensino; 
 Analisar a efetividade das práticas de ensino de Programação Orientada a 
Objeto através de uma rede social educativa; 
 Analisar as dificuldades do ensino de Programação Orientada a Objeto em 
ambiente virtual colaborativo; 
 Apresentar os requisitos funcionais da rede social educativa, que permitam 
suplantar as dificuldades do ensino para professores e validar a hipótese através 
da observação sistemática. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17 
 
 
1.6 Estrutura da Dissertação 
 
 
Este trabalho está estruturado da seguinte maneira: 
 
 Capítulo 1 Introdução: Justicativa, Objetivo do Design, Objetivo Geral, 
Objetivos Específicos e Estrutura da Dissertação. 
 Capítulo 2 Ensino de POO: Ensino de Programação Orientada a Objeto, 
Ensino de POO na modalidade semipresencial, Ensino de POO mediado por 
ambientes virtuais colaborativos. 
 Capítulo 3 Método de Pesquisa: Paradigma de pesquisa e estudo, 
Participantes, Procedimento, Entrevista semiestruturadas, Filmagens da sala 
de aula, Captura de telas, Análise qualitativa dos Dados, Recomendação de 
requisitos. 
 Capítulo 4 Análise dos Resultados: Resultados, Limitações impostas 
pelas redes sociais, Discussão dos Resultados. 
 Capítulo 5 - Considerações Finais: Conclusões, Dificuldades, Contribuições 
e Trabalhos futuros. 
18 
 
 
2. Princípios e Ensino de POO 
 
Este capítulo descreve o estado da arte sobre o ensino e a aprendizagem de 
programação orientada a objeto. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19 
 
 
2.1 Princípios de Programação Orientada a Objeto 
 
Os diferentes paradigmas de programação propostos nas últimas décadas 
propuseram a quebra da complexidade de um software pela sua divisão em um 
conjunto de partes menores, chamados módulos, que podem ser mais facilmente 
compreendidos e implementados, tendo suas relações e interações especificadas de 
forma simples (DALL'OGLIO, 2007). A esse processo deu-se o nome de modularização 
de software. Cada módulo de software deve implementar um interesse de software, 
que é definido como uma parte conceitual de uma solução tal que a composição dos 
interesses possa definir a solução necessária pelo software Milli (2004). O processo de 
modularização baseado em interesses é chamado de separação de interesses1. Um 
sistema orientado a objetos é uma coleção de objetos que interagem entre si (MEYER, 
1992). 
 
A seguir apresentaremos os principais princípios de POO, que são 
encapsulamento, classes de objetos, abstração e polimorfismo. 
2.1.1 Princípios de Objetos 
 
Segundo BUENO (2003) na imperativa orientada a objeto, um objeto é uma 
entidade do software em execução constituída pelas seguintes partes: 
 Um estado definido por um conjunto de objetos internos chamados atributos; 
 Um conjunto de sub-rotinas chamadas de métodos. 
 
Os métodos de um objeto definem suas transformações de estado válidas, as 
quais definem seu sentido computacional. As assinaturas dos métodos de um objeto 
formam sua interface. Um programa orientado a objetos é composto de um conjunto de 
objetos que coordenam suas tarefas por invocação mútua de seus métodos, 
cooperando a fim de implementar o interesse da aplicação (PREISS, 2001). A ideia por 
trás das linguagens de programação orientada a objeto é combinar em uma única 
entidade tanto os dados quanto as funções que operam sobre esses dados. Tal 
entidade é denominada objeto (SILVA FILHO, 2010). 
 
1 do inglês, separation of concerns. 
20 
 
 
 
 
De acordo com (GOODRICH, TAMASSIA, 2006) o princípio maisimportante por 
trás da orientação a objetos (OO) é o encapsulamento, através do qual um objeto que 
conhece a interface de um outro objeto não precisa fazer suposições sobre detalhes de 
sua implementação (atributos e código-fonte dos métodos) para usar suas 
funcionalidades. Para isso, é suficiente que o objeto concentre-se na interface dos 
objetos aos quais depende. 
 
 
Uma classe, segundo (SILVA FILHO, 2010), denota uma coleção de objetos, 
enquanto cada objeto é uma instância de uma classe. Uma classe pode ser definida 
como um conjunto de objetos, que possuem um conjunto de atributos e métodos. 
Classes podem também ser introduzidas como protótipos de objetos, especificando os 
atributos e métodos de objetos instanciados durante a execução. 
 
Heranças de classes podem ser simples ou múltiplas. Na herança simples, uma 
classe derivada possui exatamente uma superclasse, enquanto que na herança 
múltipla uma classe pode ser derivada de um conjunto de superclasses. Linguagens 
orientada a objetos modernas, como Java e C#, aboliram a flexibilidade da herança 
múltipla presente em C++, adotando o sistema de herança simples inicialmente 
proposto pelo Smalltalk. Para lidar com esses casos de herança múltipla, o projeto da 
linguagem Java introduziu a noção de interface. Em uma interface, são declarados os 
métodos que devem fazer parte dos objetos que a implementam. Interfaces definem a 
noção de tipo de objetos e suas classes. 
 
Uma classe define os atributos e comportamentos comuns compartilhados por 
objetos de um mesmo tipo (SINTES, 2002). Comportamento é uma ação executada por 
um objeto quando passada uma mensagem ou em resposta a uma mudança de 
estado, ou seja, é algo que um objeto faz. Na Figura 1 mostra um exemplo de 
implementação de uma classe em Java. 
 
 
 
 
21 
 
 
Figura 1 Exemplo de Classe em Java. 
 
 
 
 
Classes e herança trazem quatro diferentes mecanismos de abstração para a 
programação orientada a objetos Taivalsaari (1996): 
 Classificação/Instanciação: classes denotam objetos com estruturas 
similares (métodos e atributos). Objetos representam instâncias de 
classes; 
 Agregação/Decomposição: é a habilidade de ter objetos como atributos de 
outros objetos. Desse modo, um conceito representado por um objeto 
pode ser descrito pela orquestração de um conjunto de objetos 
representando suas partes constituintes, formando uma hierarquia de 
objetos que representa a estrutura por atrás do conceito; 
 Generalização/Especialização: consequência do conceito de derivação de 
classes por herança, que torna possível reconhecer características 
comuns entre diferentes classes de objetos através de superclasses. Tal 
habilidade torna possível o polimorfismo de subtipos, típico em linguagens 
orientadas a objetos, onde uma referência de um objeto, ou variável, que 
é tipada com uma classe pode referir-se a um objeto de qualquer uma das 
suas subclasses; 
22 
 
 
 Agrupamento/Individualização: é a utilização de coleções de classes que 
agrupam de objetos com interesses comuns. Através do polimorfismo, tais 
coleções de classes relacionadas, por relações de herança, podem ser 
válidas. 
 
 
Na programação orientada a objetos, o polimorfismo permite que referências de 
tipos de classes mais abstratas representem o comportamento das classes concretas 
que referenciam. Assim, é possível tratar vários tipos de maneira homogênea (através 
da interface do tipo mais abstrato). O termo polimorfismo é originário do grego e 
significa "muitas formas" (poli = muitas, morphos = formas). 
 
O polimorfismo é caracterizado quando duas ou mais classes distintas tem 
métodos de mesmo nome, dependendo da linguagem não basta ter apenas o mesmo 
nome, tem de manter os mesmos tipos dos argumentos e do valor de retorno, de forma 
que uma função possa utilizar um objeto de qualquer uma das classes polimórficas, 
sem necessidade de tratar de forma diferenciada conforme a classe do objeto. 
 
Uma das formas de implementar o polimorfismo é através de uma classe 
abstrata, cujos métodos são declarados mas não são definidos, e através de classes 
que herdam os métodos desta classe abstrata. 
 
No ambiente de desenvolvimento de software, reuso e manutenibilidade de 
código são práticas bastante apreciadas por equipes de desenvolvimento na 
construção de sistemas computacionais. Um valioso conceito de OO que contribuem 
para com as boas práticas é o polimorfismo, visto que este conceito possibilita envio de 
mensagens genéricas, abandonando detalhes da exata implementação do código 
(FARINELLI, 2007). 
 
Cardelli e Wegner (1985) classificam o polimorfismo em linguagens orientadas a 
objetos de acordo com a Figura 2. Essa classificação é para linguagens de 
programação. O caso da orientação a objetos é de polimorfismo de inclusão, se não 
23 
 
 
levarmos em conta que classes podem ser genéricas em determinadas linguagens. Ela 
exibe de forma esquemática esta classificação que está detalhada a seguir. 
 
 
 
Figura 2 - Classificação de Cardelli e Wegner (1985) para polimorfismo. 
 
 
2.2 Ensino de Programação Orientada a Objeto 
 
O ensino de programação e modelagem através de métodos orientados a 
objetos tornou-se comum na introdução da ciência da computação durante os últimos 
dez anos. Entretanto, há várias referências novas demonstrando uma volta às 
linguagens imperativas procedurais ou mesmo linguagens dinamicamente tipadas. 
. 
Algumas pesquisas indicam que aprender orientação a objetos é mais difícil do 
que outros paradigmas (VESSEY, CONGER, 1994). 
 
A introdução de programação de computadores continua sendo um desafio para 
muitos estudantes iniciantes (EDIRISINGHE, 2008). A exposição à programação e, 
neste caso, os conceitos de programação orientada a objeto, podem ser um obstáculo 
entre os programadores novatos por se tratar da complexidade dos conceitos em 
relação às construções de uma linguagem imperativa procedural. Além disso, há ainda 
a falta de conteúdo apropriado e interessante que pode envolver os estudantes para 
melhorar seu processo de aprendizagem (PIVEC, DZIABENKO, SCHINNERL, 2003). 
Provavelmente acontece esse problema porque alguns fatores podem afetar os 
estudantes na aprendizagem de conceitos de programação orientada a objeto, incluem 
falta de experiência em programação (CLARKE, THOMAS, ADAMS, 2005). O 
fundamental é fornecer uma boa experiência no aprendizado de programação 
orientada a objeto. A exposição inicial dos conceitos de programação orientada a 
24 
 
 
objeto dever ser atraente e divertida para fins de aprendizagem dos estudantes. Sendo 
assim, o jogo é uma abordagem interessante para envolver os estudantes no 
aprendizado de forma lúdica (VAHLDICK, 2007). 
 
Até 1980, eram utilizados os princípios de programação orientada ao processo, 
que se transformava em problemas da vida real para o processo, então era compilado 
cada processo para um processo. Como o desenvolvimento da tecnologia de 
programação no Século 20, o pensamento de programação orientada a objeto é 
proposto, aonde é compilado um objeto (ou entidade) para o procedimento e não 
transformá-lo no processo, por isso a possibilidade de erros é reduzida (SILVA FILHO, 
2010). 
 
Programação orientada a objetos não é simplesmente alguns recursos 
adicionados à linguagem de programação. Pelo contrário, é uma nova maneira de 
pensar sobre o processo de decompor o problema e desenvolver soluções de 
programação (LI, XU, 2010). Por isso, a programação orientada a objeto é obrigatória 
em currículos de ciência da computação e é ensinada usando um conjunto 
diversificado de linguagens de programação, como C ++, C #, Java ou Smalltalk. 
 
A seguir apresentamos a linguagem orientada a o objetos C++, que é uma das 
mais populares e Java por ser uma das mais utilizadas atualmente, as ferramentas 
mais utilizadas no ensino de programação orientada, o ensino de POObaseado em 
jogos e a metodologia iPOO para o ensino de programação orientada a objeto. 
2.2.1 C++ e Java 
 
Para (SUTTON, MALETIC, 2013) Ao longo da última década, um grande esforço 
tem sido exercido para codificar conceitos para a linguagem de programação C + +. O 
projeto de Java foi orientado pelo conceito fundamental de oferecer maior simplicidade 
e confiabilidade do que poderia ser oferecido por C++ (SEBESTA, 2000). Na 
especificação de Java (Java Language Specification). Segundo (KING, 1997), Java 
também suporta programação orientada a objetos, com vantagens significativas sobre 
a linguagem C++: 
 
25 
 
 
 O estudante tem que usar objetos. Apenas os tipos primitivos não são 
objetos. Não é possível definir funções ou procedimentos de forma 
isolada; todos devem pertencer a uma classe; 
 Os objetos são sempre alocados dinamicamente e manipulados através 
de referências, desse modo à semântica é simplificada; 
 O gerenciamento de armazenamento, estrutura utilizada para o 
armazenamento dos objetos é determinante no desempenho do sistema, 
é controlado automaticamente, o que reduz significativamente a 
dificuldade em se escrever muitas classes; 
 As características, como sobrecarga de operadores e herança múltipla, 
não existem em Java. Os Estudantes têm menos a aprender antes de 
escrever classes reutilizáveis, e podem concentrar-se melhor no 
aprendizado do paradigma orientado a objeto, ao invés de dominar um 
número elevado de detalhes esotéricos; 
 Possuir o coletor de lixo (garbage collectio), responsável por liberar 
objetos da memória quando estes não estão sendo referenciado. 
 
A Linguagem Java apresenta algumas vantagens, tais como, ser uma 
linguagem totalmente orientada a objetos (o que permite a herança e a reutilização de 
códigos de forma dinâmica e estática), fornecer portabilidade por ser uma linguagem 
interpretada (o Java pode ser executada em qualquer plataforma), a robustez dos 
recursos da linguagem, a segurança, o dinamismo, o alto desempenho, a facilidade por 
sua sintaxe ser parecida com as linguagens C e C++ e o acesso a vários Sistemas 
Gerenciadores de Banco de Dados (SGBD), através do JDBC, que é uma biblioteca de 
classes para acesso a banco de dados, permitindo uma conexão remota a servidores 
SQL. 
2.2.2 UML 
 
Segundo (CHENG , YUE, 2011), Unified Modeling Language (UML) é uma 
linguagem de modelagem universal, que é baseada na perspectiva de orientação a 
objeto, descrição e visualização do software, bem como a construção e 
estabelecimento de documentos do sistema de software. 
 
26 
 
 
Diagrama de classe em UML corresponde à representação gráfica de um 
objeto do mundo real, a ser codificado em linguagem de programação orientada a 
objeto através de uma classe. Diagrama de classe refere-se os descritores de um 
grupo de objetos com estruturas semelhantes, comportamentos e relações(CHENG , 
YUE, 2011). Em UML, demonstração de classe é mostrado na Figura 3. 
 
Figura 3 - Símbolos que demonstram uma classe 
 
 
 
2.2.3 Ferramentas utilizadas no ensino de Programação Orientada a 
Objeto 
 
Existem vários tipos de ferramentas e ambientes propostos na literatura com a 
finalidade de facilitar o aprendizado de lógica e linguagens de programação, 
destacamos e descrevemos a seguir a ferramentas mais comumente encontradas que 
são o HabitPro, LeCo-EAD, O BlueJ. As IDEs Eclipse e NetBeans, apesar de serem 
ferramentas para uso profissional, não desenvolvidas com finalidade educacionais, 
também serão descritas por serem muito utilizadas no ensino de POO. 
 
HabiPro (Habits of Programming) (VIZCAÍNO et al., 2000) é ambiente 
colaborativo que busca desenvolver nos estudantes boas práticas em programação. O 
propósito não é ensinar a programação, mas instigar os estudantes novatos em 
programação a adquirirem habilidades como a observação e reflexão sobre a estrutura 
do algoritmo, necessários para se tornarem bons programadores. A interface desta 
aplicação (Figura 4) tem duas janelas, sendo elas um chat para a comunicação entre 
27 
 
 
os estudantes e uma área de trabalho onde os estudantes devem colaborar para 
resolver um determinado problema de programação. Após a proposta da solução do 
grupo ser apresentada, se não estiver correta, o sistema propõe quatro tipos de ajuda, 
que são, oferecer suporte ao estudante sobre como resolver o problema; mostrar a 
solução e uma explicação do porque o problema ter sido resolvido com aquela técnica; 
mostrar um exemplo similar do problema que o estudante tentou resolver e sua 
solução; ou mostrar a solução do problema. 
 
Figura 4 - Interface do HabiPro. 
 
 
O LeCo-EAD (FARACO et al., 2004a, 2004b) é um SCA (Sistemas Companheiro 
de Aprendizagem) para o ensino à distância baseado na Web, que é composto por 
múltiplos CAs (Companheiro de Aprendizagem). Estes têm comportamentos próprios e 
estão permanentemente disponíveis para interagir com os estudantes. O ambiente 
virtual de aprendizagem contempla diferentes táticas de ensino, representadas pelos 
CAs do tipo colaborador, aprendiz e trouble maker. A partir do perfil do estudante 
identificado por uma escala de atitudes, o LeCo-EAD sugere qual tipo de CA irá atuar 
como seu companheiro virtual de aprendizagem. O LeCo-EAD é um SCA que adota 
dois tipos de adaptação: a de conteúdo e a de estratégia de ensino. A adaptação de 
conteúdo é realizada a partir da desempenho do estudante no curso, em que o 
sistema, através de um esquema de pré-requisitos, apresenta somente os conceitos 
que o estudante está apto a desenvolver. O outro tipo de adaptação ocorre quando o 
sistema solicita a participação do estudante na escolha do CA mais adequado ao seu 
28 
 
 
perfil, inicialmente através da escala de atitudes e durante o curso através dos 
mecanismos de feedback. A Figura 5 ilustra a Interface do LeCo-EAD. 
 
 
Figura 5 - Interface do LeCo-EAD. 
 
 
As maiorias destas aplicações estão baseadas na exposição e animação de 
algoritmos, podendo ser utilizadas para tarefas tão diversas como reter a atenção dos 
estudantes durante as apresentações, explicar conceitos de uma forma visual e 
encorajar um processo de aprendizagem firmado na prática. Este último aspecto 
parece extremamente relevante, uma vez que os ambientes de programação (IDEs 
como Eclipse2, Netbeans3) são direcionados aos profissionais, e a informação que 
fornecem é normalmente bastante complexa para ser compreendida por estudantes 
iniciantes. 
 
A Figura 6 ilustra a interface da IDE Eclipse. Eclipse é um IDE (Interfase de 
Desenvolvimento) desenvolvido em Java, seguindo o modelo open source de 
desenvolvimento de software. O projeto Eclipse foi iniciado na IBM em novembro de 
2001 que desenvolveu a primeira versão do produto e doou-o como software livre para 
a comunidade de desenvolvedores Java. 
 
 
 
 
2 http://www.eclipse.org/downloads/ 
3 http://netbeans.org/downloads/ 
29 
 
 
 
 
Figura 6 - Interface do Eclipse. 
 
 
A Figura 7 ilustra a interfase da IDE do NetBeans. O NetBeans IDE é um 
ambiente de desenvolvimento integrado (IDE) gratuito e de código aberto para 
desenvolvedores de software nas linguagens Java, C, C++, PHP, Groovy, Ruby, entre 
outras. O IDE é executado em muitas plataformas, como Windows, Linux, Solaris e 
MacOS. O NetBeans IDE oferece aos desenvolvedores ferramentas necessárias para 
criar aplicativos profissionais de desktop, empresariais, Web e móveis multiplataformas. 
30 
 
 
Figura 7 - Interface do NetBeans. 
 
 
Uma proposta para suprir esta necessidade, foi à construção do IDE Bluej, cujo 
principal objetivo é facilitar o processo de aprendizado dos principais conceitos do 
Paradigma OO. Para atingir esse objetivo o bluej faz uso de recursos visuais 
interativos, tais como classes e relacionamento que podem ser definidos visualmente 
(VAHLDICK, 2007). 
 
Deste modo, a utilizaçãode ambientes mais simples e com interface acessível 
pode contribuir para estimular os estudantes a experimentar, avaliar e corrigir os seus 
próprios algoritmos, auxiliando o processo de aprendizagem de programação. 
2.2.4 O Ensino de POO baseado em Jogos 
 
Segundo (LEUTENEGGER, EDGINGTON, 2007), o tempo limitado dos cursos 
de programação também pode afetar a curva de aprendizado de um estudante. A 
insuficiência de tempo requer professores para enfatizar certos conceitos e concentrar-
se na parte teórica, em vez de equilibrar teoria e prática (ANQUAN et al., 2012). É 
importante saber o desempenho do estudante sobre adoção de uma abordagem de 
ensino eficaz de deve aumentar o interesse do estudante e entendimento (CHINN et 
al., 2010). Outro aspecto a considerar, os estudantes tem a sua própria percepção na 
31 
 
 
aprendizagem, cada estudante tem uma forma diferente de aprender (CHINN et al, 
2010), e diferentes níveis de compreensão. Eles podem ter uma compreensão 
profunda ou uma compreensão básica (PURDIE, HATTIE, 2002). Todos estes fatores 
motivam os estudantes a estudar utilizando jogos para apoio a aprendizagem de 
conceitos de programação orientada a objeto. 
 
Segundo Rais, Sulaiman e Syed-Mohamad (2011) no desenvolvimento de jogos 
educativos é essencial investigar as necessidades dos estudantes. Assim, um estudo 
preliminar de (RAIS, SULAIMAN, SYED-MOHAMAD, 2011) selecionou um grupo de 
estudantes que participaram de um experimento para explorar os jogos escolhidos e 
para responder a um conjunto de perguntas. O objetivo era estudar as necessidades 
dos estudantes em aprender conceitos e de programação orientada a objeto utilizando 
jogos. Um jogo educacional precisa satisfazer as duas dimensões: sendo um jogo o 
que significa sendo uma competição entre adversários que agem sobre restrições 
que são as regras do jogo para ao final vencer; e ser educacional o que significa que 
precisa ser projetado para ensinar um de determinado assunto (WANGENHEIM, 
WANGENHEIM, 2012). 
 
Três métodos de aprendizagem foram testados no estudo (RAIS, SULAIMAN, 
SYED-MOHAMAD, 2011). O primeiro método foi o conservador com estudantes que 
aprenderam de forma tradicional através de palestras ou laboratórios. Os outros dois 
métodos foram através de jogos baseados no apoio a programação GAPS 1.0 e Alice 
2.0. 
 
O GAPS 1.0 é um jogo 2D, que suporta programação básica e alguns conceitos 
de programação orientada a objeto, tais como objeto e classe. Um grupo de estudantes 
de graduação desenvolveram o GAPS 1.0 como exigência final de projeto BSc do 
Programa de Ciência da Computação (RAIS, SULAIMAN, SYED-MOHAMAD, 2011). 
Por outro lado, Alice 2.0 é um jogo 3-D que ensina introdução à programação e permite 
que os estudantes arrastar e soltar peças gráficas para criar uma programa 
(EDIRISINGHE, 2008). 
 
Figura 8 - Alice 2.0 
A Figura 8 e Figura 9, mostram a imagem de Alice 2.0 e GAPS 1.0. GAPS 1.0 
fornece habilidades básicas de programação, aonde suporta os conceitos básicos de 
32 
 
 
programação orientada a objeto. Alice 2.0 é uma ferramenta bastante representativa 
para aprender POO através de um jogo. 
 
 
Figura 8 - Alice 2.0 
 
 
Figura 9 - GAPS 1.0. 
 
 
 
Portando o Alice 2.0 é um software bastante representativo para aprender 
programação orientada a objetos através de um jogo. Assim pode ser combinado com 
o uso do GAPS 1.0 para o ensino dos conceitos básicos de programação orientada a 
objeto juntamente com o método tradicional de ensino como aulas expositivas e 
laboratórios. Alice 2.0 não cobre os conceitos de herança e polimorfismo e GAPS 1.0 
aborda alguns conceitos de programação orientada a objetos. 
 
33 
 
 
2.2.5 A metodologia iPOO para ensino de Programação orientada a 
Objetos 
 
Segundo (LOPES, 2007), a metodologia iPOO (Introdução a Programação 
Orientada a Objetos) tem por objetivo apresentar-se como alternativa para o ensino 
introdutório de programação de computadores, abordando os conceitos básicos de 
classes e objetos desde o primeiro contato do estudante com uma linguagem de 
programação em um curso. 
 
Em 2006, a Universidade Regional de Blumenau reformulou as matrizes 
curriculares dos cursos de Sistemas de Informação e Ciência da Computação, 
iniciando o ensino de programação orientada a objeto desde o primeiro semestre do 
curso. Em 2006/2 foi criada uma turma em caráter experimental no curso de Ciência da 
Computação que demonstrou a viabilidade do projeto (LOPES, 2007). Por outro lado, 
há universidades que deixaram de ensinar OO e voltaram a ensinar linguagens 
imperativas procedurais. 
 
A seguir serão apresentados os passos da metodologia. As tarefas indicadas 
devem ser realizadas pelo estudante em cada um dos passos. Entre parênteses 
aparece a versão da metodologia (1, 2, 3 ou 4) onde o passo foi introduzido (LOPES, 
2007): 
 
1. INTERPRETAÇÃO (1): ler o problema até compreendê-lo totalmente, 
destacando os verbos e os substantivos. Verificar atentamente se o 
problema está bem definido, se não há ambiguidades ou informações 
incompletas e irrelevantes; 
2. CASOS DE USO (1): identificar o que o sistema deve fazer, a partir da 
análise dos verbos existentes no enunciado e indicando as operações 
fundamentais que devem ser realizadas na interação do usuário com o 
sistema; 
3. ATORES (1): identificar os sujeitos (substantivos) responsáveis pelas 
interações em cada caso de uso; 
4. ENTRADAS (1): identificar as informações (substantivos ou locuções 
adjetivas) que são fornecidas, destacando, para cada caso de uso, os 
34 
 
 
dados ou recursos disponíveis ou necessários para a solução do 
problema; 
5. RESULTADOS (1): identificar as informações (substantivos ou locuções 
adjetivas) que devem ser geradas como resultado, procurando observar 
se todas as entradas ou recursos necessários estão disponíveis; 
6. DESCRIÇÃO DOS CASOS DE USO (1): descrever de modo simples e 
objetivo as operações necessárias para cumprir as tarefas necessárias 
para cada caso de uso, definindo, inclusive, as responsabilidades dos 
atores; 
7. TESTES (1): definir um conjunto de dados de entrada com os respectivos 
resultados desejados para testar a solução do problema. 
8. CLASSES DE MODELO (2): identificar as classes necessárias para a 
solução do problema, através da extração dos substantivos presentes no 
enunciado, procurando identificar aqueles que são importantes para o 
domínio do problema proposto e que podem ser modelados com atributos 
e comportamentos. 
9. ATRIBUTOS: (2): identificar os atributos de cada classe de modelo 
extraindo os substantivos ou locuções adjetivas que definem 
características das classes propostas no item anterior. Não é obrigatório 
que uma classe tenha um atributo. Também devem ser identificados os 
tipos dos atributos. 
10. MÉTODOS: (2): identificar os comportamentos de cada classe de modelo, 
destacando suas entradas e resultados e descrevendo o algoritmo para 
sua execução. Nesta etapa algum detalhamento adicional é necessário: 
 Para cada dado de entrada identificado para um método, o 
mesmo deve ser qualificado como atributo, constante, 
parâmetro ou resultado de método. Exceção feita aos 
construtores e métodos setters, pois nestes casos a entrada 
sempre é um parâmetro que irá realizar a transformação em um 
atributo; 
 Para cada dado de resultado identificado para um método, o 
mesmo deve ser qualificado como atributo ou retorno. Exceção 
feita aos métodos getters, pois nestes casos a saída sempre é o 
conteúdo de um atributo; 
35 
 
 
 Descrição dos passos para a solução do problema. Neste caso, 
optou-se pela representação através da construção de 
fluxogramas; 
11. DIAGRAMA (2): Construir um Diagrama de Classes inserindo a 
representação de todos os seus atributos, com seus respectivos tipos, e 
métodos com suas respectivas assinaturas, além de apresentar as 
associações com outras classesde modelo, quando houver. 
12. CLASSES DE MODELO EM JAVA (3): codificar todas as classes do 
modelo em Java. 
13. PROJETO DE INTERFACE (4): definir o layout da interface com o 
usuário, desenhando as telas através das quais o usuário irá interagir com 
o sistema. Este projeto deve atender a todos os casos de uso 
identificados para o problema. 
14. EVENTOS (4): identificar todos os eventos a serem tratados a partir do 
projeto da interface, indicando em que momento cada um irá ocorrer. 
Também deve ser apresentado o algoritmo, em forma de fluxograma, do 
evento. 
15. EVENTOS EM JAVA (4): codificar os eventos na linguagem Java. 
16. OTIMIZAÇÃO (2): revisar a solução do problema, mesmo se estiver 
correta para melhorar a maneira de descrever ou o modo como está 
sendo realizada a solução do problema. Caso encontre possibilidades de 
melhoria deve-se retornar aos passos anteriores. 
 
Lopes (2007) apresenta a comparação dos resultados em turmas com e sem o 
uso da metodologia iPOO (Tabela 1). 
 
Tabela 1 - Aprovações e Reprovações. 
 2006/1 2006/2 2007/1 
 1 turma só algoritmos 
sem OO 
1 turma experimental com OO 3 turmas com a iPOO 
Aprovados 22 9 50 
Reprovados 10 11 49 
 
 
Portanto, a metodologia iPOO, por ter sido a primeira experiência com a nova 
metodologia, o resultado de 50% de aprovação pode ser considerado satisfatório, mas 
36 
 
 
não conclusivo, na inserção de conceitos de programação orientada a objetos para 
acadêmicos ingressantes dos cursos de Sistemas de Informação e Ciência da 
Computação, sem qualquer prejuízo aos resultados da aprendizagem dos paradigmas 
de programação orientada a objeto. Para (Lopes, 2007), a iPOO, baseada em 
ferramentas de análise e programação orientada a objetos, apresentou algumas 
possibilidades de forma bastante positiva e proveitosa e com chances de se tornar 
muito eficiente em um futuro próximo. 
 
A seguir apresentado as principais dificuldades no ensino de programação 
orientada a objeto, como a difícil arte de programar, dificuldades atribuídas às 
características de POO, pensamento orientado a processo é forte e a falta de 
flexibilidade o conceito apenas recitado. 
 
2.3 Dificuldades no Ensino de Programação Orientada a Objeto 
2.3.1 A Difícil Arte de Programar 
 
À medida que cresce a complexidade dos sistemas de software e aumenta à 
concorrência dentro da indústria de software as linguagens de programação devem 
lidar com questões como as listadas a seguir: 
 
 Como expressar a entidade real no projeto do sistema; 
 Como garantir a desabilidade e extensibilidade do módulo; 
 Como desenvolver módulos tolerantes a mudanças no futuro; 
 Como melhorar a produtividade e reduzir consumo de software; 
 Gerir a forma de programação; 
 Como melhorar a qualidade de software; 
 Como fazer que o processo de software se tornasse uma indústria de 
desenvolvimento. 
 
A arte de programação inclui o conhecimento de ferramentas de programação, 
resolução de problemas, domínio de linguagens, habilidades e estratégias eficazes 
para a concepção e implementação de um programa (BYRNE, LYONS, 2001). 
 
37 
 
 
Segundo Byrne e Lyons (2011) é importante que o ensino de programação seja 
iniciado, primeiramente, pelo ensino das noções básicas de uma linguagem de 
programação e que em seguida os estudantes sejam orientados ao desenvolvimento 
de estratégias eficazes para todo o processo de programação. 
 
Aprender a programar geralmente é considerado uma tarefa difícil e os cursos 
de programação frequentemente apresentam altas taxas de abandono escolar. Um 
iniciante leva cerca de 10 anos para se tornar um programador especialista 
(SOLOWAY, SPOHRER, 1989). Ultimamente diferentes abordagens de ensino de 
programação como o paradigma de programação orientada a objeto têm sido 
estudadas. Java e C++, tornaram-se linguagens comuns no processo de ensino. 
2.3.2 Dificuldades atribuídas às características de POO 
 
Segundo (XINOGALOS et al., 2006), a maioria dos estudos sobre o ensino de 
programação orientada a objeto mostra que os estudantes confundem um pouco os 
elementos da linguagem, como identificadores de atributos e métodos. Além disso, eles 
enfrentam dificuldades na utilização de outros elementos da linguagem para a 
implementação da solução de determinados problemas. 
 
Segundo (HOLLAND et al., 1997) alguns estudantes confundem classes com 
objetos. Além disso, observou-se numa escala muito menor, a confusão entre classes e 
métodos. Semelhanças entre os identificadores dos atributos e métodos, como por 
te nesta confusão. 
 
Embora os estudantes pareçam compreender o conceito de coleções de objetos, 
eles acham que é difícil usar coleções com tamanho flexível para agrupamentos de 
objetos (como ArrayList), e até mesmo coleções de tamanho fixo (como matrizes). 
Essas dificuldades referem-se ao uso de coleções de objetos para implementações de 
soluções em geral, erros sobre os limites de uma matriz (TOPOR, 2002) ou usando 
para o primeiro elemento de um array ou coleção o índice 1 ao invés de 0 (TAYLOR, 
2005) 
 
38 
 
 
2.3.3 Pensamento Orientado a Processo é Forte 
 
Segundo Zhu, Jingao (2010), na Computer Education College, a primeira 
linguagem de programação é a linguagem C, que tem como objetivo formar os 
estudantes a dominar a capacidade de raciocínio lógico. Depois dessa fase de 
aprendizagem, é muito difícil mudar os seus conceitos a partir do orientado a processo 
para o orientado a objeto rapidamente. Alguns países europeus e norte americanos, a 
linguagem de programação orientada a objeto é tratado como a primeira linguagem dos 
estudantes no ensino superior, os estudantes são treinados não só orientado a objeto, 
mas também o pensamento lógico (ZHU, JINGAO, 2010). Um estudo mais recente de 
(ZHI, 2012) diz que após a linguagem estruturada C, ensina-se Java como uma 
segunda linguagem de programação, com o objetivo de ensinar os alunos a construir 
idéias de programação orientada a objetos, dominar o básico da síntaxe da linguagem 
Java, com algumas habilidades de programação. 
2.3.4 Conceito de POO apenas Recitado 
 
Existem muitos conceitos de programação orientados a objeto. Se o estudante 
apenas recitar os conceitos e não compreendê-los, o projeto do programa pode não 
refletir o conceito (ZHU, JINGAO, 2010). O estudante deve aprender a identificar 
problemas a partir dos conceitos e encontrar o conceito de que dependem os 
problemas. 
 
Os estudantes devem ser orientados a projetar o modelo de aplicação de 
conceitos, e entendo o conceito de modelo de aplicativo. Após esse treinamento 
repetido, o estudante passará a deter uma compreensão real do paradigma de 
programação orientada a objetos. Uma vez que os estudantes têm um sólido 
conhecimento dos conceitos de programação orientada a objeto, os estudantes podem 
analisar e resolver os problemas com o pensamento orientado a objetos. 
 
A seguir apresentamos o ensino de POO na modalidade semipresencial, como a 
colaboração e ambientes virtuais, ensino de POO com modelo de abordagem LCM, 
ensino de POO com M206 Computing e Ensino de Programação Orientada a Objeto 
através do Facebook. 
 
39 
 
 
2.4 Ensino de POO na modalidade semipresencial 
2.4.1 Colaboração e Ambientes Virtuais 
 
As pessoas integram grupos ou organizações e a interação entre as pessoas 
implica na colaboração. Uma colaboração descreve o seguinte: o processo de criação, 
compartilhado por dois ou mais indivíduos com habilidades complementares que 
interagem para criação de um entendimento comum (OH, KIM, KIM, 1997). 
 
A internet se apresenta como um meio onipresente para a entrega de 
informação e aprendizagem nos setores públicos e privados. A facilidade de utilização 
e da uniformidade desta plataforma permite que todos os cidadãos acessem serviços 
modernos. Especialmente na educação, onde os estudantes esperam tanto a gestão 
como o conteúdo do curso para terum impacto significativo no aprendizado. A 
aprendizagem colaborativa deve ser definida como uma situação em que as pessoas 
aprendem ou tentam aprender algo juntos (DILLENBOURG, 1999). 
 
Uma pesquisa de Price (2005) demonstrou que a web é um meio de 
aprendizado eficaz, com os resultados equivalentes a uma sala de aula tradicional. 
Além disso, à medida que entramos numa época em que a web esta evoluindo para um 
meio dedicado à exibição de conteúdo, principalmente na Educação a Distância (EAD). 
Estudantes dispersos por uma enorme área geográfica podem se registrar e estudar 
em uma comunidade virtual, que elimina a necessidade de viagens caras e 
acomodação em um espaço físico. Mas o uso de EAD levanta importantes questões 
pedagógicas. Aprendizagem com uma comunidade distribuída nos permite consultar 
um componente social de aprendizagem (VYGOTSKY,1997). A Figura 10 representa 
uma comunidade virtual. 
Figura 10 - Comunidade Virtual. 
 
 
40 
 
 
2.4.2 Ensino de POO com Modelo de abordagens LCM 
 
Learning cycle mode (LCM), Modo de ensino em ciclo de aprendizagem (ou 
inquérito de ensino) é também um método de ensino "centrado no estudante
possui um ciclo de processo de ensino e incremental. Neste método, os estudantes são 
incentivados a resolver problemas, despertanto o interesse em programação 
naturalmente. (Hong, Wang, 2009). A Figura 11, ilustra o Modelo LCM. 
 
Figura 11 - Modelo LCM. 
 
 
 
Na Figura 11, demonstra o modo de aprendizado em ciclo, aonde o estudando 
colhe materiais ou identifica requisitos do problema, estuda os materiais e resolve o 
problema, utilizando o paradigma orientado a objeto, fechando assim o ciclo. E inicia 
um novo ciclo com um novo problema com um grau de dificuldade maior. 
2.4.3 Ensino de POO com M206 Computing 
 
A Universidade Aberta (UA) é a maior universidade do Reino Unido, educa 
quase 10% de todos os formandos do Reino Unido. Seus cursos são especificamente 
projetados e disponibilizados a distância para aprendizagem no Reino Unido, Europa 
Ocidental e todo o Mundo (WOODMAN et al., 1999). 
 
O curso M206 Computing: Uma abordagem Orientada a Objetos Uma 
introdução a projetar e descrever sistemas de softwares. Possui 440 horas de estudo 
durante 33 semanas, exigindo 1/6 do grau de dificuldade para pessoas acima de 50 
anos para desenvolver uma abordagem a partir do zero. O curso oferece aos usuários 
41 
 
 
comuns um sistema com recursos para ensinar linguagem de programação orientada a 
objeto desde o início. 
 
M206 Computing matricula mais de 5000 anos por ano, com idade média de 37 
normalmente, e gerencia estudantes com pouca ou nenhuma experiência. 
Consequentemente o impacto educacional de dezenas de milhares a aprender sobre 
software orientado a objeto (WOODMAN et al., 1999). 
 
Indústria de Software deixou claro que precisava de pessoas que poderiam 
pensar de forma complexa, sistemas de software de longa duração, não apenas em 
programas de simples de entrada-processamento-saída. A partir dessas considerações 
objeto e tecnologias de rede assumiram papéis centrais no curso e agora fortemente 
caracterizam a visão de computação (WOODMAN, HOLLAND, PRICE, 1994). Por 
razões de poder e simplicidade foi escolhida a linguagem Smalltalk-80 (WOODMAN, 
GRIFFITHS, 1996). Uma linguagem de força para indústria que oferece benefícios e é 
baseada em alguns conceitos do paradigma de programação orientada a objeto 
(GOLDBERG, ROBSON, 1980) e seu ambiente de programação tem as seguintes 
propriedades: 
 
 Absorção simples de tecnologia de objetos; 
 Facilita a produção dos estudantes, alteráveis simulações. 
 
O programa curso é orientado à indústria de software. Não é apenas sobre 
programação orientada a objeto, mas também, análise e design, redes, sistemas 
operacionais e interação humano-computador. Está disponível no endereço: 
http://goo.gl/TJwx1. 
 
O objetivo principal do ensino de object-oriented analysis and design (OOAD), 
análise orientada a objetos e design, é que os estudantes sejam capazes de usar a 
mesma lógica de programação que eles utilizarm durante a programação orientada a 
objeto. Detectando estruturas de objetos encontradas na programação Smalltalk. Para 
introdução do curso é importante um único conjunto coerente de conceitos de POO e 
apontar as escolhas de design que devem ser feitas para implementar as relações 
comuns (WOODMAN et al., 1999). 
 
42 
 
 
Principais características pedagógicas do curso são: 
 
1. A aquisição e prática de habilidades disposicionais na identificação de 
classes, associações, responsabilidades e colaborações por expor 
os estudantes a uma série de cenários de problemas e que essas 
habilidades podem ser implantadas. 
2. A separação de interesses (interface do usuário contra domínio do 
problema) como cruciais no projeto bem sucedido de sistemas. 
3. A importância da reutilização dentro do projeto. 
4. Uma ênfase na importância de produzir código Smalltalk como o produto 
demonstrável da análise e transformação de design é reconhecível 
(para o estudante). 
 
A Figura 12, ilustra a Interfase do Curso M206. 
 
Figura 12 - Interfase do Curso M206. 
 
 
Portanto, M206 Computing consiste numa abordagem para o ensino de 
programação orientada a objeto que tem como objetivo atender as necessidades da 
indústria de software. Seu objetivo é formar graduados em computação que podem 
raciocinar em termos de sistemas complexos orientados a objetos de longa duração. A 
43 
 
 
tecnologia utilizada no curso apoia o debate dos estudantes sobre os conceitos 
fundamentais de programação orientada a objeto, dessa forma o seu uso é apropriado 
para o ensino semipresencial à distância. 
2.4.4 Ensino de Programação Orientada a Objeto através do Facebook 
 
Quando os estudantes têm dificuldades de aprendizagem de programação, eles 
costumam perguntar aos pares para encontrar respostas em vez de perguntar ao 
professor. Mas às vezes a capacidade dos colegas é pobre e limitada ou fazem a 
pergunta em horário errada, então eles não podem obter a resposta imediatamente. E 
então geram uma frustração na aprendizagem, assim, perdem a seu entusiasmo na 
aprendizagem. A fim de melhorar a situação de forma eficaz, para permitir os 
estudantes possam obter respostas em menor tempo. Um estudo de (LAI et al, 2013), 
leva características da plataforma de rede social. A plataforma rede social tem a 
vantagem de notificação e lembretes, que permitem estudantes obter uma resposta 
imediatamente. Especialmente o Facebook ocupa a maior taxa de utilização em muitas 
plataformas redes social. 
 
Como o Facebook permiti usar uma API fornecida pela plataforma para 
desenvolver os programas de aplicação desde 2006, esse estudo utiliza Facebook para 
fornecer uma plataforma para os estudantes se envolver em redes sociais, bem como 
aprender sobre programação. A função do Facebook a rede social pode facilitar o efeito 
de aprendizagem colaborativa entre pares. 
 
O estudo de (LAI et al, 2013) usa "programa aplicativo do Facebook" para 
incorporar o Java Assist Sistema de Aprendizagem (JALs) no Facebook, de modo que 
os estudantes podem usar JALs para sua aprendizagem. Figura 13 mostra a estrutura 
do sistema. Os estudantes podem participar de redes sociais, enquanto utilizando os 
programas aplicativos do Facebook. As aplicações de programa no Facebook estão 
ligados ao Canal social através da API fornecida pelo Facebook. Os JALs desenvolve 
assistente de tutoria programas aplicativos no Facebook. 
 
 
 
 
 
44 
 
 
Figura 13 - Arquitetura do JALs 
 
 
 
Os estudantes podem compor e praticar programação orientada a objeto em 
Java através da JALs, e o sistema proporciona um mecanismo de controle automático 
para compilar e testar os códigos de programação Java compostos pelos estudantes. 
Além disso, quando um estudante encontra problemas durante sua prática, o 
mecanismo de perguntar-para-ajudapode ajudar o estudante a encontrar pares de 
tutores no Facebook para responder à pergunta. O sistema seleciona a "pessoa que 
respondeu a pergunta corretamente", como a prioridade dos colegas tutores, porque 
aqueles que têm a pergunta, respondeu corretamente pode entender a pergunta e os 
pontos-chaves melhor, e pode emitir pareceres e orientações para resolver os 
problemas. Em segundo lugar, "a pessoa que respondeu a maioria das perguntas 
corretamente neste momento" é selecionado a partir de colegas tutores, porque 
aqueles que responderam a maioria das perguntas corretamente pode ter uma melhor 
capacidade de resolver os problemas que eles não têm respostas a essa pergunta 
antes. Se o sistema não encontrar um tutor adequado, a mensagem para pedir--ajuda 
vai ser enviada para o assistente de curso, que atua como tutor de pares de forma 
anônima. 
 
Os professores, por vezes, tem que mudar as estratégias de ensino, devido aos 
recursos de ensino limitado. A educação ajuda conforme as estratégias de ensino 
podem ser projetadas por API fornecidos pelo Facebook. 
 
45 
 
 
Estudos anteriores sugeriram que os estudantes muitas vezes procuram por 
assistência aos seus pares quando enfrentam problemas de aprendizagem. Os 
estudantes podem ser tutores e avaliar o outro, e obter uma melhor compreensão das 
perguntas. Além disso, os estudantes discutem questões com os colegas e expõem 
seus próprios pensamentos, a troca de opiniões e obtêm um novo entendimento 
comum a respeito de um julgamento e discussão mútua, de modo a melhorar e 
aumentar sua aprendizagem (JONG et al, 2012). Assim, o estudo de (LAI et al, 2013) 
projetou uma base do Facebook para um sistema de ensino assistente, JALs, que 
permite que os estudantes uma troca on-line e programação orientada a objeto em 
Java na prática. Os estudantes podem discutir uns com os outros no modo tutor pares 
para ajudar no aprendizado em programação. 
 
 
2.5 Ensino de POO mediado por ambientes virtuais colaborativos 
2.5.1 Ensino e aprendizagem de POO por ambientes colaborativos 
 
Como vimos, a programação e algoritmos são fundamentos na compreensão da 
tecnologia da informação. O entendimento de conceitos da programação orientada a 
objetos é um elemento importante no currículo da moderna computação (TUCKER et 
al., 2003). 
 
O ensino e a aprendizagem colaborativos é um método de ensino em que vários 
estudantes são agrupados virtualmente, com a finalidade de atingir um objetivo comum 
acadêmico. Os estudantes podem vir de diferentes locais. O propósito do ambiente de 
ensino e aprendizagem colaborativa é que o grupo como um todo use recursos de cada 
indivíduo. Assim quando em grupo, esses recursos podem ser disponibilizados para o 
melhor uso de todos os membros (BALOCHE, 1998). 
 
Dessa forma, cada membro pode utilizar vários recursos disponíveis no grupo, 
assim enriquecendo seu conhecimento, o que não é possível individualmente. Para 
(SAFIA, MALA, 2012), as principais características de um ambiente de ensino e 
aprendizagem colaborativa são: 
 
46 
 
 
1. Agrupamento heterogêneo Estudantes, comunicando uns com os outros 
em vários parâmetros diferentes, ajudando no trabalho do outro. 
2. Interação entre as partes Os estudantes que precisam de ajuda, 
começam a interagir com os seus pares, o que resolve o seu propósito. 
3. Responsabilidade Individual Cada membro é encorajado a compartilhar 
seu conhecimento com outros membros do grupo. 
4. A interdependência positiva Cada membro, dada à oportunidade de 
partilhar sua experiência com outros, começa a sentir que é importante e 
que todos juntos são necessários para ter sucesso. 
5. Habilidades Coorperação, em vez de competição ou isolamento, é 
incentivada entre os estudantes. 
 
 
Segundo (SHIJIAN, SHOUQIAN, YUNHE, 2005) as formas tradicionais de 
aprendizagem incluem a leitura da teoria e realização de tarefas que o professor 
definiu. 
 
Nesse processo, porém os estudantes podem ter alguns problemas para 
entender partes da teoria ou realizar uma tarefa por conta própria. Através da 
aprendizagem colaborativa os estudantes podem trabalhar em conjunto para um 
objetivo comum. Desta forma os estudantes estão aprendendo juntos e podem 
aumentar a consciência dos colegas sobre um assunto (FU-CHIEN, TIEN-HSIN, CHIA-
LIANG, 2006). 
 
O ensino de POO pode ocorrer com base em método e técnicas de ensino e 
aprendizagem colaborativos. Essa abordagem é conhecida como Aprendizagem 
Colaborativa apoiada por computador (CSCL), tem como objetivo apoiar e mediar 
grupos de estudantes na aquisição de conhecimento do conteúdo de um domínio 
específico, por meio da computação. Computação para suporte a aprendizagem cria 
novas possibilidades de aprendizagem entre estudantes, o que pode beneficiar no uso 
na tutoria de uma linguagem (KESSLER E BIKOWSKI, 2010). 
 
Ambientes de ensino e aprendizagem colaborativa são usados para promover a 
mediação e a colaboração entre os estudantes e aprimorar suas habilidades 
desencadeadas dentro de um grupo ou aprender em um ambiente tecnológico virtual. 
Os estudantes são capazes de unir-se ativamente na construção do conhecimento, 
47 
 
 
ajudando na criação, intercâmbio e análise de informações e interações durante o 
aprendizado do grupo em programação orientada a objeto. Alguns benefícios 
particulares de colaboração incluem a resolução de problemas (BAGHAEI et al., 2006): 
 
 Incentivar os estudantes a verbalizar o seu pensamento; 
 Incentivar os estudantes a trabalhar juntos; 
 Fazer perguntas; 
 Explicar e justificar as suas opiniões; 
 Estudantes são responsáveis pela sua própria aprendizagem e aumentam 
a possibilidade de resolver ou examinar os problemas de variadas 
maneiras. 
 
O ensino colaborativo tem um potencial para melhorar o pensamento crítico, 
pensamento criativo, o pensamento de elaboração, comunicação social e habilidades 
como liderança, tomada de decisão, construção da confiança e gestão de conflitos. Em 
anos de pesquisas para o desenvolvimento de sistemas personalizados, tem 
influenciado a área de software educacional (TSIRIGA E VIRVOU, 2004), para o 
desenvolvimento aplicativos educacionais colaborativos. 
2.5.2 Modelo de Ensino Colaborativo de POO baseado na Web 
 
Programação Orientada a Objetos é uma das disciplinas mais importantes do 
curso de ciência da computação, que tem uma considerável dificuldade não só na 
aprendizagem, mas também no ensino. Um Modelo de ensino colaborativo baseado na 
web é uma alternativa para melhorar o aprendizado. 
 
Segundo (ANQUAN, LI, JIHUA, JIE, 2012), foi realizado pesquisas baseada no 
Modelo Web de Aprendizagem Colaborativa e Project-based Learning (PBL), 
aprendizado baseado em projeto, e conduzidos práticas de ensino em programação 
orientada a objeto, baseado na web colaborativa. 
 
O modelo de ensino e o Modelo de projeto baseado no aprendizado usam 
informações de suporte a tecnologia do modelo PBL para auxiliar o processo de ensino 
e aprendizagem e ajudar os estudantes a melhorar a resolução de problemas e a 
capacidade de análise. 
 
48 
 
 
Para (ANQUAN et al., 2012), WBCL (Modelo de Ensino Baseado na Web). 
WBCL é o processo de utilização da rede de computadores e tecnologia multimídia 
para proporcionar que diferentes estudantes interajam e cooperem com o mesmo 
conteúdo de aprendizagem, a fim de tornar que os estudantes tenham uma 
compreensão mais profunda e melhor domínio dos cursos. 
 
O WBCL proporciona a mediação para construir uma aprendizagem 
colaborativa, um ambiente com base na rede de computadores para fazer professores 
e os estudantes, conduzir aprendizagem colaborativa, sobre a base de discussão, 
cooperação e comunicação. 
 
A interface multimídia didática de programação orientada a objeto, como 
mostrado na Figura 14. Oferece uma riqueza de recursos pedagógicos. Para reforçar o 
espírito de colaboração entre os estudantes,facilitar a comunicação entre professores 
e estudantes, existe o fórum de aprendizagem colaborativa do curso de programação 
orientada a objeto com interface rápida e amigável. O fórum adotou a tecnologia de 
páginas dinâmicas para a construção do quadro principal. O site é implementado no 
Modelo Web baseado na Aprendizagem Colaborativa. A Figura 14 ilustra a interface 
multimídia didática de programação orientada a objeto. 
 
Figura 14 - A interface multimídia didática de programação orientada a objeto. 
 
 
 
Portanto, segundo (ANQUAN, LI, JIHUA, JIE, 2012), através de quase três 
anos de reforma no ensino, os estudantes tem notável melhoria na análise de projeto 
de software e alcançado o objetivo do ensino do curso de programação orientada a 
49 
 
 
objeto. A pesquisa mostra que a abordagem de ensino colaborativa é popular entre os 
estudantes. Os resultados estão melhorando, por exemplo rma e 
, ganhou o segundo lugar no prémio do 
Ensino Excelente em Jiangxi Normal University, em 2009. 
2.5.3 Um sistema de Groupware para Apoiar a POO Colaborativa 
 
COLLECE Compilation (edição colaborativa, e execução de programas) 
permite aos usuários editar um programa ou fragmento de código, compilá-lo e 
executá-lo de forma colaborativa. Até agora, as linguagens apoiadas são Java e C 
(BRAVO et al., 2012a). O que proporciona o ensino colaborativo de programação 
orientada a objeto através da linguagem Java. 
 
Como o sistema é usado principalmente para fins de ensino-aprendizagem, 
dois atores diferentes são reconhecidos: professor e estudante. O professor define as 
sessões de trabalho e organiza os usuários participantes usando ferramentas de 
gestão (BRAVO et al., 2012a). Uma sessão é definida por meio de um nome, um tipo, 
um arquivo contendo a formulação do problema a ser resolvido e um calendário em 
que a sessão tem de ser realizada. A formulação do problema inclui uma descrição 
textual dos objetivos, requisitos e restrições que devem ser preenchidas com a criação 
de um programa. Quando os estudantes acessam o sistema, a ferramenta de 
gerenciamento de sessão é aberta, mostrando uma lista com as sessões disponíveis. 
Algumas delas são públicas e outras são privadas. Qualquer usuário pode acessar uma 
sessão pública, que é necessário para ser um membro para acessar sessões privadas. 
 
Quando uma sessão é acessada no horário programado, o COLLECE abre um 
espaço de trabalho. A fim de projetá-lo, tomamos o modelo semiestruturado para a 
colaboração na resolução síncrona proposto por (BRAVO et al., 2006b) como uma 
base. Este modelo propõe scripting (protocolos de colaboração) (WESSNER et al., 
1999) para estruturar a tarefas de alto nível, a perspectiva linguagem / ação (Winograd, 
1988) para expressar e categorizar as ações de coordenação dos usuários, e 
estruturação flexível (LUND et al., 1996) para a comunicação entre usuários. A Figura 
15 ilustra a Interface do COLLECE. 
 
 
50 
 
 
Figura 15 - Interface do COLLECE. 
 
 
A fim de realizar as tarefas de programação orientada a objeto, uma 
colaboração explícita através protocolo deve ser seguido. Primeiro, os estudantes 
criam uma programa usando o editor colaborativo, Figura 15(1); após o que eles são 
capazes de compilar o programa, recebendo uma lista de erros compilação Figura 
15(2); validação da edição do código na Figura 15(3); controle de compilação por 
usuário, Figura 15(4); execução do código, Figura 15(5); semáforo, Figura 15(6), 
usuários do código fonte, Figura 15(7); (Figura 15 a, d, g e j), elementos como 
retângulos e rótulos para destacar o usuário e mostrar algumas informações; retângulo 
colorido desenhado em torno da linha do código fonte (Figura 15 b); listas de interações 
(Figura 15 e). 
 
Finalmente, eles podem executar o programa. Um programa compilado está 
disponível. Iterações são possíveis entre estas três tarefas. No entanto, apesar deste 
roteiro, os estudantes são livre para tomar suas próprias decisões sobre quando editar, 
compilar e executar, bem como para decidir quem é responsável por cada tarefa. 
 
51 
 
 
O sistema COLLECE, trabalha com ensino de programação para professores 
na concepção participativa da interface do usuário em que vários estudantes de uma 
turma podem colaborar na escrita de uma classe Java, por exemplo, implementando de 
forma participativa a programação orientada a objeto e observando o resultado da 
execução em conjunto. Além de programar os participantes podem estabelecer diálogo 
síncrono entre si, através de uma conversa estruturada, o que torna o estudante parte 
integrante de um grupo. 
2.5.4 Ferramenta Colaborativa no Ensino de POO 
 
Computer Supported Aprendizagem Colaborativa (CSCL) Suporte do 
Computador na Aprendizagem Colaborativa tem como objetivo apoiar grupos de 
estudantes na aquisição de conhecimento do conteúdo em um domínio específico, por 
meio de computadores. O suporte de Computadores na aprendizagem cria novas 
possibilidades de aprendizagem entre estudantes, o que pode beneficiar o uso de 
tutoria em uma linguagem (KESSLER, BIKOWSKI, 2010). 
 
Ambientes CSCL promovem a colaboração entre os estudantes e aprimora 
suas habilidades, por aprendizagem dentro um grupo ou por aprender em um ambiente 
rico em tecnologia (ENGELMANN et al., 2009). 
 
Ensinar uma linguagem de programação orientada a objeto sempre foi uma 
tarefa difícil para os docentes, especialmente quando os estudantes são iniciantes na 
programação ou não possuem base matemática. As formas tradicionais de ensino 
incluem a leitura da teoria e a realização de tarefas definidas pelo professor. Nesse 
processo os estudantes podem ter alguns problemas para entender partes da teoria ou 
desenvolver uma tarefa por conta própria. 
 
Através da colaboração a aprendizagem os estudantes podem trabalhar em 
conjuntos para um objetivo em comum, desta forma estão aprendendo juntos e podem 
aumentar sua própria consciência e dos colegas sobre um assunto (FU-CHIEN et al., 
2006), (LUO, SUN, PAN, 2005). 
 
Os estudantes são capazes de juntar-se ativamente na construção do 
conhecimento, ajudando na criação, intercâmbio, análise das informações e interações 
52 
 
 
durante o aprendizado do grupo, o que facilita o trabalho do professor durante o 
processo de ensino de uma linguagem de programação orientada a objeto. Alguns 
benefícios particulares da colaboração incluem a resolução de problemas (BAGHAEI, 
et al, 2006): 
 
 Incentivar os estudantes a verbalizar seu pensamento; 
 Incentivar os estudantes a trabalhar em conjunto; 
 Fazer perguntas; 
 Explicar e justificar suas opiniões; 
 Cresce a responsabilidade dos estudantes sobre sua própria 
aprendizagem e aumentam a possibilidade de resolver ou 
examinar os problemas de uma variedade de maneiras. 
 
A aprendizagem colaborativa tem um potencial para melhorar o pensamento 
crítico, o pensamento de elaboração, comunicação social e habilidades sociais como 
liderança, tomada de decisão, construção de confiança, gestão de conflitos. (CHANG, 
CHEN, 2008). 
 
Para (VIRVOU, SIDIROPOULOS, 2012), o Sistema de Tutoria Inteligente (STI), 
representa a teoria de programação orientada a objeto na linguagem Python, o modelo 
do estudante o usuário baseado em seu conhecimentos e habilidades sobre a teoria 
que está sendo ensinada, o Modelo de Ensino consiste nas regras e métodos que são 
utilizados para exibir o conteúdo adequado a cada usuário e, finalmente, a interface do 
usuário consiste na camada de apresentação para a interação com o sistema. 
 
O sistema suporta várias ferramentas colaborativas que ajudam estudantes 
acooperar na aprendizagem e resolução de problemas, como mostra a Figura 16 o 
processo de colaboração, o estudante pode colaborar com outros colegas em 
resolução de problemas de programação orientada a objeto. 
 
53 
 
 
Figura 16 - Processo de Colaboração. 
 
 
 
Funcionalidades da ferramenta de colaboraçãoem grupo para o ensino de 
programação orientada a objeto para a linguagem Python: 
 
 Publicação do código: Quando um estudante termina a avaliação do 
exame que pode publicar o seu código para que seus colegas de classe 
observem e comentem sobre ele. Desta forma os estudantes podem 
compartilhar o código e ideias para uma codificação mais eficiente. Os 
estudantes são capazes de avaliar uma solução para que a melhor 
solução possa ser ilustrada como a mais eficaz e recomendada. 
 
 Tag Social: Os usuários têm a opção de marcar as aulas, exercícios e 
soluções. Este método tem um impacto positivo no estudante e no 
professor. Os estudantes podem usar essas tags para encontrar a teoria 
54 
 
 
semelhante ou exercícios e professor pode usar as tags para entender o 
que os estudantes estão pensando sobre uma certa lição. Por exemplo, 
uma lição que o professor designa para os estudantes novatos e está 
sendo marcada como muito difícil por parte dos estudantes 
aparentemente significa que ele precisa ser repensada ou atribuída aos 
estudantes que são mais avançados na disciplina; 
 
 Formação de Grupo: Existem três métodos de criação grupos. O 
primeiro é o mais comum e amplamente usado onde o professor atribui 
um grupo de trabalho. O segundo é comum entre os estudantes, onde 
eles têm a capacidade de criar o seu próprio grupo baseado 
principalmente amizade. O terceiro, que o sistema usa por padrão, é 
realizado automaticamente pelo sistema de acordo com os dados que 
foram coletados sobre o estudante. O sistema coleta dados cognitivo 
dos estudantes, nível, atividade social e atribui-los a um grupo. 
 
O sistema contém um componente que possui informações sobre cada 
estudante e promove o aprendizado individualizado, o que auxilia o professor em seu 
processo de ensino. Além disso, a colaboração é bem sucedida pela publicação e 
revisão de código entre os estudantes através de tags, demonstrando a dificuldade de 
uma lição ou exercício, bem como a formação de grupos entre dos estudantes. 
 
Através da colaboração de docentes e estudantes podem se beneficiar de seus 
pares e conseguir uma melhor compreensão dos conceitos de programação orientada 
a objeto. Um benefício importante é que os estudantes podem melhorar seu nível de 
conhecimento através da interação com outras pessoas de maneira competitiva. 
2.5.5 Ensino Colaborativo de POO por CRC Card 
 
No ensino a distância é mais difícil ensinar habilidades. Particularmente análise 
de software, que normalmente é realizada com uma sincronizada atividade de grupo. 
Atividade síncrona é um dos benefícios do ensino a distância, a capacidade de 
aprender em um horário e lugar que seja conveniente para o estudante. A abordagem 
assíncrona permite o ensino de projeto orientado a objeto utilizando o método CRC 
card. O método CRC card requer grupos de estudantes para um projeto orientado a 
55 
 
 
objeto. A abordagem é concebida como um recurso de design colaborativo através da 
internet. 
 
As universidades cada vez mais se deslocam para oferecer cursos a distância, 
para isso é necessário que haja uma análise cuidadosa de como facilitar o 
aprendizado, que é centrado em torno de competências e práticas de grupo, em vez de 
conhecimento individual. No ensino a distância e mais difícil de ensinar habilidades que 
os fatos. Os fatos podem ser facilmente obtidos através da internet ou de materiais 
impressos. Habilidades requer alguma prática, e essa prática tem que ser monitorada e 
corrigida pelo feedback em tempo hábil (DOUGLAS,1999). 
 
No grupo é difícil gerir a atividade à distância, e qualquer requisito para a 
atividade síncrona é um dos principais benefícios do ensino a distancia, a capacidade 
de aprender em um lugar e tempo que seja conveniente para o estudante. 
 
Este problema foi enfrentado no projeto de curso de educação à distância para 
ensinar análise e projeto orientado a objetos que teve inicio na primavera de 2000. O 
curso é parte de uma iniciativa de aprendizagem em larga escala a distância sendo 
disponibilizado pela Universidade do Estado da Florida (DOUGLAS,1999). 
 
A classe Responsabilidade Colaboração consiste no método CRC card 
(BELLIN, 1997). Tem como objetivo facilitar o pensamento sobre as classes no 
desenvolvimento orientado a objeto. No desenvolvimento orientado a objeto a principal 
preocupação é identificar as classes dentro de um domínio e as interações que 
ocorrem entre estas classes. O método permite que um grupo de desenvolvedores de 
objetos interaja com o objeto para desenvolver um modelo de uma aplicação orientada 
a objeto. 
 
O método utiliza de cartões de papel como ilustrado na Figura 17. Os cartões 
são de 4 x 6 polegadas, nas quais é gravado o nome da classe, qualquer superclasse a 
que pertence. O conjunto de responsabilidade que tem outras classes colabora com o 
fim de cumprir sua responsabilidade. 
 
56 
 
 
Figura 17 - Exemplo de CRC card. 
 
 
Por exemplo, se estamos projetando um sistema orientado a objeto para 
gerenciamento de uma conferência, o que é perceptível que tenha uma super classe de 
trabalhos. Esta superclasse pode ter subclasses para papeis de curta responsabilidade. 
A classe de papel pode ter uma pouca responsabilidade para indicar o estado de 
aceitação de um determinado papel. A fim de cumprir a responsabilidade da classe que 
precisa se comunicar com uma classe que representa os indicadores de papel que tem 
a responsabilidade de determinar se um artigo é aceito ou rejeitado. 
 
Uma sessão CRC card começa usando os atores e objetos principais 
identificados através da análise. Estes seriam escritos em cartões e distribuídos no 
grupo participante. É responsabilidade de cada individuo usar os cartões para as aulas. 
Eles devem atualizar as informações contidas no cartão baseado no que ocorre na 
interação do grupo. Uma boa sessão irá gerar pensamento conceitual em torno dos 
cartões (DOUGLAS,1999). No percurso de cartão para nova sessão pode ser criado e 
cartões existentes podem ser modificados ou eliminados. Cartões descartados são 
colocados numa caixa, por vezes, podem ser reintegrados. 
 
Para a técnica on-line de colaboração com CRC card é importante que os 
estudantes ganhem experiência prática em trabalhar em grupo para problemas menos 
complexos. Para esta parte do aprendizado, os estudantes serão distribuídos em 
grupos pequenos que trabalha em um problema do projeto. Eles vão realizar uma 
sessão de CRC card através da internet usando um sistema web. Isto terá uma visão 
do espaço do trabalho, com uma interface semelhante à de simulação. No entanto, ao 
contrário do sistema independente com seus participantes simulados haverá menos 
57 
 
 
restrições sobre a área do problema ou como o desenho pode ser alterado. Cada grupo 
de estudantes terá seu próprio quadro na web. 
 
Eles terão de criar cartões e publica-los, para outro no grupo poderem ter 
acesso. Uma sessão CRC card será então iniciada com discussões sendo realizada de 
forma assíncrona sobre o número de nodos. 
 
Segundo (LIBERTY, 1999), descreve a investigação de protótipos que 
fornecem uma base para o desenvolvimento de uma ferramenta de apoio a internet 
para prática baseada no CRC card. 
 
No trabalho de (DOUGLAS,1999), a investigação foi inicialmente realizada 
através de mensagens de texto de sistemas. A conclusão foi que o usos de interface 
gráfica foi necessário, a fim de reduzir a carga cognitiva dos estudantes de fazer a 
tarefa. Portanto, para alcançar as diversas regiões mais distantes e de difícil acesso, 
cursos de ensino a distância estão se tornando cada vez mais popular em muitas 
universidades. São necessárias soluções para o problema para proporcionar prática de 
experiência colaborativa de ensino à distância para estudantes que não tem a 
possibilidade de frequentar um curso presencial. O simulador CRC card aplicado na 
web é uma solução possível

Continue navegando