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...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

procedural, en el manejo <strong>de</strong> rutinas y módulos, yen el conocimiento <strong>de</strong>l diseño <strong>de</strong>scen<strong>de</strong>nte.Lógicamente, el curso IDOO es unprerrequisito para el curso ADOO. En estos doscursos, el alumno recibe una formación que lecapacita para estudiar otras temas re<strong>la</strong>cionadoscon <strong>la</strong> tecnología <strong>de</strong>l software OO como es <strong>la</strong>construcción <strong>de</strong> aplicaciones basadas en objetosdistribuidos (RMI y CORBA) y el <strong>de</strong>sarrollobasado en componentes. Nuestro <strong>de</strong>partamentooferta en quinto curso dos asignaturasre<strong>la</strong>cionadas con estas dos tecnologías.Conviene seña<strong>la</strong>r que en <strong>la</strong>s titu<strong>la</strong>cionestécnicas se sigue el enfoque evolutivo comentado,pero no en <strong>la</strong> titu<strong>la</strong>ción superior ya que dos <strong>de</strong> <strong>la</strong>scuatro asignaturas <strong>de</strong> programación que hay entreprimero y segundo no están adscritas a nuestro<strong>de</strong>partamento y en el<strong>la</strong>s se utiliza Java para <strong>la</strong>enseñanza <strong>de</strong> los tipos abstractos <strong>de</strong> datos yestructuras <strong>de</strong> datos. En el siguiente apartadocomentaremos este hecho. A continuación<strong>de</strong>scribiremos los cursos IDOO y ADOO queproponemos.3. Introducción a <strong>la</strong> ProgramaciónOrientada a ObjetosEl objetivo <strong>de</strong> esta asignatura es introducir a<strong>la</strong>lumno en el paradigma <strong>de</strong> programación OO,siendo sus objetivos: i) <strong>de</strong>scribir los conceptos quelo caracterizan: c<strong>la</strong>se, objeto, herencia,polimorfismo y ligadura dinámica, ii) contrastarcómo esos conceptos se reflejan en los cuatrolenguajes OO más extendidos: C++, Java,Smalltalk y Eiffel, iii) enseñar un lenguaje OO yun entorno <strong>de</strong> programación, iv) introduciralgunas técnicas y heurísticas básicas <strong>de</strong>programación OO y v) valorar en qué medida <strong>la</strong>stécnicas OO mejoran <strong>la</strong> calidad <strong>de</strong>l software.La asignatura se p<strong>la</strong>ntea como dos cursos quese imparten en paralelo <strong>de</strong>s<strong>de</strong> <strong>la</strong> primera semana:una parte teórica <strong>de</strong> treinta horas y una partepráctica con quince sesiones <strong>de</strong> hora y media en el<strong>la</strong>boratorio. En <strong>la</strong>s c<strong>la</strong>ses prácticas el alumnorecibe un curso <strong>de</strong> programación OO en Java.Este curso se imparte <strong>de</strong> forma simultánea a <strong>la</strong>sc<strong>la</strong>ses <strong>de</strong> teoría, ya que no es viable llevar <strong>la</strong>sc<strong>la</strong>ses prácticas al ritmo <strong>de</strong> <strong>la</strong>s c<strong>la</strong>ses teóricas.Esto no crea confusión en el alumno, ya que <strong>la</strong>sc<strong>la</strong>ses teóricas sirven para proporcionar una visiónmás general <strong>de</strong> los conceptos que previamente havisto en <strong>la</strong>s c<strong>la</strong>ses prácticas en el contexto <strong>de</strong> Java.Al final <strong>de</strong>l curso, <strong>la</strong>s dos partes han <strong>de</strong>bido servirpara conseguir los objetivos y que el alumno tengaunos buenos conocimientos sobre programaciónOO, dos partes separadas que forman una unidadcoherente.En <strong>la</strong>s c<strong>la</strong>ses teóricas <strong>de</strong>scribimos con <strong>de</strong>talletodos los conceptos que caracterizan al paradigmaOO. Primero se estudian todos los conceptosre<strong>la</strong>cionados con c<strong>la</strong>ses y objetos: ocultación <strong>de</strong>información, mensajes, semántica referencia,creación y copia <strong>de</strong> objetos, igualdad e i<strong>de</strong>ntidad,y genericidad. Después se estudia un capítulosobre el diseño por contrato que sirve paracontrastar los mecanismos <strong>de</strong> asertos yexcepciones <strong>de</strong> Java y Eiffel. A continuación seestudian todos los aspectos que tienen que ver con<strong>la</strong> herencia: principio <strong>de</strong> sustitución, polimorfismoy ligadura dinámica, intento <strong>de</strong> asignación,genericidad en Java, c<strong>la</strong>ses abstractas, códigogenérico, herencia y ocultación <strong>de</strong> información,herencia múltiple, herencia repetida, diferentestipos <strong>de</strong> herencia, e implementación <strong>de</strong> <strong>la</strong> ligaduradinámica. En el estudio <strong>de</strong> <strong>la</strong> herencia también seincluye <strong>la</strong> <strong>de</strong>scripción <strong>de</strong> algunos patrones básicoscomo son: Temp<strong>la</strong>te Method (para ver el papel <strong>de</strong><strong>la</strong>s c<strong>la</strong>ses parcialmente diferidas para escribircódigo genérico), Iterador (distinguiendo entreiteradores externos e internos, analizando cómoresolver con herencia <strong>la</strong> imposibilidad <strong>de</strong> pasarfunciones como argumentos <strong>de</strong> un método),Observer (para ver el papel que pue<strong>de</strong>n jugar <strong>la</strong>sinterfaces Java) y Composite (como ejemplo <strong>de</strong>herencia múltiple). Finalmente se valora cómo <strong>la</strong>OO ayuda a mejorar <strong>la</strong> calidad <strong>de</strong>l software y seintroducen heurísticas básicas para <strong>la</strong> creación <strong>de</strong>software OO: algunas <strong>de</strong> <strong>la</strong>s heurísticas <strong>de</strong> Riel[8] y los patrones Contro<strong>la</strong>dor y Experto [6].En un curso <strong>de</strong> estas características esimportante que el alumno no adquiera <strong>la</strong> visión <strong>de</strong><strong>la</strong> OO ofrecida por un lenguaje particu<strong>la</strong>r, sinoque comprenda los conceptos que subyacen a <strong>la</strong>OO <strong>de</strong> una forma in<strong>de</strong>pendiente <strong>de</strong>l lenguaje. Paraconseguir este objetivo, en <strong>la</strong> parte teórica primerose explican los conceptos sin recurrir a unlenguaje y luego se muestra el contraste en <strong>la</strong>forma en que son reflejados en los cuatrolenguajes OO que consi<strong>de</strong>ramos. Con esteenfoque no se encorseta <strong>la</strong> visión <strong>de</strong>l alumno a <strong>la</strong>ofrecida por un lenguaje concreto, sino que

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

Saved successfully!

Ooh no, something went wrong!