Sie sind auf Seite 1von 6

PraticOO Mtodo para o Aprendizado de Orientao a Objetos por Estudantes de

Engenharia


Carlos Henrique Rodrigues Cardoso
1




1
Carlos Henrique Rodrigues Cardoso, Inatel - Instituto Nacional de Telecomunicaes ICC Inatel Competence Center - DCOM - Departamento de
Computao, Av. Joo de Camargo, 510, 37.540-000, Santa Rita do Sapuca, MG, Brazil, caque@inatel.br
Abstract The Oriented-Object languages, such as Java,
C++ or C# ( read C Sharp ) have been growing fast, in
particular, at the solutions generation for
telecommunications and electronics. The learning of the
Oriented-Object techniques needs a high abstraction level .
Therefore, the students, most of the times, have great
difficulty in learning and using these techniques in a
consistent way and how to apply them in the projects
development. This paper shows a practical method of
teaching the electrical engineering students the Oriented-
Object techniques with the focus on Electronics and
Telecommunications. The purpose of PraticOO method is to
permit the migration from structured paradigm to object
oriented paradigm.

Index Terms Object-Oriented Paradigms, Object-
Oriented Programming, Structured Paradigms, Java.

Resumo O uso de linguagens Orientadas a Objetos, como
Java, C++ ou C# (l-se C Sharp) vem crescendo
rapidamente, em particular na gerao de solues para
telecomunicaes e eletrnica. O aprendizado das tcnicas
de Orientao a Objetos necessita de um alto grau de
abstrao. Em virtude disso, os alunos, na maioria das vezes,
tm grande dificuldade de aprender e utilizar essas tcnicas
de forma consistente, bem como aplic-las no
desenvolvimento de projetos. Este artigo apresenta um
mtodo prtico de ensino das tcnicas de Orientao a
Objetos para alunos de engenharia eltrica com nfase em
Eletrnica e Telecomunicaes. A inteno do mtodo
PraticOO permitir uma migrao do paradigma estruturado
para o orientado a objetos.
Termos de ndice Paradigmas de Orientao a Objetos,
Programao Orientada a Objetos, Paradigma Estruturado,
Java.

INTRODUO
Muita pesquisa tem sido feita nos ltimos anos no sentido de
encontrar caminhos que facilitem o aprendizado das tcnicas
de Orientao a Objetos. Em [1] apresentado um conjunto
de orientaes para o ensino de Orientao a Objetos. Estas
orientaes foram seguidas na criao do mtodo PraticOO.
Em [2] so apresentadas as justificativas da escolha da
linguagem Java como sendo a que rene as melhores
caractersticas para o aprendizado de orientao a objetos.
Esta pesquisa est sendo conduzida no sentido de apresentar
tcnicas pedaggicas que facilitem o aprendizado de
Orientao a Objetos por alunos de engenharia eletrnica e
de telecomunicaes, que em funo da tecnologia devem
ser capazes de desenvolver projetos de software tanto
Estruturados como Orientados a Objetos, aproveitando o
mximo de cada tcnica quando apropriado. Os alunos que
utilizaram o mtodo PraticOO so alunos que obtiveram
formao em desenvolvimento de projetos estruturados
utilizando a linguagem C, muito comum em equipamentos
eletrnicos. Em [3] colocado o problema da contaminao
de paradigmas que ocorre quando diferentes metodologias
so misturadas ou combinadas e os benefcios de uma ou
outra metodologia so perdidos. Porm, em Engenharia
Eletrnica e de Telecomunicaes o aluno deve conhecer as
duas metodologias - Estruturada e Orientada a Objetos - e
deve utiliz-las adequadamente. No possvel determinar
qual a melhor metodologia. Este trabalho de pesquisa se
iniciou em 2002, no curso de Engenharia Eltrica do Inatel,
na disciplina de Computao III.
Introduz-se no prximo tpico as principais dificuldades
encontradas no aprendizado de Orientao a Objetos
apresentadas em outras pesquisas e confirmadas durante o
desenvolvimento da pesquisa. Em seguida apresenta-se o
mtodo PraticOO. Ao final do artigo apresentam-se o tpico
com as concluses e trabalhos futuros, e finalmente
apresentam-se as referncias bibliogrficas utilizadas no
desenvolvimento da pesquisa.
Em [4] destaca-se a importncia do uso de uma
ferramenta adequada para o ensino de orientao a objetos.
Nesta pesquisa foi utilizada a ferramenta Eclipse
(www.eclipse.org) em conjunto com o plugin EclipseUML
(www.omondo.com) por serem gratuitas, o que permite o
uso no laboratrio ou em casa e pela facilidade no uso. O
Eclipse permite ainda a incluso de outros plugins, o que o
torna uma ferramenta extremamente verstil. O Eclipse
possui ainda vrias caractersticas do BlueJ[4], com a
vantagem de ser tambm uma ferramenta de uso
profissional. O uso de uma ferramenta fundamental para a
compreenso da orientao a objetos por permitir a
visualizao de diagramas que orientam o uso das tcnicas.
PRATICOO TCNICAS DE ENSINO DE
ORIENTAO A OBJETOS
Problemas e solues j foram experimentadas
indicando caminhos para o aprendizado de Java e
orientada a objeto[1], e uma das concluses o ensino
dos conceitos de objeto antes de conhecer uma
linguagem orientada a objetos[5]. O mtodo PraticOO foi
desenvolvido pensando em alunos de engenharia
eletrnica e de telecomunicaes que j possuem
conhecimento de programao estruturada, no caso
utilizando C. A base da metodologia consiste em
apresentar um projeto no trivial do ponto de vista de
orientao a objetos, mas que se inicie de um projeto
estruturado e v a cada fase da migrao acrescentando
as caractersticas da orientao a objeto, justificando
assim as suas vantagens, apresentando quais tipos de
projeto se beneficiam de uma ou outra metodologia. A
meta da migrao atingir um projeto orientado a
objetos utilizando o padro Model-View-Control
(MVC)[6]. O encapsulamento feito, inicialmente,
isolando-se a parte visual do projeto; em seguida
definido o modelo e, finalmente, introduzida a classe
de controle. A apresentao da Orientao a Objetos
feita sempre utilizando cdigo em Java; as classes so
criadas e o sistema deve ser executado desde a primeira
verso. importante ressaltar que cada fase
desenvolvida em cdigo e apresentada no diagrama de
classes. Em um determinado momento esta seqncia
invertida, ou seja, primeiro o diagrama e em seguida o
cdigo, uma vez que esta a forma de desenvolver
orientado a objetos. A seguir so apresentados os passos
do mtodo:
1. Escolha o projeto que ser desenvolvido e d
um nome a esse projeto. Para alunos de
engenharia eletrnica/telecomunicaes so
utilizados projetos de linha de comando porque
o uso de interfaces grficas tira o foco da
orientao a objetos[1]. Deve-se tambm
aproveitar para apresentar a orientao no
problema (usado em projetos orientados a
objetos) ao invs da orientao na soluo
(usado em projetos estruturados)[3].
2. Desenvolva junto com os alunos a verso
estruturada do projeto. interessante neste
caso utilizar do conhecimento existente, como
por exemplo a construo de fluxogramas.
Todo o cdigo estar em uma nica classe que
possui o nome do projeto. Alm do mtodo
main, interessante criar mtodos que faam
escrita em vdeo e principalmente leitura de
teclado. A leitura de teclado em Java bastante
complexa; isso deve ser apresentado sem se
detalhar o uso de classes e objetos.
3. Crie classes com mtodos estticos. O
gerenciamento de memria no um conceito
muito utilizado em projetos estruturados. Em C
seria necessrio utilizar as funes malloc para
alocar memria e free para retornar a memria
alocada. Em linguagens orientadas a objeto os
objetos so criados e destrudos todo o tempo.
importante definir uma classe esttica que
receber os mtodos de leitura de teclado e
escrita na tela. No nosso caso esta classe
chamada de Console.
4. Introduza o conceito de criao de objetos com
o operador new. O uso racional da memria
disponvel no sistema muito crtico em
sistemas embarcados em eletrnica ou
telecomunicaes. importante que o aluno
compreenda a necessidade de racionalizar a
utilizao da memria para que os poucos
recursos possam ser aproveitados ao mximo.
O aluno deve desenvolver um projeto como
exerccio para a fixao desta teoria.
5. Introduza os relacionamentos de associao e
dependncia. At este momento, as classes
estavam isoladas. O relacionamento existia,
porm no era apresentado no diagrama. Isto
deve ser feito para que os alunos compreendam
que os objetos existem para atender a um outro
objeto. Nesta fase deve-se iniciar o refactoring
do projeto introduzindo classes que manipulem
a entrada e a sada de informaes do projeto.
interessante que o projeto contemple
relacionamentos 1 para 1 e/ou 1 para muitos.
Os alunos devem desenvolver um exerccio
para a fixao da teoria.
6. Distribua as responsabilidades utilizando
herana. importante que o projeto contemple
a possibilidade de herana. Apesar do uso de
alocao dinmica de objetos, possvel que
isto no esteja trazendo grandes vantagens ao
sistema em funo do acmulo de
responsabilidade das classes. O uso adequado
dos recursos utilizado didaticamente para
auxiliar nas justificativas do uso da
metodologia orientada a objetos. Os alunos
devem desenvolver um exerccio para a fixao
da teoria.
7. Isole o controle, ou seja, a distribuio de
aes. As classes de visualizao e modelo
(entidades) so mais fceis de compreender.
Porm, neste momento, algum mtodo estar
fazendo o controle e pode ser isolado em uma
classe. Este o momento para se definir o
padro e apresentar as vantagens de se utilizar
padres para desenvolvimento de projetos
orientados a objetos.
8. Apresente o conceito de polimorfismo. Este
conceito importante para que os alunos
possam compreender a fora da orientao a
objetos, mesmo que nem sempre seja
necessria a sua utilizao.
9. Crie pacotes que definam o padro MVC. O
uso de pacotes muito utilizado na linguagem
Java e oferece um novo nvel de abstrao. A
ferramenta Eclipse permite o uso de
refactoring de uma forma totalmente
automtica. Este recurso agiliza a
demonstrao do conceito.
Faa sempre uma anlise do projeto em desenvolvimento.
importante estar sempre mostrando para os alunos de onde o
projeto partiu e o porqu de cada passo. Isso ir fortalecer os
conceitos de orientao a objetos sem interferir nos
conceitos de programao estruturada.
APLICAO DO MTODO PRATICOO
Os alunos de primeiro ano em engenharia eletrnica e/ou
telecomunicaes no possuem ainda conhecimentos
especficos da rea que possam ser utilizados como exemplo
de projeto. Deve-se escolher projetos que sejam de
conhecimento dos alunos, utilizando por exemplo o
conhecimento de fsica ou matemtica. Um exemplo
interessante uma calculadora que pode ser iniciada com
somente 4 operaes e evoluir para uma calculadora
cientfica. Esta evoluo permite o ensino do processo de
desenvolvimento incremental diferente do processo cascata
utilizado para desenvolver estruturado[3]. Outros exemplos
de projeto so clculo de trajetria, conversor de
temperatura, lanamento de projteis, agenda eletrnica,
entre outros.
Na figura 1 apresentado o diagrama de classes com
uma nica classe e com um nico mtodo - o main, que faz
as equaes. Se os alunos conhecem lgica, a compreenso
do funcionamento deste cdigo bastante simples. Neste
momento deve-se analisar os problemas de evoluo do
sistema, a definio da arquitetura, manuteno, etc., e
permitir a introduo de novos conceitos. Os mtodos cin e
cout fazem respectivamente a leitura de teclado e a
apresentao no display.

FIGURA. 1
CALCULADORA NO ORIENTADA A OBJETOS.

A figura 2 apresenta o projeto com duas novas classes: a
classe Console, que responsvel pela leitura do teclado e
escrita na tela (veja que os nomes dos mtodos fazem
relao as funes cin e cout de C++), e a classe Operao
que recebe os parmetros e executa a operao solicitada.
Note que todos os mtodos so estticos (esto sublinhados).

FIGURA. 2
CALCULADORA ORIENTADA A OBJETOS COM MTODOS ESTTICOS.

A figura 3 apresenta o projeto com as mesmas classes;
porm, a classe Operao passou a ser dinmica e precisar
ser instanciada com o operador new.




FIGURA. 3
CALCULADORA ORIENTADA A OBJETOS COM MTODOS DINMICOS.


A figura 4 apresenta a informao de relacionamento e
permite apresentar os conceitos de associao e
dependncia.



FIGURA. 4
CALCULADORA COM RELACIONAMENTO DE ASSOCIAO E DEPENDNCIA.

Na figura 5, o projeto foi remodelado, diminuindo a
responsabilidade da classe Operao e criando uma classe
para cada operao diferente. A classe Operao passou a
ser abstrata e o mtodo calcular tambm se tornou abstrato,
sendo necessrio que cada classe filha seja responsvel pela
execuo do mtodo. Neste momento possvel tratar de
polimorfismo dinmico e esttico e introduzir a UML no
projeto de software[7].

FIGURA. 5
CALCULADORA COM RELACIONAMENTO DE HERANA.

Na figura 6, o projeto foi remodelado mais uma vez
porque a responsabilidade do controle das informaes havia
ficado com a classe CalculadoraMenu. Neste modelo ento
as classes CalculadoraMenu e a Console fazem parte do
pacote View; a classe Controle corresponde ao Control e as
demais classes correspondem a Model.

FIGURA. 6
CALCULADORA UTILIZANDO O PATTERN MVC.

CONCLUSES
O aprendizado de Orientao a Objetos tem se tornado um
desafio para professores e alunos. Por se tratar de um
raciocnio muito abstrato, torna-se difcil a compreenso e a
justificativa clara da sua utilizao para os alunos. Porm,
com o aumento da complexidade e distribuio dos sistemas,
torna-se premente o uso de tcnicas, em particular a
orientao a objetos, que permitam o uso das caractersticas
da engenharia com anlise, projeto, acompanhamento em
desenvolvimento de software.
O mtodo apresentado neste artigo foi aplicado em 65
alunos do primeiro ano de graduao em Engenharia Eltrica
que no haviam tido contato com Orientao a Objetos ou
com a linguagem Java. Os resultados obtidos mostraram que
possvel introduzir novas tcnicas em grupos que j
conhecem programao estruturada/procedural utilizando-se
mtodos prticos que faam a conexo entre o conhecimento
j dominado e novas tcnicas a serem aprendidas.
Os trabalhos futuros na utilizao do mtodo
incluem a incorporao de atividades de laboratrio que
incentivem ao exerccio prtico do mtodo em projetos
diferentes, em particular em projetos em Java para aparelhos
de celular (J2ME Java 2 Micro Edition), nos quais as
condies de baixos recursos de memria e processamento
so prximos da realidade enfrentada no desenvolvimento.
Alm disso pretende-se realizar experimentos com a
linguagem C++ e comparar as dificuldades no aprendizado
utilizando uma linguagem no to bem comportada como
Java.
REFERNCIAS
[1] Kolling, M., Rosenberg, J., Guidelines for Teaching Object
Orientation with Java, published in The Proceedings of the 6
th

conference on Information Technology in Computer Science
Education (ITiCSE ,2002), Canterbury, 2001.
[2] Blumenstein, M. Experience in Teaching Object-Oriented Concepts
to First Year Students with Diverse Backgrounds, Proceedings of the
International Conference on Information Technology; Coding and
Computing(ITCC04), IEEE, 2004
[3] Gerber, A., Cloete, E., Teaching Objected-oriented Systems
Development to Structurally Exposed Students, Proceeding of the
17
th
Conference on Software Engineering Education and Training
(CSEET04), IEEE, 2004
[4] Kolling, M., Quig, B., Patterson, A. Rosenbeg, J., The BlueJ system
and pedagogy, published in the Journal of Computer Science
Education, Special Issue o Learning and Teaching Object Technology,
Vol 13, No. 14, December 2003.
[5] Blumenstein, M. Strategies for Improving a Java-based, First Year
Programming Course, Proceedings of the International Conference
on Computers in Education(ICCE02) IEEE,2002
[6] Gama, Erich et. al., Design Patterns, Addison Wesley Profesional
Comuting Series, 1994
[7] Cardoso, Caique (pseudnimo de Cardoso, Carlos Henrique
Rodrigues) ,UML na Prtica Do Problema ao Sistema, Cincia
Moderna, 2003.

Das könnte Ihnen auch gefallen