Sei sulla pagina 1di 7

Experiencia enseando Programacin con OO en el curso de Fundamentos de Programacin

Paulo Gonzlez, Gerardo Cerda { pgonzalezg, gcerda }@ucinf.cl Facultad de Ingeniera y Negocios Universidad Ciencias de la Informtica Santiago - Chile

Abstract: Este artculo presenta la experiencia obtenida en la Universidad Ciencias de la Informtica, en la carrera de Ingeniera de Ejecucin Informtica en la enseanza de Fundamentos de la Programacin. Este curso entrega las bases de la programacin y es comn que se utilice la programacin estructurada para dicho fin. Sin embargo en esta ocasin se utiliz la orientacin a objetos desde la primera clase. Este tipo de programacin permite la construccin de mdulos, donde la reutilizacin de los mismos es el gran cambio que aporta su forma de programar. La metodologa que se utiliz proviene de la integracin y adaptacin de varias tcnicas de desarrollo de software.

Keywords: Programacin orientada a objetos; seudolenguaje; clases; objetos; encapsulacin; herencia; polimorfismo; diagrama de clases.

1. Introduccin

La idea principal del curso de Fundamentos de Programacin es poder desarrollar la lgica que se necesita para resolver problemas de manera algortmica. No es necesario utilizar un lenguaje especfico de programacin para poder ensear a programar a los alumnos. La mejor manera para aprender la lgica de la programacin, es haciendo uso de seudolenguaje.

Hoy en da existen muchos lenguajes de programacin, pero los que ms auge han tenido ltimamente son los orientados a objetos. En muchos de los cursos de Fundamentos de Programacin dictados los alumnos no aprenden a programar orientado a objetos, teniendo despus una resistencia ante esta.

El concepto de programacin orientado a objetos proviene de los noruegos OleJohan Dahl y Kristen Nygaard quienes se dedicaban a la construccin de modelos de funcionamiento virtual de automviles, motores, etc. utilizando la informtica antes de proceder a la construccin de algn dispositivo en forma fsica. Cuando realizaban las simulaciones podan calcular de un modo econmico rendimientos, consumos, entre otras variables. El problema que ellos tenan en sus simulaciones era que cuando cambiaba un modelo de vehculo, motor o electrodomstico, tenan que rehacer todo el programa. Se les hizo necesario algo paralelo entre el diseo del programa y la mquina que necesitaban simular, o sea, necesitaban construir partes de programa en funcin de las piezas que necesitaran en el artefacto. De esta forma se pudo variar de un modelo de mquina a otra variando los mdulos de programas relacionados con los cambios.

La reutilizacin de los mdulos es el gran cambio que aporta la forma de programar orientado a objetos, incluso hay quienes dicen que es la manera de programar del siglo XXI.

De lo anterior, nosotros pensamos que resultara bastante til ensear desde el principio ensear a programar orientado a objetos. Por esto el curso se desarrolla con una metodologa que permita llevar a cabo el aprendizaje haciendo uso de seudolenguaje de diseo de programas o algoritmos orientado a objetos.

2. Experiencia

La forma ha sido presentada de tal manera que el proceso de aprendizaje de programacin es de una forma didctica, simple haciendo nfasis a la completitud y consistencia, teniendo especial cuidado de mostrarle a los alumnos ejemplos que puedan ser extrapolados en la realidad.

Lo fundamental es el uso de un seudolenguaje sin tener que usar un computador para implementar las rutinas. Esto permite al alumno desarrollar las capacidades mentales que debe tener para programar y sentar las bases de disciplina y estructura.

Este enfoque es para algunas personas muy complicado, pero debe enfrentarse por que la programacin es una actividad de tipo intelectual que requiere:

Creatividad. Capacidad de abstraccin. Anlisis y sntesis.

Estas habilidades que fueron desarrolladas durante el curso, se vieron potenciadas y reforzadas en la etapa final del mismo, ya que a los alumnos se les hace implementar las rutinas realizadas durante etapa final del curso, bajo el lenguaje de programacin Java. Esto ltimo hace que el alumno adquiera ms fcil conceptos que sern utilizados en asignaturas de nivel superior como lo es Ingeniera del Software.

La metodologa que se presenta no es por mero azar, sino que es el resultado de la integracin y adaptacin de varias tcnicas como por ejemplo los conceptos y estructuras de programacin orientada a objetos:

Clases. Objetos. Encapsulacin. Herencia. Polimorfismo. Diagrama de clases.

A los alumnos se les present la arquitectura modelo-vista-controlador, en contraste con el propsito del diagrama de clases, el modelo en cuestin necesita ser aplicado en la solucin del problema, es por ello que se requiere aplicar la arquitectura modelo-vista-controlador, donde el modelo es la clase o conjunto de clases que se identifican en el domino del problema, son las que representan los objetos presentes en el problema, la vista es la interfaz de usuario, en el caso de fundamentos, la interfaz es demasiado simple, y simplemente se limita a mostrar las entradas y salidas del programa usando lnea de comandos, y por ltimo el controlador, es la parte que permite

que el usuario interacte con la vista para usar el modelo que representa y soluciona el problema.

Grficamente, el programas el modelo-vista-controlador podra representarse de la siguiente manera: Controlador

Vista

Modelo

Lo anterior en unin con los conceptos y bases lgicas de programacin estructurada en seudocdigo permite entre otras cosas:

El diseo de programas o algoritmos orientados a objetos bien estructurados. Algoritmos documentados. Algoritmos fciles de mantener.

3. Desarrollo de la experiencia

Desde el comienzo a los alumnos se les ense aspectos fundamentales del buen desarrollo de software. Ellos, a partir de diagramas de clases, pudieron construir rutinas algortmicas para luego implementarlas en algn lenguaje de programacin (en nuestro caso Java).

A continuacin podemos apreciar un ejemplo, de un diagrama de clases que representa el problema de el clculo de rea de distintas figuras geomtricas, resuelto en clases e implementado por los alumnos:

Clase Figura EjecutaFigura # nombreFig # area ingresarNombre() obtenerNombre() *calcularArea() obtenerArea()

Cuadrado lado ingresarLado() calcularArea() radio

Circulo

ingresarRadio() calcularArea()

El objetivo del uso de diagrama de clases, es que los alumnos se familiaricen tempranamente con las notaciones estndares en la industria, como por ejemplo UML.

A partir del diagrama anterior, los alumnos pueden construir el seudocdigo, que en el caso anterior sera el siguiente:

Clase Abstracta Figura # nombreFig # area

: Cadena : Real

Mtodo ingresarNombre(nombre: Cadena) nombreFig = nombre Fin mtodo ingresarNombre Mtodo obtenerNombre() : Cadena retornar nombreFig Fin mtodo obtenerNombre Mtodo abstracto calcularArea() Mtodo obtenerArea() retornar area Fin mtodo obtenerArea Fin Clase Abstracta Figura

Clase Circulo hereda de Figura radio : Real Mtodo ingresarRadio(rad: Real) radio = rad Fin mtodo ingresarRadio Mtodo calcularArea() area = 3,14 * radio * radio Fin mtodo calcularArea Fin Clase Circulo

Clase Cuadrado hereda de Figura lado : Real Mtodo ingresarLado(lad: Real) lado = lad Fin mtodo ingresarLado Mtodo calcularArea() area = lado * lado Fin mtodo calcularArea Fin Clase Cuadrado

Clase EjecutaFigura Mtodo Principal nombre : Cadena opcion : Entero rad, lad : Real

Do Imprimir men Leer opcion Solicitar ingreso del nombre de la figura Leer nombre switch opcion 1: Cuadrado obj = nuevo Cuadrado( ) Solicitar ingreso del nombre de la figura Leer nombre obj.ingresarNombre ( nombre ) Solicitar ingreso del lado Leer lad obj.ingresarLado( lad ) obj.calcularArea()

Imprimir obj.obtenerNombre, obj.obtenerArea 2: Cuadrado obj = Circulo = nuevo Circulo( ) Solicitar ingreso del nombre de la figura Leer nombre obj.ingresarNombre ( nombre ) Solicitar ingreso del lado Leer lad obj.ingresarLado( lad ) obj.calcularArea() Imprimir obj.obtenerNombre, obj.obtenerArea Fin switch Mientras opcion <> 3 Fin Mtodo Principal Fin Clase EjecutaFigura

Conclusin:

El hecho que los alumnos adquieran desde el comienzo tcnicas de programacin Orientada a Objetos, considerando los conceptos anteriormente vistos, hace que los ellos desde un comienzo se familiaricen con notaciones necesarias y para el desarrollo de software y que debern utilizar en el mundo laboral, contribuyendo e incentivando la utilizacin de buenas prcticas de la programacin, necesarias para realizar Ingeniera del Software. A su vez, tambin permite conseguir una menor resistencia al momento de trabajar con un lenguaje orientado a objetos, ya que lo pueden asimilar ms rpidamente por familiaridad.

Bibliografa citada Leobardo Lpez Romn (2006), Metodologa de la Programacin, ed. Alfaomega Alfredi Weitzenfeld (2005), Ingeniera del software orientada a objetos con UML, Java e Internet, Thomson. Harvey Deitel (2004), Java Cmo Programar, Quinta edicin, Pearson Prentice Hall. Joan Pratdepadua (2003), Programacin en 3D con Java 3D, Alaomega Ra-Ma. Jos Perez (2003)., Programacin en lenguaje Java, Thomson. Raquel Anaya, (2003), Desarrollo basado en componentes utilizando UML, Nieves R. Brisaboa.

Potrebbero piacerti anche