Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

Taller de Programación 2023

TALLER DE PROGRAMACIÓN

Unidad De Aprendizaje 1: Introducción a la


Progamación Orientada a Objeto
Docente: César D’Alençon Vásquez
Instituto Profesión AIEP – Sede San Felipe Página 1
Taller de Programación 2023

Contenido

Bienvenidos ............................................................................................................................................................................. 3
Introducción ............................................................................................................................................................................ 4
1. Concepto Orientación a Objetos ..................................................................................................................................... 5
1.1. Características de la Programación Orientación a Objetos .................................................................................... 5
1.1.1. Abstracción ......................................................................................................................................................... 5
1.1.2. Modularidad........................................................................................................................................................ 7
1.1.3. Encapsulamiento ................................................................................................................................................. 7
1.1.4. Jerarquía o Herencia ........................................................................................................................................... 8
1.1.5. Polimorfismo ..................................................................................................................................................... 10
1.1.6. Tipificación fuerte ................................................................................................................................................... 11
1.1.7. Manejo de Excepciones .......................................................................................................................................... 11
1.2. Ventajas de la Orientación a Objetos ................................................................................................................... 11
1.2.1. Flexibilidad ........................................................................................................................................................ 11
1.2.2. Reusabilidad ...................................................................................................................................................... 11
1.2.3. Mantenibilidad .................................................................................................................................................. 11
1.2.4. Extensibilidad .................................................................................................................................................... 12
1.3. Clase ...................................................................................................................................................................... 12
1.4. Objetos .................................................................................................................................................................. 12
1.4.1. Identificación de Objetos ........................................................................................................................................ 13
1.4.2. Comunicación entre Objetos .................................................................................................................................. 14
2. UML ............................................................................................................................................................................... 14
2.1. Representación gráfica de clases y objetos............................................................................................................ 14
2.2. Representación gráfica de la herencia .................................................................................................................... 16

Referencias ............................................................................................................................................................ 17

Instituto Profesión AIEP – Sede San Felipe Página 2


Taller de Programación 2023

Bienvenidos

Estimados Estudiantes, comenzamos ahora el módulo Taller de


Programación.

Para empezar la primera Unidad, Introducción a la Programación


Orientada a Objeto, revisemos los Aprendizajes Esperados que
corresponden a esta primera semana de Clases:

• Construyen clases de objetos a aplicando principios


fundamentales de la programación orientada a objetos, de acuerdo a
necesidades utilizando UML.

Instituto Profesión AIEP – Sede San Felipe Página 3


Taller de Programación 2023

Introducción

¿Qué se entiende por Lenguaje de Programación? ¿Qué es la Tecnología JAVA?

Programas que permiten escribir instrucciones para Lenguaje de Programación Orientado a Objetos con
realizar algunas tareas. sintaxis similar a la del lenguaje C y C++. Utiliza como
plataforma la Máquina Virtual Java (JVM) y Java API
Conjunto de símbolos y reglas que se usan para (Aplication Programming Interface).
expresar algoritmos en una notación formal.
Java es un lenguaje de programación y una plataforma
¿Por qué estudiar Lenguajes de Programación? informática comercializada por primera vez en 1995 por
Para entender el diseño e implementación de los Sun Microsystems. Hay muchas aplicaciones y sitios
lenguajes. Para saber que lenguaje es más apropiado web que no funcionarán a menos que tenga Java
para resolver ciertos tipos de problemas. Incrementar instalado. Java es rápido, seguro y fiable. Desde
habilidad de aprender nuevos lenguajes. Para mejorar la portátiles hasta centros de datos, desde consolas para
habilidad para desarrollar algoritmos eficientes. Para juegos has súper computadoras, desde teléfonos
mejorar técnicas de programación. Para mejorar la móviles hasta Internet Java está en todas partes.
capacidad de expresar ideas.

“¿Sabes cuál es el problema?


Imaginarte el ALGORITMO y no PROGRAMARLO”

Instituto Profesión AIEP – Sede San Felipe Página 4


Taller de Programación 2023

1. Concepto Orientación a Objetos

Metodología de diseño de software que modela las características de objetos reales a través de la utilización de
clases y objetos. Persigue obtener una mayor representación de la realidad.

La idea es combinar datos y funciones en una sola unidad. Nace con el lenguaje Smalltack.

1.1. Características de la Programación Orientación a Objetos

La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación
que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la
obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.

Muchos de los objetos pre-diseñados de los lenguajes de programación actuales permiten la agrupación en
bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias
bibliotecas.

1.1.1. Abstracción

Se refiere a la representación de los objetos. Separa las propiedades más importantes de un objeto, de las que
no lo son.

Por medio de la abstracción se definen las características esenciales de un objeto del mundo real, los atributos y
comportamientos que lo definen como tal, para después modelarlo en un objeto de software.

Una abstracción se enfoca en la visión externa de un objeto, separa el comportamiento específico de un objeto,
a esta división que realiza se le conoce como la barrera de abstracción, la cual se consigue aplicando el principio
de mínimo compromiso.

Pero… ¿Qué es el principio de mínimo compromiso? Se refiere al proceso por el cuál la interfaz de un objeto
muestra su comportamiento específico y nada más, absolutamente nada más.

Pero… ¿Qué es una Interfaz? Una interfaz de objeto permite crear código con el cuál se específica que métodos
serán implementados por una clase sin necesidad de definir qué harán estos métodos, dichos métodos deben
ser públicos.

Pero… Existe también el principio de mínima sorpresa, en el cuál una abstracción obtiene el comportamiento
completo de algún objeto y por ende no ofrece sorpresas o efectos laterales que lleguen más allá del ámbito de
la abstracción.

Instituto Profesión AIEP – Sede San Felipe Página 5


Taller de Programación 2023

Hay una alta gama de abstracciones que existen desde los objetos que modelan muy cerca de entidades, a
objetos que no tienen razón para existir, vamos a hacer una rápida mención de ello.

Abstracción de Entidades: Es un objeto que representa un modelo útil de una entidad que se desea.

Abstracción de Acciones: Un objeto que representa un conjunto de operaciones y todas ellas desempeñan
funciones del mismo tipo.

Abstracción de Máquinas virtuales: Un objeto que agrupa operaciones, todas ellas virtuales, utilizadas por algún
nivel superior de control u operaciones (entre ellos podríamos hablar de un circuito).

Abstracción de coincidencia: Un objeto que almacena un conjunto de operaciones que no tienen relación entre
sí.

En un modelo contractual de programación podemos mencionar que la vista exterior de cada objeto define una
interfaz del que puedan depender otros objetos, esta interfaz como bien lo habíamos mencionado, establece
todas las suposiciones que pueda hacer un objeto cliente acerca del comportamiento de un objeto servidor, es
decir la interfaz abarca las responsabilidades de un objeto, dicho en otras palabras, abarca el comportamiento
del que se le considera responsable.

Un objeto puede actuar y reaccionar de diferentes formas, un conjunto de operaciones que puede realizar un
cliente sobre un objeto se le denomina protocolo.

No está demás mencionar que toda abstracción tiene propiedades estáticas y dinámicas.

Propiedades estáticas podemos mencionar, el nombre, el tamaño, en algunas ocasiones su contenido.

Propiedades dinámicas podemos mencionar peso, tamaño, contenido.

Dependiendo el contexto que se está analizando el contenido u otras propiedades pueden ser dinámicas como
estáticas.

Realizaremos un breve ejemplo de una abstracción sobre un vehículo.

Supongamos que en este ejemplo nos están solicitando la abstracción de un vehículo en cuanto a su
comportamiento.

La pregunta que hago es ¿Cuáles son los comportamientos que tienen todos los vehículos? con base a esta
pregunta, automáticamente fluye nuestra abstracción del comportamiento de un vehículo.

Instituto Profesión AIEP – Sede San Felipe Página 6


Taller de Programación 2023

✓ Encender Vehículo
✓ Apagar Vehículo
✓ Acelerar Vehículo
✓ Frenar Vehículo
✓ Retroceder Vehículo
✓ Parabrisas Vehículo

1.1.2. Modularidad

Se basa en el concepto de módulos o componentes independientes (clases). Permite modificar las


características de un componente sin necesariamente afectar a los demás módulos.

Modularidad en la Programación Orientada a Objetos consiste en dividir un programa en módulos que puedan
compilarse por separado, sin embargo tendrá conexiones con otros módulos. También se le conoce como la
propiedad que permite subdividir una aplicación en partes más pequeñas, cada una de las cuales deben ser tan
independientes como sea posible de la aplicación en sí y de las restantes partes. La modularidad debe seguir los
conceptos de acoplamiento y cohesión.

1.1.3. Encapsulamiento

Propiedad que permite asegurar que la información de un objeto sea desconocida para los demás objetos de la
aplicación. Se conoce también como ocultamiento de la información.

Permite proteger a los objetos de ser manipulados de forma inadecuada por objetos externos.

Como java es un lenguaje de programación orientado a objetos, existen en un programa, diversos atributos y
métodos que servirán para el funcionamiento de éste. Para la interacción del usuario con el objeto es necesario
que se apliquen, o se encuentren disponibles, solo aquellos métodos que le servirán al usuario para utilizar ese
objeto, manteniendo “ocultos” aquellos que servirán para el funcionamiento interno.

Es por ello que el encapsulamiento consiste en permitir la visibilidad de atributos y/o métodos, en una clase
determinada, teniendo así tres niveles de: privados (private) que se utilizaran solo en esa clase, protegidos
(protected) que se utilizaran por todas los métodos, clases y /o atributos mientras se encuentre en el mismo
package, y los públicos (public) que pueden ser usados por cualquier clase o método.

Cada objeto está aislado del exterior, de forma que la aplicación es un conjunto de objetos que colaboran entre
sí mediante el paso de mensajes invocando sus operaciones o métodos. De esta forma, los detalles de
implementación permanecen "ocultos" a las personas que usan las clases, evitando así modificaciones o accesos
indebidos a los datos que almacenan las clases.

Instituto Profesión AIEP – Sede San Felipe Página 7


Taller de Programación 2023

Además, el usuario de la clase no se tiene que preocupar de cómo están implementados los métodos y
propiedades, concentrándose sólo en cómo debe usarlos.

La encapsulación es una de las principales ventajas que proporciona la programación orientada a objetos.

1.1.4. Jerarquía o Herencia

Propiedad que permite a partir de clases, construir nuevas clases, permitiendo heredar sus características
(atributos y acciones). Tiene como objetivo la reutilización de código anteriormente desarrollado.

Figura 1: Diagrama de Herencia Java


¿En qué consiste?

Existen dos clases, a las que llamaremos padre (superclase o clase base) e hija (subclase o clase derivada) Al igual
que las herencias en la vida real, la clase hija pasa a tener lo que tiene la clase padre es decir hereda los
Atributos y Métodos.

Un objeto de la clase hija es también un objeto de la clase padre. En la clase hija se definen las diferencias
respecto de la clase padre.

¿Para qué se usa?

Para extender la funcionalidad de la clase padre o para especializar el comportamiento de la clase padre

Existen dos tipos de herencia en la POO.

Herencia Simple. Es aquel tipo de herencia en la cual un objeto (clase) puede tener solo un ascendente.

Herencia Múltiple. Es aquel tipo de herencia donde un objeto (clase) puede tener una o más superclases.
“Es importante reconocer que JAVA solo implementa en su programación la herencia Simple”

Instituto Profesión AIEP – Sede San Felipe Página 8


Taller de Programación 2023

Ventajas
✓ Se ahorra código
✓ Permite reutilizar código extendiendo su funcionalidad

Desventajas
✓ Se introduce una fuerte dependencia en la clase hija respecto a la clase padre
✓ Puede dificultar la reutilización
✓ Un cambio en la clase padre puede tener efectos imprevistos en las clases hijas
✓ Un objeto de una clase hija puede tener un comportamiento inconsistente con lo esperado de un objeto
de la clase padre
✓ Se establece una jerarquía o clasificación. Si cambia el criterio de clasificación puede acarrear muchas
modificaciones

Herencia en Java

Se indica usando la palabra reservada extends


class Punto3D extends Punto2D

Visibilidad: Los miembros privados de la superclase no son visibles desde la subclase. Los miembros públicos de
la superclase son visibles y siguen siendo públicos en la subclase.

Se puede acceder a los miembros de la superclase usando la palabra reservada super.

Si una clase se declara como final no se puede heredar de ella.

En java, todas las clases heredan implícitamente de la clase Object.

Figura 2: Herencia de Clases en Java

Instituto Profesión AIEP – Sede San Felipe Página 9


Taller de Programación 2023

En ciertos casos, una clase se diseña directamente para ser extendida por un conjunto de subclases.

En estos casos suele interesar no implementar alguno de sus métodos, pues no tiene ningún significado en la
clase base.

Es necesario declarar tanto la clase como los métodos no implementados como abstractos a través de la palabra
reservada abstract.

Una clase abstracta es, por tanto, aquella que tiene alguno de sus métodos definido pero no implementado.

Podemos crear una clase Animal a partir de la cual crearemos otras clases que definan animales concretos.

(Casi) todos los animales emiten algún sonido, pero no hay ninguno común para todos los animales.

Cada subclase re implementará el método sound() como le convenga

Figura 3: Creación de Clase y métodos Abstractos en Java

1.1.5. Polimorfismo

El polimorfismo es uno de los 4 pilares de la programación orientada a objetos junto con la Abstracción,
Encapsulamiento, y Herencia. Para empezar el término “Polimorfismo” es una palabra de origen griego que
significa “muchas formas”. Este término se utiliza en la POO para “referirse a la propiedad por la que es posible
enviar mensajes sintácticamente iguales a objetos de tipos distintos”. El único requisito que deben cumplir los
objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.

Entonces podemos decir que se basa en que los componentes o entidades puedan responder de manera distinta
ante diversas invocaciones. Esto se consigue a través de nombrar métodos o constructores de una clase con un
mismo nombre pero con diferentes implementaciones.

Instituto Profesión AIEP – Sede San Felipe Página 10


Taller de Programación 2023

Sobrecarga de métodos: definir dos métodos o más dentro de una misma clase con el mismo nombre con
declaración de parámetros diferente.

Sobrecarga de constructores: definir dos constructores o más dentro de una misma clase con el mismo nombre
con declaración de parámetros diferente.

1.1.6. Tipificación fuerte

Declarar los tipos de datos soportados para cada variable antes de usarlas.

1.1.7. Manejo de Excepciones

Permite captar y manipular excepciones (errores) que puedan surgir durante la ejecución de un programa.

1.2. Ventajas de la Orientación a Objetos

1.2.1. Flexibilidad

Se parte del hecho de que a partir de la definición de clases se establecen módulos independientes, a partir de
los cuales se pueden definir nuevas clases. En este tipo de ventajas se hace referencia a las características de
(Herencia, Abstracción y Modularidad).

1.2.2. Reusabilidad

Una vez que se definió una entidad particular para una aplicación determinada, y se desea construir otra
aplicación en donde podemos definir la misma entidad, no es deseable volver a escribir la definición para la
misma entidad. También nos permite la Reutilización de entidades para ahorro de código. En este tipo de
ventajas se hace referencia a las características de (Herencia, Abstracción, Modularidad, Encapsulamiento y
Polimorfismo).

1.2.3. Mantenibilidad

Existe la facilidad para mantener las clases que conforman una aplicación, vistas como módulos entre si, sin
afectar a los demás componentes de la aplicación. En este tipo de ventajas se hace referencia a las
características de (Herencia, Abstracción y Modularidad).

Instituto Profesión AIEP – Sede San Felipe Página 11


Taller de Programación 2023

1.2.4. Extensibilidad

Dada una aplicación pequeña es fácil agregar nuevas funcionalidades para cubrir necesidades de crecimientos
de la aplicación. En este tipo de ventajas se hace referencia a las características de (Herencia, Abstracción y
Modularidad).

1.3. Clase

Es un molde o un prototipo donde se definen los atributos (variables) y las acciones (métodos) comunes de una
entidad.

Permite crear múltiples objetos con características similares.

Figura 4: Creación Primera Clase en Java Netbeans

1.4. Objetos

Son elementos que representan un grupo asociado de características y está diseñado para realizar tareas
específicas. También se les conoce como instancias.

En la figura 4 se puede apreciar cómo se crear un objeto en java y como se utiliza dicho objeto para llamar a los
atributos de la clase.

Instituto Profesión AIEP – Sede San Felipe Página 12


Taller de Programación 2023

✓ Un objeto tiene estado y comportamiento.


✓ El estado se mantiene en variables.
✓ El comportamiento se implementa mediante métodos.
✓ Un objeto controla la manipulación de su estado mediante sus métodos.

Ejemplo:
Perro
Estado: nombre, raza, color
Comportamiento: ladrar, correr, oler

Bicicleta
Estado: pedales, ruedas
Comportamiento: frenar, acelerar, cambiar

1.4.1. Identificación de Objetos

La primera dificultad que se nos plantea al analizar un problema que se desea implementar mediante un
programa O.O. es identificar los objetos.

Esta identificación se obtiene examinando la descripción del problema.

Los objetos pueden caer dentro de las siguientes categorías:

✓ Cosas tangibles (avión, fuente de alimentación, televisor, libro, calculadora)


✓ Roles o Papeles representados por personas (gerente, cliente, empleado, medico, paciente, ingeniero)
✓ Organizaciones (empresa, división, equipo…)
✓ Incidentes (vuelo, accidente, suceso)
✓ Interacciones (compras, matrimonios, partidos…)
✓ Lugares (sala de embarque, muelle de carga…)

Una vez identificados los objetos, será preciso identificar los atributos y las operaciones que actuaran sobre
ellos.

Los atributos describen la abstracción de las características individuales que poseen todos los objetos.

Las operaciones cambian el estado de un objeto. Se pueden dividir en:

✓ Operaciones que manipulan los datos (añadir, borrar, cambiar formato…)


✓ Operaciones que realizan cálculos o procesos.

Instituto Profesión AIEP – Sede San Felipe Página 13


Taller de Programación 2023

1.4.2. Comunicación entre Objetos

La comunicación se logra a través de Mensajes.

Un mensaje puede alterar el estado de un objeto (sus variables internas)

Un mensaje contiene:
✓ Identificador del objeto
✓ Identificador del método
✓ Parámetros (si son necesarios)

Cuando se crea un Programa Orientado a Objetos ocurren tres sucesos:

1. Se crean los objetos.


2. Los mensajes se mueven de un objeto a otro.
3. Cuando los objetos no son utilizados se borran y se libera la memoria.

2. UML

2.1. Representación gráfica de clases y objetos

Las clases y objetos se representan mediante rectángulos.

Para diferenciar entre clases y objetos, los nombres de los objetos se subrayan.

Ejemplo:

Figura 5: Representación UML de Clases y Objetos

Instituto Profesión AIEP – Sede San Felipe Página 14


Taller de Programación 2023

El nombre de la clase se representa con la primera letra mayúscula.

Los atributos se representan con su nombre seguido de las posibles restricciones que pueda tener.

Los métodos vienen seguidos de una pareja de paréntesis:

✓ vacíos, si no tiene parámetros


✓ con nombre y tipo de dato del o los parámetros

Ejemplo:

Figura 6: Representación UML de Clase

Los objetos se representan de un modo similar a las clases, pero se diferencian en que el nombre del objeto
esta subrayado y se pueden introducir valores iniciales a los atributos

Figura 7: Representación UML de Objeto

Instituto Profesión AIEP – Sede San Felipe Página 15


Taller de Programación 2023

2.2. Representación gráfica de la herencia

La jerarquía de clases o herencia se representa mediante una flecha que une las clases derivadas o subclases
con la clase base o superclase.

Figura 8: Representación UML Herencia de Clases

Figura 9: Representación UML Herencia de Clases con Atributos y Métodos

Instituto Profesión AIEP – Sede San Felipe Página 16


Taller de Programación 2023

Comentario Final
El Objetivo principal de esta primera semana ha sido comprender las principales características y ventajas de la POO
(Programación Orientada a Objeto), como así también hemos reconocido la representación gráfica de clases a
través de UML, por último descubrimos los orígenes, evolución, filosofía, características, versiones y entornos de
trabajo que provee la Tecnología Java.

Todo lo aprendido aquí se podrá aplicar en las próximas semanas, en donde se profundizara en mayor detalle sobre
el desarrollo que ofrece el Lenguaje Java y el entorno de desarrollo (IDE) NetBeans.

Referencias

✓ Aprenda Java como si estuviera en primero. San Sebastián Enero 2000

✓ Fundamentos de programación en Java. Facultad de informática Universidad complutense de Madrid.

Instituto Profesión AIEP – Sede San Felipe Página 17

También podría gustarte