Avaliação da Metodologia de Isaias Camilo Boratti para o ensino de Programação Orientada a Objetos

Embed Size (px)

DESCRIPTION

Documento contendo minha avaliação da metodologia proposta por Boratti para o ensino de programação Orientada a Objetos.Este material faz parte do meu TCC sobre ensino de POO com o uso de Jogos.

Citation preview

  • 1. Avaliao da metodologia de Programao Orientada a Objetos em Java de Isaias Camilo BorattiResumoO presente documento apresenta um resumo da metodologia para ensino de programao orientadaa objetos adotada por Isaias Camilo Boratti. Primeiro apresentada uma tabela apresnetado osexemplos e conceitos trabalhos na metodologia e a seguir uma anlise dos pontos fortes e fracos apartir daIntroduoEsta metodologia foi vivenciada pelo autor deste trabalho no primeiro semestre de 2007, no cursode Sistemas de Informao da Universidade Federal de Santa Catarina, na disciplina deProgramao Orientada a Objetos I.A disciplina foi ministrada pelo prprio professor Isaias Camilo Boratti que, no mesmo ano, emagosto, publicou o livro que documenta a metodologia intitulado Programao Orientada a Objetosem Java.O livro est organizado em oito captulos conforme tabela abaixo:Captulo Exemplos de Projetos Desenvolvidos Principais Conceitos abordadosCaptulo 1 Nenhum projeto desenvolvidoRelao POO com o mundo real;Processo de Abstrao;Operaes de Abstrao.Captulo 2 Nenhum projeto desenvolvidoObjetos e Classes;Representao visual de objetos eclasses;Linguagem Java;Captulo 3 Imprimir na tela uma linha de texto;Mtodo main; Calcular a soma de dois nmeros;Identificadores; Escrever um programa que determine a rea de Tipagem de valores; um crculo; Variveis;Criao de objetos;String / sequncia de caracteres;Declarao de atributos;Declarao de mtodos;Construtores;Parmetros e Argumentos;Compilao Java;

2. Processo de modelagem de um software a partir de um problema;Captulo 4 Escrever uma aplicao que determine a Implementao de mtodos; distncia entre dois pontos; Mtodos de acesso e mtodos modificadores; Implementao de construtores; Escopo; Comentrios; Parmetros; Implementao de objetos / referncia para um espao de memria; Tipagem de valores; Atribuio; Converso explcita de tipo; Expresses aritmticas; Expresses Lgicas;Captulo 5 Escrever um programa que determine a idade Processos de repetio / loops; mdia de um grupo de pessoas; Processos de tomada de deciso. Escrever um programa que determine a mdia Ex: if, switch; de idade das pessoas do sexo masculino e Encapsulamento; tambm a mdia de idade das pessoas do sexo feminino de um grupo de pessoas;Modificadores de acesso; Classe Aluno;Palavra chave this; Classe Tringulo; Verificar se um nmero primo;Captulo 6 Desenvolver uma aplicao que faa uma Herana; anlise do desempenho de alunos em A palavra-chave super; determinada disciplina. A aplicao deve determinar, para cada um dos alunos, a suaReutilizao de cdigo; mdia final, juntamente com uma informao Sobreposio de mtodos; dizendo se o aluno foi aprovado ou no. Considerar que o aluno tenha realizado trs Polimorfismo; avaliaes, todas com o mesmo peso; Polimorfismo de mtodo; Em um determinado jogo de dados participam Sobrecarga de mtodos; dois jogadores. Cada jogador deve lanar o dado e computar para si os pontos obtidos. Ser Classes abstratas; considerado vencedor o jogador que atingir um total de 100 pontos ou mais. Sempre que no lanamento do dado, o jogador obter o valor 1 3. ou 6, este ter direito a um novo lanamento; Modelagem das classes Funcionario, Chefe e Apoio, sendo as duas ltimas subclasses de Funcionario; Modelagem da classe abstrata Contribuinte e das subclasses Fisico e Juridico.Captulo 7 Desenvolver uma aplicao que avalie o Arranjos / Arrays; desempenho de um grupo de estudantes emArrays Multidimensionais; determinada disciplina...que prev a realizao de vrios testes e uma prova final...a mdia dos Operaes com arrays. testes ter peso de 60% e a prova final peso de 40%.... Captulo 8 Objetos e Classes; Atributos de classe; Representao visual de objetos. Mtodos de classe; Mtodos da classe Math; Manipulao de Strings; Classe Character;Anlise Geral do MtodoA metodologia inicia demonstrando que o mundo real constitudo por entidades que interagementre si, e que tais entidades possuem caractersticas e funes, podendo tambm serem chamadasde objetos.Dessa forma, a construo de um software orientado a objetos passa pelo processo de identificaodos objetos envolvidos e de como estes objetos iro se relacionar entre si para a resoluo de umdeterminado problema.A partir disto, Boratti conduz o estudante pelo conceito de abstrao, que corresponde: ao processo utilizado na anlise de determinada situao, atravs da qual observa-se uma realidade, tendo-se por objetivo a determinao dos aspectos e fenmenos considerados essenciais, excluindo-se todos os aspectos considerados irrelevantes.E a partir de problemas simples como determinar o raio de um crculo demonstra como oproblema pode ser modelado em termos de objetos com caractersticas e funes interagindo entresi, modela as classes que representam estes objetos e apresenta sua respectiva implementao emJava.Os conceitos chave so demonstrados na medida em que so teis para resolver problemas maiscomplexos e sub sees complementares se encarregam de determinados aspectos da linguagemJava como operadores matemticos e detalhes de sintaxe, sem necessariamente, serem parte dasoluo dos problemas apresentados.Ao final de cada seo, apresentado um resumo dos conceitos e conhecimentos trabalhados, umalista de exerccios, geralmente extensa e abrangente, nos casos que apresentem contedo prtico,diversos exerccios resolvidos tambm so fornecidos.Por fim, ressalta-se que todos os cdigos construdos por Boratti so em lngua portuguesa e sempreque apresentam recursos novos, so comentados com descries detalhadas do seu comportamento. 4. Pontos FortesOperaes de AbstraoNo captulo introdutrio da metodologia, Boratti traz o conceito de operaes de abstrao quemostram como o ser humano mentaliza, organiza e modela o mundo ao seu redor. Estasoperaes so teis na medida em que definem uma taxionomia para as interaes entre asentidades no mundo real e podem ser representadas diretamente atravs de cdigo orientado aobjetos. Logo, o processo de analisar uma interao entre entidades no mundo real e o cdigo quedeve ser construdo para resolver problemas envolvendo esta interao pode ser maisadequadamente identificado.As Operaes de abstrao so demonstradas utilizando representaes parecidas com o utilizadopelo diagrama de classes da UML para as classes identificadas.Segue abaixo as quatro operaes de abstrao:Classificao / Instanciao: Classificao corresponde a determinar um conjunto decaractersticas de um determinado grupo de objetos de modo a classific-los em uma categoria ouclasse. Instanciao o processo inverso, no qual exemplos (instncias) de determinadas categoriasso ressaltados. Por exemplo a Classe Carro e Instncia carro vermelho do jos;Generalizao e Especializao: Generalizao ocorre quando determinamos caractersticascomuns a conjunto de classes e assim, criamos uma classe mais genrica. Especializao oinverso, quando a partir de uma classe genrica, determinamos classes especialistas. Por exemplo, aclasse genrica Mdico poderia ser especializada em Obstetra, Pediatra e Ornitolaringologista;Agregao / Decomposio: A Agregao caracterizada pela relao de composto por entreduas classes. A decomposio quando dizemos que um objeto parte de outro objeto. Porexemplo, a classe Carro composta por objetos da classe Motor. J um objeto da classe Motor parte de um objeto da classe Carro;Associao: Ocorre quando dois objetos possuem algum tipo de ligao entre si mas podem existirindependentemente do outro, Por exemplo, na relao que ocorre entre objetos das classes Professore Aluno.Processo de ModelagemBoratti coloca que o modelo de resoluo de um problema, ou seja, o software, o resultado de umprocesso de abstrao que em orientao a objetos corresponde identificao dos objetos com suascaractersticas e funes e a respectiva modelagem das suas classes.Ilustrao 1: A Construo do modelo. Fonte: Boratti 5. Representao Visual de ObjetosAps a identificao dos objetos necessrio represent-los visualmente pelo projetista de software.A visualizao proposta por Boratti utiliza um crculo para representar um objeto com um textodentro representando o identificador deste objeto. Quando um objeto composto por outros objetosestes so representados como crculos dentro do crculo maior. No caso de atributos simples de umobjeto como nmeros e textos, estes objetos so representados com um retngulo. Ilustrao 2: Representao Visual de Objetos. Fonte: Boratti. Adaptado por Kalu CaminhaImplementao de ObjetosRecordo, como estuante do professor Isaas Boratti, que fortaleceu muito o meu aprendizado nomomento que compreendi que cada objeto ocupava um espao na memria e que uma varivel, naverdade, era um apontador para este espao na memria.Este aspecto da implementao de objetos tratada na seo 4.8 onde Boratti coloca que aidentificao de um objeto constitui-se em uma posio na memria (portanto, uma varivel) quearmazena o endereo do espao de memria ocupado por aquele objeto.Para exemplificar este conceito o seguinte cdigo apresentado: Ponto umPonto, outroPonto; // Um ponto contm um atributo inteiro x e um y umPonto = new Ponto(); outroPonto = new Ponto(); outroPonto.redefina_se(2.0, 3.0); // este mtodo altera os valores de x e yE a partir do cdigo acima, utilizada uma adaptao da visualizao de objetos demonstrando queas variveis so apenas apontadores para os objetos: 6. Ilustrao 3: Implementao de Objetos. Fonte:Boratti. Adaptado por Kalu CaminhaRepresentao Visual de ArrayArranjos, como so chamados os tradicionais Arrays por Boratti so elementos que armazenamvrios valores. Para facilitar o ensino foi criado um modelo visual para o uso de arrays. Paraexemplificar o modelo usaremos o seguinte cdigo: int[] numeros = new int[8]; int cont = 2; numeros[1] = 34; numeros[cont] = 15; numeros[cont+1] = numeros[cont] 10;O cdigo acima apresentaria a seguinte representao visual:Ilustrao 4: Representao Visual de umArray. Fonte: Boratti. adaptado por KaluCaminhaPontos FracosIncio pelo mtodo main com Hello WorldAps os dois primeiros captulos de introduo, com uma explicao detalhada e abrangente sobreorientao a objetos e o processo de modelagem, o primeiro programa mostrado tem comoproblema Imprimir uma linha na tela e o seguinte cdigo-fonte: public class Programa1 { //Declarao do mtodo main public static void main(String[] parametro) { System.out.println(Primeiro Programa!); } 7. }O programa que resolve este problema no envolve a criao de nenhum objeto, e o nico mtodochamado um mtodo acessado atravs de um atributo esttico da classe System, usando notaode ponto.E isto feito dentro do mtodo main, um mtodo esttico que exige como parmetro um array destrings, contedos que somente sero trabalhado no captulo sete. evidente que esta abordagem se torna necessria na medida em que Boratti, por no adotarnenhuma ferramenta que suporte a execuo de cdigo sem a criao do mtodo main, no temsada a no ser iniciar por ele.Esta abordagem porm, no interessante pois a primeira poro de cdigo que o estudante enxerga algo absolutamente incompreensvel para ele, devido a grande quantidade de conceitos envolvidos(Kolling e Rosemberg).Primeiro o cdigo, depois o conceitoEm diversos exemplos, certas regras de sintaxe so apresentadas, cujos conceitos envolvidossomente so trabalhados em sees ou captulos posteriores.Um exemplo a primeira classe com a qual os alunos tem contato. A classe Crculo, apresentadacomo o terceiro trecho de cdigo com o qual os estudantes tem contato. public class Circulo { //Declarao do atributo protected double raio;//Declarao dos mtodospublic Circulo(){raio = 0.0;}public double forneceArea(){double area;area = 3.1415*raio*raio;return area;}public void recebaValorRaio(double vRaio){raio = vRaio;} }Esta classe apresenta mais de 10 conceitos: comentrios, declarao de atributos, tipagem devariveis, declarao de mtodo com retorno, declarao de mtodo sem retorno, declarao de umconstrutor, assinatura de classe, parmetros, atribuies, operaes matemticas e uso demodificadores de acesso.A maioria destes conceitos s sero trabalhados posteriormente, por exemplo, atribuies serodetalhadas no captulo 4 enquanto modificadores de acesso somente sero vistos no captulo 5.Percebe-se que esta abordagem tem como inteno demonstrar a modelagem completa de umaclasse adequadamente escrita para resolver um problema. Isto fica claro pelo uso de modificadoresde acesso desde o incio, com a inteno de evitar que estudantes declarem atributos como pblicos.Isto causa, porm, uma sobrecarga de conceitos apresentados sem a devida possibilidade doestudante experimentar cada um deles e suas consequncias para o programa, sem saber qual a 8. funo de cada palavra-chave.Mtodos estticos desde o incioPara complementar o exemplo do captulo 3 no qual preciso determinar a rea de um crculo apartir do seu raio, apresentada uma classe chamada Interface (que no tem nenhuma relao como conceito de interfaces em Java) responsvel por solicitar ao usurio um nmero que irrepresentar o raio do crculo.O principal mtodo desta classe chamado pegaValorRaio contm 4 linhas, conforme apresentadoabaixo: String valorLido; valorLido = JoptionPane.showImputDialog(Digite o raio: ); double valor = Double.parseDouble(valorLido); return valor; O problema deste mtodo que as principais instrues so mtodos estticos de classes especficosda biblioteca do Java. Isso nada ensina sobre orientao a objetos, sendo necessrios apenas paraque o programa seja minimamente interessante.Construes como esta so utilizadas em outros pontos como no captulo 4 com o uso do mtodosqrt da classe Math, responsvel por recuperar a raiz quadrada de um nmero.A grande crtica a esta abordagem que mtodos e atributos estticos so ensinados apenas nocaptulo 7, de modo que o estudante precisa simplesmente ignorar o fato da sintaxe ser diferente deoutros objetos com os quais ele trabalha.J presenciei, como professor, estudantes que foram ensinados sob metodologias parecidaschamando mtodos diretamente das classes, sem diferenciar se um mtodo era ou no esttico.ConclusoA metodologia se mostra muito interessante ao tornar claro para o estudante o processo deconstruo de um software, a sua respectiva modelagem de objetos e classes e as diversasrepresentaes visuais do programa.Tambm se mostra interessante a forma de abordar os conceitos sempre que possvel a partir deproblemas do mundo real. Observa-se porm que a complexidade dos problemas tratados muitopequena como por exemplo, calcular a mdia de um grupo de alunos ou determinar a rea de umcrculo.Um dos motivos para o uso de exemplos triviais a dificuldade em utilizar recursos avanados deprogramao em funo da complexidade destes recursos conforme apresentado pela linguagemJava. De forma mais clara isto visto na modelagem da classe Interface que para recuperar umvalor digitado pelo usurio precisa de mtodos estticos logo no incio da metodologia.Este ponto ressalta que alguns dos pontos fracos observados na metodologia poderiam ser melhortrabalhados com o apoio de um ferramental adequado como um editor que no exigisse a criao deum mtodo main para executar cdigo ou uma ferramenta que permitisse executar mtodosdiretamente dos objetos.BORATTI, Isaias Camilo. Programao Orientada a Objetos com Java. Florianpolis: VisualBooks, 2007. 308 p. 9. Michael Klling and John Rosenberg. 2001. Guidelines for teaching object orientation withJava. In Proceedings of the 6th annual conference on Innovation and technology in computerscience education (ITiCSE 01). ACM, New York, NY, USA, 33-36. DOI=10.1145/377435.377461http://doi.acm.org/10.1145/377435.377461