Créditos ECTS Créditos ECTS: 6
Horas ECTS Criterios/Memorias Trabajo del Alumno/a ECTS: 99 Horas de Tutorías: 3 Clase Expositiva: 24 Clase Interactiva: 24 Total: 150
Lenguas de uso Castellano, Gallego
Tipo: Materia Ordinaria Grado RD 1393/2007 - 822/2021
Departamentos: Electrónica y Computación
Áreas: Ciencia de la Computación e Inteligencia Artificial
Centro Escuela Técnica Superior de Ingeniería
Convocatoria: Primer semestre
Docencia: Sin docencia (Extinguida)
Matrícula: No matriculable
El objetivo de la asignatura es formar al alumno en los conceptos de la Programación Orientada a Objetos, haciendo especial énfasis en sus aspectos más prácticos. Esto supone que a la finalización del curso el alumno estará plenamente capacitado para desarrollar un programa siguiendo el paradigma orientado a objetos como alternativa a la programación procedimental. Para ello se introducirá al alumno en el lenguaje de programación más ampliamente usado en la actualidad: Java.
TEORÍA
Tema 1. Introducción a la Programación Orientada a Objetos
Tema 2. Abstracción de tipos: Clases e objetos
Tema 3. Estructuras de datos e almacenamiento de objetos
Tema 4. Herencia de clases: Reutilización
Tema 5. Polimorfismo
Tema 6. Excepciones: Gestión de errores
Tema 7. Interfaces: Independencia de clases
Tema 8. Interfaces gráficas
PRÁCTICAS
Proxecto: Parte 1.
* Creación de las clases del proxecto
* Sobrecarga de métodos y constructores
* Implementar parcialmente la funcionalidad del proyecto
* Uso de entrada/salida a través de ficheros
Proyecto: Parte 2
* Completar las funcionalidades del proyecto
* Uso e implementación de interfaces
* Uso de excepciones para tratamiento de errores en ejecución
Proyecto: Parte 3
* Jerarquías de clases e polimorfismo de métodos
* Uso de clases abstractas para reutilización
* Uso de clases e métodos finales
* Herencia de excepciones
Proyecto: Parte 4 (opcional)
* Interfaces gráficas
* Uso de herencia e interfaces en aplicaciones gráficas
* Tratamiento de eventos de usuario
BIBLIOGRAFÍA BÁSICA (por orden de prioridad)
1. ECKEL, Bruce. Piensa en Java. 4a edición, Prentice Hall, 2007. ISBN: 978-8489660342.
[Sig.: A310 2, Escola de Enxeñería]
2. DEITEL, Harvery M., DEITEL, Paul J. Cómo programar en Java. 9a edición, Pearson Educación, 2004. ISBN: 978-6073211505.
[Sig.: A310 1 1, Escola de Enxeñería (5a edición)]
BIBLIOGRAFÍA COMPLEMENTARIA
3. COHOON, James P., DAVIDSON, Jack W. Programación en Java 5.0. 1a Edición, McGraw-Hill, 2006. ISBN: 978-8448150617.
[Sig.: 3 C60 162, Fac. Física]
4. JOYANES AGUILAR, Luis, ZAHONERO MARTÍNEZ, Ignacio. Programación en Java 6: Algoritmos, Programación Orientada a Objetos e Interfaz Gráfica de Usuario. 1a Edición, MgGraw-Hill, 2011. ISBN: 978-6071506184.
[Sig.: C60 406, Fac. Física]
El alumno adquirirá un conjunto de competencias específicas de la programación orientada a objetos, pero también una serie de competencias genéricas a cualquier desarrollo de un programa software y, finalmente, unas competencias transversales que inciden en las habilidades personales del alumno y en la forma en la que se relaciona con los demás alumnos. Teniendo esto en cuenta, las competencias son las siguientes:
COMPETENCIAS ESPECÍFICAS
* Conocimientos básicos en el uso y programación de ordenadores (FB4), concretamente en la creación de programas siguiendo el paradigma orientado a objetos.
* Conocimiento y utilización de forma eficiente de los tipos de estructuras de datos más adecuados para la resolución de un problema (RI7). Esta competencia es intrínseca al paradigma orientada a objetos, en la medida en que la construcción de los programas comienza modelando las estructuras de datos que permiten representar el problema.
* Capacidad para analizar, construir e mantener aplicaciones de forma robusta y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados (RI8). Esta es una de las principales competencias que el alumno debería adquirir, dado que a la conclusión del curso el alumno deberá poder decidir correctamente qué paradigma de programación aplicaría en función de las características del problema.
COMPETENCIAS GENÉRICAS
* Capacidad para concebir y desarrollar aplicaciones informáticas empleando métodos de la ingeniería del software (CG5). Esta competencia es inherente a la materia de programación orientada a objetos, dado que el objetivo de ella consiste en desarrollar programas usando las características específicas de este tipo de paradigma.
* Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad (CG9). El alumno deberá desarrollar esta competencia en la resolución de los ejercicios que componen los boletines, donde será preciso que decida qué estructuras de datos aplicar y cómo implementar la solución teniendo en cuenta las características de la programación orientada a objetos.
COMPETENCIAS TRANSVERSALES
* Capacidad de análisis y síntesis para la resolución de problemas (TR1). El alumno deberá desarrollar esta competencia para poder realizar los ejercicios prácticos en los que se prueban las características de la programación orientada a objetos.
* Trabajo en equipo y habilidades en las relaciones interpersonales (TR2). Esta competencia se desarrollará en la resolución del último ejercicio de los boletines, que deberá realizarse en pareja con otro alumno y donde será necesario explotar las habilidades de interacción entre personas.
* Aprendizaje autónomo y adaptación a nuevas situaciones (TR3). En la resolución de los ejercicios fuera de las sesiones de prácticas y en el entendimiento de los conceptos de programación orientada a objetos será preciso desarrollar este tipo de competencias.
COMPETENCIAS DE MÓDULO
* Manejar diferentes niveles de abstracción para estructurar el software a desarrollar.
* Programar bajo el paradigma de programación orientada a objetos.
* Identificar posibles estrategias de solución a problemas con los conceptos propios de la orientación a objetos, como el uso de la jerarquía, el polimorfismo y la utilización de interfaces de objetos.
* Conocer diferentes paradigmas de programación y saber elegir el más apropiado a cada situación.
La metodología de enseñanza está dirigida a focalizar la materia sobre los aspectos prácticos de la programación y sobre los conceptos que diferencian al paradigma orientado a objetos de otras aproximaciones. El alumno debe estar capacitado, por lo tanto, para entender las ventajas del enfoque orientado a objetos y para desarrollar un programa con solvencia siguiendo este paradigma de programación. Teniendo esto en cuenta, se distinguen tres tipos de actividades de aprendizaje: clases magistrales, sesiones en grupos reducidos, e tutorías en grupos reducidos. Así:
(1) Las clases magistrales (20 horas) están dirigidas a explicar las características de la programación orientada a objetos (herencia, polimorfismo, etc.), haciendo especial énfasis en las diferencias con el paradigma de programación procedimental e ilustrando con ejemplos las situaciones en las cuales el enfoque orientado a objetos es más adecuado. Para explicar estas características se hará uso de ejemplos sobre el lenguaje de programación Java, aunque en las clases magistrales no se pretende detallar todos los aspectos del lenguaje: su uso está orientado a ilustrar los conceptos del paradigma de programación.
(2) Las sesiones prácticas en grupos reducidos (30 horas) están dirigidas a que el alumno adquiera destreza en la implementación de programas siguiendo el paradigma orientado a objetos. Por ello es importante que en estas prácticas realicen un conjunto suficientemente extenso de ejercicios de programación en los que se haga uso de las características de la programación orientada a objetos desde el prisma del lenguaje Java. Para ello los alumnos deberán realizar tres boletines compuestos a su vez de un conjunto de ejercicios en los que se irá viendo la forma de construir programas orientados a objetos y de hacer uso de las características del paradigma. La asistencia a estas clases por parte de los alumnos es OBLIGATORIA.
Teniendo en cuenta esta metodología de enseñanza, las competencias FB4, RI7, RI8, CG5 y CG9, así como las indicadas en el módulo de programación, tienen contenidos específicos que están asociados a la parte teórica y práctica de una materia como Programación Orientada a Objetos, en la que se revisan los paradigmas de programación modular y estructurada hasta llegar a una forma de programar más flexible. Estas competencias, por tanto, se evalúan de forma explícita en las pruebas realizadas a lo largo del curso.
Por otra parte, la competencia TR1 se trabajará en los ejercicios prácticos (tanto en el boletín como en el proyecto), ya que en ellos se deben analizar los problemas planteados y sintetizar en su solución los conceptos de la Programación Orientada a Objetos; la competencia TR2 se trabajará fundamentalmente en el proyecto, en el que es necesario interaccionar con otro alumno para poder llevar a buen puerto un problema complejo de programación; y la competencia TR3 se trabajará en los ejercicios prácticos, ya que en ellos es dónde el alumno debe adaptarse a un nuevo paradigma de computación, que extiende los conceptos de la programación modular y estructurada.
EN EL CASO DE QUE LA USC DETERMINE EL PASO A ESCENARIO 2 (DISTANCIAMIENTO) O ESCENARIO 3 (CIERRE DE INSTALACIONES), LA METODOLOGÍA DE ENSEÑANZA SE MODIFICARÁ SEGÚN EL PLAN DE CONTINGENCIA INDICADO EN EL APARTADO "OBSERVACIONES".
La evaluación de la materia tendrá lugar de dos maneras diferentes, aunque complementarios, que pretenden evaluar la competencia del alumno en la realización práctica de programas y el dominio del paradigma orientado a objetos. Por otra parte, se distinguirá entre la evaluación de la oportunidad ordinaria y la de recuperación:
OPORTUNIDAD ORDINARIA
(1) Examen en el que el alumno demostrará el dominio de los aspectos teóricos de la programación orientada a objetos como alternativa a la programación procedemental, y de aquellas características de Java que inciden sobre este tipo de programación. Este examen constituirá el 50% de la nota final de la materia, y consistirá de dos partes que el alumno deberá aprobar por separado para superar la parte teórica de la asignatura:
1.(a) En la primera parte el alumnado deberá respostar la un conjunto de preguntas cortas sobre las características de la programación orientada a objetos y del lenguaje Java. Esta parte constituirá el 50% de la nota de teoría.
1.(b) En la segunda parte el alumno deberá realizar en un ordenador la programación de un conjunto de problemas que focalizarán sobre aquellos aspectos de la programación que no fueron tratados en profundidad en los ejercicios de la parte práctica de la asignatura. Esta parte constituirá el otro 50% de la nota de teoría.
(2) Realización de un proyecto en el que el alumno demostrará de manera práctica el dominio del lenguaje de programación Java y de los conceptos de la programación orientada a objetos. Esta parte constituirá el 50% de la nota final de la materia y sera realizado en parejas a causa de reducir la carga de trabajo y para que los alumnos puedan discutir sobre las decisiones de diseño e implementación. Este proyecto se dividirá en tres partes:
2.(la) Proyecto: Parte 1. En esta parte del proyecto los alumnos crearán el conjunto de clases con las que se modelarán los conceptos que describen las principales entidades del proyecto. Así, se especificarán los atributos de cada clase, e implementaranse tanto los constructores, en los que se dan valores iniciales a dichos atributos, como parte de los métodos, que proporcionan la funcionalidad del proyecto. También incorporarán utilidades para la lectura de los datos de entrada del programa. Desde el punto de vista teórico, en esta parte el alumno trabajará fundamentalmente sobre el concepto de encapsulación y de sobrecarga de métodos. Esta parte constituirá el 35% de la nota práctica.
2.(c) Proyecto: Parte 2. En la segunda parte del proyecto los alumnos completarán las funcionalidades del proyecto que no fueron implementadas en la parte 1, y además incorporarán las excepciones, que tratan los errores que tienen lugar durante la ejecución del programa. Esta parte constituirá el 30% de la nota práctica.
2.(d) Proyecto: Parte 3. En la última parte del proyecto el alumno desarrollará jerarquías de clases siguiendo los requisitos indicados en el proyecto, incorporando el polimorfismo como elemento clave a la hora de favorecer la reutilización de código. Además, en esta parte también se extenderá el uso de la jerarquía a las excepciones implementadas en la parte 3 e implementarán interfaces con las que independizan la implementación de las clases. Esta parte del proyecto constituirá el 35% de la nota práctica.
Como parte opcional del proyecto se presentará al alumno a implementación de una interfaz gráfica. Esto se justificar en que el desarrollo de interfaces gráficas es un elemento central del lenguaje Java y que además en ese desarrollo se hace uso intensivo de todas las características de la programación orientada a objetos. Este boletín podrá suponer un incremento adicional del 15% de la nota de la parte práctica, hasta el límite de que dicto incremento supere la nota máxima de 10.
Para aprobar la parte práctica de la asignatura será necesario superar todas las partes del proyecto. Además, la evaluación de la parte práctica será continua, lo que significa que el alumno deberá ir superando cada unas de las tres partes del proyecto a medida que se van planteando al largo del curso.
Por otra parte, si un alumno entregó la primera parte del proyecto se considerará cómo presentado en la materia.
CONTROL DE ASISTENCIA
La asistencia a las sesiones prácticas interactivas es obligatoria debido la que en ellas se abordan conceptos clave de la materia, y el control de esta asistencia se realizará a través de hojas de firmas que los alumnos deberán cubrir a la finalización de cada una de las sesiones. Además, si un alumno asiste a menos del 80% de las sesiones prácticas interactivas se considerará que no superó la materia; mientras que se asiste por lo menos al 95% y al 100% de las sesiones prácticas interactivas tendrá 0.1 y 0.2 puntos adicionales en la nota final de la materia, respectivamente (siempre que no supere la puntuación de 10).
OPORTUNIDAD DE RECUPERACIÓN
Los criterios de evaluación de las partes de teoría y práctica en la oportunidad de recuperación serán exactamente los mismos que para la oportunidad ordinaria. Por tanto, además de superar los dos exámenes de teoria y todas las partes del proyecto, para poder superar la materia será necesario que el alumno había asistido a las sesiones prácticas interactivas (con los criterios de asistencia indicados más abajo). En esta evaluación, además, el proyecto se tendrá que realizar de forma individual.
En el caso de realización fraudulenta de ejercicios o pruebas, será de aplicación lo recogido en la Normativa de evaluación del rendimiento académico de los estudantes y de revisión de calificaciones.
En aplicación de la Normativa de la ETSE sobre plagio (aprobada poe la Xunta da ETSE el 19/12/2019), la copia total o parcial de algún ejercicio de prácticas o teoría supondrá el suspenso en las dos oportunidades del curso, con la calificación de 0,0 en ambos casos.
EN EL CASO DE QUE LA USC DETERMINE EL PASO A ESCENARIO 2 (DISTANCIAMIENTO) O ESCENARIO 3 (CIERRE DE INSTALACIONES), EL SISTEMA DE EVALUACIÓN SE MODIFICARÁ SEGÚN EL PLAN DE CONTINGENCIA INDICADO EN EL APARTADO "OBSERVACIONES".
Tal y como se indicó anteriormente, la asistencia a las sesiones de prácticas es obligatoria, y además esa participación debería ser activa para así aprovechar de forma adecuada el tiempo. Además de esto, el alumno necesitará un tiempo adicional para trabajar en los siguientes aspectos:
(1) Estudio autónomo de los conceptos de la programación orientada a objetos (25 horas). El tiempo dedicado a este estudio non sólo incluye lo necesario para preparar el examen teórico, sino también el tiempo que el alumno precisa para entender los conceptos teóricos de forma que los pueda aplicar correctamente a la construcción de los programas.
(2) Escritura de ejercicios y trabajos (10 horas). El tiempo dedicado a esta escritura está relacionado con el trabajo que deberán entregar los alumnos a la conclusión de cada uno de los boletines de ejercicios, en el cual deberán de explicar cómo realizaron el programa siguiendo el enfoque orientado a objetos.
(3) Completar los ejercicios de los boletines (50 horas). Este tiempo es necesario para que el alumno complete los ejercicios de los boletines que non tendrá tiempo de acabar en las sesiones de prácticas. En este tiempo el alumno podrá interiorizar la forma de resolver el problema planteado en el ejercicio, en la medida en que en las sesiones prácticas se hace más énfasis en entender el problema y la forma general en la que se resolverá, mientras que los detalles necesarios para completar los ejercicios se deberán realizar en el tempo adicional de trabajo práctico.
Para poder aprovechar la materia y adquirir con cierta fluidez los conceptos de la programación orientada a objetos es muy aconsejable aprovechar las clases de teoría, las sesiones de prácticas e las tutorías en grupos reducidos, en la medida en que, tal y como se presentó en el programa y en la metodología docente, estas actividades están directamente relacionadas. Por otra parte, también es muy recomendable que el alumno explore el material de soporte (páginas web sobre tecnología, tutoriales online de los entornos de desarrollo, descripción de casos de éxito, etc.) en el que se incluyen explicaciones adicionales a las das clases presenciales e que ayudan a entender y afianzar los conceptos de la programación orientada a objetos y las dudas de programación relacionadas con Java.
El idioma perferente de impasrtición de las clases expositivas e interactivas es el gallego.
PLAN DE CONTINGENCIA
En el caso de que la situación sanitaria aconseje establecer un Escenario 2 (distanciamiento):
1) Todas las clases expositivas se impartirán de modo online (síncronamente por Microsoft Teams o asíncronamente mediante la publicación de vídeos grabados por el profesorado),
2) Las clases interactivas se impartirán de modo presencial en aula de informática,
3) La ponderación de las distintas partes de la materia y los requisitos para superar la materia permanecerán inalterados,
4) La prueba final se realizará de modo presencial.
En el caso de que la situación sanitaria aconseje establecer un Escenario 3 (distanciamiento):
1) Todas las clases expositivas se impartirán de modo online (síncronamente por Microsoft Teams o asíncronamente mediante la publicación de vídeos grabados por el profesorado),
2) Todas las clases interactivas se impartirán de modo online (síncronamente por Microsoft Teams ou asíncronamente mediante a publicación de vídeos gravados polo profesorado),
3) La ponderación de las distintas partes de la materia y los requisitos para superar la materia permanecerán inalterados,
4) La prueba final se realizará de modo no presencial, mediante Microsoft Teams y las herramientas del aula virtual Moodle.
Manuel Lama Penin
Coordinador/a- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Teléfono
- 881816427
- Correo electrónico
- manuel.lama [at] usc.es
- Categoría
- Profesor/a: Titular de Universidad
María Jesús Taboada Iglesias
- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Teléfono
- 881813561
- Correo electrónico
- maria.taboada [at] usc.es
- Categoría
- Profesor/a: Catedrático/a de Universidad
Efren Rama Maneiro
- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Correo electrónico
- efren.rama.maneiro [at] usc.es
- Categoría
- Predoutoral Ministerio
Jose Maria Alonso Moral
- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Teléfono
- 881816432
- Correo electrónico
- josemaria.alonso.moral [at] usc.es
- Categoría
- Investigador/a: Ramón y Cajal
Ilia Stepin
- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Categoría
- Predoutoral Ministerio
Lunes | |||
---|---|---|---|
09:00-11:30 | Grupo /CLIL_01 | Castellano | Aula de Informática I6 |
11:30-14:00 | Grupo /CLIL_03 | Castellano | Aula de Informática I6 |
Martes | |||
11:30-14:00 | Grupo /CLIL_04 | Gallego, Castellano | Aula de Informática I7 |
15:00-17:00 | Grupo /CLE_01 | Gallego | Aula A1 |
Miércoles | |||
11:30-14:00 | Grupo /CLIL_02 | Castellano | Aula de Informática I7 |
18.01.2021 16:00-20:45 | Grupo /CLE_01 | Aula A3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_04 | Aula A3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_02 | Aula A3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_03 | Aula A3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_01 | Aula A3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_01 | Aula A4 |
18.01.2021 16:00-20:45 | Grupo /CLE_01 | Aula A4 |
18.01.2021 16:00-20:45 | Grupo /CLIL_04 | Aula A4 |
18.01.2021 16:00-20:45 | Grupo /CLIL_02 | Aula A4 |
18.01.2021 16:00-20:45 | Grupo /CLIL_03 | Aula A4 |
18.01.2021 16:00-20:45 | Grupo /CLIL_04 | Aula de Informática I3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_03 | Aula de Informática I3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_02 | Aula de Informática I3 |
18.01.2021 16:00-20:45 | Grupo /CLE_01 | Aula de Informática I3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_01 | Aula de Informática I3 |
18.01.2021 16:00-20:45 | Grupo /CLIL_04 | Aula de Informática I5 |
18.01.2021 16:00-20:45 | Grupo /CLIL_02 | Aula de Informática I5 |
18.01.2021 16:00-20:45 | Grupo /CLIL_03 | Aula de Informática I5 |
18.01.2021 16:00-20:45 | Grupo /CLE_01 | Aula de Informática I5 |
18.01.2021 16:00-20:45 | Grupo /CLIL_01 | Aula de Informática I5 |
18.01.2021 16:00-20:45 | Grupo /CLIL_02 | Aula de Informática I6 |
18.01.2021 16:00-20:45 | Grupo /CLIL_03 | Aula de Informática I6 |
18.01.2021 16:00-20:45 | Grupo /CLE_01 | Aula de Informática I6 |
18.01.2021 16:00-20:45 | Grupo /CLIL_01 | Aula de Informática I6 |
18.01.2021 16:00-20:45 | Grupo /CLIL_04 | Aula de Informática I6 |
18.01.2021 16:00-20:45 | Grupo /CLIL_04 | Aula de Informática I7 |
18.01.2021 16:00-20:45 | Grupo /CLE_01 | Aula de Informática I7 |
18.01.2021 16:00-20:45 | Grupo /CLIL_02 | Aula de Informática I7 |
18.01.2021 16:00-20:45 | Grupo /CLIL_03 | Aula de Informática I7 |
18.01.2021 16:00-20:45 | Grupo /CLIL_01 | Aula de Informática I7 |
18.01.2021 16:00-20:45 | Grupo /CLIL_04 | Lab PP-2 |
18.01.2021 16:00-20:45 | Grupo /CLE_01 | Lab PP-2 |
18.01.2021 16:00-20:45 | Grupo /CLIL_03 | Lab PP-2 |
18.01.2021 16:00-20:45 | Grupo /CLIL_02 | Lab PP-2 |
18.01.2021 16:00-20:45 | Grupo /CLIL_01 | Lab PP-2 |
25.06.2021 09:15-14:00 | Grupo /CLIL_03 | Aula A2 |
25.06.2021 09:15-14:00 | Grupo /CLIL_02 | Aula A2 |
25.06.2021 09:15-14:00 | Grupo /CLIL_01 | Aula A2 |
25.06.2021 09:15-14:00 | Grupo /CLIL_04 | Aula A2 |
25.06.2021 09:15-14:00 | Grupo /CLE_01 | Aula A2 |