Ingeniería de Sistemas e Informática
SESIÓN 01.
Socializar silabo Programación orientada a
objetos y Programación visual. Crear clases
e instanciar objetos.
Curso: Programación II
Docente: Msc. Ing. Miguel Angel Silva Zapata
CIP: 96195
Semestre : 2022-II.
SILABO
Aspectos generales del silabo,
alcance de la asignatura,
contenido de la asignatura,
metodología y consideraciones para la evaluación.
Mag. Ing. Miguel Angel Silva Zapata
PROGRAMACIÓN ORIENTADA A OBJETOS
Paradigma de programación que usa objetos y sus interacciones, para
diseñar aplicaciones y programas informáticos; se basa en varias técnicas,
incluyendo herencia, abstracción, polimorfismo y encapsulamiento.
Es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida
real que otros tipos de programación.
Organiza el código en clases, de las cuales se crean objetos que se relacionan entre sí para
conseguir los objetivos de las aplicaciones.
Se popularizó a principios de los años 1990. Actualmente, existe variedad de lenguajes de
programación que soportan la orientación a objetos.
Tenemos que aprender a resolver los problemas de manera distinta a la programación
estructurada. En términos de clases, objetos, propiedades, métodos y otros aspectos propios
de este tipo de programación.
Mag. Ing. Miguel Angel Silva Zapata
PROGRAMACIÓN ORIENTADA A OBJETOS
Programación Estructurada Programación Orientada a Objetos
Mag. Ing. Miguel Angel Silva Zapata
ORIGEN DE LA PROGRAMACIÓN ORIENTADA A OBJETOS
Tiene su origen en Simula 67, un lenguaje diseñado para simulaciones, creado por Ole-Johan
Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo; donde se trabajaba en
simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas
cualidades de diferentes naves podían afectar unas a las otras.
La idea de agrupar distintos tipos de naves en diversas clases de objetos, siendo responsable cada
clase de objetos de definir sus propios datos y comportamientos. Fue refinada en Smalltalk,
lenguaje desarrollado en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado
para ser un sistema completamente dinámico en el cual los objetos se crean y modifican en tiempo
de ejecución.
Se consolido por el auge de las interfaces gráficas de usuario donde la POO esta bien adaptada.
Las características de la POO se incluyo a muchos lenguajes como ADA, BASIC, LIPS Y PASCAL, entre
otros; pero como estos lenguajes no fueron diseñados inicialmente para esto, les genero problemas
de compatibilidad y de mantenimiento.
Los lenguajes OO, puros carecían de las características que los programadores dependían; para
superar esto se hicieron muchas tentativas para crear nuevos lenguajes de programación; donde
Effiel de Bertrand Meyer, fue moderadamente acertado; pero fue remplazado por Java en gran parte
debido a la aparición de Internet y a la implementación de la maquina virtual de Java en los
navegadores.
Mag. Ing. Miguel Angel Silva Zapata
PRINCIPIOS O CARACTERISTICAS DE LA POO
Abstracción:
Es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante
ella podemos llegar a armar un conjunto de clases que permitan modelar la
realidad o el problema que se quiere resolver.
Permite seleccionar las características relevantes dentro de un conjunto e
identificar comportamientos comunes para definir nuevos tipos de entidades en
el mundo real.
Denota las características esenciales de un objeto, donde se capturan sus
comportamientos. Cada objeto en el sistema sirve como modelo de un "agente"
abstracto que puede realizar trabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el sistema sin revelar "cómo" se
implementan estas características.
Facilita el mantenimiento de un código de gran tamaño, donde a lo largo del
tiempo pueden surgir diferentes cambios; se basa en usar cosas simples para
representar la complejidad. Los objetos y las clases representan código
subyacente, ocultando detalles complejos al usuario. Mag. Ing. Miguel Angel Silva Zapata
EJEMPLO DE ABSTRACCIÓN
Mag. Ing. Miguel Angel Silva Zapata
PRINCIPIOS O CARACTERISTICAS DE LA POO
Encapsulamiento:
Significa reunir todos los elementos que pertenecen a una misma entidad, al mismo nivel de
abstracción, aumenta la cohesión de los componentes del sistema.
Es el ocultamiento de los datos miembro de un objeto y de métodos de manera que solo se pueda
cambiar mediante operaciones definidas para ese objeto; para que nadie los pueda manipular los
datos de una clase como el quiera; sin hacer uso de la clase o métodos que lo contiene, con lo cual
podemos evitar la asignación de valores incorrectos.
Hace referencia a limitar el acceso a las variables de nuestras clases para tener mayor control sobre
ellas, utilizando los métodos set/get. Nos puede ayudar a mejorar la reutilización de código y su uso es
muy recomendable.
Existen 3 niveles de acceso para el encapsulamiento:
Público (Public): Todos pueden acceder a los datos o métodos de una clase que se definen con este
nivel, es el nivel más bajo, esto es lo que tu quieres que la parte externa vea.
Protegido (Protected): Podemos decir que estás son solamente accesibles dentro de su clase y por
subclases.
Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la propia clase.
Mag. Ing. Miguel Angel Silva Zapata
EJEMPLO ENCAPSULAMIENTO
Mag. Ing. Miguel Angel Silva Zapata
PRINCIPIOS O CARACTERISTICAS DE LA POO
Herencia:
Define relaciones jerárquicas entre clases, donde los atributos y métodos comunes puedan ser
reutilizados. Las clases principales extienden atributos y comportamientos a las clases secundarias,
ampliando así la funcionalidad de la clase principal y agregando atributos y comportamientos
adicionales.
Organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y
creados como tipos especializados de objetos preexistentes. Protege los datos asociados a un
objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos
secundarios e interacciones.
Sirve para crear objetos a partir de otros sin tener que reescribirlos, heredan las propiedades y
comportamiento de todas las clases a las que pertenecen; pueden compartir y extender su
comportamiento sin volver a implementarlo.
Cuando un objeto hereda de más de una clase, se dice que hay herencia múltiple; siendo de alta
complejidad técnica por lo cual suele recurrirse a la herencia virtual para evitar la duplicación de
datos.
Es tener una super clase con atributos y métodos muy genéricos y después varias sub clases
especificas. PE. La clase padre: carro (super clase), tiene lo básico de todo carro: marca, color y
modelo. La clase hija Mustang (sub clase), aparte de tener atributos mas específicos, no va
acelerar y frenar igual que cualquier otro carro. Mustang ya no tiene que definir marca, color, y
modelo, ni el método encender, porque ya lo tiene, y lo hereda:
Mag. Ing. Miguel Angel Silva Zapata
EJEMPLO HERENCIA
Mag. Ing. Miguel Angel Silva Zapata
EJEMPLO HERENCIA
Mag. Ing. Miguel Angel Silva Zapata
PRINCIPIOS O CARACTERISTICAS DE LA POO
Polimorfismo:
Es diseñar objetos para compartir comportamientos y procesarlos de diferentes maneras.
Capacidad de presentar la misma interfaz para diferentes formas subyacentes o tipos de datos.
El mismo método ejecuta diferentes comportamientos de dos formas: anulación de método y
sobrecarga de método.
Es la posibilidad de definir clases diferentes que tienen métodos o atributos denominados de
forma idéntica, pero que se comportan de manera distinta.
Se puede aplicar tanto a funciones como a tipos de datos. Así nacen las funciones
polimórficas y tipos polimórficos. Las primeras son las funciones que pueden evaluarse o ser
aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, son aquellos
que contienen al menos un elemento cuyo tipo no está especificado.
Mag. Ing. Miguel Angel Silva Zapata
PRINCIPIOS O CARACTERISTICAS DE LA POO
TIPOS DE POLIMORFISMO
Polimorfismo de sobrecarga:
Ocurre cuando las funciones del mismo nombre existen, con funcionalidad similar, en clases completamente independientes una de otra
(éstas no tienen que ser clases secundarias de la clase objeto). Por ejemplo, la clase complex, la clase image y la clase link pueden todas
tener la función "display". No necesitamos preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo lo que deseamos
es verlo en la pantalla.
Polimorfismo paramétrico(también llamado polimorfismo de plantillas)
Capacidad para definir varias funciones utilizando el mismo nombre, pero usando parámetros diferentes (nombre y/o tipo). Selecciona
automáticamente el método correcto a aplicar en función del tipo de datos pasados en el parámetro.
Por lo tanto, podemos por ejemplo, definir varios métodos homónimos de addition() efectuando una suma de valores.
- El método int addition (int, int) devolvería la suma de dos números enteros.
- El método float addition (float, float) devolvería la suma de dos flotantes.
- El método char addition (char, char) daría por resultado la suma de dos caracteres definidos por el autor.
Polimorfismo de inclusión (también llamado redefinición o subtipado)
Permite redefinir un método en clases que se hereda de una clase base, se puede llamar un método de objeto sin tener que conocer
su tipo intrínseco: esto es polimorfismo de subtipado. Permite no tomar en cuenta detalles de las clases especializadas de una familia de
Mag. Ing. Miguel Angel Silva Zapata
EJEMPLO ENCAPSULAMIENTO
Mag. Ing. Miguel Angel Silva Zapata
EJEMPLO ENCAPSULAMIENTO
Mag. Ing. Miguel Angel Silva Zapata
CLASE
Especie de "plantilla" en la que se definen los atributos y métodos predeterminados de un
tipo de objeto. Implementada para poder crear objetos fácilmente. Al proceso de crear nuevos
objetos mediante la lectura y recuperación de los atributos y métodos de una clase se le
conoce como instanciación. Son declaraciones o abstracciones de objetos.
Propiedades o atributos:
Son las características de los objetos. Cuando definimos una propiedad normalmente
especificamos su nombre y su tipo. Las propiedades son algo así como variables donde
almacenamos datos relacionados con los objetos.
Métodos o acciones:
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases, se
les llama métodos, que son como funciones asociadas a un objeto.
Mag. Ing. Miguel Angel Silva Zapata
OBJETO
Entidad provista de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los
mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo
que nos rodea, o a objetos internos del sistema (programa). Es una instancia a una clase.
Son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a
partir de la cual se creará. La acción de crear un objeto a partir de una clase se llama instanciar. Por
ejemplo, un objeto de la clase fracción es por ejemplo: 3/5. El concepto de fracción sería la clase, pero
cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos
objeto.
Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo
del lenguaje de programación que se emplee, pero será algo parecido a esto. Pe: en java es:
micoche coche= new micoche();
Mag. Ing. Miguel Angel Silva Zapata
CREAR E INSTANCIAR OBJETOS
Después de crear una clase con sus atributos y métodos, lo que sigue para utilizar
sus datos y funcionalidades es crear un objeto a partir de esa clase o hacer lo que se
conoce como instanciar un objeto. En java se procede de la siguiente manera:
Nombre_de_Clase Nombre_Objeto = new Nombre_de_Clase();
Como se observa en la sintaxis anterior, escribimos el nombre de la clase, dejando
un espacio el nombre del objeto seguido del símbolo de asignación (=) y finalmente
el nombre del método constructor de la clase, el cual coincide con el nombre de la
clase.
Mag. Ing. Miguel Angel Silva Zapata
CREAR E INSTANCIAR OBJETOS
Clase creada Objeto Instanciado
Resultado
Mag. Ing. Miguel Angel Silva Zapata
PROGRAMACIÓN VISUAL
Se origina, porque casi siempre el usuario no desea trabajar o ver los resultados por
una consola de comandos.
La mayoría de las aplicaciones comerciales utilizan ventanas, botones, iconos, entre
otros.
En este tipo de aplicaciones es posible separar un código que realiza aplicaciones
muy complejas con su interfaz hacia el usuario.
Permite integrar elementos del propio sistema operativo, como la apariencia y el
tema en las interfaces.
Mag. Ing. Miguel Angel Silva Zapata
PROGRAMACIÓN VISUAL
Mag. Ing. Miguel Angel Silva Zapata
GUI: GRAPHICAL USER INTERFACE
Permite la interacción del usuario con la máquina o la aplicación en cuestión. Utiliza una
serie de herramientas y tecnologías para mejorar los procesos de entrega y generación
de información.
Contribuyo con la masificación de los computadores personales.
Existen IDEs (Integrated Development Enveiroment o Ambientes integrados de
desarrollo), que permiten programar aplicaciones con ventanas, botones y una serie de
elementos visuales de manera sencilla y en paralelo con la programación de la lógica de
la aplicación.
Actualmente existen IDEs casi para cualquier lenguaje de programación, por ejemplo
Java → Netbeans, Eclipse ; C++ y C# → Microsoft Visual Studio.
Mag. Ing. Miguel Angel Silva Zapata
GUI: GRAPHICAL USER INTERFACE
Mag. Ing. Miguel Angel Silva Zapata
GUI: GRAPHICAL USER INTERFACE
Mag. Ing. Miguel Angel Silva Zapata
PAQUETE SWING Y SUS CLASES
Biblioteca de clases que permite crear interfaces graficas de usuario en java, es parte de la JFC (Java Foundation
Classes) en la plataforma Java. La JFC provee facilidades para ayudar a la gente a construir GUIs. Swing abarca
componentes como botones, tablas, marcos, entre otros; es orientado a objetos y usa el patrón de diseño
observador, observable para informar de la interacción del usuario sobre la GUI.
Existe desde la JDK 1.1 (como un agregado). Antes de la existencia de Swing, las interfaces gráficas se
realizaban a través de AWT (Abstract Window Toolkit), de quien Swing hereda todo el manejo de eventos.
Usualmente, para toda componente AWT existe una componente Swing que la reemplaza, por ejemplo, la clase
Button de AWT es reemplazada por la clase JButton de Swing (el nombre de todas las componentes Swing
comienza con "J").
Es un framework MVC para desarrollar interfaces gráficas para Java con independencia de la plataforma. Sigue
un simple modelo de programación por hilos, y posee las siguientes características principales:
Mag. Ing. Miguel Angel Silva Zapata
CARACTERISTICAS PRINCIPALES DE SWING
Independencia de plataforma. Esto se debe fundamentalmente gracias a que esta escrito
completamente en java, las aplicaciones distribuidas en varias plataformas tienen la misma
apariencia.
Extensibilidad. Es una arquitectura altamente particionada: los usuarios pueden proveer sus
propias implementaciones modificadas para sobrescribir las implementaciones por defecto. Se
puede extender clases existentes proveyendo alternativas de implementación para elementos
esenciales.
Personalizable. Dado el modelo de representación programático del framework de swing, el
control permite representar diferentes estilos de apariencia “look and feel” (desde apariencia
MacOS hasta apariencia Windows pasando por apariencia GTK+, IBM UNIX o HP UX entre otros).
Los usuarios pueden proveer su propia implementación de apariencia, que permitirá cambios
uniformes en la apariencia existente en las aplicaciones Swing sin efectuar ningún cambio al código
de aplicación.
Mag. Ing. Miguel Angel Silva Zapata
CLASES DE SWING
Mag. Ing. Miguel Angel Silva Zapata
CLASES DE SWING
Mag. Ing. Miguel Angel Silva Zapata
GRACIAS
Mag. Ing. Miguel Angel Silva Zapata