Вы находитесь на странице: 1из 17

Qu es un objeto?

En el contexto de la programacin orientada a objetos, Object representa


a la superclase de todas las clases, es decir, todas las clases heredan
directa o indirectamente de esta.
Un objeto es la representacin de un concepto para un programa, y
contiene toda la informacin necesaria para abstraer dicho concepto: los
datos que describen su estado y las operaciones que pueden modificar
dicho estado, y determinan las capacidades del objeto.
Un objeto es una representacin detallada, concreta y particular en el
contexto de la programacin orientada a objetos. Tal representacin
determina su identidad, su estado y su comportamiento particular en un
momento dado.
Conceptos bsicos de los diagramas de clases?
Los diagramas de clases especifican que clases intervienen en el
desarrollo del sistema y como se relacionan, a diferencia de los
diagramas de interaccion que modelan los aspectos dinamicos, los
diagramas de clases modelan la parte estatica. Tambien lo podemos
definir, como una tcnica grafica que se utiliza para modelar la parte
estatica del sistema. Los elementos bsicos de un diagrama de clase son:
1- Clases. Escriben un conjunto de objetos con propiedades y
comportamientos comunes.
2- Relaciones. Enlaces entre los distintos elementos de los diagramas.
3- Interfaces. Conjunto de operaciones de una clase o paquete visibles
desde otras clases o paquetes.
Qu es un polimorfismo?
El polimorfismo, como su mismo nombre sugiere mltiples formas, se
refiere a laposibilidad de acceder a un variado rango de funciones
distintas a travs del mismo interfaz. O sea, que, en la prctica, un mismo
identificador puede tener distintas formas (distintos cuerpos de funcin,
distintos comportamientos) dependiendo, en general, del contexto en el
que se halle inserto. El polimorfismo se puede establecer mediante la
sobrecarga, sobre-escritura y la ligadura dinmica.
Sobrecarga.
El trmino sobrecarga se refiere al uso del mismo identificador u
operador en distintos contextos y con distintos significados.
Si para cada funcionalidad necesitada fuese necesario escribir un
mtodo, el cdigo resultante sera inmanejable, imagnense, por ejemplo
que los desarrolladores de java hubiesen creado un mtodo para escribir
en pantalla una cadena de texto, otro diferente para escribir un entero,
otro para escribir un doble, otro para escribir un carcter, otro para una

cadena y un entero y as para todas las combinaciones posibles, seria


casi imposible conocer dichos mtodos en totalidad; en cambio sabemos
que con System.out.print() o System.out.println() podemos escribir
cualquier mensaje en pantalla.
Este tipo de codificacin nos es permitido gracias a la sobrecarga, la cual
se aplica a mtodos y constructores.
La sobrecarga de mtodos conduce a que un mismo nombre pueda
representar distintos mtodos con distinto tipo y nmero de parmetros,
manejados dentro de la misma clase. En el mbito de la POO, la
sobrecarga de mtodos se refiere a la posibilidad de tener dos o
msmtodos con el mismo nombre pero funcionalidad diferente. Es decir,
dos o ms mtodos con el mismo nombre realizan acciones diferentes. El
compilados usar una u otra dependiendo de los parmetros usados.
Esto tambin se aplica a los constructores. De hecho, es la aplicacin
ms habitual de la sobrecarga.
La forma de diferenciar varios mtodos sobrecargados es a travs de sus
parmetros, ya sea por la cantidad, el tipo o el orden de los mismos,
veamos un ejemplo:
public class Articulo {
private float precio;
public void setPrecio() {
precio = 3.50;
}
public void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}
public void setPrecio(float costo, int porcentajeGanancia) {
precio = costo + (costo * porcentajeGanancia);
}
}
Sobre-escritura:
La sobre-escritura, se aplica a los mtodos y esta directamente
relacionada a la herencia y se refiere a la re-definicin de los mtodos de
la clase base en las subclases, por ejemplo, en la relacin de herencia del
ejemplo de las figuras aunque la clase base Figura tiene los mtodos
calcularArea y calcularPerimetro, las subclases Circulo,

Cuadrado, Triangulo y Rectangulo redefinen estos mtodos ya que


el calculo del rea y el permetro de cada uno de ellos es diferente.
class Figura {
protected double area;
protected double perimetro;
public Figura() {
this.area=0;
this.perimetro=0;
}
public double getArea() {
return area;
}public double getPerimetro() {
return perimetro;
}
public void calcularArea(){}
public void calcularPerimetro(){}
}
public class Circulo extends Figura {
private double radio;
public Circulo() {
super();
}
public double getRadio() {
return radio;
}
public void setRadio(double radio) {
this.radio = radio;
}
public void calcularArea() {
this.area = Math.PI*Math.pow(this.radio,2.0);
}

public void calcularPerimetro() {


this.perimetro = 2*Math.PI*this.radio;
}
}
Ligadura dinmica:
Gracias a la ligadura dinmica, pueden invocarse operaciones en objetos
obviando el tipo actual del stos hasta el momento de la ejecucin del
cdigo, es decir que me perite definir elementos como un tipo e
instanciarlos como un tipo heredado. Pero cual puede ser la utilidad de
este concepto, para que me sirve obviar el tipo de un objeto para luego
tomar esta decisin?.
Gracias a que en java la definicin de los tipos de objetos se puede
producir por atado posterior (late binding), no nos debe preocupar a que
tipo de elemento le paso un mensaje ya que el compilador tomara la
decisin de que objeto ejecutar que mtodo de acuerdo a la forma de
crear
la
instancia.
Este concepto es bastante complejo de entender ya que estamos
acostumbrados a definir los elementos de acuerdo a lo que necesitamos,
es decir, si requiero un entero lo declaro como entero, para quedeclarara
yo un elemento como un tipo y lo usara como otro?. No siempre se
puede determinar exactamente el tipo de elemento que va a usarse en la
ejecucin de nuestro programa, para este tipo de casos es cuando es til
aplicar el atado posterior o ligadura dinmica, y se debe tener por lo
menos una relacin de herencia que por lo menos me permita determinar
un tipo base para la declaracin, sea cual sea el subtipo que se instancie.
Veamos un ejemplo que nos aclare un poco este concepto:
class Mamifero {
public void mover() {
System.out.println("Ahora es un mamifero el que se mueve");
}
}
class Perro extends Mamifero {
public void mover() {
System.out.println("Ahora es un perro el que se mueve");
}

}
class Perro extends Mamifero {
public void mover() {
System.out.println("Ahora es un gato el que se mueve");
}
}
public class Polimorfismo {
public static void muevete(Mamifero m) {
m.mover();
}
public static void main(String[] args) {
Gato bisho = new Gato();
Perro feo = new Perro();
muevete(bisho);
muevete(feo);
}
}

Vemos que el mtodo muevete llama al mtodo mover de un mamfero y


aunque el no sabe con qu clase de mamfero trata, funciona y se llama al
mtodo correspondiente al objeto especfico que lo llama (es decir,
primero un gato y luego un perro). Si no existiera la ligadura dinmica
tendramos que crear un mtodo muevete para los mamferos de tipo
Gato y otro para los de tipo Perro.

ARQUITECTURA DE LOS SIMULADORES


Por arquitectura se entiende el reparto de funciones en diferentes mdulos o
aplicaciones de lo que constituye el software y el trnsito de informacin entre
ellos o comunicaciones.
La arquitectura est ms relacionada con la concepcin, prestaciones y
desarrollo del software que con la funcionalidad final del simulador, Obviamente
arquitectura y funcionalidad est ligadas.

OBJETIVOS Y CONDICIONANTES DE LA ARQUITECTURA

La arquitectura de los simuladores cuanta con objetivos los cuales se muestran


a continuacin
Dar cobertura a la funcionalidad: aunque parezca de Perogrullo el diseo del
software debe en primer lugar centrarse en dar cabida a todas las
funcionalidades que se especifican para el simulador.
Facilitar el desarrollo del proyecto de software: el software de un simulador
puede ser un proyecto complejo donde intervengan docenas de personas y se
extienda durante aos. Es un objetivo crucial que el reparto de funciones entre
los distintos mdulos permita un desarrollo independiente, pero coordinado, de
los mismos. La programacin orientada a objetos y a componentes permite, por
su filosofa de origen, una programacin modular a la vez independiente pero
coordinada.
Optimizar el uso de los recursos del hardware: los recursos se refieren a la
capacidad de clculo de los procesadores, al uso de la memoria, al
almacenamiento y acceso a los discos, a la capacidad de generacin grfica y
a la capacidad de comunicaciones.
Permitir la nter cambiabilidad de mdulos: para mejorar y ampliar las
capacidades del software del simulador en el futuro es preciso que la
arquitectura sea lo suficientemente abierta para poder sustituir un mdulo sin
que se vean afectados demasiados los dems.
Facilitar el flujo de informacin para la simulacin en tiempo real: esta es una
de las ms difciles tareas de una buena arquitectura. Requiere un gran
esfuerzo
minimizar el traspaso de datos entre las diferentes partes del software sin que
ninguna tenga dficit o exceso, que no haya problemas de sincronismo y evitar
la saturacin del hardware de comunicaciones.
Los aspectos que condicionan principalmente la arquitectura se pueden
relacionar como sigue:
Recursos de hardware: es evidente que la capacidad del hardware en general
condiciona el reparto de funciones del software. Tambin sucede que en
algunos
casos se plantea la tesitura de realizar algunas funciones mediante software o
a
travs de un hardware especfico, como puede ser en temas de generacin
grfica.
Capacidad del software: el lenguaje de programacin y las capacidades
intrnsecas de los sistemas operativos pueden condicionar de manera definitiva
una arquitectura u otra. La capacidad para generar componentes o la ejecucin
remota podran ser ejemplos de este tipo de condicionantes.

Capacidad presupuestaria: bajo este conceptos englobamos la capacidad


econmica, que condicionar hardware y nmero y experiencia de
programadores, y la disponibilidad temporal, un desarrollo rpido exige una
arquitectura sencilla.

ENSEANZA DE PROGRAMACION ORIENTADA A OBJETOS MEDIANTE


EL DESARROLLO DE APLICACIONES GRAFICAS INTERACTIVAS
Grupo de Sistemas Telemticos Aplicados a la Educacin (GSITAE).
1,2 Departamento de Electrnica, Automtica e Informtica Industrial. Escuela
Universitaria de Ingeniera Tcnica Industrial. Universidad Politcnica de
Madrid.
Espaa.
En la asignatura de Informtica Industrial de la EUITI-UPM se ha optado por
desarrollar un mtodo docente basado en el diseo y desarrollo de una
aplicacin grafica interactiva como son los videojuegos, los simuladores o
herramientas de ingeniera. La enseanza de la Programacin Orientada a
Objetos se ve facilitada en gran medida por un enfoque unificado de la
asignatura que engloba desde las practicas realizadas en laboratorio a las
tutoras, el desarrollo de trabajos personales por los alumnos, la docencia
terica e incluso el material docente. Se cree a raz de los buenos resultados
obtenidos, que la motivacin e inters que despierta este enfoque en el
alumnado redunda claramente en una mejora de la docencia y en los
resultados
acadmicos.
1. Introduccin
La asignatura de Informtica Industrial forma parte del actual Plan de Estudios
de la Escuela Universitaria de Ingeniera Tcnica Industrial (E.U.I.T.I.) de la
Universidad Politcnica de Madrid (U.P.M). Se imparte en la titulacin de
Ingeniero Tcnico Industrial Especialidad en Electrnica Industrial durante el
segundo curso (cuarto cuatrimestre), siendo el responsable de su docencia el
Departamento de Electrnica, Automtica e Informtica Industrial [1] de la
U.P.M. La asignatura tiene asignada una carga docente de 10.5 crditos totales
distribuidos en 7.5 crditos terico-prcticos correspondientes a 5 horas
semanales de clase en aula y 3 crditos de prcticas que equivalen a una
sesin semanal de 2 horas, impartida en el Laboratorio de Informtica de dicho
departamento. Es una asignatura de carcter obligatorio, por lo que deben
cursarla todos los alumnos de la titulacin (110 alumnos/curso aprox.). Los
alumnos son evaluados en un examen terico-prctico al final del cuatrimestre,
as como en las sesiones de Laboratorio durante el transcurso del mismo.
Adems, se les propone la realizacin de un trabajo en grupo de carcter
obligatorio cuyo peso es significativo, y acorde al esfuerzo y dedicacin
empleados, en la calificacin global de la asignatura. En cuanto a contenidos
programticos, enlaza en su comienzo con la asignatura de primer curso

(segundo cuatrimestre) de Fundamentos de Informtica, donde se propone un


recorrido bastante completo por la Programacin Procedural, utilizando como
sintaxis de programacin el Lenguaje C. Se recorren todos y cada uno de los
aspectos bsicos de la programacin, preparando al alumno para poder
afrontar con garantas de xito suficientes la siguiente etapa centrada en la
asignatura objeto del trabajo.
Una vezcubiertos los aspectos de la programacin procedural, se afronta en la
asignatura de Informtica Industrial, el paradigma de la Programacin
Orientada a Objetos y el Modelado Software (Proceso Unificado), as como,
tambin se proporciona una perspectiva bastante amplia de las diferentes
herramientas CASE utilizadas en las etapas de desarrollo. Contenidos todos
ellos imprescindibles hoy en da, en la actual concepcin de la Ingeniera del
Software para el desarrollo metodolgico de aplicaciones, no slo en el entorno
industrial, sino en cualquiera de las reas o disciplinas de la industria, gestin o
comercio. Los alumnos, una vez cursada la asignatura de Informtica Industrial,
estn capacitados para afrontar (aquellos que opten por ello) la asignatura de
Ingeniera del Software. Incluida tambin en el plan de estudios para aquellos
alumnos que decidan cursar el bloque de optativas de tercer curso (sexto
cuatrimestre) que lleva por denominacin Automatizacin Industrial y
Avanzada. En la que recibirn una amplia visin de aspectos avanzados de
programacin, como desarrollo de aplicaciones en Tiempo Real, programacin
multihilo, etc. An siendo una asignatura enmarcada dentro del rea de
Informtica, como se deduce claramente de la ubicacin e interrelacin con las
asignaturas mencionadas, no es menos cierto comentar, que la cohesin y
protagonismo con otras asignaturas, como el Control de Procesos, la
Instrumentacin Electrnica, la Robtica y Visin Artificial, etc., es claramente
manifiesta. El empleo de los modelos esuna caracterstica generalizada en
cualquier disciplina tcnica. El uso de modelos en la concepcin del software,
aporta una visin metodolgica y pragmtica muy eficiente para los futuros
ingenieros tcnicos industriales. La implementacin de algoritmos est
estrechamente ligada a disciplinas como el lgebra, el Clculo y la Fsica, por
lo que alumno es capaz de percibir puntos de enlace con dichas materias
desde los diferentes paradigmas estudiados o tratados. La abstraccin, el
encapsulamiento, la modularidad o la herencia son conceptos y herramientas
generalizables y utilizables en otras reas de concepto, facilitando de esta
manera, la asimilacin de conocimiento y el asentamiento de conceptos como
base
de
la
formacin
del
Ingeniero
Tcnico
Industrial.
2. Estado del arte
Hoy en da prcticamente nadie se cuestiona el uso del ordenador como una
herramienta eficaz para el aprendizaje. Multitud de estudios pedaggicos
confirman que los sistemas interactivos basados en computador facilitan los
procesos de asimilacin de conceptos en multitud de disciplinas como Historia,
Geografa, Matemticas, Fsica, Idiomas, etc. Y siendo una herramienta, es
decir, un til, un medio, para conseguir un objetivo, desde el departamento se
ha planteado el reto de cmo conseguir motivar a los alumnos para que se

enganchen en la disciplina de la asignatura. En este caso, se trata de


incentivar la prctica mediante la propuesta del desarrollo de aplicaciones que
motiven al alumno. En algunos casos, la algortmica es por si sola uncanal
conductor para conseguir que asuman objetivos y retos para superar la
funcionalidad planteada. Sin embargo, la posibilidad de interactuar de forma
grfica por ejemplo, aade una componente visual incrementando los recursos
y destrezas a utilizar. Ante estas premisas, se considera que la realizacin de
un trabajo que cubra los objetivos de desarrollo algortmico, grfico y
multimedia en general, es un buen reclamo motivador, que cumple a su vez, los
objetivos docentes necesarios para cubrir todos y cada uno de los contenidos
de la asignatura. De entre las posibles alternativas, que cubren estos
requisitos, se encuentran los videojuegos, simuladores y herramientas grficas
de ingeniera. Todos ellos, son desarrollos que permiten ejercitar casi sin lmite
a priori, salvo los que el profesor y el alumno se fijen, todos y cada uno de los
aspectos anteriormente mencionados.
Los videojuegos poseen una amplia expansin y predominio en el mbito
domstico. Con la profusin de los PCs y las consolas dedicadas, su difusin
es ampliamente conocida por los alumnos, llegando a considerarse un
elemento familiar o cercano. El poder desarrollar tu propio videojuego, es de
por si, un factor de partida muy motivador en la mayora de los casos. Este tipo
de aplicaciones se prestan fcilmente al planteamiento de retos que involucran
la participacin de varios individuos, por lo que se fomenta, el trabajo en grupo,
factor este ltimo tremendamente positivo de cara al futuro o actual desempeo
profesional del alumno, cada vez msorientado hacia el trabajo en grupos
multidisciplinares. Como alternativa a los videojuegos, para abrir en cierta
medida, el abanico de posibilidades, tambin se plantean aplicaciones de tipo
simulador, donde tambin se pueden ejercitar de manera amplia la algortmica
y el resto de disciplinas anteriormente mencionadas. De hecho, muchos de los
videojuegos que pueden plantearse, estn clara y directamente relacionados
con la simulacin de comportamiento de sistemas fsicos, donde se pone a
prueba la destreza del usuario o se pretende el entrenamiento y aprendizaje del
sistema en cuestin (automviles, aviones, barcos, submarinos, etc.). Existen
ya algunas experiencias en una lnea similar, donde tambin se les propone a
los alumnos la realizacin de trabajos basados en aplicaciones de
entretenimiento como en la Universidad Complutense [1] o la Universidad de
Alcal de Henares [2], ambas de Madrid. No obstante, en estos casos no se
centran en la Programacin Orientada a Objetos (POO), sino en los aspectos
grficos
o
algortmicos.
3. Mtodo docente
Como se ha descrito en el apartado primero, la asignatura de Informtica
Industrial se centra en la enseanza del paradigma orientado a objetos, o
Anlisis, Diseo y Programacin Orientada a Objetos. Si bien es cierto que el
vehculo o lenguaje de programacin es C++, el aprendizaje de las reglas de
sintaxis de dicho lenguaje es relativa o comparativamente sencillo,
contrariamente a lo que sucede con el Anlisis y Diseo Orientado a Objetos.

Ensear o transmitir esos conceptos supone comunicar una filosofa, una forma
de trabajar, con un nivel de conceptualizacin y abstraccin muy elevado, lo
que presenta una curva de aprendizaje mucho ms dura para los alumnos. Se
podra decir que la parte crtica de la asignatura es precisamente esta. El resto
de la asignatura se articula en torno a este concepto. El desarrollo de
videojuegos presenta un gran atractivo para los alumnos, a la vez que esta
relacionado con otras muchas disciplinas, tal y como se comentaba en el
apartado anterior. Pero el desarrollo de juegos o simuladores presenta una
ventaja aadida importante: al ser representado un mundo fsico de forma
virtual en el ordenador, hay un alto paralelismo entre los objetos reales del
mundo y los objetos software. Cuanto ms cercana sea la representacin
hecha en cdigo al mundo real, ms fcil es de entender por los alumnos. En el
Anlisis y Diseo Orientado a Objetos, cuando las clases del modelo del
dominio se trasladan casi directamente al diseo, se dice que hay una
reduccin en el salto de la representacin. Estas ideas aplican principalmente
a juegos y simuladores con gran componente de simulacin fsica, con objetos
fsicos que se mueven, con cinemtica, dinmica, etc. Sin embargo, los juegos
lgicos como las 4 en raya, el ajedrez, las damas, etc. presentan poco
modelado fsico pero una gran carga de lgica y algortmica. Inicialmente se
comenz en la asignatura a plantear trabajos de diversa ndole, as como unas
prcticas genricas de POO. Cuando se comenz a proponer algunos trabajos
tipo videojuego o simulador, se vio el potencial de esta idea como metodologa
de enseanza. Actualmente, gran parte de la arquitectura se estructura en
torno al desarrollo de estas aplicaciones como caso de estudio: El trabajo
obligatorio de la asignatura es realizado por parejas, consistiendo en el mayor
numero de casos en un juego tpico de computador, del que los alumnos deben
entregar al final del cuatrimestre el cdigo y toda la documentacin y diagramas
UML generados. Se podra decir que el desarrollo de este trabajo es el motor
principal de motivacin de los alumnos, y centraliza la mayor parte de su
dedicacin durante el curso. La gran ventaja es que este desarrollo les obliga a
aprovechar las practicas de la asignatura y a revisar constantemente los
contenidos tericos de la misma, por lo que cuando acaban el trabajo tambin
tienen gran parte de la asignatura ya asimilada. Las prcticas de la asignatura
han sido rediseadas completamente, tomando como lnea conductora desde
la primera a la ltima practica el desarrollo de un videojuego tpico. Las
prcticas van introduciendo y explicando los conceptos y aplicndolos a la
aplicacin. El videojuego seleccionado como temtica en las prcticas es el
juego del Pang, en el que un mueco se mueve en la parte inferior de una caja
en la que rebotan pelotas. Si una pelota impacta en el jugador, este pierde la
partida. El jugador puede disparar a las pelotas, que son partidas en dos o
desintegradas en caso de que sean muy pequeas.
Figura 1. Juego del Pang-En la pgina Web de la asignatura se cuelgan
actualmente algunos manuales de OpenGL y otros recursos relacionados. En la
docencia terica, sobre todo en la parte relacionada con ADOO se explican
tambin ejemplos sencillos relacionados con los videojuegos, se desarrollan y
escriben artefactos tpicos, casos de uso, modelos del dominio, diseo, uso de

patrones, etc. De hecho, tal y como se explica posteriormente, hasta en los


exmenes tericos escritos de la asignatura, aparecen enunciados muy
relacionados. El desarrollo de estos trabajos requiere de un soporte tutorial
muy importante, pero altamente productivo. En las tutoras el profesor dirige y
supervisa la ingeniera software del proyecto, as como ayuda a solucionar
problemas de implementacin.
-

Se ha optado por utilizar OpenGL como librera grafica ya que esta


constituye un estndar de la industria de grficos por computador.
Ademas, estas libreras encuentran implementaciones compatibles en
prcticamente todos los sistemas existentes (tanto hardware, como
software y sistemas operativos). Para la creacin de ventanas de forma
sencilla y gestionar los eventos de teclado, temporizacion, etc., se ha
optado por utilizar el gestor GLUT, que a su vez tambin es 100%
portable a otros sistemas, como Linux. Aunque el lenguaje de
programacin podra ser Java por ejemplo (que de hecho es ms
orientado a objetos que C++), se desarrolla la asignatura en C++. Esto
se debe a que la titulacion es ingeniera industrial, no informtica. En el
entorno industrial, elcdigo existente es en su mayora C y C++, ya que
Java ha presentado tradicionalmente el inconveniente de una menor
eficiencia debido a la maquina virtual que interpreta el bytecode.

4. Practicas de la asignatura

Segn se ha expuesto en el apartado tercero, la asignatura se ha


diseado de forma que los conocimientos adquiridos puedan ser
llevados a la prctica progresivamente. Con esta perspectiva se ha
diseado un conjunto de diez prcticas que incrementalmente van
ilustrando los conceptos expuestos en las clases tericas a la vez que
dotan de herramientas para el desarrollo del trabajo de curso que
consiste en un juego de ordenador. El conjunto de prcticas, as como
una breve descripcin de los objetivos docentes se describe a
continuacin 1. Programacin en C: Uso del depurador. Familiarizacin
con MSVS6.0 y las funciones de depuracin. Operaciones con vectores.
2. Programacin en C: Uso de herramientas. Introduccin a la potencia
de la POO. Uso de objetos. MFCs y ActiveX. 3. Grficos tridimensionales
con OpenGL. Introduccin a OpenGL. Uso de las libreras Glu y Glut.
Estructuracin de la aplicacin. 4. Concepto de Clase en C++. Diseo e
implementacin de las primeras clases. La clase Esfera y la clase Plano.
5. Ingeniera directa e inversa con Rational Rose y Visual C++. Relacin
entre diseo e implementacin. Diagramas de clases y de Secuencia.
Aadir a la aplicacin disparos, el jugador, bonus, etc. 6. Creacin y
destruccin de objetos. Interacciones entre objetos Contenedores de
objetos, vectores quecontienen Esferas. Patrones para implementar
interacciones entre clases. Rebotes entre esferas y esferas con planos.
7. Concepto de herencia. Reutilizacin de cdigo. Clase base para los
objetos grficos. Nuevos objetos derivados. 8. Polimorfismo y herencia.
Clases especializadas con interfaces comunes. Copia polimrfica.

Implementacin de una mquina de estados. Fin del Juego. 9. Diseo


con patrones Revisin de todo el cdigo comprobando la aplicacin de
diversos patrones: Creador, Bajo Acoplamiento, Experto en Informacin,
etc. 10. Examen de Laboratorio. La ltima prctica es una prctica de
examen, que consiste en la realizacin de un sencillo programa con
filosofa de POO. Con las notas de las distintas prcticas y la del
examen, se obtiene la calificacin del laboratorio que constituye un 25%
de la nota final de la asignatura. Para aprobar las prcticas es obligatorio
aprobar el examen prctico independientemente de las notas obtenidas
durante el curso. Las prcticas de laboratorio estn constituidas por
sesiones de 2 horas semanales en un aula habilitada con 22 puestos, de
los cuales uno es el del profesor que tiene la particularidad de que lo que
se muestra en el monitor es proyectado sobre una pantalla para que as
los alumnos puedan seguir con facilidad las explicaciones. En los dos
ltimos aos, cada prctica de laboratorio ha tenido una media de 12
estudiantes, siendo el total de grupos 7. (84 alumnos). La estructura que
se sigue en cada prctica es la siguiente: Durante los 15 primeros
minutos el profesorcorrige los ejercicios propuestos en la prctica
anterior. Estos son variaciones que debe realizar el alumno sobre el
programa final generado tras la ltima sesin, en la que debe utilizar los
conceptos que entonces se explicaron. Al ser un programa, su
correccin es rpida, dado que es fcil verificar por el resultado que la
programacin se ha realizado. Anlogamente, al dar libertad al alumno
en cuanto al resultado ms accidental, se obliga a que en cierta medida
las soluciones sean originales. En cualquier caso, siempre se realiza una
inspeccin rpida del cdigo para verificar que se ha seguido la filosofa
de POO y se evala el trabajo realizado por el alumno. Finalizada la
correccin el profesor invierte entre 5 y diez minutos en explicar el marco
en el que desarrolla la prctica, y una vez situados los estudiantes, se
van siguiendo paso a paso los puntos del guin. En estos se intercalan
ejercicios guiados totalmente por el profesor, con soluciones que debe
programar el alumno aplicando lo que se ha ido viendo. Por ltimo, la
prctica termina con un programa ms evolucionado que sirve de base
para la realizacin de los ejercicios de esa prctica, y que a su vez sern
la plataforma sobre la que se comience la prctica siguiente.
-

5. Docencia terica

Las aplicaciones grficas, como los videojuegos, son un buen hilo conductor
para la enseanza de la POO. De un lado, tiene la propia motivacin para
los estudiantes al disear un programa con mucha realimentacin, ya que
los resultados son palpables y la mayora han sido usuarios de estos
paquetes informticos. Por otro, estas aplicaciones requieren el uso de
software prefabricado, del manejo de conceptos abstractos y un conjunto de
iteraciones dentro del marco del Proceso Unificado. En estas aplicaciones
se exige emplear muchos de los artefactos colocados por el Proceso
Unificado: Casos de Uso, Modelo del Dominio, Diagramas de Clases de

Diseo, Modelo de la Implementacin e Ingeniera Inversa. Pero sobre todo


del diseo mediante patrones. Por otro lado, el paradigma de la
programacin orientada a objetos y en concreto con su implementacin en
C++, permite abordar el juego de una forma ordenada y exponiendo durante
su desarrollo los problemas ms habituales que se encuentran durante el
desarrollo de un programa en este lenguaje. Cabe destacar como se orienta
al alumno para respetar el encapsulamiento de clases, mostrando la
importancia de cuidar los procesos de construccin y destruccin de
objetos. De igual forma se insiste en el ahorro de cdigo utilizando para ello
la herencia que nos da el lenguaje y la capacidad polimrfica de los
mtodos virtuales. Se insiste en el uso de contenedores de objetos que
permitan simplificar al mximo el contenido de las funciones principales de
la aplicacin, y se ensean los distintos procedimientos que existen para
implementar interacciones entre objetos de nivel de abstraccin similar. C++
ha demostrado ser una herramienta asequible para el alumno en el conjunto
del curso que se expone, y prueba de ello son los programas reflejo de
unafase de diseo que se entregan al final de curso. Sirva como ejemplo, el
ejercicio propuesto en el examen de septiembre de 2007. Se pretende
desarrollar un juego basado en la batalla entre hombres y dragones. Los
hombres lanzan cuchillos y los dragones bolas de fuego. Los dragones se
mueven en el rea izquierda de la pantalla y los hombres en el lado
derecho. En mitad de la batalla aparecen paredes mviles que se desplazan
en el centro de la pantalla. El nmero de luchadores puede ser variable y
dinmico. El planteamiento de solucin consiste que el alumno se gue
empleando el Proceso Unificado, UP. En primer lugar se pide que extraiga
las caractersticas principales de la aplicacin empleando el artefacto de
jerarqua a dos niveles: 1. Video juego de los hombres que luchan contra los
dragones 1.1. Los hombres se mueven en un rea restringida de la
derecha. 1.2. Los dragones se mueven en un rea restringida de la
izquierda. 1.3. Los hombres lanzan cuchillos que se clavan en la pared o
que matan al dragn o que pasan sin hacer dao. 1.4. Los dragones lanzan
bolas de fuego que no pueden atravesar las paredes y que si tocan a un
hombre lo mata. 1.5. Los dragones desaparecen de la pantalla al morir. 1.6.
Los hombres desaparecen de la pantalla al morir. En segundo lugar, se pide
el Modelo del Dominio del juego. El alumno debe de aplicar las tcnicas de
deteccin de conceptos (test lingsticos y listas de categoras
conceptuales) y sus asociaciones (necesito conocer y tablas de
asociaciones). Tambin se da la metodologapara su transformacin en un
diagrama de UML.
Luchador Arma
ParedMovil 1 detiene
Dragn 1..n lucha contra mata 1..n 1 Hombre 1 1
1 lanza 0..n

Mata
detiene
11
BolaFuego 1
1
1
Cuchillo
0..n
lanza

Figura 2. Modelo del Dominio en UML

Ms de la mitad de los crditos de AOO/D se dedican al diseo mediante


patrones GRASP y GOF. Este ejercicio es un buen ejemplo de la aplicacin
de patrones Singleton (GoF), Factoria Abstracta (GoF) y Mtodos de
Fabricacin (GoF), los cuales incluyen las buenas prcticas de Polimorfismo
(GRASP), Fabricacin Pura (GRASP) y Variaciones Protegidas (GRASP).
FactoriaObjetos
FactoriaObjetos()
getInstance()
metodoFabricacionLuchadores()
metodoFabricacionArmas()
metodoFabricacionObstaculos() IObstaculo moverseAleatorio() pintar()
IArma moverseTrayectoria() haChocadoObjeto() pintar() ClienteVideoJuego
ILuchador

lanzarArma()

Hombre
(f rom Analy sis Model)

Dragn
(f rom Analy sis Model)
BolaFuego
(f rom Analy sis Model)
Cuchillo
(f rom Analy sis Model)

moverse()

haRecibidoDisparo()

pintar()

ParedMovil
(f rom Analy sis Model)
Figura 3. Diagrama UML de diseo. Solucin de examen de teora.
El ltimo apartado conecta con la programacin en C++, al transformar el
modelo de clases de diseo en cdigo. En el ejercicio slo se pide los ficheros
de
cabecera.
6. Tutoras
En la accin tutorial, la mayora del tiempo se dedica a perfilar los trabajos de
curso. Siguiendo el Proceso Unificado y dado el pliego de condiciones de la
aplicacin a cada grupo, las tres primeras semanas se dedican a qu lo
formalicen empleando los documentos de Visin y Alcance, Casos de Uso,
Glosario y Especificaciones Complementarias. A tal propsito se les da unas
plantillas para escribir dichos informes. En el mes siguiente se procede al
anlisis empleando el artefacto del Modelo del Dominio. Tambin se les pide
que empiecen a manejarse con las libreras grficas, las cuales se han
mostrado en las prcticas de la asignatura. A partir del segundo mes, se le
exige los artefactos para el diseo: los diagramas de clases de diseo y los
diagramas de secuencia. Es aqu donde las tutoras entran con la insercin de
los patrones que se estn explicndose en las clases de teora y en las
prcticas. Al principio slo se les pide Bajo Acoplamiento, Alta Cohesin y
Experto en Informacin, con el objeto de definir los paquetes y en la
organizacin de la produccin del software. Ms adelante, se les anima a que
desarrolle una nica factora de objetos y a un diseo en Variaciones
Protegidas.
7. Trabajos realizados
Existen trabajos cuyo enunciado viene dado por el profesor, y otros que puede
proponer el alumno libremente. Entre las temticas seleccionadas destacan
videojuegos (vease figura siguiente) como los clsicos de plataformas, en el
que el jugador va saltando de plataforma en plataforma librndose de sus
enemigos y recolectando objetos, los deportivos como el golf o las carreras de
motos o coches, ldicos como el pinball o los de accin denominados de
primera persona.

8. Resultados y conclusiones
La metodologa propuesta ha sido aceptada con gran inters por parte del
alumnado, despertando una alta motivacin en un sector importante de ellos.
Cabe resaltar como muchos continan desarrollando su videojuego una vez
superada la asignatura, y que hasta hacen participes a sus familias, que utilizan
de probadores de sus videojuegos. Por otra parte cabe destacar que la
dedicacin medida en tiempo empleado en la realizacin del trabajo incrementa
ostensiblemente debido principalmente a la alta motivacin. Los profesores de
la asignatura estiman subjetivamente que el tiempo empleado en un trabajo por
un alumno motivado puede aumentar entre un 25% y un 100% en algunos
casos, respecto al mismo alumno frente a un trabajo diferente. Esta dedicacin
se traduce a la larga en un incremento de conocimientos y una mejor
asimilacin de la asignatura, lo que redunda en unas mejores calificaciones en
la asignatura, no solo por la nota de los trabajos que suele ser elevada, sino
por el aprendizaje realizado durante el desarrollo del mismo. Existe una
unanimidad absoluta respecto al xito del enfoque adoptado, lo que nos lleva a
seguir trabajando con iniciativas similares, tal y como se describe en el punto
siguiente.
9. Futuros trabajos
Como futuros trabajos en esta lnea se pretende crear una pagina Web
especfica para esta temtica, en la que se puedan centralizar recursos
comunes, preguntados y solicitados muy amenudo por los alumnos. As, se
pretende incluir pequeos tutoriales que permitan lo ms fcilmente posible al
alumno tareas como incluir grficos avanzados en su aplicacin, como el uso
de texturas para crear escenas mas realistas, efectos de materiales y luces.
Tambin se incluirn otros temas como el uso de msica y efectos
sonoros, fundamentos fsicos y matemticos para simulaciones avanzadas, con
dinmica, explosiones, etc., y movimientos especiales de cmara. Aunque en
general estos elementos escapan del alcance del curso, la aficin generada en
una gran parte de los estudiantes les lleva a seguir desarrollando su juego
hasta darle un acabado prcticamente comercial, incluso una vez terminado y
superado el curso. Esta pgina Web tambin servir para que los alumnos
puedan colgar y exhibir sus aplicaciones o videojuegos, de tal forma que se
puede establecer un ranking de los mismos por votaciones u algn otro sistema
como la cuenta del nmero de descargas. La metodologa del desarrollo de los
videojuegos ha empezado a ser tambin utilizada en la asignatura optativa
denominada ingeniera del Software de ltimo cuatrimestre de la titulacion de
Electrnica de la EUITI-UPM, en la que se tratan temas de programacin
concurrente y sistemas distribuidos. En dicha asignatura se dejaba optar a los
alumnos entre trabajos convencionales (como un servidor concurrente) y el
desarrollo o adaptacin de un juego a un juego en red. De tal forma, los

alumnos podan coger su juego del curso anterior y convertirlo en una


aplicacindistribuida en red, con los servidores y clientes de sockets
adecuados, programas concurrentes multihilo para gestionar comunicaciones y
procesamiento del juego, etc. Los resultados iniciales han sido excepcionales y
se pretende (en los prximos 2 cursos) abordar la metodologa expuesta en
este artculo a la asignatura completa: redisear las practicas enfocndolas a
dicho objetivo, actualizar los temarios tericos, adaptando los ejemplos
respectivos a un caso de estudio tpico.

Вам также может понравиться