PROGRAMACIÓN II
SEMANA 1
POO
Bachillerato en Ingeniería de Sistemas
Universidad Autónoma de Centro América
ACTIVIDADES INICIALES
Bienvenida
Presentación del docente y de los estudiantes
Presentación del Programa del Curso
Evaluación del Curso – Escolaridad y Residencia
Normativa vigente
Preguntas
Programación II - Lic.: Errol Vargas M.
ERROL VARGAS MARCHENA
Bachillerato en Informática Empresarial– UCR
Licenciatura en Docencia – USJ
Profesor en el MEP del 2013-2015
Coordinador Técnico y con la Empresa CTP de Nandayure desde el 2015
Profesor de la UACA desde 2017
Conocimiento el programación
Pascal, Visual Basic, C, C++, C#, Java, Prolog, Transac-SQL, PL/SQL, Unity entre otros
Analista de Sistemas
SQL Server, Oracle, Windows, Linux, Inteligencia de Negocios, Inteligencia Artificial
basada en redes neuronales y Algoritmos Genéticos
Programación II - Lic.: Errol Vargas M.
PROGRAMA DE CURSO
DESCRIPCIÓN
El curso Programación II es de naturaleza teórico-práctico, el mismo
permite exponer al estudiante a la creación de sistemas de
información que aprovechan al máximo las características de los
lenguajes de programación, orientados a objetos como los son
herencia, el polimorfismo, las excepciones, el manejo de archivos, así
como las bases de datos y redes de información.
Además, se inspeccionan también las posibilidades informáticas que
se tienen en la actualidad para realizar el análisis de problemas
actuales con un enfoque orientado a objetos.
El curso ofrece capacidad de análisis y resolución de problemas, así
como del conocimiento de las diversas técnicas y elementos de
representación gráfica de soluciones.
Programación II - Lic.: Errol Vargas M.
PROGRAMA DE CURSO
DESCRIPCIÓN
Asimismo, el estudiante será capaz de desempeñar diferentes roles en
proyectos informáticos, en contextos multidisciplinarios y multiculturales,
tanto locales como globalizados.
Lograra construir soluciones seguras, oportunas y eficientes para el
intercambio de datos e información entre organizaciones, personas,
sistemas computacionales y dispositivos móviles, aplicado al desarrollo del
ciclo de vida de un sistema en cada una de sus fases desde la entrevista hasta
la implantación del sistema.
El curso tiene un componente teórico que debe ser aplicado a la realidad y al
día a día de la vida profesional en Ingeniería de Sistemas. Es por ello que se
parte de una base teórica, luego se procede a desarrollar ejercicios prácticos
y la elaboración y resolución de casos reales, buscando la interpretación y
análisis de problemas de diferentes disciplinas.
Programación II - Lic.: Errol Vargas M.
PROGRAMA DE CURSO
OBJETIVO GENERAL
Aplicar la teoría de la programación orientada a objetos, concurrente
y cliente/servidor, para la solución de problemas específicos, a través
de estrategias de enseñanza-aprendizaje constructivistas junto con
diversas herramientas tecnológicas como lo es un lenguaje de alto
nivel, con el fin de lograr construir soluciones seguras, oportunas y
eficientes para el intercambio de datos e información entre
organizaciones, personas, sistemas computacionales y dispositivos
móviles.
Programación II - Lic.: Errol Vargas M.
PROGRAMA DE CURSO
OBJETIVO ESPECÍFICOS
Expresar la teoría de la programación orientada a objetos en el
desarrollo de programas de mediana complejidad que requieren el
uso de las principales características de orientación a objetos, como lo
son el encapsulamiento, la herencia y el polimorfismo, mediante
ejercicios prácticos guiados por el profesor, para que el estudiante
fomente su capacidad de análisis y resolución de problemas.
Usar características avanzadas de programación sobre manejo de
errores, archivos y estructuras complejas de almacenamiento y
multihilos, mediante ejercicios prácticos guiados por el profesor,
desarrollo de mapas conceptuales y elaboración de un caso real, para
que el estudiante adquiera el conocimiento de las diversas técnicas y
elementos de representación gráfica de soluciones.
Programación II - Lic.: Errol Vargas M.
PROGRAMA DE CURSO
OBJETIVO ESPECÍFICOS
Desarrollar programas concurrentes y cliente/servidor incluyendo
interfaz gráfica, redes y bases de datos como respuesta a problemas
cotidianos que requieren el uso de este tipo de características,
mediante ejercicios prácticos guiados por el profesor y desarrollo de
foros de discusión, con el fin de que el estudiante desempeñe
diferentes roles en proyectos informáticos, en contextos
multidisciplinarios y multiculturales, tanto locales como globalizados.
Desarrollar un software programado, por medio de un proyecto de
investigación, para que el estudiante tenga el conocimiento de las
herramientas necesarias, en todos los ámbitos y niveles del proceso
de programación, para que el estudiante desarrolle plenamente todas
y cada una de las fases de creación de un programa en un lenguaje
moderno y práctico.
Programación II - Lic.: Errol Vargas M.
PROGRAMA DE CURSO
CONTENIDO
Clases y Objetos
Encapsulamiento, Herencia y Polimorfismo
Manejo de Excepciones
Principales elementos de SWING
Archivos y serialización de objetos
Colecciones genéricas
Programación multihilo
Redes y Bases de datos - Básico
Programación II - Lic.: Errol Vargas M.
EVALUACIÓN DEL CURSO
Escolaridad
6 Casos (5% c/u) 30%
1 Mapa conceptual 10%
2 Trabajo de investigación 30%
1 Participación 10%
1 Exámenes parciales (20% c/u) 20%
Total 100%
Residencia
1 Examen final 100%
Programación II - Lic.: Errol Vargas M.
NORMATIVA VIGENTE
Toda la normativa vigente,
reglamentos, procedimientos y guías
las podrá encontrar en:
http://www.uaca.ac.cr/manuales-y-
reglamentos
Programación II - Lic.: Errol Vargas M.
PREGUNTAS
Programación II - Lic.: Errol Vargas M.
PROGRAMACIÓN II
"Los programas deben ser escritos para que la gente los lea y sólo incidentalmente, para que
las máquinas los ejecuten."
Abelson Sussman
Programación II - Lic.: Errol Vargas M.
NETBEANS
Programación II - Lic.: Errol Vargas M.
NETBEANS
NetBeans es un proyecto exitoso de código abierto con
una gran base de usuarios, una comunidad en constante
crecimiento, y con cerca de 100 socios (¡y creciendo!) en
todo el mundo.
Sun MicroSystems fundó el proyecto de código abierto
NetBeans en junio 2000 y continúa siendo el patrocinador
principal de los proyectos.
Al día de hoy hay disponibles dos productos: el
NetBeans IDE y NetBeans Platform.
Programación II - Lic.: Errol Vargas M.
NETBEANS
NetBeans IDE es un entorno de desarrollo - una
herramienta para que los programadores puedan escribir,
compilar, depurar y ejecutar programas.
Es multiplataforma – Windows – Mac – Linux
Está escrito en Java - pero puede servir para cualquier otro
lenguaje de programación.
Existe además un número importante de módulos para
extender el NetBeans IDE.
NetBeans IDE es un producto libre y gratuito sin
restricciones de uso.
Programación II - Lic.: Errol Vargas M.
NETBEANS.ORG
netbeans.org es el portal de la comunidad de código
abierto de NetBeans dedicado a construir un IDE de
primera clase.
netbeans.org permite a usuarios de más de 160 países de
todo el mundo estar en contacto con los recursos y los
personas alrededor de NetBeans.
Es posible descargar desde ahí las últimas versiones de
NetBeans, acceder a la documentación de ayuda en línea,
profundizar su conocimiento personal de Java, estar al
corriente de las últimas noticias, unirse a una lista de
distribución, contribuir código, conocer las personas
implicadas en el proyecto, conocer gente, y mucho más.
Programación II - Lic.: Errol Vargas M.
LINKS NETBEANS.ORG
Portal : https://netbeans.org/
Descargas: https://netbeans.apache.org/download/index.html
Última versión estable: Apache NetBeans 11.3 (24/2/2020)
Requerimientos previos: JDK – Java Development Kit
Versiones de la 8 a la 11
Descarga: https://www.oracle.com/java/technologies/javase-jdk11-
downloads.html
Instaladores:
Apache-NetBeans-11.3-bin-windows-x64.exe (SHA-512, PGP ASC)
Apache-NetBeans-11.3-bin-linux-x64.sh (SHA-512, PGP ASC)
Apache-NetBeans-11.3-bin-macosx.dmg (SHA-512, PGP ASC)
Documentación: https://bits.netbeans.org/11.3/javadoc
Programación II - Lic.: Errol Vargas M.
PROGRAMACIÓN
ORIENTADA A OBJETOS
El arte de la abstracción
Programación II - Lic.: Errol Vargas M.
PROGRAMACIÓN ORIENTADA A OBJETOS
Los cuatro pilares fundamentales de la POO
Abstracción
Encapsulamiento
Herencia
Polimorfismo
Programación II - Lic.: Errol Vargas M.
PROGRAMACIÓN ORIENTADA A OBJETOS
ABSTRACCIÓN
El concepto de encapsulamiento se apoya sobre el concepto de abstracción.
En POO solo necesita saber como interaccionar con los objetos, no necesita
conocer los detalles de cómo está implementada la clase a partir de la cual se
instancia el objeto.
Sólo necesita conocer su interfaz pública.
No necesita saber cómo trabaja el objeto, ni saber las variables que usa, ni el
código que contiene.
El objeto es una caja negra
Programación II - Lic.: Errol Vargas M.
HERENCIA Y POLIMORFISMO
La herencia es una de las premisas y técnicas de la POO la cual permite a los
programadores crear una clase general primero y luego más tarde crear clases
más especializadas que re-utilicen código de la clase general.
La herencia también le permite escribir un código más limpio y legible.
La técnica de polimorfismo de la POO significa la capacidad de tomar más de una
forma.
Una operación puede presentar diferentes comportamientos en diferentes
instancias.
El comportamiento depende de los tipos de datos utilizados en la operación.
El polimorfismo es ampliamente utilizado en la aplicación de la herencia.
Programación II - Lic.: Errol Vargas M.
ENCAPSULAMIENTO
La diferencia entre los público y lo privado
Programación II - Lic.: Errol Vargas M.
ENCAPSULAMIENTO
Se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos
miembro de un objeto de manera que solo se pueda cambiar mediante las
operaciones definidas para ese objeto.
En POO se denomina estado al valor de una variable.
Cambiar el estado de la variable es cambiar su contenido.
Bajo este criterio, cada objeto está aislado del exterior.
Es un módulo natural y la aplicación entera se reduce a un agregado o
rompecabezas de objetos.
Programación II - Lic.: Errol Vargas M.
ENCAPSULAMIENTO
Este aislamiento protege a los datos asociados de un objeto contra su
modificación por quien no tenga derecho a acceder a ellos, eliminando efectos
secundarios e interacciones.
De esta forma el usuario de la clase puede obviar la implementación de los
métodos y propiedades para concentrarse solo en cómo usarlos.
Por otro lado se evita que el usuario pueda cambiar su estado de maneras
imprevistas e incontroladas.
Programación II - Lic.: Errol Vargas M.
ENCAPSULAMIENTO
Las variables de un objeto se localizan en el núcleo del objeto.
Los métodos rodean y esconden al núcleo del objeto de otros objetos en el
programa.
Al empaquetamiento de las variables de un objeto con la protección de sus
métodos se le llama encapsulamiento.
Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta
en práctica no importantes de otros objetos.
Entonces, los detalles de la puesta en práctica pueden cambiar en cualquier
tiempo sin afectar otras partes del programa.
Programación II - Lic.: Errol Vargas M.
Programación II - Lic.: Errol Vargas M.
EN LA PRACTICA
Programación II - Lic.: Errol Vargas M.
CONTROL DE ACCESO EN JAVA
Java controla el acceso a los elementos de la clase por medio de las palabras reservadas
public y private
Todo lo que se defina como public podrá ser visto y accesado desde fuera de la clase.
Todo lo que se defina como private quedara oculto desde fuera de la clase.
Un método que se llame igual a la clase, se considera un constructor y debe ser definido
como public siempre.
Los constructores se encargan de inicializar los valores de las variables internas de la clase.
Para esto se utiliza la palabra reservada this la cual indica que la variable pertenece a la
clase o sea que se definió al inicio de la clase.
Las variables solo deben ser accesadas desde el exterior de la clase por medio de los
métodos getter (para obtener el valor de la variable) y setter para cambiar el valor de la
variable.
Programación II - Lic.: Errol Vargas M.
PRACTICA – EJEMPLO 1
Cree un nuevo proyecto en Netbeans llamado Ejemplo1
Defina la clase C_Ciudad la cual tendrá las siguientes variables internas
Id entero
Ciudad String
Pais String
Latitud Double
Longitud Double
Programe un constructor genérico.
Programe los setter y los getter respectivos.
Programación II - Lic.: Errol Vargas M.
PRACTICA – EJEMPLO 1
En el programa principal defina una variable de tipo C_Ciudad llamada miCiudad y
cárguele los siguientes datos:
Id 100
Ciudad “San Jose”
Pais “Costa Rica”
Latitud 9,93333
Longitud -84,08333
Proceda a imprimir todos los datos almacenados en miCiudad, por consola.
Programación II - Lic.: Errol Vargas M.
PRACTICA – EJEMPLO 2
Cree un nuevo proyecto llamado Ejemplo2
Copie la clase C_Clase del proyecto Ejemplo1
Modifique el constructor para que se le envié los datos de inicialización desde el
exterior.
Copie el código del programa principal de Ejemplo1 y modifíquelo para que
funcione con la nueva versión de C_Ciudad.
Proceda a imprimir todos los datos almacenados en miCiudad, por consola.
Programación II - Lic.: Errol Vargas M.
static y final
static:
Los atributos miembros de una clase pueden ser atributos de
clase o atributos de instancia
Se dice que son atributos de clase si se usa la palabra clave static.
En ese caso la variable es única para todas las instancias (objetos)
de la clase (ocupa un único lugar en memoria).
A veces a las variables de clase se les llama variables estáticas.
Si no se usa static, el sistema crea un lugar nuevo para esa variable
con cada instancia (la variable es diferente para cada objeto).
En el caso de una constante no tiene sentido crear un nuevo lugar
de memoria por cada objeto de una clase que se cree.
Por ello es adecuado el uso de la palabra clave static.
Programación II - Lic.: Errol Vargas M.
static y final
final:
Cuando usamos “static final” se dice que creamos una constante de
clase, un atributo común a todos los objetos de esa clase.
En este contexto, final indica que una variable es de tipo constante,
lo cual significa que no admitirá cambios después de su declaración
y asignación de valor.
final determina que un atributo no puede ser sobrescrito o
redefinido.
Es ilegal declarar un setter para una variable declarada como final.
Toda constante declarada con final ha de ser inicializada en el
mismo momento de declararla.
Programación II - Lic.: Errol Vargas M.
PRACTICA – EJEMPLO3
Cree un nuevo proyecto llamado Ejemplo3.
Copie la clase C_Ciudad del Ejemplo2.
Agregue la constante de clase RADIO_TERRESTRE a la clase C_Ciudad.
Cree una función equals que compare dos objetos de tipo C_Ciudad he indique si
son la misma ciudad, por medio de una respuesta booleana.
Cree una función distancia que calcule la distancia entre dos ciudad, por medio de
la formula Haversine:
Programación II - Lic.: Errol Vargas M.
PRACTICA – EJEMPLO3
En el programa principal copie el siguiente código:
Programación II - Lic.: Errol Vargas M.
DUDAS
No hay preguntas tontas.
Lo que hay son personas que no
preguntan!!!
Programación II - Lic.: Errol Vargas M.
LECTURA FORMATIVA
Investigue sobre la evolución del
concepto de Programación Orientada a
Objetos (POO) partiendo del concepto
de Tipo de Datos Abstractos (TDA).
Se discutirá al inicio de la próxima
sesión.
Programación II - Lic.: Errol Vargas M.
NOS VEMOS …….
Programación II - Lic.: Errol Vargas M.