12.07.2015 Views

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

adquiere una compresión <strong>de</strong> los conceptos <strong>de</strong> másalto nivel. No cabe duda que el contrasteenriquece <strong>la</strong> visión <strong>de</strong>l alumno, ya que se favorecesu actitud crítica y se le prepara para po<strong>de</strong>rprogramar, sin gran<strong>de</strong>s dificulta<strong>de</strong>s, en cada uno<strong>de</strong> los cuatro lenguajes, ya que conoce losaspectos c<strong>la</strong>ve re<strong>la</strong>cionados con <strong>la</strong> OO en cadauno <strong>de</strong> ellos. A<strong>de</strong>más, está capacitado para valorarcómo se introducen los conceptos OO en otroslenguajes existentes o que puedan <strong>de</strong>finirse en unfuturo (por ejemplo, podría dominar sin dificultadC# ).Para ilustrar <strong>la</strong> i<strong>de</strong>a sirva el ejemplo <strong>de</strong> <strong>la</strong>ocultación <strong>de</strong> información. Al alumno se lemuestra su significado y se le justifican susbeneficios, entonces se revisan y se contraponen<strong>la</strong>s variaciones que encontramos en los diferenteslenguajes: atributos públicos en C++ y Java,c<strong>la</strong>ses amigas en C++, visibilidad friendly en Java,c<strong>la</strong>ses anidadas en Java y C++, exportaciónselectiva en Eiffel, todos los métodos son públicosen Smalltalk ocultación a <strong>de</strong>scendientes en Java yC++, …En <strong>la</strong> parte práctica nos hemos tenido queenfrentar al problema <strong>de</strong> <strong>la</strong> elección <strong>de</strong> unlenguaje OO. El lenguaje i<strong>de</strong>al para <strong>la</strong> docenciasería aquel que tuviese buenas propieda<strong>de</strong>s,existiesen buenos entornos y abundantedocumentación, y que a<strong>de</strong>más su uso estuviesemuy extendido entre <strong>la</strong>s empresas <strong>de</strong> <strong>de</strong>sarrollo.Des<strong>de</strong> nuestro punto <strong>de</strong> vista, que un lenguajetenga buenas propieda<strong>de</strong>s supone que <strong>de</strong>bería: i)ser OO puro para obligar al alumno a programar<strong>de</strong>ntro <strong>de</strong>l paradigma, ii) reflejar con c<strong>la</strong>ridad losconceptos OO, por ejemplo, no parececonveniente po<strong>de</strong>r <strong>de</strong>c<strong>la</strong>rar que un atributo seexporta en modo escritura o tener que <strong>de</strong>c<strong>la</strong>rar losmétodos en los que se aplicará ligadura dinámicao no po<strong>de</strong>r <strong>de</strong>c<strong>la</strong>rar métodos privados, iii) serlegible, iv) ser pequeño y con gran potenciaexpresiva, v) ser tipado estáticamente, parafavorecer <strong>la</strong> legibilidad y fiabilidad. A<strong>de</strong>más, seríaconveniente que permitiese escribir asertos paraposibilitar <strong>la</strong> programación por contrato [7] y queincluyese un mecanismo <strong>de</strong> genericidad. Encuanto a <strong>la</strong> exigencia <strong>de</strong> un buen entornoenten<strong>de</strong>mos <strong>la</strong> existencia <strong>de</strong> entornos robustos,gratuitos, fáciles <strong>de</strong> usar y que no necesitasenmuchos recursos.Como es lógico, no existe un lenguaje quecump<strong>la</strong> todos los requisitos anteriores. Creemosque Eiffel o Eiffel# podría ser <strong>la</strong> mejor elecciónconsi<strong>de</strong>rando sus buenas propieda<strong>de</strong>s (OO puro,tipado, legible, incluye genericidad, mecanismo<strong>de</strong> asertos y un entorno robusto), sin embargo estámuy poco extendido y no hay buenos entornosgratuitos. Por ello hemos elegido Java quepo<strong>de</strong>mos consi<strong>de</strong>rar casi OO puro ya que e<strong>la</strong>lumno no pue<strong>de</strong> salirse <strong>de</strong>l paradigma OO alprogramar (aunque no es OO puro ya que hay unadistinción entre tipos básicos y c<strong>la</strong>ses, un métodomain en <strong>la</strong>s c<strong>la</strong>ses y otras cuestiones), es tipadoestáticamente, refleja con sencillez los conceptosOO si lo comparamos con C++, existe abundantedocumentación y sobre todo está muy extendidoen <strong>la</strong> industria, habiendo surgido alre<strong>de</strong>dor <strong>de</strong> éluna importante tecnología para el <strong>de</strong>sarrollo <strong>de</strong>aplicaciones OO: Servlet, RMI, Beans, EJB,JINI,.. Con Java tenemos un lenguaje que no tienetan buenas propieda<strong>de</strong>s como Eiffel (por ejemplo,no tiene genericidad, ni herencia múltiple) pero acambio se trata <strong>de</strong> un lenguaje muy extendido quees el lenguaje más utilizado en el <strong>de</strong>sarrollo <strong>de</strong>aplicaciones web. A<strong>de</strong>más, el alumno seguirátrabajando con Java en asignaturas posteriores quetraten <strong>de</strong> tecnología <strong>de</strong>l software, por ejemplo <strong>la</strong>sre<strong>la</strong>cionadas con componentes y objetosdistribuidos.Hasta hace dos años, Smalltalk fue el lenguajeelegido por tratarse <strong>de</strong> un lenguaje OO puro, muysimple pero <strong>de</strong> gran potencia expresiva y conbuenos entornos <strong>de</strong> libre distribución queconsumen pocos recursos. Nunca nos p<strong>la</strong>nteamosC++ por tratarse <strong>de</strong> un lenguaje híbrido, muycomplicado y poco legible. Al aparecer Java, y apesar <strong>de</strong> su rápido éxito, no apostamos por él yaque no era un lenguaje estable, no se disponían <strong>de</strong>buenos entornos y por <strong>la</strong> resistencia al cambio.Entendíamos que Smalltalk permitía cumplir losobjetivos y teníamos mucha experiencia ydocumentación. Sin embargo, ahora no dudamosque Java es <strong>la</strong> mejor elección.Como trabajo práctico, el alumno <strong>de</strong>berealizar un boletín <strong>de</strong> ejercicios, <strong>de</strong> complejidadcreciente, en los que <strong>de</strong>be <strong>de</strong>mostrar suconocimiento <strong>de</strong> aspectos propios <strong>de</strong> <strong>la</strong>programación en Java, (entrada/salida,excepciones, concurrencia, serialización einterfaces gráficos), así como <strong>de</strong> los conceptos <strong>de</strong><strong>la</strong> OO y el manejo <strong>de</strong> <strong>la</strong>s c<strong>la</strong>ses básicas <strong>de</strong> <strong>la</strong>jerarquía como son <strong>la</strong>s colecciones. Estosejercicios obligan al alumno a diseñar e

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!