Licenciatura en Ciencias Áreas terminales en Matemáticas, Física, Bioquímica y Biología Molecular, y Ciencias Computacionales y Computación Científica
Prerrequisitos:
Implementa algoritmos y comprende los conceptos teóricos de los lenguajes de programación, tales como analizador léxico, sintáctico y semántico; funcionamiento de variables y constantes, datos y tipos de datos, expresiones y sentencias, manejo de excepciones y procedimientos, y tipos de datos abstractos y módulos.
Antecedentes Recomendadas:
Ninguna
Consecuentes Recomendadas:
Teoría de la Computación
Presentación de la unidad de aprendizaje:
En esta UA se introduce al sujeto en formación en el proceso de abstracción utilizando el paradigma orientado a objetos, al llevar un problema del mundo real a un modelo de computadora concentrándose en lo relevante dejando de lado los detalles de su implementación. Contribuye a desarrollar los hábitos en el proceso de abstracción, y la aplicación del paradigma orientado a objetos, en el análisis de objetos y situaciones, de sus características (propiedades) e identificación del comportamiento (métodos) con los que operan estos objetos.
Propósito de la unidad de aprendizaje:
Comprender los fundamentos del paradigma de programación orientado a objetos e implementar este paradigma usando el lenguaje de programación Java. Asimismo, desarrollar interfaces gráficas de usuarios (GUIs) complejas y aprender a manejar los diferentes tipos de eventos. Comprender aspectos avanzados de la POO.
Competencias profesionales:
Introducir al estudiante a la organización y arquitectura de los sistemas de cómputo.
Contribución al perfil de egreso:
Para el cumplimiento del perfil, se desarrolla la habilidad para enlazar conocimientos y técnicas de diferentes áreas de las ciencias exactas y naturales.
Secuencia temática:
I Introducción a las clases y objetos.
Tipos de lenguajes de programación orientados a objetos (POO): C++, java, ADA y Python.
Conceptos y generalidades de clases, objetos, métodos y variables de instancia.
Generalidades de lenguaje POO java: palabras reservadas y literales; tipos de datos primitivos; variables y constantes. Operadores de asignación, de incremento y decremento, y lógicos.
II Estructuras de control y arreglos en un lenguaje POO.
2.1 Instrucciones de selección, simple if; doble if-else; múltiple switch.
2.2 Instrucciones de repetición while y do-while.
2.3 Arreglos unidimensionales y multidimensionales: paso de arreglos a los métodos.
III Análisis detallado de los métodos y clases y objetos.
3.1 Métodos: importancia de los métodos establecer/obtener; tipos de acceso a métodos; métodos estáticos y campos estáticos; paso de argumentos a métodos; métodos con múltiples parámetros; sobrecarga de métodos.
3.2 Clases y objetos: control de acceso a los miembros; constructores predeterminados; constructores sobrecargados; enumeraciones; miembros de clase estáticos; recolección automática de basura; reutilización de software; abstracción de datos y encapsulamiento; paquetes de clases; instancias: creación y manejo de instancias.
IV Herencia y polimorfismo.
4.1 Herencia: superclases y subclases; relaciones entre superclases y subclases; constructores en las subclases.
4.2 Polimorfismo: métodos abstractos; interfaces; clases abstractas e herencia múltiple; Métodos y clases finales.
V Manejo de excepciones.
5.1 Generalidades acerca del manejo de excepciones en Java y jerarquía de excepciones.
5.2 Manejo de excepciones: bloques try-catch y finally; cláusula throws; uso de los métodos printStackTrace, getStackTrace y getMessage.
VI Cadenas y caracteres.
6.1 Cadenas: constructores y métodos de la clase String.
6.2 Caracteres: Clse Character y StringTokenizer.
VII Archivos y flujos.
7.1 Constructores y métodos de la clase File.
7.2 Archivos de texto de acceso secuencial.
7.3 Serialización de objetos.
VIII Interfaces gráficas de usuario y manejo de eventos.
8.1Generalidades del manejo de evento y tipos de eventos.
8.1.1 Contrucción de interfaces gráficas de usuario GUIs: componentes Swing. JLabel, JTextField, JButton, JCheckBox, JRadioButton, JComboBox, JList, etc.
8.1.2 Construcción de interfaces gráficas de usuario: contenedores, posicionamiento y dimensionamiento de componentes.
8.1.3 Administradores de esquemas: FlowLayout, Borderlayout, GridLayout, BoxLayout, GridBagLayout.
8.1.4 Uso de paneles y marcos como administradores complejos: JPanel, JFrame JDesktopPanel, JInternalFrame, JTabbedPane.
8.2 Manejo de eventos en GUIs.
8.2.1 Tipos de eventos de acción, ratón y teclado. Interfaces de escucha.
8.2.2 Clases adaptadoras. Manejo de eventos usando clases internas anónimas. Objetos JPanel como área de dibujo usando diferentes eventos.
8.2.3 Objetos JSlider y su manejo de eventos.
8.2.4 Manejo de eventos en menús JMenu y menús contextuales JPopupMenu.
IX Subprocesamiento múltiple.
9.1 Estados de los subprocesos.
9.2 Prioridades y programación de procesos.
9.3 Creación y ejecución de subprocesos: objetos Runnable y la clase Thread.
9.4 Sincronización de procesos: compartir datos con y sin sincronización.
9.5 Subprocesamiento múltiple con GUIs: SwingWorker.
Criterios de Evaluación:
Exámenes parciales: 40%
Examen final: 30%
Participación en clase: 10%
Búsqueda de información: 10%
Otra (especifique): Tareas: 10%
Bibliografía básica:
Deitel, H. y Deitel, P. 2008. Cómo programar en Java. 7a edición. Ed. Prentice Hall.
Bibliografía complementaria:
Gutiérrez, F., Duran, F. y Pimentel, E. 2007. Programación orientada a objetos con Java. Ed. Paranifo.